2

ソフトウェアパッケージの配信に Inno セットアップを使用しています。Access のバージョンを検出し、メッセージをポップアップ表示します。間違ったバージョンをダウンロードしてインストールを停止したことをユーザーに知らせるメッセージを表示したいと考えています。現在、Inno スクリプトは

itd_downloadafter(NoRuntimePage.ID);

AccessRuntime をインストールする必要があることをユーザーに知らせるメッセージを表示します。ユーザーが [次へ] を押すと、AccessRuntime がダウンロードされ、続行されます。新しいスクリプトでこれを変更して、バージョンが間違っていることをユーザーに伝え、次へを押すかキャンセルしたときにインストール スクリプトを終了したいと考えています。誰かがこれについて私を助けることができますか?

4

2 に答える 2

6

InitializeSetup を使用する理由

ウィザードが開始する前に条件付きでセットアップを終了したい場合は、例外を発生させるInitializeWizardイベント関数を使用しないでください。Abortウィザード フォーム全体を作成するために必要な時間を無駄にします。InitializeSetup代わりにイベント関数を使用してください。そこで、Abort例外を発生させるか、ブール値の結果に False を返して、関数を終了することができます。最終的な結果は間違いなく同じになります。

内部的には、関数は、スクリプトから False を返すと、InitializeSetupまさにこの例外を発生させます。Abortイベントとは対照的にInitializeWizard、イベントが発生したときInitializeSetup、ウィザード フォームはまだ作成されていないため、時間を無駄にすることはなく、システム リソースを使用することもありません。

コード例:

次の疑似コードUserDownloadedWrongVersionでは、True を返すとセットアップが終了し、それ以外は何も起こらないような関数が必要です。

[Code]
function UserDownloadedWrongVersion: Boolean;
begin
  // make your check here and return True when you detect a wrong 
  // version, what causes the setup to terminate; False otherwise
end;

function InitializeSetup: Boolean;
begin
  Result := not UserDownloadedWrongVersion;
  if not Result then
  begin
    MsgBox('You''ve downloaded the wrong version. Setup will now exit!', 
      mbError, MB_OK);
    Exit;   // <-- or use Abort; instead, but there's no need for panic
  end;
end;
于 2012-08-23T19:21:54.903 に答える
1

** TLama の回答はより正確です。**

InitializeWizard プロシージャを使用して、最初にアクセス チェックを実行できます...失敗した場合は、メッセージ ボックスを表示してから Abort() を呼び出すことができます。

[code]
var CustomPage: TInputQueryWizardPage;

procedure InitializeWizard;
begin;
  {your checking Access version and message box}
  Abort();
end;
于 2012-08-23T19:20:42.487 に答える