Ich habe das folgende Stück Code in meinem Skript auszuführen:Inno Setup - Afterinstall Aktion ausgeführt mehrfach
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;
Und ich habe folgende AfterInstall
Aktion:
Source:{#OutputBinaries}\Company*.dll; DestDir: {app}; Components: binaries; AfterInstall: AddRulesToFirewall()
jedoch die AfterInstall
Aktion wird oft ausgeführt, daher gehe ich davon aus, dass die Aktion AfterInstall
für jede unter diesem Befehl gruppierte Binärdatei ausgeführt wird.
Meine Frage ist, wie soll ich das ändern, so dass der Code AddRulesToFirewall
nur einmal ausgeführt wird, nachdem die Binärdateien installiert sind?
Ich realisiere, dass ich alle Binärdateien einzeln in den Dateien Abschnitt auflisten konnte und die AfterInstall
nur auf der letzten Binärdatei haben, aber da es viele Binärdateien gibt, würde ich diesen Ansatz lieber nicht verwenden.
Die Funktion wird nach jeder Company * .dll-Datei aufgerufen - Sie rufen Wildcard auf. In diesem Fall ist es besser, Single File Einträge mit dem 'AfterInstall'-Flag hinzuzufügen und am besten 'CurStepChanged' mit' ssPostInstall' zu verwenden, wie Martin vorgeschlagen hat. – RobeN