Création de package unique

Un package double usage est un package Windows Installer 5.0 qui a été créé pour pouvoir installer une application dans le contexte d’installation par utilisateur ou par ordinateur. Les développeurs d’installation qui utilisent un package à double usage pour leur application peuvent fournir à leurs utilisateurs un choix de contexte d’installation au moment de l’installation et supprimer les invites d’informations d’identification UAC des installations par utilisateur sur Windows 7 ou Windows Server 2008 R2. Le développement d’un package Windows Installer 5.0 à double usage pour l’installation sur Windows 7 et Windows Server 2008 R2 est appelé création de package unique.

Vous pouvez commencer à développer des packages à double usage pour Windows 7 et Windows Server 2008 R2 à l’aide de Windows Installer 5.0, de la propriété MSIINSTALLPERUSER , de la propriété ALLUSERS et des dossiers et inscriptions connus par utilisateur de l’interpréteur de commandes Windows. Lorsque Windows Installer 5.0 installe un package double usage dans le contexte par utilisateur sur Windows 7 ou Windows Server 2008 R2, le programme d’installation dirige les entrées de fichiers et de Registre vers les emplacements par utilisateur et n’affiche pas les invites UAC pour les informations d’identification. Lorsque Windows Installer 5.0 installe un package à double usage dans le contexte par machine, le programme d’installation dirige les fichiers et les entrées de Registre vers les emplacements par ordinateur et invite les informations d’identification UAC pour confirmer que l’utilisateur dispose des privilèges suffisants pour installer des logiciels pour tous les utilisateurs de l’ordinateur. Une fois que Windows Installer 5.0 installe une application, il utilise le même contexte d’installation pour toutes les mises à jour, réparations ou suppressions ultérieures de l’application.

Windows Installer 4.5 ou version antérieure: la propriété MSIINSTALLPERUSER et les versions par utilisateur des dossiers référencés par les propriétés ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Folderet CommonFiles64Folder ne sont pas prises en charge. Les dossiers FOLDERID_UserProgramFiles et FOLDERID_UserProgramFilesCommon sont disponibles à partir de Windows 7 et Windows Server 2008 R2. Cela signifie que les installations développées pour Windows Installer 4.5 ou une version antérieure des fichiers directs et des entrées de Registre vers FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64 et FOLDERID_ProgramFilesCommonX64. Étant donné qu’il s’agit d’emplacements accessibles à d’autres utilisateurs de l’ordinateur, les systèmes Windows Vista et ultérieur nécessitent l’affichage des invites UAC pour les informations d’identification.

Lorsqu’un utilisateur installe un package double usage créé pour Windows Installer 5.0 avec Windows Installer 4.5 ou version antérieure, le programme d’installation ignore la propriété MSIINSTALLPERUSER . Dans ce cas, l’installation peut diriger les fichiers et les entrées de Registre vers des emplacements accessibles à d’autres utilisateurs et exiger que le système affiche les invites UAC pour les informations d’identification. Windows Installer 5.0 peut installer un package qui a été développé pour Windows Installer 4.5 ou une version antérieure. Toutefois, l’installation dirige les fichiers et les entrées de Registre vers des emplacements accessibles à d’autres utilisateurs et exige que le système affiche les invites de contrôle d’utilisateur pour les informations d’identification.

Instructions dont le suivi est conseillé pour le développement

