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 peuvent 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 à double usage Windows Installer 5.0 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 connus et des inscriptions compatibles par utilisateur du shell 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 fichier et de Registre vers des 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 ordinateur, le programme d’installation dirige les fichiers et les entrées de Registre vers des emplacements par ordinateur et demande des informations d’identification UAC pour vérifier que l’utilisateur dispose de privilèges suffisants pour installer des logiciels pour tous les utilisateurs de l’ordinateur. Une fois Windows Installer 5.0 installe une application, elle utilise le même contexte d’installation pour toutes les mises à jour, réparations ou suppression 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, ProgramFiles64Folder et 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 des entrées de Registre directes ou antérieures à FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64 et FOLDERID_ProgramFilesCommonX64. Étant donné que ces emplacements sont accessibles à d’autres utilisateurs de l’ordinateur, Windows Vista et les systèmes ultérieurs 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 version antérieure. Toutefois, l’installation dirige les fichiers et les entrées de Registre vers des emplacements accessibles à d’autres utilisateurs et nécessite que le système affiche les invites UAC pour les informations d’identification.

Instructions de développement

Respectez les instructions de création à package unique suivantes 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 les 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 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éfinir 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 des évaluateurs de cohérence interne - ICEs. Le package doit être en mesure de passer la validation par ICE105 pour être un package à double usage valide.

  • Utilisez la table de Registre et RemoveRegistry Table 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 HKCUSoftwareClasses\ et, dans une installation par ordinateur, elles sont dirigées vers HKLMSoftwareClasses\.\\

  • Utilisez la propriété ProgramFilesFolder dans la table Répertoire des packages d’installation Windows 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 ordinateur, 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, à %LocalAppData%\Programs) et sont accessibles uniquement par cet utilisateur.

  • Utilisez la propriété CommonFilesFolder dans la table Répertoire des packages d’installation Windows 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 ordinateur, 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, à %LocalAppData%\Programs\Common) et sont accessibles uniquement par cet utilisateur.

  • Utilisez la propriété ProgramFiles64Folder dans la table Répertoire des packages d’installation 64 bits Windows 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 ordinateur, 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, à %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 d’installation 64 bits Windows 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 ordinateur, 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, à %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 d’installation 64 bits Windows 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 différents dossiers. Par exemple, ajoutez des informations à la table Répertoire pour spécifier l’emplacement du répertoire contenant la version 32 bits en tant que [ProgramFilesFolder]\ISV NameApplication\ Name\x86 et l’emplacement du répertoire contenant la version 64 bits en tant que [Program64FilesFolder]\ISV\NameApplication Name\x64. Une installation par ordinateur enregistre ensuite la version 32 bits dans Program Files(x86)\ISV NameApplication\Name\x86 et enregistre la version 64 bits dans Program Files\ISV NameApplication\Name\x64. Une installation par utilisateur enregistre la version 32 bits dans %LocalAppData%\Programs\ISV NameApplication\Name\x86 et installe la version 64 bits dans %LocalAppData%\Programs\ISV NameApplication\Name\x64.

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

  • Stockez les modèles et les fichiers générés par l’application dans les 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 compatibles avec l’utilisateur qui sont disponibles depuis Windows 7 ou Windows Server 2008 R2.

  • N’utilisez pas d’actions personnalisées dans votre package qui nécessitent des privilèges élevé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 avec élévation de privilèges, 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 Windows développeurs du programme d’installation 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 Single Package Authoring Example.