在 Inno Setup 中处理和自定义错误和消息
Handling and customizing errors and messages in Inno Setup
Inno Setup 将向用户显示不同的消息框。
例如,
当它尝试安装一个正在使用的文件时,它会向 abort/ignore/cancel 显示一条消息。
安装程序在安装文件时目标路径低space,安装程序会报错
我需要自己自定义这些消息框。 (我不希望向用户显示这些本地消息)例如,我需要显示另一个消息框,甚至完全不显示来自 Inno Setup 的特定消息,或者在该消息将要触发时更改标签.
可以使用 [Messages]
section.
自定义所有 Inno Setup 消息
一些例子:
至于消息框的改动layout/design。你无法真正改变它。通过一些奇特的 Check
and BeforeInstall
parameters 实现,您可能能够在 Inno Setup 检测到它们之前捕获 一些 问题并以您的自定义方式处理它们。但这是很多工作,结果不可靠。
如果你更具体地告诉我们你想要实现什么,你可能会得到更具体的答案。
如果您需要一个允许 Inno Setup 允许的所有错误的解决方案,包括完全中止安装,Check
或 BeforeInstall
将无济于事,因为他们没有办法彻底中止它。
您必须在安装前进行所有检查,例如在 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;
Inno Setup 将向用户显示不同的消息框。 例如,
当它尝试安装一个正在使用的文件时,它会向 abort/ignore/cancel 显示一条消息。
安装程序在安装文件时目标路径低space,安装程序会报错
我需要自己自定义这些消息框。 (我不希望向用户显示这些本地消息)例如,我需要显示另一个消息框,甚至完全不显示来自 Inno Setup 的特定消息,或者在该消息将要触发时更改标签.
可以使用 [Messages]
section.
一些例子:
至于消息框的改动layout/design。你无法真正改变它。通过一些奇特的 Check
and BeforeInstall
parameters 实现,您可能能够在 Inno Setup 检测到它们之前捕获 一些 问题并以您的自定义方式处理它们。但这是很多工作,结果不可靠。
如果你更具体地告诉我们你想要实现什么,你可能会得到更具体的答案。
如果您需要一个允许 Inno Setup 允许的所有错误的解决方案,包括完全中止安装,Check
或 BeforeInstall
将无济于事,因为他们没有办法彻底中止它。
您必须在安装前进行所有检查,例如在 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;