Benutzerdefinierte Rollbackaktionen
Wenn das Installationsprogramm das Installationsskript verarbeitet, generiert es gleichzeitig ein Rollbackskript. Zusätzlich zum Rollbackskript speichert das Installationsprogramm eine Kopie jeder Datei, die sie während der Installation löscht. Diese Dateien werden in einem ausgeblendeten Systemverzeichnis gespeichert. Nach Abschluss der Installation werden das Rollbackskript und die gespeicherten Dateien gelöscht. Wenn eine Installation nicht erfolgreich ist, versucht das Installationsprogramm, die während der Installation vorgenommenen Änderungen zurückzusetzen und den ursprünglichen Zustand des Computers wiederherzustellen.
Benutzerdefinierte Aktionen, die Systemvorgänge durch Einfügen von Zeilen in die Datenbanktabelle planen, werden zwar durch ein Rollback der Installation umgekehrt, aber benutzerdefinierte Aktionen, die das System direkt ändern oder Befehle an andere Systemdienste ausgeben, können nicht immer durch ein Rollback rückgängig gemacht werden. Eine benutzerdefinierte Rollbackaktion ist eine Aktion, die das Installationsprogramm nur während eines Installationsrollbacks ausführt, und der Zweck besteht darin, eine benutzerdefinierte Aktion rückgängig zu machen, die Änderungen am System vorgenommen hat.
Eine benutzerdefinierte Rollbackaktion ist eine Art von benutzerdefinierten Ausführungsaktion, da die Ausführung verzögert wird, wenn sie während der Installationssequenz aufgerufen wird. Es unterscheidet sich von einer regulären verzögerten benutzerdefinierten Aktion darin, dass sie nur während eines Rollbacks ausgeführt wird. Eine benutzerdefinierte Rollbackaktion muss immer vor der zurückgestellten benutzerdefinierten Aktion, die in der Aktionssequenz zurückgesetzt wird, vorausgehen. Eine benutzerdefinierte Rollbackaktion sollte auch den Fall behandeln, in dem die verzögerte benutzerdefinierte Aktion in der Mitte der Ausführung unterbrochen wird. Wenn der Benutzer beispielsweise die Schaltfläche "Abbrechen" drücken soll, während die benutzerdefinierte Aktion ausgeführt wurde.
Beachten Sie, dass benutzerdefinierte Rollbackaktionen nicht asynchron ausgeführt werden können. Siehe synchrone und asynchrone benutzerdefinierte Aktionen.
Die Ergänzung zu einer benutzerdefinierten Rollbackaktion ist eine commit benutzerdefinierte Aktion. Das Installationsprogramm führt während der Installationssequenz eine commit-benutzerdefinierte Aktion aus, kopiert die benutzerdefinierte Aktion in das Rollbackskript, führt die Aktion jedoch während des Rollbacks nicht aus.
Beachten Sie, dass eine benutzerdefinierte Rollbackaktion möglicherweise nicht alle Änderungen entfernen kann, die durch Commit von benutzerdefinierten Aktionen vorgenommen wurden. Obwohl das Installationsprogramm sowohl rollback- als auch benutzerdefinierte Aktionen in das Rollbackskript schreibt, werden benutzerdefinierte Aktionen nur ausgeführt, nachdem das Installationsprogramm das Installationsskript erfolgreich verarbeitet hat. Benutzerdefinierte Commitaktionen sind die ersten Aktionen, die im Rollbackskript ausgeführt werden sollen. Wenn ein Commit für eine benutzerdefinierte Aktion fehlschlägt, initiiert das Installationsprogramm rollback, kann jedoch nur diese Vorgänge ausführen, die bereits in das Rollbackskript geschrieben wurden. Dies bedeutet, dass je nach benutzerdefinierter Commitaktion ein Rollback möglicherweise nicht in der Lage ist, die von der Aktion vorgenommenen Änderungen rückgängig zu machen. Sie können Fehler bei benutzerdefinierten Aktionen ignorieren, indem Sie die benutzerdefinierte Aktion erstellen, um Rückgabecodes zu ignorieren.
Wenn das Installationsprogramm eine benutzerdefinierte Rollbackaktion ausführt, wird der einzige modusparameter, der festgelegt wird, MSIRUNMODE_ROLLBACK. Eine Beschreibung der Ausführungsmodusparameter finden Sie unter MsiGetMode-.
Eine benutzerdefinierte Rollbackaktion kann durch Hinzufügen eines Optionszeichens zum Feld "Typ" der CustomAction-Tabelleangegeben werden. Informationen zum Kennzeichnen einer benutzerdefinierten Rollbackaktion finden Sie unter benutzerdefinierten Aktion In-Script Ausführungsoptionen.
Rollback und Commit für benutzerdefinierte Aktionen werden nicht ausgeführt, wenn rollback deaktiviert ist. Wenn ein Paketautor diese Arten von benutzerdefinierten Aktionen für die ordnungsgemäße Installation benötigt, sollten sie die RollbackDisabled- eigenschaft in einer Bedingung verwenden, die verhindert, dass die Installation fortgesetzt wird, wenn rollback deaktiviert ist. Informationen zum Deaktivieren des Rollbacks finden Sie unter Rollbackinstallation (Windows Installer).