Inno Setup 安装失败时如何调用 exe(在安装程序本身内)?

How to call an exe when Inno Setup installation fails (within the installer itself)?

我已经使用 Inno Setup 几个月了,但我一直在努力寻找如何从安装程序本身内部检测一个错误,该错误会导致 Inno Setup 以非零退出代码结束.

我考虑过在 ssDone 步骤中使用 CurStepChanged,甚至 DeinitializeSetup,但我找不到如何访问向导的退出代码。

我错过了什么吗?一定有办法做到...

我想知道是否出了什么问题,以便我可以在机器上启动回滚程序。您提出的答案起到了作用。

您无法从 Pascal 脚本中找到安装程序退出代码。


如果您想检测安装程序是否失败,请记住是否使用 ssDone 调用了 CurStepChanged 并在 DeinitializeSetup.

中进行测试
var
  Succeeded: Boolean;

procedure DeinitializeSetup();
begin
  if Succeeded then
  begin
    Log('Installation succeeded');
  end
    else
  begin
    Log('Installation failed');
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then
  begin
    Succeeded := True;
  end;
end;

有一些极端情况,即使使用 ssDone,如果安装程序失败。

例如,当由于一台机器没有重新启动以完成之前的安装而失败时。在这种情况下,CurStepChanged 不会用 ssPostInstall 调用。因此,您可能需要检查这两个步骤,是否会在您的安装程序中发生这种情况。