(small) Updates and (minor, major) Upgrades

Types de mise à niveau

Windows Installer prend en charge trois types de mises à niveau de produits : les petites mises à jour, les mises à niveau mineures et les mises à niveau majeures. Les trois types de mises à niveau sont définis comme suit.

A small update
consiste en des modifications du produit, telles que des correctifs, si minimes qu'aucune modification de la version du produit n'est nécessaire ou souhaitée. (Un inconvénient des petites mises à jour est que les programmes externes, y compris les installateurs des versions ultérieures de votre produit, ne seront pas en mesure de distinguer un produit avec la petite mise à jour appliquée d'un produit sans la petite mise à jour).
A minor upgrade
est une modification du produit suffisamment importante pour mériter un changement de la version du produit, comme la mise à jour de la version 1.1 en 1.2, mais dans laquelle il n'y a pas eu de modifications significatives de l'organisation de l'installation entre les versions. Le comportement à l'installation d'une mise à niveau mineure consiste à l'installer par-dessus le produit existant.
A major upgrade
comprend des modifications substantielles du produit, comme la mise à jour de la version 1.2 en 2.0. Une mise à niveau majeure peut contenir des modifications importantes de l'architecture de l'installation. Le comportement à l'installation d'une mise à niveau majeure peut consister à désinstaller la version précédente et à installer la nouvelle, ou à installer par-dessus la version précédente, puis à supprimer toutes les données restantes.

Pour une version antérieure du produit qui a été installée avec une configuration héritée (non-MSI), une action personnalisée sera normalement nécessaire pour désinstaller ou modifier l'installation existante du produit.
Une mise à niveau peut être conditionnée pour être déployée sur le système cible en tant qu'installation complète (package MSI). Une mise à niveau emballée en tant qu'installation complète peut être créée (à l'aide d'actions personnalisées, de commutateurs de ligne de commande ou d'un lanceur d'installation) pour mettre à niveau un produit existant s'il y en a un, ou pour se comporter comme une première installation.

Une mise à niveau peut également être emballée sous la forme d'un fichier de correctif Windows Installer (un fichier portant l'extension MSP). Un correctif Windows Installer contient des modifications entre les fichiers (et autres données) et les tables MSI de la version antérieure et de la version ultérieure. Les différences de fichiers stockées dans un correctif peuvent être binaires, au niveau des octets, ce qui peut donner lieu à un produit livrable beaucoup plus petit qu'une mise à jour emballée sous forme de paquet d'installation complet. Une mise à jour que vous conditionnez sous forme de fichier patch ne peut être utilisée que pour mettre à niveau un produit existant et installé, et ne peut pas être utilisée pour une première installation.

Les petites mises à jour et les mises à niveau mineures sont généralement présentées sous forme de correctifs, tandis que les mises à niveau majeures sont généralement présentées sous forme de paquets d'installation complets.

On croit souvent à tort que les correctifs sont un type distinct de mise à niveau, par opposition à un mécanisme de conditionnement. En fait, le processus de développement d'un correctif implique d'abord la conception d'une mise à niveau mineure ou majeure, puis son conditionnement sous forme de correctif. Avant de créer un patch, il est recommandé de tester la mise à jour en tant que paquet d'installation complet.

Déploiement des Upgrades à jour et des Patches

La première fois que vous exécutez un package d'installation MSI sur un système particulier, Windows Installer stocke la base de données MSI dans le répertoire caché %WINDIR%\Installer. Par défaut, lorsque vous exécutez le même package une deuxième fois ou plus tard sur le même système, Windows Installer exécute le package en mode maintenance et utilise la base de données mise en cache. Un paquet est généralement conçu pour afficher un ensemble différent de boîtes de dialogue lors de l'installation initiale et lors des installations en mode maintenance.

