Changement du code de produit
Le code de produit est un GUID qui correspond à l’identification principale d’une application ou d’un produit. Consultez Codes de produit.
Une mise à jour qui répond aux recommandations suivantes ne nécessite généralement pas de changement du code de produit et peut être gérée comme une petite mise à jour ou, si la version doit changer, comme une mise à niveau mineure :
- La mise à jour peut augmenter ou réduire l’arborescence fonctionnalités/composants. Toutefois, elle ne doit pas réorganiser la hiérarchie existante des fonctionnalités et des composants décrits par les tables Feature et FeatureComponents. Elle peut ajouter une nouvelle fonctionnalité à l’arborescence fonctionnalités/composants existante. Si elle supprime une fonctionnalité parente, elle doit également supprimer toutes les fonctionnalités enfants de la fonctionnalité supprimée.
- La mise à jour peut ajouter un nouveau composant à une nouvelle fonctionnalité ou à une fonctionnalité existante.
- La mise à jour ne doit pas changer le code de composant d’un composant. Ainsi, une petite mise à jour ou une mise à niveau mineure ne doit jamais changer le nom du fichier de clés d’un composant, car cela nécessiterait de changer le code du composant.
- La mise à jour ne doit pas changer le nom du fichier .msi du package d’installation. À la place, dans la mesure où elle modifie le package, elle doit changer le code du package. Notez que cela signifie que la mise à jour peut changer les tables, les actions personnalisées et les boîtes de dialogue dans le fichier.msi sans changer le nom du fichier.
- La mise à jour peut ajouter, supprimer ou modifier les fichiers, les clés de Registre ou les raccourcis des composants qui ne sont pas partagés par au moins deux fonctionnalités. Si la mise à jour modifie un fichier versionné, la version de ce fichier doit être incrémentée dans la table File. Si la mise à jour supprime des ressources, elle doit également mettre à jour les tables RemoveFile et RemoveRegistry pour supprimer les fichiers inutilisés, les clés de Registre ou les raccourcis déjà installés.
- La mise à jour d’un composant partagé par deux fonctionnalités ou plus doit être à compatibilité descendante avec toutes les applications et fonctionnalités qui utilisent le composant. La mise à jour peut modifier la ressource d’un composant partagé, par exemple des fichiers, des entrées de Registre et des raccourcis, à condition qu’il s’agisse de changements à compatibilité descendante. Il n’est pas recommandé que la mise à jour ajoute ou supprime des fichiers, des entrées de Registre ou des raccourcis dans un composant partagé.
- Une petite mise à jour est fournie sous forme d’un package de correctifs Windows Installer. (Un CD-ROM de produit complet n’est généralement pas fourni avec une petite mise à jour.)
Le code de produit doit être changé si l’une des situations suivantes est vraie pour la mise à jour :
- Les installations coexistantes des produits d’origine et des produits mis à jour sur le même système doivent être possibles.
- Le nom du fichier .msi a été changé.
- Le code de composant d’un composant existant a changé.
- Un composant est supprimé d’une fonctionnalité existante.
- Une fonctionnalité existante a été transformée en fonctionnalité enfant d’une fonctionnalité existante.
- Une fonctionnalité enfant existante a été supprimée de sa fonctionnalité parente.
Notez que l’ajout d’une nouvelle fonctionnalité enfant, constituée entièrement de nouveaux composants, à une fonctionnalité existante ne nécessite pas le changement du code de produit.
Vous pouvez créer des fonctionnalités enfants en incluant msidbFeatureAttributesFollowParent et msidbFeatureAttributesUIDisallowAbsent dans le champ Attributes de la table Feature. Si la mise à niveau mineure ajoute uniquement de nouvelles fonctionnalités enfants, REINSTALL=ALL suffit pour forcer l’installation des nouvelles fonctionnalités enfants. Pour plus d’informations, consultez Contrôle des états de la sélection des fonctionnalités.
Une nouvelle fonctionnalité enfant peut être masquée pour l’utilisateur. Pour synchroniser l’état d’installation d’une nouvelle fonctionnalité enfant avec sa fonctionnalité parente, définissez les bits msidbFeatureAttributesFollowParent et msidbFeatureAttributesUIDisallowAbsent de la fonctionnalité enfant.
Rubriques connexes