Updates and Upgrades
(small, minor, major)

Arten von Upgrades

A small update
besteht aus Produktänderungen, wie z. B. Hotfixes, die so klein sind, dass keine Änderung der Produktversion notwendig oder erwünscht ist. (Ein Nachteil von kleinen Updates ist, dass externe Programme, einschließlich Installationsprogrammen für spätere Versionen Ihres Produkts, nicht in der Lage sind, ein Produkt mit dem angewandten kleinen Update von einem Produkt ohne das kleine Update zu unterscheiden).
A minor upgrade
ist eine Änderung am Produkt, die groß genug ist, um eine Änderung der Produktversion zu rechtfertigen, wie z. B. die Aktualisierung von Version 1.1 auf 1.2, bei der aber keine wesentlichen Änderungen an der Setup-Organisation zwischen den Versionen vorgenommen wurden. Das Installationsverhalten eines kleineren Upgrades ist die Installation über das vorhandene Produkt.
A major upgrade
beinhaltet wesentliche Produktänderungen, wie z. B. die Aktualisierung von Version 1.2 auf 2.0. Ein Major Upgrade kann erhebliche Änderungen an der Setup-Architektur enthalten. Das Installationsverhalten eines Major Upgrades kann darin bestehen, die frühere Version zu deinstallieren und die neue zu installieren, oder über die frühere Version zu installieren und dann alle übrig gebliebenen Daten zu entfernen.

Bei einer früheren Produktversion, die mit einem Legacy-Setup (nicht-MSI) installiert wurde, ist normalerweise eine benutzerdefinierte Aktion erforderlich, um die vorhandene Produktinstallation zu deinstallieren oder zu ändern.
Ein Upgrade kann für die Bereitstellung auf dem Zielsystem als Vollinstallation (MSI-Paket) verpackt werden. Ein als Vollinstallation verpacktes Upgrade kann (mithilfe von benutzerdefinierten Aktionen, Befehlszeilenoptionen oder einem Setup-Startprogramm) so erstellt werden, dass es ein vorhandenes Produkt aktualisiert, falls eines vorhanden ist, oder sich wie eine Erstinstallation verhält.

Ein Upgrade kann auch als Windows Installer-Patch-Datei (eine Datei mit der Erweiterung MSP) verpackt werden. Ein Windows Installer-Patch enthält Änderungen zwischen den Dateien (und anderen Daten) und MSI-Tabellen in den früheren und späteren Versionen. Bei den in einem Patch gespeicherten Dateiunterschieden kann es sich um binäre Unterschiede auf Byte-Ebene handeln, was möglicherweise zu einer viel kleineren Lieferung führt als ein Update, das als vollständiges Installationspaket verpackt ist. Ein Update, das Sie als Patch-Datei verpacken, kann nur zur Aktualisierung eines vorhandenen, installierten Produkts verwendet werden und kann nicht als Erstinstallation verwendet werden.

Kleine Updates und kleinere Upgrades werden in der Regel als Patches verpackt, während größere Upgrades in der Regel als vollständige Installationspakete verpackt werden.

Ein weit verbreiteter Irrtum ist, dass Patches eine separate Art von Upgrade sind, im Gegensatz zu einem Paketierungsmechanismus. Tatsächlich umfasst der Patch-Entwicklungsprozess zunächst die Entwicklung eines kleineren oder größeren Upgrades, das dann als Patch verpackt wird. Bevor Sie einen Patch erstellen, wird empfohlen, das Update als vollständiges Installationspaket zu testen.

Bereitstellen von Upgrades und Patches

Wenn Sie ein MSI-Installationspaket zum ersten Mal auf einem bestimmten System ausführen, speichert Windows Installer die MSI-Datenbank im "super-hidden" Verzeichnis %WINDIR%\Installer. Wenn Sie dasselbe Paket ein zweites Mal oder später auf demselben System ausführen, führt Windows Installer das Paket standardmäßig im Wartungsmodus aus und verwendet die zwischengespeicherte Datenbank. (Ein Paket ist typischerweise so angelegt, dass bei der Erstinstallation und bei Installationen im Wartungsmodus eine unterschiedliche Reihe von Dialogfeldern angezeigt wird, die Bedingungen wie "Nicht installiert" enthalten).

Während der Erstinstallation wird die MSI-Datenbank auf dem System des Benutzers zwischengespeichert, die Datendateien des Produkts jedoch nicht. Wenn ein Wartungsvorgang dazu führt, dass eine Datei installiert werden muss, verlangt MSI Zugriff auf die ursprüngliche Installationsquelle und fordert den Benutzer auf, die Quelle zu suchen, wenn sie nicht gefunden werden kann (z. B. wenn die Installation von einer CD-ROM durchgeführt wurde, die sich nicht mehr im Laufwerk befindet). Aus diesem Grund sollten Sie entweder ein Release mit der MSI-Datenbank extern zu einem Setup-Launcher erstellen oder einen Setup-Launcher erstellen, der die Installation auf dem lokalen Rechner zwischenspeichert.

Entwerfen einer Update-freundlichen Installation

