Suppression de correctifs

À compter de Windows Installer version 3.0, il est possible de créer et d’installer des correctifs, et de désinstaller des correctifs individuellement les uns des autres, dans n’importe quel ordre, sans avoir à désinstaller et à réinstaller l’application entière et d’autres correctifs. Windows Installer 3.0 permet également de créer des packages de correctifs avec une table MsiPatchSequence qui contient des informations sur le séquencement des correctifs. Avec les versions de Windows Installer antérieures à Windows Installer 3.0, la seule méthode possible pour supprimer des correctifs spécifiques d’une application consiste à désinstaller l’application entière mise à jour, puis à la réinstaller sans réappliquer les correctifs à supprimer.

La possibilité de désinstaller un correctif dépend de la façon dont le correctif a été créé, de la version de Windows Installer utilisée pour installer le correctif et des modifications apportées à l’application par le correctif. Si un correctif n’est pas désinstallable, la seule façon de le supprimer est de désinstaller l’application entière, puis de la réinstaller sans appliquer le correctif à supprimer.

Vous pouvez désinstaller un ou plusieurs correctifs en utilisant une option en ligne de commande ou l’interface de script, ou en appelant MsiRemovePatches à partir d’une autre application. Pour plus d’informations sur la désinstallation de correctifs, consultez Désinstallation de correctifs.

La valeur de la propriété MSIPATCHREMOVE liste les correctifs à désinstaller. Pour chaque correctif de la liste, le programme d’installation vérifie que le correctif est désinstallable. Si l’utilisateur ne dispose pas des privilèges pour supprimer le correctif, si le correctif n’est pas reconnu par le produit, si la stratégie de correctif empêche la suppression ou si le correctif a été marqué comme non désinstallable, le programme d’installation retourne une erreur indiquant un échec de l’opération d’installation. Pour plus d’informations sur les critères déterminant qu’un correctif n’est pas désinstallable, consultez Correctifs désinstallables.

Si le correctif est supprimable, le programme d’installation le supprime de la séquence d’application des correctifs. Pour plus d’informations sur la façon dont Windows Installer 3.0 détermine la séquence d’application des correctifs, consultez Séquencement des correctifs. Notez que la suppression de correctifs de la séquence peut entraîner l’activation de correctifs marqués comme obsolètes ou remplacés.

Tous les correctifs sélectionnés à supprimer sont listés dans la propriété MsiPatchRemovalList. Cette propriété est une propriété privée qui est définie par le programme d’installation et qui peut être utilisée dans des expressions conditionnelles ou interrogée par des actions personnalisées. La propriété contient la liste des GUID de code des correctifs à supprimer. Une action personnalisée peut déterminer si l’état d’installation d’un correctif est appliqué, obsolète ou remplacé en appelant MsiGetPatchInfoEx ou la propriété PatchProperty de l’objet Patch.

Après la suppression d’un correctif, l’état de l’application est le même qu’avant l’installation du correctif supprimé. Si possible, le programme d’installation limite le processus au sous-ensemble de fonctionnalités impactées par le correctif à supprimer. Le programme d’installation définit automatiquement la propriété REINSTALL sur la liste des fonctionnalités impactées. Les fichiers ayant été ajoutés par le correctif sont supprimés et ceux ayant été modifiés par le correctif sont remplacés. Les fichiers et les entrées de Registre sont restaurés à la version attendue par le produit avant l’installation du correctif. Les fonctionnalités et les composants qui ont été ajoutés par le correctif sont désinscrits de l’application. Notez que du contenu supplémentaire ajouté par le correctif peut être conservé sur l’ordinateur de l’utilisateur si le contenu est utilisé par un autre correctif toujours applicable.

Si un fichier d’un composant partagé est mis à jour par un correctif, la modification impacte toutes les applications qui partagent le composant. Lorsque le correctif est supprimé, là encore, la modification impacte toutes les applications qui partagent le composant. Cela signifie que la suppression d’un correctif par une application peut entraîner la restauration du fichier du composant partagé à une version antérieure à celle requise par une autre application. Cela peut corriger la première application, mais provoquer l’arrêt du fonctionnement de la deuxième application. Dans ce cas de figure, il est possible de réparer la deuxième application en la réinstallant à l’aide des méthodes décrites dans Réinstaller une fonctionnalité ou une application. Cette opération restaure la version corrigée du fichier.

MsiEnumapplicationsEx

MsiGetPatchInfoEx

MSIPATCHREMOVE

MsiRemovePatches

Séquencement des correctifs

Actions personnalisées de désinstallation d’un correctif

Correctifs désinstallables

Désinstallation de correctifs