1

Inno セットアップを使用して自分の製品をインストールしています。セットアップで extern プログラム (Validator.exe) を実行します。このプログラムがキャンセルまたは中止された場合、自分のインストーラーをキャンセルする必要があります。

Validator.exe を {app} パスに保存して実行します。

インストーラーの実行中に Validator.exe ファイルを呼び出すと、実行結果が Exec(ExpandConstant('{app}/Validator.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) で得られます。

しかし、これは私が試したすべてのソリューションの問題です。

InitializeSetup: Validator.exe ファイルは {app} にまだコピーされていないため、実行されることはありません。

Abort: は (InitializeSetup,InitializeWizard,CurStepChanged(ssInstall)) でのみ呼び出すことができるため、これらの場合、Validator はまだコピーされません。

DeinitializeSetup: インストール後に Validator.exe を実行できますが、この時点からインストーラーを中止できません。

Validator.exe をコピーして実行した後、インストールをキャンセルする方法が必要です。おそらくアンインストールを呼び出しますが、実行できませんでした。

助けてくれてありがとう。

4

3 に答える 3

4

以前のインストール手順で、単純にExtractTemporaryFile()ヘルパー関数を使用して、 validator.exeを抽出することができます。質問inno setup extracting files at the start up setup without the endとそれに対する私の答えを参照してください。

于 2009-05-22T18:29:15.583 に答える
2

Inno Setup では、「外部」ファイルは、インストーラー EXE ファイル内に含まれていないファイルです。これは外部に存在し、おそらくインストーラーの EXE ファイルとは別のファイルとして含まれています。Abortイベント内で呼び出さない理由InitializeSetupは、検証プログラムがまだディレクトリにコピーされていないためだと言います{app}が、その時点では、ユーザーはインストール先を指定していないため、理解できます。ただし、バリデータが宛先ディレクトリにある必要はありません。すでに外部ファイルになっているので、既にあるディレクトリから実行するだけです。

もう 1 つの可能性は、必要な検証機能を DLL に入れることです。インストーラーに DLL を含めることができます。Inno Setup は DLL を一時的な場所に抽出して、インストール スクリプトからその関数を呼び出すことができるようにします。

于 2009-05-22T17:58:54.197 に答える