如何在Inno Setup中设置退出代码?

Tod*_*aba 7 inno-setup exit-code

我想为我的安装设置退出代码,这样我就知道为什么安装被中止了.我正在使用Inno Setup.

Pau*_*sma 12

从Inno Setup帮助文档(来自文章"Setup Exit Codes"):

从Inno Setup 3.0.3开始,安装程序可能会返回以下退出代码之一:

0安装程序已成功运行至完成.

1安装程序无法初始化.

2在实际安装开始之前,用户在向导中单击了"取消",或者在"这将安装..."开头消息框中选择"否".

3准备进入下一个安装阶段时发生致命错误(例如,从显示安装前向导页面到实际安装过程).除非在最不寻常的情况下,例如内存或Windows资源不足,否则不应发生这种情况.

4实际安装过程中发生致命错误.

注意:导致显示Abort-Retry-Ignore框的错误不是致命错误.如果用户在这样的消息框中选择Abort,5则将返回退出代码.

5用户在实际安装过程中单击了"取消",或者在"中止 - 重试 - 忽略"框中选择"中止".

6调试器强制终止安装过程(在IDE中使用了"运行"|"终止").

您可以通过确认退出代码来轻松检查设置是否成功运行0.此外:

任何非零退出代码表示安装程序未运行完成.

要更具体地回答您的问题,您可以通过观察退出代码2或确定已取消安装5.

如果您希望在Inno返回时返回自定义退出代码0,您可以定义以下事件函数:

function GetCustomSetupExitCode: Integer;
Run Code Online (Sandbox Code Playgroud)

从帮助文档(来自文章"Pascal Scripting:Event Functions"):

function GetCustomSetupExitCode: Integer;

返回非零数字以指示安装程序返回自定义退出代码.只有在安装程序成功运行完成且退出代码已经完成时才会调用此函数0.

  • 我知道了; 我已经相应地修改了我的答案.请注意,如果Inno以"0"退出,您只能定义自定义退出代码! (3认同)

lep*_*epe 7

使用:

[Code]
procedure ExitProcess(exitCode:integer);
  external 'ExitProcess@kernel32.dll stdcall';

procedure SomeEventHere();
begin
  if someerror then begin
    ExitProcess(9); //Your custom exit code
  end;
end;
Run Code Online (Sandbox Code Playgroud)