Sequenzieren von Patches

Ab Windows Installer 3.0 können Autor*innenen der Patchpaketdatenbank in der MsiPatchSequence-Tabelle Informationen zur Patchsequenzierung hinzufügen. Das Installationsprogramm kann anhand dieser Informationen ermitteln, welche Patches auf ein Installationspaket anwendbar sind und welche Patchsequenz am besten geeignet ist. Außerdem werden die Patches in einer konstanten Reihenfolge installiert – unabhängig von der Reihenfolge, in der sie im System bereitgestellt werden.

Windows Installer 2.0: Nicht unterstützt. Vor Windows Installer 3.0 wurden Patches in der Reihenfolge installiert, in der sie im System bereitgestellt werden – und zwar unabhängig davon, ob sie eine MsiPatchSequence-Tabelle enthalten.

Beachten Sie Folgendes, um die Funktionen der Patchsequenzierung nutzen zu können:

  • Patchpakete (MSP-Dateien) müssen über eine MsiPatchSequence-Tabelle verfügen, die Sequenzierungsinformationen enthält. Das Installationsprogramm installiert Patches ohne MsiPatchSequence-Tabelle in der Reihenfolge, in der sie im System bereitgestellt werden.
  • Patches werden mit Windows Installer 3.0 oder höher installiert.

Version 3.0 von Windows Installer verfügt über die folgenden Funktionen, mit denen Anwendungen die beste Patchsequenz ermitteln können.

  • Die Funktion MsiDeterminePatchSequence akzeptiert eine Liste von Patches und ermittelt, in welcher Reihenfolge sie auf ein installiertes Produkt angewendet werden können. Diese Funktion berücksichtigt alle Patches oder Produkte, die bereits im System installiert wurden.
  • Die Funktion MsiDetermineApplicablePatches akzeptiert eine Liste von Patches und ermittelt, in welcher Reihenfolge sie auf ein installiertes Produkt angewendet werden können. Diese Funktion berücksichtigt keine Patches oder Produkte, die bereits im System installiert wurden.

Version 3.0 von Windows Installer kann mehrere Patches auf ein Produkt in einer einzelnen Patchinstallation anwenden. Die Gruppe kann Patches mit und ohne Informationen zur Patchsequenzierung (eine MsiPatchSequence-Tabelle) enthalten. Windows Installer installiert Patchpakete ohne diese Tabelle in der Reihenfolge, in der sie im System bereitgestellt werden. Das Installationsprogramm berücksichtigt Patchpakete, die keine MsiPatchSequence-Tabelle enthalten, die aber durch die im folgenden Abschnitt beschriebene Methode als veraltet oder ersetzt gekennzeichnet wurden.

Wenn in Version 3.0 von Windows Installer mehrere Patches installiert werden, werden die folgenden Schritte ausgeführt, um die Reihenfolge der Anwendung der einzelnen Patches auf das Produkt zu ermitteln:

  1. Installierte Patches ohne MsiPatchSequence-Tabelle werden in der Reihenfolge platziert, in der sie auf das Produkt angewendet wurden. Der erste angewendete Patch steht in der Sequenz an erster Stelle.

  2. Neue Patches ohne MsiPatchSequence-Tabelle werden in die Sequenz eingefügt. Diese Patches werden von der aktuellen Patchinstallation angewendet. Sie werden in der Reihenfolge, in der sie im System bereitgestellt werden, im Anschluss an die Patches aus Schritt 1 platziert.

  3. Veraltete Patches werden aus der Patchsequenz entfernt.

    Hinweis

    Ein Patchpaket kann in der Eigenschaft Revision Number Summary eine explizite Liste veralteter Patches angeben, die vom Patch entfernt werden sollen. Diese Liste wurde für die Verwendung durch Versionen von Windows Installer vor Version 3.0 konzipiert. Version 3.0 von Windows Installer entfernt die als veraltet markierten Patches nur dann aus der Sequenz, wenn die Patches über keine MsiPatchSequence-Tabelle verfügen.

     

  4. Das Installationsprogramm durchläuft die Patchsequenz und ermittelt, welche Patches in der angegebenen Sequenz anwendbar sind. Werden mehrere Patches auf ein Produkt angewendet, transformiert jeder Patch in der Sequenz auch die Installationsdatenbank (MSI-Datei) des Produkts. Ein Patch ist nur dann in einer bestimmten Sequenz anwendbar, wenn seine Datenbanktransformation den Produktcode, die Version, die Sprache und den Upgradecode akzeptiert, die sich aus der Anwendung der Transformationen aller vorherigen Patchpakete auf die Produktdatenbank ergeben. Das Installationsprogramm entfernt alle nicht anwendbaren Patches aus der Sequenz.

  5. Das Installationsprogramm beginnt mit dem Platzieren von Patches, die Sequenzierungsinformationen in der MsiPatchSequence-Tabelle enthalten. Patches für kleinere Upgrades, die über eine MsiPatchSequence-Tabelle verfügen, werden in der Sequenz nach den Patches aus den vorherigen Schritten platziert – beginnend mit der niedrigsten Produktversion nach dem Upgrade. Windows Installer entfernt anschließend alle Patches für kleinere Upgrades, die in dieser Sequenz nicht angewendet werden können.

  6. Patches für kleine Updates, die auf kleinere Upgrades mit einer MsiPatchSequence-Tabelle ausgerichtet sind, werden der höchsten Version des Patches für kleinere Upgrades in der Sequenz zugewiesen.

  7. Alle Patches für kleine Updates, die in den vorherigen Schritten nicht zugewiesen wurden und über eine MsiPatchSequence-Tabelle verfügen, werden vor dem ersten kleineren Upgrade mit MsiPatchSequence-Tabelle platziert, jedoch nach der MSI-Installationsdatenbank und nach allen Patches ohne MsiPatchSequence-Tabelle. Windows Installer entfernt anschließend alle Patches für kleine Updates, die in dieser Sequenz nicht angewendet werden können.

  8. Version 3.0 von Windows Installer entfernt ersetzte Patches aus der Sequenz. Ersetzt ein Patch andere Patches, die an früherer Stelle in der Patchsequenz stehen, enthält der Patch alle Fehlerbehebungen der früheren Patches. Die früheren Patches werden nicht mehr benötigt. Windows Installer benötigt die Informationen in der MsiPatchSequence-Tabelle, um ersetzte Patches zu entfernen.

    Hinweis

    Sollen Patches eine Reihe früherer Patches ersetzen, müssen sie so erstellt werden, dass sie die früheren Patches in allen Patchfamilien ersetzen. Patches für kleine Updates können nur kleine Updates ersetzen. Patches für kleinere Upgrades können sowohl kleine Updates als auch andere kleinere Upgrades ersetzen.

     

  9. Patches für kleine Updates, die MsiPatchSequence-Tabellen enthalten, werden innerhalb von Produktversionen gemäß den Sequenzierungsinformationen in ihren MsiPatchSequence-Tabellen sequenziert. Auf diese Weise wird die endgültige Patchsequenz ermittelt.

Ein Patch, der nicht mehr verwendet wird, kann aus der Patchsequenz entfernt werden. Weitere Informationen zum Entfernen von Patches aus der Patchsequenz finden Sie unter Entfernen von Patches.

Ein Beispiel dafür, wie Sie mit der MsiPatchSequence-Tabelle die Patches in der Reihenfolge anwenden, in der sie erstellt werden, finden Sie im Beispiel für mehrere Patches.