3

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

使用以下代码,我使用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;

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

4

1 回答 1

6

这可以通过处理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;
于 2014-02-12T19:20:56.620 回答