【问题标题】:Inno Setup: How to remove Abort from regserver error?Inno Setup:如何从 regserver 错误中删除 Abort?
【发布时间】:2017-05-10 20:46:16
【问题描述】:

我想知道,如果有办法让消息框显示,当 Files 部分中的 regserver 标志出现错误时,只显示 RetryIgnore 选项,而不是 Abort 选项。

我知道有一个标志noregerror。我不想不显示错误。我想展示它,但只有两个选项。

有时在尝试注册 OCX/DLL 时显示错误,当用户单击 重试 时,它会在第二次工作。如果用户单击取消,安装程序会回滚所有内容,从我的更新程序中删除文件。

谢谢。

【问题讨论】:

    标签: registry inno-setup


    【解决方案1】:

    无法自定义这些按钮。

    但是您可以使用RegisterServer 在代码中实现注册。然后你可以用任何你喜欢的方式处理错误。实际上,您甚至可以自动重试注册,这正是您真正想做的事情。

    虽然实现重试/忽略消息框并不容易。下面的代码使用简单的Yes/No

    [Files]
    Source: "MyDll.dll"; DestDir: "{app}"; AfterInstall: RegServer
    
    [Code]
    
    procedure RegServer;
    var
      FileName: string;
      Message: string;
      Retry: Boolean;
    begin
      repeat
        Retry := False;
        FileName := ExpandConstant(CurrentFilename);
        try
          { First argument indicates if DLL is 64-bit }
          RegisterServer(False, FileName, True);
        except
          Message :=
            FileName + #13#10#13#10 +
            FmtMessage(SetupMessage(msgErrorRegisterServer), [AddPeriod(GetExceptionMessage)]) +
              #13#10#13#10 +
            'Do you want to retry registration? ' +
            'Click Yes to try again or No to proceed anyway (not recommended).';
          Retry := (MsgBox(Message, mbError, MB_YESNO) = IDYES);
        end;
      until (not Retry);
    end;
    

    【讨论】:

    • 谢谢马丁,你一直在帮助我。这正是我想做的。
    猜你喜欢
    • 2016-05-11
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多