2

インストーラーと一緒に他のいくつかのサードパーティ製ソフトウェアをパッケージ化し、製品のインストール中にそれらもインストールします。それらをサイレントモードでインストールし、終了コードをキャプチャするため、正常にインストールされ、再起動が必要な終了コードが「3010」になることがあります。そのため、最後に再起動ページを表示したいが、カスタム メッセージを表示したい場合があります。

終了ページにカスタム メッセージを表示する最良の方法は何ですか?

[Messages]
#if FileExists("c:\RebootFile.txt")==0 
  FinishedRestartLabel=To complete the installation of ConditionalMessageOnWizard, Setup must restart your computer. Would you like to restart now?
#else
  FinishedRestartLabel=Reboot Required
#endif

上記のコードを使用していますが、fileexists 関数に {sd} や {tmp} などの動的パスを使用できません。

誰でも助けることができますか?

4

1 に答える 1

2

問題を明確にした後、特定のファイルが存在するかどうかを実際に確認FinishedLabelし、実行時に条件付きでキャプションを変更したいことがわかりました。

#emitまたは短い#開始ステートメントは、プリプロセッサによって使用されます。また、前処理はコンパイルの直前に実行されます。これにより、このプロセスが完了した後にコンパイルされるスクリプトを条件付きで変更できます。c:\RebootFile.txtしたがって、上記のスクリプトを使用して、セットアップがコンパイルされているマシンにファイルが存在するかどうかを実際にチェックし、結果に応じてFinishedRestartLabelメッセージの値を選択します。ただし、両方のテキストをセットアップ バイナリにコンパイルすることはありません。

FinishedLabelこのように、コードからキャプションを変更できます。問題なく定数を展開できます。

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
function NeedRestart: Boolean;
begin
  Result := True;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if not FileExists(ExpandConstant('{sd}\RebootFile.txt')) then
    WizardForm.FinishedLabel.Caption := 'RebootFile NOT found. Restart ?'
  else
    WizardForm.FinishedLabel.Caption := 'RebootFile WAS found. Restart ?';
end;
于 2013-08-01T07:49:30.493 に答える