安装程序(安装程序构建器)可以操作可以为其操作数据的数据/运行脚本吗?

时间:2015-02-24 23:52:11

标签: scripting installation installer inno-setup

我正在寻找一个安装程序(安装程序构建器),它可以操作数据或基本上运行外部脚本来操作硬盘上的某些数据,然后再运行实际的安装文件(要安装的主.exe文件)便于使用一些定制的用户数据,以便与更新版本的软件兼容(即可安装)。

显然,将脚本与主.exe文件合并不是一种选择。

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

任何帮助都将非常感谢!!

2 个答案:

答案 0 :(得分:1)

使用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;

答案 1 :(得分:0)

  

操纵数据或基本上运行外部脚本来操纵一些   硬盘上的数据

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

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