Das Design Ihrer Installationsprojekte - die Organisation der Funktionen, Komponenten und Schlüsselpfade eines Produkts - hat Auswirkungen auf die Effektivität zukünftiger Updates. Die Effektivität eines Upgrades oder Patches wird anhand der folgenden Punkte gemessen:
  1. Verwenden Sie, wann immer möglich, versionierte Schlüsseldateien.
  2. Unterteilen Sie Ihr Produkt in diskrete Funktionssätze (Features).
  3. Legen Sie benutzerkonfigurierbare Registrierungsdaten in einem eigenen Feature ab.
  4. MSI-Eigenschaftswerte werden bei der Erstinstallation nicht automatisch gespeichert.
  5. Neue Unterfeatures sollten als "erforderlich" und "folgt dem übergeordneten Feature" gekennzeichnet werden.
  6. Wenn Ihr Minor-Upgrade Daten (Dateien, Registry-Einstellungen usw.) aus einer Komponente entfernt, füllen Sie die entsprechenden "Entfernen"-Daten aus.
  7. Ändern Sie die MSI-Produktversion für jede neue Version.
  8. Verwenden Sie bei der Erstellung Ihres Update-Pakets die Patch-Optimierung in Ihren Erstellungseinstellungen.
  9. Wenn Sie einen Patch für eine komprimierte Installation erzeugen, verwenden Sie ein administratives Image.
  10. Wenn Sie einen Patch erzeugen, sollten beide Versionen das gleiche Medienlayout haben.

Definitions

Major

Hauptversionsnummer, beispielsweise "1" in der Version 1.0.2.444
Es beinhaltet umfangreiche neue Funktionen und ist eine Neuentwicklung auf Basis der Vorgängerversion.

Minor

Nebenversionsnummer, beispielsweise "0" in der Version 1.0.2.444
Aktualisierung der Software mit umfangreicher Verbesserung der bestehenden Funktionen und wenigen neuen Funktionen. Der Windows-Produktcode bleibt unverändert.

Revision

Ausgabenummer, beispielsweise "2" in der Version 1.0.2.444
Servicepack oder auch Support-Update ist eine Softwareaktualisierung mit Detailverbesserungen und Fehlerbehebungen. Beim Servicepack wird die Buildnummer erhöht und je nach Umfang der Verbesserung auch die Revisionsnummer.

Build

Kompilierungsnummer, beispielsweise "444" in der Version 1.0.2.444
Patch, auch Hotfix oder Quickfix ist eine Aktualisierung, die zur Fehlerbehebung herausgegeben wird oder häufig auch eine neue/verbesserte Funktion beinhaltet, die von einem Anwender dringend benötig wird (Kunden-Patch). Beim Patch wird nur die Buildnummer erhöht.

Package Code

Als Teil des Summary Information Stream identifiziert der Paketcode eine bestimmte Datenbank. Der Paketcode ist keine Windows Installer-Eigenschaft. Zwei beliebige .msi-Datenbanken mit identischen Paketcodes müssen identische Inhalte haben. Daher sollten Sie den Paketcode für jedes Build ändern.

ProductVersion

Dies ist eine Windows Installer-Eigenschaft, die die Produktversion identifiziert. Beachten Sie, dass Windows Installer nur die ersten drei Felder der Eigenschaft "ProductVersion" für Versionsvergleiche verwendet. Zum Beispiel wird bei einer Produktversion von 1.2.3.4 die 4 ignoriert. (Beachten Sie, dass dies für Vergleiche von ProductVersion-Werten gilt, nicht für Dateiversionen).

ProductCode

Dies ist eine Windows Installer-Eigenschaft, die die GUID eines Produkts identifiziert. Windows Installer behandelt zwei Produkte mit unterschiedlichen ProductCode-GUIDs als nicht verwandt, auch wenn die Werte für die Eigenschaft ProductName gleich sind.

UpgradeCode

Dies ist eine Windows Installer-Eigenschaft, die die GUID identifiziert, die einen verwandten Satz von Produkten darstellt. Der UpgradeCode sollte über verschiedene Versionen und Sprachen einer Familie verwandter Produkte hinweg konsistent sein, damit er für die Suche nach verwandten Versionen des Produkts, die bereits installiert sind, verwendet werden kann. Sie können den UpgradeCode für ein Upgrade in der Ansicht "Upgrades" festlegen.


Major Upgrade vs. Minor Upgrade vs. Small Update

Requirement for the Upgrade Use a Major Upgrade? Use a Minor Upgrade? Use a Small Update? Note
Change the name of the .msi package Yes No No The default file name is taken from the Product Name property, provided the .msi file is not compressed in a Setup.exe installation launcher.
Enable end users to install earlier versions and the latest version on the same machine Yes No No
Add a new subfeature Yes In some cases In some cases If the new subfeature consists of new components only, you can use a small update, a minor upgrade, or a major upgrade. If the new subfeature consists of existing components, you must use a major upgrade.
Move or delete a feature in the product tree Yes No No
Add a new component to a new feature Yes Yes Yes
Add a new component to an existing feature Yes Yes Yes
Move or delete a component in the product tree Yes No No
Change the component code of an existing component Yes No No
Change the key file of a component Yes No No
Add, remove, or modify any of the following: files, registry keys, or shortcuts Yes Yes Yes If the file, registry key, or shortcut is in more than one component and the component is shared by two or more features, a major upgrade must be used.
Start with an MSI Database or Transform project Yes No No

Codes that Need to Be Changed for the Different Types of Upgrades

Package Code Product Version Product Code Upgrade Code
Small Update ❲✘❳
Minor Upgrade ❲✘❳ ❲✘❳
Major Upgrade ❲✘❳ ❲✘❳ ❲✘❳