Entfernen von Patches

Ab Windows Installer Version 3.0 können Patches erstellt und installiert werden, die einzeln und in beliebiger Reihenfolge deinstalliert werden können, ohne die gesamte Anwendung und andere Patches deinstallieren und neu installieren zu müssen. Windows Installer 3.0 ermöglicht auch das Erstellen von Patchpaketen mit einer Tabelle MsiPatchSequence, die Informationen zur Patchsequenzierung enthält. In Versionen vor Windows Installer 3.0 unterstützt besteht die einzige Methode zum Entfernen bestimmter Patches aus einer Anwendung darin, die gesamte gepatchte Anwendung zu deinstallieren und dann neu zu installieren, ohne die zu entfernenden Patches erneut anzuwenden.

Ob ein Patch deinstalliert werden kann, hängt davon ab, wie er erstellt wurde, von der zum Installieren des Patches verwendeten Version von Windows Installer und von den Änderungen, die durch den Patch an der Anwendung vorgenommen wurden. Wenn ein Patch nicht deinstalliert werden kann, besteht die einzige Möglichkeit zum Entfernen des Patches darin, die gesamte Anwendung zu deinstallieren und neu zu installieren, ohne den zu entfernenden Patch anzuwenden.

Sie können Patches über eine Befehlszeilenoption, die Skriptschnittstelle oder das Aufrufen von MsiRemovePatches aus einer anderen Anwendung deinstallieren. Weitere Informationen zum Deinstallieren von Patches finden Sie unter Deinstallieren von Patches.

Der Wert der MSIPATCHREMOVE-Eigenschaft listet die Patches auf, die deinstalliert werden sollen. Das Installationsprogramm überprüft für jeden Patch in der Liste, ob er deinstalliert werden kann. Wenn der/die Benutzer*in nicht über Berechtigungen zum Entfernen des Patches verfügt, der Patch für das Produkt unbekannt ist, die Patchrichtlinie das Entfernen verhindert oder der Patch als nicht deinstallierbar gekennzeichnet wurde, wird vom Installationsprogramm ein Fehler zurückgegeben, der auf einen Fehler bei der Installationstransaktion hinweist. Weitere Informationen dazu, wie die Deinstallierbarkeit von Patches festgelegt wird, finden Sie unter Deinstallierbare Patches.

Nachdem der Patch als entfernbar verifiziert wurde, entfernt das Installationsprogramm ihn aus der Patchanwendungssequenz. Weitere Informationen dazu, wie Windows Installer 3.0 die zu verwendende Sequenz zum Anwenden von Patches festlegt, finden Sie unter Sequenzierung von Patches. Beachten Sie, dass das Entfernen von Patches aus der Sequenz dazu führen kann, dass als veraltet oder abgelöst markierte Patches aktiv werden.

Alle zum Entfernen ausgewählten Patches werden in der MsiPatchRemovalList-Eigenschaft aufgeführt. Dies ist eine private Eigenschaft, die vom Installationsprogramm festgelegt wird und in bedingten Ausdrücken verwendet oder von benutzerdefinierten Aktionen abgefragt werden kann. Die Eigenschaft enthält die Liste der Patchcode-GUIDs der zu entfernenden Patches. Die benutzerdefinierte Aktion kann durch Aufrufen der Eigenschaften MsiGetPatchInfoEx oder PatchProperty des Patch-Objekts feststellen, ob der Installationsstatus des Patches „Angewandt“, „Veraltet“ oder „Abgelöst“ ist.

Nachdem ein Patch entfernt wurde, entspricht der Zustand der Anwendung dem, als der Patch noch nicht installiert wurde. Wenn möglich, schränkt das Installationsprogramm den Prozess auf die Teilmenge der von der Entfernung des Patches betroffenen Features ein. Das Installationsprogramm legt die REINSTALL-Eigenschaft automatisch auf die Liste der betroffenen Features fest. Durch den Patch hinzugefügte Dateien werden entfernt, und geänderte Dateien werden überschrieben. Dateien und Registrierungseinträge werden auf die vom Produkt erwartete Version abzüglich des Patches wiederhergestellt. Die Registrierung der Features und Komponenten, die durch den Patch hinzugefügt wurden, wird für die Anwendung aufgehoben. Beachten Sie, dass zusätzliche Inhalte, die durch den Patch hinzugefügt wurden, auf dem Computer verbleiben können, wenn der Inhalt von einem anderen, weiterhin gültigen Patch verwendet wird.

Wenn eine Datei einer freigegebenen Komponente durch einen Patch aktualisiert wird, wirkt sich die Änderung auf alle Anwendungen aus, die die Komponente gemeinsam nutzen. Auch wenn der Patch entfernt wird, wirkt sich diese Änderung auf alle Anwendungen aus, die die Komponente gemeinsam nutzen. Dies bedeutet, dass das Entfernen eines Patches durch eine Anwendung die Datei der freigegebenen Komponente in einer niedrigeren Version wiederherstellen kann, als für eine andere Anwendung erforderlich ist. Dies kann Probleme mit der ersten Anwendung beheben, aber dazu führen, dass die zweite Anwendung nicht mehr funktioniert. In diesem Fall kann die zweite Anwendung repariert werden, indem Sie sie mithilfe der unter Neuinstallation eines Features oder einer Anwendung beschriebenen Methoden erneut installieren. Dadurch wird die gepatchte Version der Datei wiederhergestellt.

MsiEnumapplicationsEx

MsiGetPatchInfoEx

MSIPATCHREMOVE

MsiRemovePatches

Patchsequenzierung

Benutzerdefinierte Aktionen für die Patchdeinstallation

Deinstallierbare Patches

Deinstallieren von Patches