Reduzieren der Patchgröße

Ab Windows Installer Version 3.0 können Patchautor*innen die vom Installationsprogramm zwischengespeicherte Produktbaseline verwenden, um Anwendungen mit kleineren Deltapatches einfacher zu verwalten. In vielen Fällen kann ein Deltapatch, der Wartungsinformationen für eine Anwendung bereitstellt, erheblich kleiner sein als ein vollständiger Dateipatch oder ein Installationspaket, das die gleichen Informationen liefert.

Windows Installer 2.0: Nicht unterstützt. Ab Windows Installer 3.0 speichert das Installationsprogramm selektiv Baselineinformationen zu Dateien, wenn sie aktualisiert werden.

Windows Installer bietet drei Methoden zum Aktualisieren und Warten von Anwendungen: kleine Updates, kleinere Upgrades und große Upgrades. Ein kleines Update wird auch als QFE-Update (Quick Fix Engineering) bezeichnet, und ein kleineres Upgrade wird auch als Service Pack-Update (SP) bezeichnet. Bei einem typischen großen Upgrade wird eine frühere Anwendung entfernt und eine neue Anwendung installiert. Windows Installer kann Wartungsinformationen für Anwendungen als Installationspaket (MSI-Datei) oder Patchpaket (MSP-Datei) bereitstellen.

Ein Windows Installer-Patchpaket, das Wartungsinformationen für ein kleines Update oder kleineres Upgrade bereitstellt, ist in der Regel viel kleiner als das entsprechende Installationspaket, das dieselben Wartungsinformationen bereitstellt. Es wird empfohlen, Patchpakete für die Verteilung kleiner und kleinerer Upgrades zu verwenden. Ein Installationspaket sollte für die Verteilung eines Hauptupgrades verwendet werden.

Windows Installer-Patches (MSP-Dateien) können entweder aus vollständigen Dateien oder Dateiunterschieden (auch Dateideltas genannt) generiert werden. Ein Windows Installer-Patch, der aus Dateideltas generiert wird, kann viel kleiner sein als der entsprechende Patch für vollständige Dateien. Alle Versionen des Windows Installer können sowohl vollständige Dateipatches als auch Deltapatches verwenden.

Ab Windows Installer Version 3.0 speichert das Installationsprogramm selektiv Baselineinformationen zu Dateien, wenn sie aktualisiert werden. Informationen zur ursprünglichen Basisanwendung (RTM-Version) und zum neuesten Nebenupgrade (Service Pack) werden an einem privaten Speicherort gespeichert, wenn die Anwendung installiert ist oder ein kleineres Upgrade erhält.

Das Installationsprogramm führt Folgendes aus, um die Größe des Baselinecaches zu minimieren:

  • Für jede Anwendung werden nicht mehr als zwei Baselines verwaltet: eine Baseline der Datei wie ursprünglich freigegeben (RTM) und eine Baseline der Datei beim letzten kleineren Upgrade (Service Pack).
  • Eine Datei wird erst dem Cache hinzugefügt, wenn sie gepatcht wurde. Der Baselinecache ist ein Copy-on-Write-Cache.
  • Wenn die Anwendung noch nie aktualisiert wurde, befinden sich keine Dateien im Baselinecache.
  • Wenn die letzte Wartung der Anwendung ein kleineres Upgrade (Service Pack) war, befindet sich die Anwendung auf einer Baselineebene, und auf dem Computer können höchstens zwei Kopien einer Datei vorhanden sein. Eine Kopie der Datei befindet sich im Zielverzeichnis der Installation. Die andere Kopie kann sich im RTM-Baselinecache befinden.
  • Wenn die letzte Wartung der Anwendung ein kleines Update (QFE) war, befindet sich die Anwendung nicht auf einer Baselineebene, und auf dem Computer können höchstens drei Kopien einer Datei vorhanden sein. Die erste Kopie der Datei befindet sich im Zielverzeichnis der Installation. Die zweite Kopie der Datei befindet sich im RTM-Baselinecache. Die letzte Kopie der Datei befindet sich im aktuellen Baselinecache.
  • Der Basiscache der Anwendung wird entfernt, wenn das Produkt deinstalliert wird.

Ab Windows Installer Version 3.0 kann das Installationsprogramm den Baselinecache verwenden, wenn Patches auf die Anwendung angewendet werden. Die Baselineinformationen können zum Anwenden eines Deltapatches oder während einer Patchdeinstallation zum Zurücksetzen einer Datei auf eine frühere Version verwendet werden. Dadurch können Patchautoren von kleineren Deltapatches profitieren. Wenn das Installationsprogramm feststellt, dass der Deltapatch nicht auf die Zieldatei angewendet werden kann, kann das Installationsprogramm versuchen, eine im Baselinecache gespeicherte Datei als Ausgangspunkt zu verwenden. Das Installationsprogramm greift nur auf die Anforderung der ursprünglichen Installationsquelle zurück, nachdem alle Möglichkeiten im Cache ausprobiert wurden.

Die Einhaltung der folgenden Richtlinien kann Patchautoren helfen, Patches der Windows Installer-Version 3.0 und den Baselinecache zu verwenden, um kleinere Deltapatches zu erstellen:

  • Erstellen Sie Patches, die die MsiPatchSequence-Tabelle enthalten. Diese Tabelle ist für die Verwendung des Baselinecaches erforderlich und ab Windows Installer Version 3.0 verfügbar.
  • Legen Sie keine Richtlinie fest, die die Zwischenspeicherung der Baseline verhindert. Der Wert der MaxPatchCacheSize-Richtlinie gibt den maximalen Prozentsatz des Datenträgerspeicherplatzes an, der verwendet werden kann. Wenn die MaxPatchCacheSize-Richtlinie auf 0 festgelegt ist, werden keine zusätzlichen Dateien im Baselinecache gespeichert. Wenn die Richtlinie nicht festgelegt ist, können standardmäßig maximal 10 % des Datenträgerspeicherplatzes verwendet werden. Wenn die Gesamtgröße des Caches den angegebenen maximalen Prozentsatz des Datenträgerspeicherplatzes erreicht, werden keine zusätzlichen Dateien gespeichert. Die Richtlinie wirkt sich nicht auf Dateien aus, die bereits gespeichert wurden. Auch wenn die Zwischenspeicherung deaktiviert ist, kann das Installationsprogramm vorhandene Produktbaselinecaches verwenden.
  • Wenn der erste angewendete Patch die MsiPatchSequence-Tabelle enthält, ist die Zwischenspeicherung für die Anwendung aktiviert.
  • Wenn ein Patch in der Wartungstransaktion die MsiPatchSequence-Tabelle nicht enthält, wird die Zwischenspeicherung nur für die Anwendung aktiviert, wenn ein kleinerer Upgradepatch (Service Pack), der die MsiPatchSequence-Tabelle enthält, erfolgreich auf das Produkt angewendet wurde.
  • Generieren Sie das Patchpaket mithilfe von Patcherstellungstools wie Msimsp.exe und PATCHWIZ.DLL.
  • Zielen Sie immer auf Patches für die RTM-Version der Anwendung oder eine kleinere Upgrade-Version (Service Pack) der Anwendung ab. Die in der TargetImages-Tabelle der PCP-Datei (Patch Creation Properties) angegebenen Ziele sollten Produktprüfpunkte sein, die durch die ersten drei Felder der ProductVersion-Eigenschaft definiert werden.
  • Richten Sie kleine Updateimages niemals auf Patches aus. Die Ziele zum Erstellen des Patches sollten keine vorherigen kleinen Updateupgradeimages enthalten.