Error handling 如何跟踪安装过程中是否显示错误消息,或者在发生错误时如何阻止忽略选项?

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; //

在安装时,我们可能会遇到一条错误消息,宣布BIN错误、文件Sha错误、空间不足等

默认情况下,有重试/忽略/中止选项可供选择

如果用户选择忽略,如何在wpFinished上通知他在安装过程中发现了一些错误


或者如何隐藏错误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以上的系统。。。