を実行し、私は私のスクリプトで実行する次のコードを持っている:Inno Setupの - AfterInstallアクションが複数回
procedure AddRulesToFirewall();
var
ResultCode: Integer;
begin
Exec('netsh.exe','advfirewall firewall add rule name="MyApplication" dir=in program="{app}\MyApplication.exe" security=notrequired action=allow protocol=tcp','',SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
そして、私は次のようAfterInstall
アクションがあります。
Source:{#OutputBinaries}\Company*.dll; DestDir: {app}; Components: binaries; AfterInstall: AddRulesToFirewall()
しかしAfterInstall
アクションを何度も実行されるため、このコマンドでグループ化されたバイナリごとに、AfterInstall
アクションが実行されていると仮定しています。
私の質問は、AddRulesToFirewall
のコードをバイナリのインストール後に一度しか実行しないようにするにはどうすればよいですか?
ファイルセクションにすべてのバイナリをリストし、最後のバイナリにはAfterInstall
しか持たないことに気付きましたが、バイナリがたくさんあるので、私はむしろこのアプローチを使いません。
この機能は、各Company * .dllファイルをaferと呼びます。ワイルドカードを呼び出します。そのような場合は、 'AfterInstall'フラグをつけた単一ファイルエントリを追加するほうが良いでしょう。そして、マーチンが示唆したように、' CurStepChanged'と 'ssPostInstall'を使うのがベストです。 – RobeN