【发布时间】:2015-03-19 16:38:49
【问题描述】:
我尝试在(CurrentStep = ssPostInstall) 的CurStepChanged 过程中执行一个.exe,该.exe 是[Files] 部分的一部分。在我看来,ssPostInstall 似乎被执行了多次——有时甚至在安装过程的文件被处理之前。当然,我可以将 .exe 提取到一个临时文件夹,但我想了解它的行为,这令人失望。每次执行时,到达ssPostinstall 步骤的时刻似乎都会有所不同,有时会不止一次。我错过了什么吗?这是我的代码的一部分:
procedure CurStepChanged(CurrentStep: TSetupStep);
var ErrorCode : Integer;
begin
if (CurrentStep = ssPostInstall) then begin
if Exec(ExpandConstant('{app}\{code:getVersionSubdir}\licencing\haspdinst.exe'), '-i', '',SW_SHOW, ewWaitUntilTerminated, ErrorCode) then
begin
if ErrorCode = 0 then else
MsgBox(SysErrorMessage(ErrorCode), mbCriticalError, MB_OK);
end;
end
else begin
MsgBox('Did not work', mbCriticalError, MB_OK);
end;
end;
提前致谢
克里斯
【问题讨论】:
-
ssPostInstall步骤的CurStepChanged事件是trigerred exactly once,就在[Run]部分is processed之后,并且请求的应用程序重新启动。所以是你剧本中的其他东西让你有这种感觉。 -
将
Log调用添加到您的ssPostInstall代码并使用/log=log.txt参数运行安装程序来检查自己。 -
@TLama 所以,即使
[RUN]部分出现错误,ssPostInstall还是会被触发?