Error handling 如何跟踪安装过程中是否显示错误消息,或者在发生错误时如何阻止忽略选项?
在安装时,我们可能会遇到一条错误消息,宣布BIN错误、文件Sha错误、空间不足等 默认情况下,有重试/忽略/中止选项可供选择 如果用户选择忽略,如何在wpFinished上通知他在安装过程中发现了一些错误Error handling 如何跟踪安装过程中是否显示错误消息,或者在发生错误时如何阻止忽略选项?,error-handling,inno-setup,Error Handling,Inno Setup,在安装时,我们可能会遇到一条错误消息,宣布BIN错误、文件Sha错误、空间不足等 默认情况下,有重试/忽略/中止选项可供选择 如果用户选择忽略,如何在wpFinished上通知他在安装过程中发现了一些错误 或者如何隐藏错误MsgBox上的忽略按钮?安装时重试/忽略/中止操作时,可以跟踪错误 //Global vars var SetupDone: Boolean; //by default must be False StepInstalling: Boolean; //
或者如何隐藏错误MsgBox上的忽略按钮?安装时重试/忽略/中止操作时,可以跟踪错误
//Global vars
var SetupDone: Boolean; //by default must be False
StepInstalling: Boolean; //by default must be False
//code
procedure CurStepChanged(CurStep: TSetupStep);
var
ResultCode: Integer;
begin
case CurStep of
ssInstall:
begin
// .... some code
StepInstalling:=True;
end;
ssDone:
begin
SetupDone:=True;
end;
end;
end;
procedure HandleTerminateRetryCancelErrorWhileInstalling();
begin
// some code to do when error occurs
end;
procedure DeinitializeSetup();
begin
If ((SetupDone <> True) and (StepInstalling = True)) then
begin
MsgBox('Handling', mbconfirmation, mb_OK);
HandleTerminateRetryCancelErrorWhileInstalling();
end;
end;
//全局变量
var-SetupDone:布尔值//默认情况下必须为False
步骤:布尔//默认情况下必须为False
//代码
过程CurStepChanged(CurStep:TSetupStep);
变量
结果代码:整数;
开始
案例步骤
ssInstall:
开始
// .... 一些代码
步骤安装:=真;
结束;
完成时间:
开始
SetupDone:=真;
结束;
结束;
结束;
安装()时的过程handleterminetrycancelerror;
开始
//发生错误时要执行的一些代码
结束;
过程去初始化设置();
开始
如果((SetupDone True)和(StepInstalling=True)),则
开始
MsgBox(“处理”,mb确认,mb_OK);
HandleTerminateRetryCancellerwhileInstalling();
结束;
结束;
似乎可以更改AbortRetryIgnoreMsgBox
或跟踪AbortRetryIgnoreMsgBox
/NoErrorMessages
触发。但我无法做到这一点。这并非不可能,但您需要一个外部库来钩住底层的MessageBox
windowsapi函数调用。从这样的库中,您将公开一个函数来注册对脚本的回调,您将在调用修补函数时调用该回调(实际上是关于刚刚显示的消息框的通知)。哦,这还不是全部,因为即使你钩住了消息框,你仍然需要知道消息框告诉你什么,因此你需要解析它的文本来区分失败和查询,如果用户想退出设置。也就是说,嗯,糟糕透了。如果你解析安装日志,你会达到类似的可靠性水平(但不确定当时它是否可用)。最好是收集整个安装过程中发生的一些错误(可按严重性、错误类型和错误源进行过滤)。某种可从脚本访问的可过滤日志。但这当然需要对Inno设置进行修改……遗憾的是,无法跟踪WPIS中的安装错误。希望它能在将来的版本中实现。我将支持类似于onFileEntryProcessed
之类的事件,它会在处理完每个条目后立即触发(报告处理结果),并在其中添加取消(回滚)设置的功能。顺便说一句,进度条状态的变化可以很容易地跟踪,但需要Vista以上的系统。。。