可以操纵数据的安装程序(安装程序)/可以操纵数据的 运行 脚本?

Installer programs (setup builders) that can manipulate data/ run scripts that can manipulate data for it?

我正在寻找一个可以操作数据的安装程序(安装程序),或者基本上 运行 一个外部脚本来在 运行 实际安装文件之前操作硬盘上的一些数据(要安装的主要.exe文件),以便于使用一些自定义的用户数据,使其与更新版本的软件(要安装)兼容。

显然不能将脚本与主 .exe 文件合并。

我看过像 Inno Setup 和 createInstall 这样的包,但我似乎无法找到让它们完成任务的方法。

任何帮助将不胜感激!!

manipulate data or basically run an external script to manipulate some data on the hard disk

Inno Setup 可以做到这一点 - 例如处理 INI 文件、文本文件、配置或 XML 文件...或执行批处理文件 (.bat),它可以执行脚本,如 SQL ...)

请更具体地说明您的需求。

使用 Inno Setup,您甚至可以将脚本合并到主安装程序 .exe 文件中,因为 Inno Setup 具有内置的 Pascal 脚本功能。

它的文件操作功能比较有限,但也许足以满足您的需求。

非常简单的例子:

[Code]

procedure InitializeSetup: Boolean;
var
  FileName: string;
  S: AnsiString;
begin
  { Prepend record to file.txt in user's Documents folder }
  FileName := ExpandConstant('{userdocs}\file.txt');

  if FileExists(FileName) and
     LoadStringFromFile(FileName, S) then
  begin
    S :=
      'another line - added on ' + 
      GetDateTimeString('ddddd tt', #0, #0) + #13#10 +
      S;
    SaveStringToFile(FileName, S, False);
  end;
end;

参考文献:


如果您不能或不想使用 pascal 脚本,您可以构建一个自定义应用程序,将其嵌入到安装程序中,并在安装程序启动时 运行 它。

[Files]
; Embed the executable to the installer,
; but do not install it (dontcopy flag)
Source: "preinstall.exe"; Flags: dontcopy

...
[Code]
procedure InitializeSetup: Boolean;
var
  ResultCode: Integer;
begin
  { Extract the executable to temp folder }
  ExtractTemporaryFile('preinstall.exe');

  { Run it }
  Result :=
    Exec(ExpandConstant('{tmp}\preinstall.exe'),
         '', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);

  { If running fails or the executable indicates an error using }
  { non-zero exit code, abort installation }
  if (not Result) or (ResultCode <> 0) then
  begin
    MsgBox('Error preparing installation. Aborting.', mbError, MB_OK); 
    Exit;
  end;

  { Other initialization here }
end;