问题描述
如何在Run
部分而不是unzip.exe
内插入Code
(Run
和批处理文件)?我尝试了Inno Setup: Install other installer and run it before continuing my install此处使用的方法,但是无法使其正常工作,因此我恢复使用Run
部分来运行两个脚本。到目前为止,我所做的事情显得草率。 Inno Setup的“完成”页面显示一个选项复选框以运行批处理脚本,而我希望它在此阶段之前自动运行。
[Setup]
Privilegesrequired=admin
[Files]
Source: "CC.exe"; DestDir: "{pf}\CC"; DestName: "CC.exe"
Source: "bbb.update.zip"; DestDir: "{userdesktop}"; Flags: deleteafterinstall
Source: "unzip.exe"; DestDir: "{userdesktop}"; Flags: deleteafterinstall
[Run]
Filename: "{userdesktop}\unzip.exe"; \
Parameters: "x {userdesktop}\bbb.update.zip -d {userdesktop}"; \
Flags: runascurrentuser Nowait
Filename: "{userdesktop}\update.bat"; \
Flags: runascurrentuser Nowait postinstall skipifsilent
(update.bat
文件在安装后清除)
解决方法
使用Exec
function。例如在CurStepChanged
event function中。
如果路径中包含空格,则还需要将命令参数中的路径包装在引号中。
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep = ssPostInstall then
begin
Exec(
ExpandConstant('{userdesktop}\unzip.exe'),ExpandConstant('x "{userdesktop}\bbb.update.zip" -d "{userdesktop}"'),'',SW_HIDE,ewNoWait,ErrorCode);
Exec(
ExpandConstant('{userdesktop}\update.bat'),ErrorCode);
end;
end;