Lors de l'installation initiale, la base de données MSI est mise en cache sur le système de l'utilisateur, mais pas les fichiers de données du produit. Si une opération de maintenance nécessite l'installation d'un fichier, MSI demande l'accès à la source d'installation d'origine et invite l'utilisateur à localiser la source si elle est introuvable (par exemple, si l'installation a été effectuée à partir d'un CD-ROM qui n'est plus dans le lecteur). Pour cette raison, vous devez soit créer une version avec la base de données MSI externe à un lanceur d'installation, soit créer un lanceur d'installation qui met en cache l'installation sur la machine locale.

Conception d'une installation facile à mettre à jour

La conception de vos projets d'installation - l'organisation des fonctionnalités, des composants et des chemins clés d'un produit - a un impact sur l'efficacité des futures mises à jour. L'efficacité d'une mise à jour ou d'un correctif est mesurée par les éléments suivants :
  1. Utilisez des fichiers de clés versionnés chaque fois que possible.
  2. Divisez votre produit en ensembles discrets de fonctions (caractéristiques).
  3. Stockez les données de registre configurables par l'utilisateur dans une fonctionnalité distincte.
  4. Les valeurs des propriétés MSI ne sont pas automatiquement enregistrées lors de l'installation initiale.
  5. Les nouvelles sous-fonctionnalités doivent être marquées comme "obligatoires" (required) et "suivent le parent" (follow parent).
  6. Si votre mise à niveau mineure supprime des données (fichiers, paramètres de registre, etc.) d'un composant, remplissez les tableaux "Supprimer" correspondants.
  7. Changez la version du produit MSI pour chaque nouvelle version.
  8. Lorsque vous construisez votre paquet de mise à jour, utilisez l'optimisation des patchs dans vos paramètres de construction.
  9. Lorsque vous générez un correctif pour une installation compressée, utilisez une image d'administration.
  10. Lors de la génération d'un patch, les deux versions doivent avoir la même disposition des médias.


Définitions

Major

Numéro de version majeure, par exemple 1 pour la version 1.0.2.444
Elle contient de nombreuses nouvelles fonctions et constitue un nouveau développement basé sur la version précédente.

Minor

Numéro de version mineur, par exemple 0 dans la version 1.0.2.444
Logiciel mis à jour avec de nombreuses améliorations des fonctionnalités existantes et quelques nouvelles fonctionnalités. Le code produit Windows reste inchangé.

Revision

Numéro de build, par exemple 2 dans la version 1.0.2.444
Le Service Pack ou la mise à jour du support est une mise à jour du logiciel contenant des améliorations détaillées et des corrections de bogues. Avec le Service Pack, le numéro de build est augmenté et, en fonction de l'étendue de l'amélioration, le numéro de révision.

Build

Numéro de compilation, par exemple 444 pour la version 1.0.2.444
Patch, également connu sous le nom de hotfix ou quickfix, est une mise à jour qui est publiée pour le dépannage ou qui inclut souvent une fonctionnalité nouvelle / améliorée dont un utilisateur a un besoin urgent (patch client). Le patch augmente uniquement le numéro de build.

Package Code

Faisant partie du flux d'informations récapitulatif, le code de paquetage identifie une base de données particulière. Le code de paquetage n'est pas une propriété de Windows Installer. Deux bases de données .msi ayant des codes de package identiques doivent avoir un contenu identique. Par conséquent, vous devez modifier le code de paquetage pour chaque construction.

ProductVersion

Il s'agit d'une propriété de Windows Installer qui identifie la version du produit. Notez que Windows Installer utilise uniquement les trois premiers champs de la propriété ProductVersion pour les comparaisons de versions. Par exemple, pour une version de produit de 1.2.3.4, le 4 est ignoré. (Notez que ceci est vrai pour les comparaisons des valeurs de ProductVersion, et non pour les versions de fichiers).

ProductCode

Il s'agit d'une propriété de Windows Installer qui identifie le GUID d'un produit. Windows Installer considère que deux produits ayant des GUID ProductCode différents ne sont pas liés, même si les valeurs de la propriété ProductName sont identiques.

UpgradeCode

Il s'agit d'une propriété de Windows Installer qui identifie le GUID qui représente un ensemble de produits apparentés. Le UpgradeCode doit être cohérent entre les différentes versions et langues d'une famille de produits apparentés afin de pouvoir être utilisé pour rechercher des versions apparentées du produit qui sont déjà installées. Vous pouvez définir le UpgradeCode pour une mise à niveau dans la vue Mises à niveau.


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 ❲✘❳ ❲✘❳ ❲✘❳