Lignes directrices pour les packages

Étant donné que le contrôle des comptes d'utilisateurs (UAC) dans Windows Vista restreint les privilèges au cours d'une installation, les développeurs de packages Windows Installer ne doivent pas supposer que leur installation a toujours accès à toutes les parties du système.

Un package d'installation qui peut être déployé avec succès pour les utilisateurs standard via la stratégie de groupe devrait, dans la plupart des cas, fonctionner également avec le contrôle de compte d'utilisateur dans Windows Vista. Des exceptions à cette règle peuvent se produire si la table InstallUISequence contient l'action LaunchConditions ou si la table LaunchCondition contient une condition basée sur la propriété Privileged. Les développeurs de packages Windows Installer doivent donc respecter les directives suivantes pour s'assurer que leur package fonctionne avec l'UAC et Windows Vista.

  • Lorsque vous incluez une condition de contexte d'installation avec une action dans le tableau InstallUISequence, utilisez une instruction conditionnelle basée sur la propriété Privileged. N'utilisez pas de condition basée sur la propriété AdminUser.
  • Lorsque vous incluez le contexte d'installation dans les conditions de lancement de l'installation, utilisez une action personnalisée de type 19 dans le tableau InstallExecuteSequence et subordonnez l'action personnalisée à la propriété Privileged. N'utilisez pas d'action dans le tableau LaunchCondition avec une condition basée sur la propriété AdminUser ou la propriété Privileged.
  • Pour lire ou modifier la configuration du système, utilisez une action personnalisée à exécution différée dans le tableau InstallExecuteSequence. N'utilisez pas d'actions personnalisées à exécution immédiate dans le tableau InstallUISequence pour modifier la configuration du système.
  • Pour modifier des parties du système qui ne sont pas spécifiques à l'utilisateur, utilisez une action personnalisée à exécution différée dans la table InstallExecuteSequence. Vous devez inclure le bit msidbCustomActionTypeNoImpersonate dans le type d'action personnalisée.
  • Omettez le bit 3 de la valeur de la propriété Résumé du nombre de mots pour indiquer que le package peut être amené à être élevé. N'incluez pas ce bit à moins que des privilèges élevés ne soient pas nécessaires pour installer ce package.
  • Incluez un manifeste avec le niveau d'exécution requis de l'application.
  • Incluez un certificat dans le tableau MsiPatchCertificate du package d'origine et signez tous les patches avec le même certificat.
  • Si des privilèges élevés sont nécessaires pour installer un package Windows Installer, l'auteur du package doit inclure l'attribut ElevationShield pour le contrôle PushButton utilisé pour démarrer l'installation. L'utilisateur sera ainsi averti qu'en cliquant sur le bouton, la boîte de dialogue UAC s'affichera et demandera l'autorisation de l'administrateur pour poursuivre l'installation.
  • Attribuez la valeur 1 à la propriété MSIDEPLOYMENTCOMPLIANT pour indiquer au programme d'installation de Windows que le package a été créé et testé pour être conforme à l'UAC dans Windows Vista. Si cette propriété n'est pas définie, le programme d'installation détermine si le package est conforme à l'UAC.

En dehors de la stratégie de groupe, la vérification suivante de la conformité à l'UAC peut être utilisée sous Windows XP.

Pour vérifier la conformité UAC en dehors de la stratégie de groupe

  1. Ouvrez une session sur l’ordinateur en tant qu’administrateur.

  2. Annoncez le package pour une installation par machine :

    msiexec /jm package.msi

  3. Déconnectez-vous de l'ordinateur.

  4. Connectez-vous à l'ordinateur en tant qu'utilisateur standard.

  5. Essayez d'installer le package annoncé :

    msiexec /i package.msi

  6. Dans la plupart des cas, si l'installation réussit, le package est compatible avec l'UAC.

  7. Attribuez la valeur 1 à la propriété MSIDEPLOYMENTCOMPLIANT du package.

  8. Testez l'installation correcte du package sous Windows Vista.