在 Inno Setup 中处理和自定义错误和消息

Handling and customizing errors and messages in Inno Setup

Inno Setup 将向用户显示不同的消息框。 例如,

  1. 当它尝试安装一个正在使用的文件时,它会向 abort/ignore/cancel 显示一条消息。

  2. 安装程序在安装文件时目标路径低space,安装程序会报错

我需要自己自定义这些消息框。 (我不希望向用户显示这些本地消息)例如,我需要显示另一个消息框,甚至完全不显示来自 Inno Setup 的特定消息,或者在该消息将要触发时更改标签.

可以使用 [Messages] section.

自定义所有 Inno Setup 消息

一些例子:


至于消息框的改动layout/design。你无法真正改变它。通过一些奇特的 Check and BeforeInstall parameters 实现,您可能能够在 Inno Setup 检测到它们之前捕获 一些 问题并以您的自定义方式处理它们。但这是很多工作,结果不可靠。

如果你更具体地告诉我们你想要实现什么,你可能会得到更具体的答案。


如果您需要一个允许 Inno Setup 允许的所有错误的解决方案,包括完全中止安装,CheckBeforeInstall 将无济于事,因为他们没有办法彻底中止它。

您必须在安装前进行所有检查,例如在 CurStepChanged(ssInstall).

[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Check: ShouldInstallFile

[Code]

var
  DontInstallFile: Boolean;

function ShouldInstallFile: Boolean;
begin
  Result := not DontInstallFile;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
  FileName: string;
  Msg: string;
  Response: Integer;
begin
  if CurStep = ssInstall then
  begin
    FileName := ExpandConstant('{app}\MyProg.exe');
    repeat
      if FileExists(FileName) and (not DeleteFile(FileName)) then
      begin
        Msg := Format('File %s cannot be replaced', [FileName]);
        Response := MsgBox(Msg, mbError, MB_ABORTRETRYIGNORE)
        case Response of
          IDABORT: Abort;
          IDIGNORE: DontInstallFile := True;
        end;
      end;
    until (Response <> IDRETRY);
  end;
end;