Respectez les instructions suivantes en matière de création d’un seul package pour vous assurer que le package peut être installé dans le contexte par utilisateur ou par ordinateur. Suivez ces instructions pour permettre à l’utilisateur de choisir au moment de l’installation une installation par utilisateur ou par ordinateur et de supprimer les invites UAC des installations par utilisateur.

  • L’installation par utilisateur nécessite Windows Installer 5.0 sur Windows 7 ou Windows Server 2008 R2. Vous devez informer l’utilisateur que le package prend en charge l’installation par ordinateur de l’application sur des versions antérieures du système.

  • Initialisez les valeurs des propriétés ALLUSERS et MSIINSTALLPERUSER dans la table de propriétés de votre package à double usage. Utilisez la valeur ALLUSERS de 2 et une valeur MSIINSTALLPERUSER de 1 comme valeurs initiales. Cela spécifie l’installation par utilisateur comme valeur par défaut pour le package à double usage.

  • Envisagez de créer une boîte de dialogue pour l’interface utilisateur de votre package à double usage qui permet à l’utilisateur de choisir le contexte au moment de l’installation. Créez les contrôles de cette boîte de dialogue personnalisée pour définir les valeurs des propriétés ALLUSERS et MSIINSTALLPERUSER . Pour la valeur ALLUSERS de 2, définissez MSIINSTALLPERUSER sur la valeur 1 pour spécifier une installation par utilisateur et définissez MSIINSTALLPERUSER sur une chaîne vide («  ») pour spécifier une installation par ordinateur. Les utilisateurs peuvent également définir ALLUSERS et MSIINSTALLPERUSER sur la ligne de commande s’ils installent le package à partir de la ligne de commande.

  • Validez le package à l’aide d’évaluateurs de cohérence interne - ICE. Le package doit être en mesure de réussir la validation par ICE105 pour être un package à double usage valide.

  • Utilisez la table du Registre et la table RemoveRegistry pour rediriger les entrées du Registre vers les parties par utilisateur du Registre pendant les installations par utilisateur. Dans une installation par utilisateur, les entrées de Registre qui ont -1 dans la colonne Racine sont redirigées vers HKEY_CURRENT_USER, et dans une installation par ordinateur, elles sont dirigées vers HKEY_LOCAL_MACHINE. Dans une installation par utilisateur, les entrées de Registre qui ont msidbRegistryRootClassesRoot (0) dans la colonne Racine sont redirigées vers les classesde logiciels\HKCU\et, dans une installation par ordinateur, elles sont dirigées vers les classesde logiciels\HKLM\.

  • Utilisez la propriété ProgramFilesFolder dans la table Répertoire des packages Windows Installer 32 bits pour spécifier les emplacements des répertoires contenant des composants 32 bits non partagés entre les applications. Lorsqu’un utilisateur installe le package double usage à l’aide du contexte par machine, ces composants sont enregistrés dans le dossier Program Files sur les versions 32 bits de Windows et dans le dossier Program Files (x86) sur les versions 64 bits du système. Les composants de ces répertoires sont accessibles à tous les utilisateurs. Lorsqu’un utilisateur installe le package double usage sur Windows 7 ou Windows Server 2008 R2 à l’aide du contexte par utilisateur, ces composants sont enregistrés dans le dossier Programmes de l’utilisateur actuel (par exemple sur %LocalAppData%\Programs) et sont accessibles uniquement par cet utilisateur.

  • Utilisez la propriété CommonFilesFolder dans la table Répertoire des packages Windows Installer 32 bits pour spécifier les emplacements des répertoires contenant des composants 32 bits partagés entre les applications. Lorsqu’un utilisateur installe le package à double usage à l’aide du contexte par machine, ces composants sont enregistrés dans le dossier Common Files et sont accessibles à tous les utilisateurs. Lorsqu’un utilisateur installe le package à double usage sur Windows 7 ou Windows Server 2008 R2 à l’aide du contexte par utilisateur, ces composants sont enregistrés dans le dossier Commun de l’utilisateur actuel (par exemple sur %LocalAppData%\Programs\Common) et sont accessibles uniquement par cet utilisateur.

  • Utilisez la propriété ProgramFiles64Folder dans la table Répertoire des packages Windows Installer 64 bits pour spécifier les emplacements des répertoires contenant des composants 64 bits non partagés entre les applications. Lorsqu’un utilisateur installe le package double usage à l’aide du contexte par machine, ces composants sont enregistrés dans le dossier Program Files. Les composants de ces répertoires sont accessibles à tous les utilisateurs. Lorsqu’un utilisateur installe le package double usage sur Windows 7 ou Windows Server 2008 R2 à l’aide du contexte par utilisateur, ces composants sont enregistrés dans le dossier Programmes de l’utilisateur actuel (par exemple sur %LocalAppData%\Programs) et sont accessibles uniquement par cet utilisateur. Pour plus d’informations sur la création d’un package pour installer une application sur des systèmes d’exploitation 64 bits, consultez Windows Installer sur les systèmes d’exploitation 64 bits.

  • Utilisez la propriété CommonFiles64Folder dans la table Répertoire des packages Windows Installer 64 bits pour spécifier les emplacements des répertoires contenant des composants 64 bits partagés entre les applications. Lorsqu’un utilisateur installe le package à double usage à l’aide du contexte par machine, ces composants sont enregistrés dans le dossier Common Files et sont accessibles à tous les utilisateurs. Lorsqu’un utilisateur installe le package à double usage sur Windows 7 ou Windows Server 2008 R2 à l’aide du contexte par utilisateur, ces composants sont enregistrés dans le dossier Commun de l’utilisateur actuel (par exemple sur %LocalAppData%\Programs\Common) et sont accessibles uniquement par cet utilisateur.

  • Utilisez les propriétés ProgramFilesFolder et CommonFilesFolder dans la table Répertoire des packages Windows Installer 64 bits pour spécifier l’emplacement des répertoires contenant des composants 32 bits. Utilisez des noms différents pour les versions 32 bits et 64 bits de tous les composants fournis avec le même nom, ou enregistrez les versions dans des dossiers différents. Par exemple, ajoutez des informations à la table Répertoire pour spécifier l’emplacement du répertoire contenant la version 32 bits sous la forme [ProgramFilesFolder]\NOM DEL’APPLICATIONISV\\x86 et l’emplacement du répertoire contenant la version 64 bits sous la forme [Program64FilesFolder]\NOM DEL’APPLICATION\ISV\x64. Une installation par ordinateur enregistre ensuite la version 32 bits dans Program Files(x86)\ISV Name\Application Name\x86 et enregistre la version 64 bits dans Program Files\ISV Name\Application Name\x64. Une installation par utilisateur enregistre la version 32 bits dans %LocalAppData%\Programs\ISV Name\Application Name\x86 et installe la version 64 bits dans %LocalAppData%\Programs\ISV Name\Application Name\x64.

  • Stockez les données de configuration par utilisateur pour l’application sous \Users\username\AppData.

  • Stockez les modèles et les fichiers générés par l’application dans des sous-dossiers sous \Users\username.

  • Si votre application utilise des extensions d’interpréteur de commandes, vous devez utiliser les points d’extensibilité de l’interpréteur de commandes par utilisateur qui sont disponibles à partir de Windows 7 ou De Windows Server 2008 R2.

  • N’utilisez pas d’actions personnalisées dans votre package qui nécessitent des privilèges élevés pour s’exécuter. La table CustomAction ne doit contenir aucune action personnalisée marquée pour s’exécuter avec des privilèges élevés. Pour plus d’informations sur les actions personnalisées élevées, consultez Sécurité des actions personnalisées.

  • N’écrivez pas dans les dossiers système globaux. La table Directory ne doit pas contenir de référence à l’une des propriétés de dossier système suivantes.

AdminToolsFolder
CommonAppDataFolder
FontsFolder
System16Folder
System64Folder
SystemFolder
TempFolder
WindowsFolder
WindowsVolume

Exemple

Un exemple de package à double usage est fourni dans les composants du Kit de développement logiciel (SDK) Windows pour les développeurs Windows Installer en tant que fichier PUASample1.msi. Si vous disposez du Kit de développement logiciel (SDK) actuel, vous avez accès à tous les outils et données nécessaires pour reproduire l’exemple de package d’installation. Pour plus d’informations sur cet exemple, consultez Exemple de création de package unique.