3

外部アプリケーションが終了コード5を返した場合、どういうわけか強制的に再起動できますか?

[Run]
Filename: {app}\e.exe; Parameters: Z; Description: {cm:ALaunchProgram,{#ti}};

RUNセクションでそれが不可能な場合、実行可能ファイルがポストフェーズ中に実行されるように、ShellExecをどこで呼び出すことができますか。

4

1 に答える 1

6

[Run]実行されたファイルが、再起動が必要であるとInnoが自動検出できる処理(再起動時にファイルを置換または削除するようにスケジュールするなど)を行わない限り、エントリから再起動をトリガーする方法はありません。RestartIfNeededByRunこれは、デフォルトで。に設定されている設定を介して制御されyesます。

戻り値を取得してそれを使って何か面白いことをしたい場合は、を使用する必要があります[Code]。インストール後に実行する必要がある場合は、推奨される場所は次のとおりですCurStepChanged(ssPostInstall)(これは実際には[Run]エントリが通常実行した後に発生します)。

この時点Execで、プログラムを実行して終了コードを確認し、オプションで、再起動するかどうかを示すグローバル変数を設定できます。その後、その値をNeedRestartイベント関数で使用できます。

ただし、このパスをたどる前に、実行しようとしているものが実際に何らかの前提条件のコンポーネントである場合は、PrepareToInstall代わりにそれをインストールすることを強く検討する必要があります。この例は、前提条件のインストールとメインアプリケーションのインストールの間に再起動をトリガーする例を含め、Innoに含まれています。

于 2013-01-17T13:14:54.360 に答える