我正在寻找一个安装程序(安装程序构建器),它可以操作数据或基本上运行外部脚本来操作硬盘上的某些数据,然后再运行实际的安装文件(要安装的主.exe文件)便于使用一些定制的用户数据,以便与更新版本的软件兼容(即可安装)。
显然,将脚本与主.exe文件合并不是一种选择。
我看过像Inno Setup和createInstall这样的软件包,但我似乎无法找到让他们完成任务的方法。
任何帮助都将非常感谢!!
答案 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)...)
请更具体地说明您的需求。