Empêcher l’installation d’un ancien package sur une version plus récente

Les packages de mise à niveau Windows Installer peuvent être créés de sorte que les mises à niveau majeures ne soient pas installées si l’utilisateur dispose déjà d’une version installée plus récente. La procédure décrite dans cette rubrique permet seulement d’empêcher l’installation d’une version antérieure provoquée par l’exécution d’un package de mise à niveau majeure. Cette procédure utilise l’action FindRelatedProducts, qui s’exécute uniquement lors d’une première installation et qui ne s’exécute pas en mode maintenance (réinstallation). Étant donné que les mises à niveau mineures sont effectuées durant une réinstallation, cette procédure ne peut pas être utilisée pour déterminer si un package de mise à niveau mineure tente de rétablir une version antérieure d’une application. Pour plus d’informations, consultez Préparation d’une application pour les mises à niveau majeures futures.

Pour empêcher l’installation d’un ancien package sur une version plus récente

  1. Entrez la propriété UpgradeCode pour le groupe de produits associés qui sont potentiellement concernés par cette mise à niveau dans la colonne UpgradeCode de la table Upgrade.

  2. Entrez l’indicateur de bits msidbUpgradeAttributesOnlyDetect dans la colonne Attributes de la table Upgrade.

  3. Entrez la version de la mise à niveau fournie par ce package dans la colonne VersionMin de la table Upgrade. Laissez la colonne VersionMax vide.

  4. Entrez le nom de la propriété qui doit être définie par l’action FindRelatedProducts dans la colonne ActionProperty de la table Upgrade.

  5. Ajoutez la propriété SecureCustomProperties et la propriété nommée dans la colonne ActionProperty de la table Upgrade à la table Property.

  6. Ajoutez une action personnalisée Type 19 après l’action FindRelatedProducts dans la table InstallExecuteSequence. Incluez un enregistrement dans la table CustomAction pour cette action et entrez le texte à afficher dans la colonne Target. L’action personnalisée Type 19 étant intégrée au programme d’installation, il n’y a pas de code à écrire.

  7. Entrez le nom de la propriété ActionProperty dans la colonne Condition de l’enregistrement de la table InstallExecuteSequence qui contient l’action personnalisée Type 19. Cela conditionne l’action personnalisée à s’exécuter uniquement lorsque la table Upgrade détecte qu’une version plus récente est déjà installée.

    Par exemple, un package Windows Installer qui met à niveau un groupe de produits associés vers la version 3.0 peut inclure les enregistrements suivants dans ses tables Upgrade, CustomAction, InstallExecuteSequence et Property. Tous les produits associés du groupe ont le même UpgradeCode, mais le programme d’installation n’installe pas ce package de mise à niveau si une version ultérieure à 3.0 est déjà installée sur l’ordinateur. Dans ce cas, le programme d’installation affiche un message d’erreur et l’installation échoue. Le package de mise à niveau vers la version 3.0 s’installe sur les versions 1.0 et 2.0.

    Table Upgrade

    UpgradeCode VersionMin VersionMax Langage Attributs Supprimer ActionProperty
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 3.0   msidbUpgradeAttributesOnlyDetect NEWPRODUCTFOUND
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 1.0 3.0 msidbUpgradeAttributesVersionMinInclusive UPGRADEFOUND

     

    Table CustomAction

    Action Type Source Cible
    AC1 19 Une mise à niveau supérieure est déjà installée.

     

    Table InstallExecuteSequence

    Action Condition Séquence
    FindRelatedProducts 200
    AC1 NEWPRODUCTFOUND 201

     

    Table Property

    Propriété Valeur
    SecureCustomProperties NEWPRODUCTFOUND; UPGRADEFOUND