Share via


Déploiement de Windows Installer sur Windows Vista

Mise à jour : novembre 2007

La technologie Windows Installer prend en charge l'installation de logiciel sur le système d'exploitation Windows Vista. L'utilisateur final qui installe des applications sur Windows Vista doit recevoir des invites pour chaque installation de composant nécessitant une élévation, même lorsque l'ordinateur de l'utilisateur fonctionne avec le contrôle de compte d'utilisateur. Pour plus d'informations sur la configuration du contrôle de compte d'utilisateur, consultez Windows Vista et Visual Studio.

Élévation d'applications

En général, Setup.exe (ou programme d'amorçage) n'est pas exécuté avec élévation de privilèges ; il s'exécute au niveau d'autorisation de l'utilisateur actuel. Par conséquent, aucune invite d'élévation n'est générée lors du lancement de l'installation de l'application finale. Toutefois, contrairement à Setup.exe, le fichier .msi génère une invite à l'intention de l'utilisateur.

Dans le manifeste de contrôle de compte d'utilisateur incorporé du programme d'amorçage, le nœud requestedExecutionLevel spécifie que l'installation s'exécute en tant qu'utilisateur actuel (asInvoker) :

<requestedExecutionLevel level="asInvoker" />

Toutefois, vous pouvez élever l'installation de l'application, le cas échéant. Par exemple, la modification des paramètres Services Internet (IIS, Internet Information Services) dans un projet d'installation Web, de même que l'installation d'assemblys dans le Global Assembly Cache, requièrent des privilèges d'administrateur. L'invite d'élévation est générée après l'installation des composants requis mais avant l'installation de l'application.

Pour élever les autorisations relatives à une installation, ouvrez le fichier projet (.vdproj). Dans la section MsiBootstrapper du fichier projet, affectez la valeur True à la propriété RequiresElevation. Cette propriété n'est pas disponible dans l'environnement de développement intégré (IDE) de Visual Studio. Par conséquent, vous devez utiliser le fichier projet. Pour plus d'informations, consultez RequiresElevation, propriété.

Élévation assistée par un administrateur

Windows Installer prend en charge l'élévation assistée par un administrateur sur Windows Vista. Dans ce scénario, l'utilisateur est invité à entrer les informations d'identification d'administrateur et l'administrateur entre le mot de passe de l'utilisateur. Pour prendre en charge ce scénario, le programme d'amorçage affecte la valeur True à la propriété AdminUser lorsque votre ordinateur s'exécute sur Windows Vista ou une version ultérieure de Windows.

Remarque :

Si vous exécutez Windows Vista sur un ordinateur qui n'utilise pas le contrôle de compte d'utilisateur et que vous n'êtes pas un administrateur, AdminUser conservera la valeur True. Par conséquent, les programmes d'installation .exe (tels que SQLExpress32.exe) doivent permettre la détection des autorisations appropriées et générer un code de sortie spécifique si elles sont insuffisantes. Setup.exe doit pouvoir intercepter ce code de sortie et afficher un message indiquant qu'un administrateur est requis.

Élévation des installations de composants requis

Le cas échéant, Windows Vista (et non pas le programme d'amorçage) élève l'installation des composants requis. Lorsque Windows Vista s'exécute avec le contrôle de compte d'utilisateur, une invite est générée pour chaque composant requis devant être élevé, à moins qu'il ne soit déjà installé. En cas d'échec de l'élévation d'un package, le programme d'amorçage échoue et envoie un message d'erreur.

Élévation d'actions personnalisées

Les actions personnalisées que vous créez dans l'Éditeur des actions personnalisées sont exécutées avec élévation de privilèges. Les actions personnalisées ne doivent pas accéder aux données spécifiques à l'utilisateur, telles que le Registre ou le système de fichiers, car elles ne s'exécuteront pas dans le compte de l'utilisateur qui est à l'origine de l'appel.

Par défaut, les actions personnalisées sont exécutées avec élévation de privilèges, car le paramètre par défaut de la propriété NoImpersonate a la valeur True dans l'Éditeur des actions personnalisées. Si vous affectez la valeur False à la propriété NoImpersonate, l'action personnalisée empruntera l'identité de l'utilisateur à l'origine de l'appel qui ne bénéficiera plus que d'autorisations réduites.

Différences entre les versions de Visual Studio

Notez également que les projets d'installation de Visual Studio 2005et Visual Studio 2008 s'exécuteront différemment avec le contrôle de compte d'utilisateur sur Windows Vista.

La détection du programme d'installation intégré de Windows Vista demande à l'utilisateur d'autoriser l'exécution de l'application avec le contrôle de compte d'utilisateur. Tout programme d'amorçage (Setup.exe) créé à partir de Visual Studio 2005 demande toujours l'autorisation de l'utilisateur, quelle que soit l'application à installer. Comme Setup.exe et tous ses processus fonctionnent avec un jeton d'administration sur Windows Vista, l'installation de l'application finale sera exécutée avec des droits élevés. Si un utilisateur exécute Setup.exe avec élévation assistée par un administrateur, l'application sera installée avec le profil de l'utilisateur élevé (pas le profil de l'administrateur).

Dans Visual Studio 2008, le comportement de Setup.exe change ; aucune invite d'élévation n'est générée lors du lancement de l'application. Pour empêcher l'affichage de l'invite d'élévation, le manifeste incorporé du programme d'amorçage spécifie que Setup.exe doit s'exécuter avec le niveau d'exécution demandé asInvoker. Cela permet à l'application finale de ne pas être exécutée avec élévation de privilèges et, le cas échéant, d'élever l'installation des composants requis. Le programme d'amorçage appelle ShellExecute pour lancer les composants requis. Windows Vista reçoit cet appel, exécute la détection d'installation et génère une invite d'utilisateur avant l'installation.

Cette modification présente l'inconvénient de générer une invite pour chaque composant requis à installer, en plus de l'application elle-même. Toutefois, si tous les composants requis sont déjà installés sur l'ordinateur, l'installation ne génère pas nécessairement d'invites. En outre, aucun contrôle externe ne doit faire l'objet d'une élévation. Les contrôles externes fonctionneront, mais l'utilisateur recevra plusieurs invites d'élévation pour chaque contrôle externe, en plus des invites du programme d'installation.

Voir aussi

Concepts

Déploiement de Windows Installer sur Windows Vista

Windows Vista et Visual Studio

Droits de l'utilisateur et Visual Studio

Autres ressources

Concepts relatifs au déploiement de Windows Installer