【问题标题】:How to properly close out of Inno Setup wizard without prompt?如何在没有提示的情况下正确关闭 Inno Setup 向导?
【发布时间】:2014-03-11 08:11:04
【问题描述】:

我的安装程序的一部分会检查我们服务器上的最新版本,并在必要时自动下载,就在欢迎页面之后。实际检查和下载在函数CheckForNewInstaller 中,如果新安装程序已下载并已执行,则返回True,如果需要继续,则返回False。如果下载了新的安装程序 (True),则需要关闭向导。

使用以下代码,我使用WizardForm.Close 完成了此操作。但是,如果用户确定要取消,它仍会提示用户。在正常情况下,我仍然希望用户在尝试关闭安装程序时收到此提示。但是,当我需要强制关闭向导时,我需要取消此对话框。我也不能终止进程,因为清理过程不会正常进行。

function NextButtonClick(CurPageID: Integer): Boolean;
var
  ResultCode: Integer;
  X: Integer;
begin
  Log('NextButtonClick(' + IntToStr(CurPageID) + ') called');
  Result := True;
  case CurPageID of
    wpWelcome: begin
      if CheckForNewInstaller then begin
        //Need to close this installer as new one is starting
        WizardForm.Close;
      end;
    end;
    ....
  end;
end;

如何在没有任何进一步用户交互的情况下完全关闭此安装程序?

【问题讨论】:

    标签: inno-setup suppress


    【解决方案1】:

    这可以通过处理CancelButtonClick 事件并设置Confirm 参数来完成...

    var
      ForceClose: Boolean;
    
    procedure Exterminate;
    begin
      ForceClose:= True;
      WizardForm.Close;  
    end;
    
    procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
    begin
      Confirm:= not ForceClose;
    end;
    
    function NextButtonClick(CurPageID: Integer): Boolean;
    var
      ResultCode: Integer;
      X: Integer;
    begin
      Log('NextButtonClick(' + IntToStr(CurPageID) + ') called');
      Result := True;
      case CurPageID of
        wpWelcome: begin
          if CheckForNewInstaller then begin
            Exterminate;
          end;
        end;
        ....
      end;
    end;
    

    【讨论】:

    • 好吧,那么你使用了错误的事件。如果您想阻止安装程序启动,您应该使用InitializeSetup 事件方法。在所有情况下,这个答案都是错误的。
    • @TLama 这不是第一件事,我希望这发生在欢迎页面之后。我从不想阻止向导启动,否则我会把它放在InitializeSetup
    • @TLama 实际上,自从我发布了这个问题/答案后,我改变了逻辑,现在向导中甚至有一个页面询问他们是否要检查新版本。
    • 您已经说过“在第一步”,这意味着在向导开始之前。如果有更新版本,我同意甚至不启动设置的想法。但我明白了,你有你自己的方式,你想提供给你的用户。那么祝你好运;-)
    • @TLama 是的,那句话的定义非常松散:-)
    猜你喜欢
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 2011-06-25
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 2021-03-26
    相关资源
    最近更新 更多