Zuerst sollten Sie wissen, dass InstallUtil benutzerdefinierte Aktionen verwenden (unabhängig davon, wie dokumentiert und geschrieben über sie sind) sind keine gute Wahl. Werf sie weg. Dasselbe gilt für das Visual Studio-Bereitstellungsprojekt, das Sie verwenden, um Ihre benutzerdefinierte Aktion zu konsumieren.
Die beste Lösung liegt in der Nutzung von Windows Installer eine integrierte Unterstützung für die Erstellung und Dienste zu starten. Verwenden Sie InstallShield 2010 Limited Edition (kostenlos) oder Windows Installer XML (FOSS). Diese Werkzeuge, die Servicecontrol Tabelle belichten, die eine Wait Spalte hat, die Sie MSI lehren ermöglicht:
Warten
Verlassen dieses Feld null oder Eingabe ein Wert von 1 bewirkt, dass der Installateur ein Maximum von 30 warten, Sekunden für den Dienst zu vervollständigen bevor Sie fortfahren. Die Wartezeit kann verwendet werden, zusätzliche Zeit, um für ein kritische Ereignis eines Ausfall Fehler zurückzukehren. Ein Wert von 0 in diesem Feld bedeutet, dass nur gewartet wird, bis der Dienst Control Manager (SCM) meldet, dass dieser Dienst in einem ausstehenden Status ist, bevor Sie mit der Installation fortfahren.
ServiceControl Table
Ort, wo ich von den Rollback initiieren wollen? ist das von einer benutzerdefinierten Aktion? –
Ja, ich habe eine Installer-Klasse, die dem Installationsprozess in der benutzerdefinierten Aktion hinzugefügt wurde, und installiere einen Windows-Dienst, falls diese Installation fehlschlägt. Ich möchte, dass die gesamte Installation fehlschlägt und alle Dateien gelöscht werden. – guyl
Versuchen 1602 aus Ihrer benutzerdefinierten Aktion Rückkehr: http://msdn.microsoft.com/en-us/library/aa369778(VS.85).aspx –