Es gibt derzeit keine Möglichkeit, die erfolgreiche Ausführung von [Run] Einträgen zu überprüfen. Der Code protokolliert nur den Prozessbeendigungscode und fährt mit dem nächsten Eintrag fort (er kann in der Inno-Setup-Quelldatei Main.pas untersucht werden, die Funktion ist ProcessRunEntry(), beginnend mit Zeile 3404 in der aktuellen Version 5.2. 3).
Wenn Sie sicherstellen müssen, dass mehrere Ausführungen von msiexec erfolgreich waren, müssen Sie eine Zwischenebene codieren. Dies kann so einfach sein wie ein kleiner Stub, der in den [Run] -Einträgen ausgeführt wird, und startet msiexec.exe mit den korrekten Parametern, wartet auf den Abschluss des Prozesses und schreibt dann den Rückkehrcode in eine Datei.
Eine weitere Möglichkeit für den Erfolg einer solchen Anlage Schritt zu prüfen, wäre eine benutzerdefinierte Prozeduraufruf für jeden [Run] unter Verwendung des Afterinstall Parameter Eintrag hinzuzufügen. In einer solchen Funktion kann man zum Beispiel prüfen, ob ein OCX-Steuerelement erfolgreich installiert wurde:
[Run]
Filename: "{tmp}\MyInstallation1.exe"; Parameters: "/foo"; AfterInstall: AfterMyInstallation1
[Code]
var
MyInstallation1Success: boolean;
procedure AfterMyInstallation1;
var
V: Variant;
begin
try
V := CreateOleObject('MyInstallation.InstalledOcxControl.1');
MyInstallation1Success := True;
except
MyInstallation1Success := False;
end;
end;
oder ob die Verzeichnisse und Registry-Einträge für die Abhängigkeit alle da sind.
Jeder [Run] Eintrag wird nur dann, wenn seine optionalen Parameter true zurückgibt prüfen ausgeführt. Je nach Ihren Anforderungen können Sie entweder alle unbeaufsichtigten Installationen nacheinander starten und nach dem letzten Ausführen eine Skriptfunktion ausführen, um zu überprüfen, ob alle Abhängigkeiten erfolgreich installiert wurden. oder Sie könnten eine Prüffunktion für jede abhängige Installation schreiben, die dann false zurückgibt und somit alle anderen Installationen nach dem ersten fehlgeschlagenen abbricht.
Beachten Sie jedoch, dass alle [Run] Einträge ausgeführt werden, nachdem die Schritte zum Kopieren von Dateien, Registrierung usw. abgeschlossen sind, so dass Sie im Grunde bereits mit der Installation abgeschlossen sind. Wenn Sie alle Installationsschritte nur ausführen möchten, wenn alle Abhängigkeiten korrekt installiert sind, müssen Sie dies früher tun, wenn die Installation noch abgebrochen werden kann.
Edit: die Frage prüfen Sie "How do you make Inno Setup not look frozen while performing a long Exec?" wo einige Informationen gegeben und ein Beispielskript verknüpft ist, über die Verwendung der Exec() Funktion für Abhängigkeiten zu installieren. Also, wenn Sie nicht [Run] Einträge verwenden, gibt es eine gute Chance zu erreichen, was Sie wollen.
Dank mghie, ich glaube, dass das, was ich bin auf der Suche nach. Gibt es im Run-Bereich irgendwelche Haken zum Abbrechen? –
Entschuldigung, ich habe meine Antwort bearbeitet, um weitere Informationen zu integrieren - es sieht so aus, als könnten Sie mit [Run] -Einträgen nicht wirklich machen, was Sie wollen. – mghie