如何正确地关闭了创新安装向导的提示没有?(How to properly close out of

2019-10-19 07:49发布

我安装程序将检查对我们的服务器,并在必要时自动下载一个最新版本,就在欢迎页面后部分。 实际的检查和下载是一个功能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;

如何关闭这个安装程序完全放下无需任何进一步的用户交互?

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


文章来源: How to properly close out of Inno Setup wizard without prompt?