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 に答える