可以操纵数据的安装程序(安装程序)/可以操纵数据的 运行 脚本?
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;
我正在寻找一个可以操作数据的安装程序(安装程序),或者基本上 运行 一个外部脚本来在 运行 实际安装文件之前操作硬盘上的一些数据(要安装的主要.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;