Installation d’assemblys Win32 pour le partage côte à côte

L’article suivant décrit comment créer un package Windows Installer pour installer un assembly Win32. Le package installe un assembly côte à côte dans le dossier Winsxs pour l’utilisation partagée de l’application. Après avoir installé le package, l’assembly partagé est globalement disponible pour toute application qui spécifie une dépendance vis-à-vis de l’assembly dans un fichier manifeste d’assembly. Le programme d’installation n’enregistre pas globalement l’assembly côte à côte sur le système.

Notez que vous pouvez installer des assemblys côte à côte partagés à l’aide de modules de fusion.

Avant de continuer, vous devez comprendre comment créer un package Windows Installer sans assemblys. Pour obtenir un exemple de création d’une installation simple, consultez Un exemple d’installation.

Pour installer un assembly partagé côte à côte

  1. Définissez un composant Windows Installer qui inclut l’assembly Win32. Ce composant peut contenir d’autres ressources qui doivent toujours être installées ou supprimées avec l’assembly. Tous les autres composants de l’application peuvent être créés comme pour une installation sans assemblys. Ajoutez une ligne à la table Component pour le composant contenant l’assembly Win32. Entrez un GUID Windows Installer valide pour ce code de composant. N’utilisez pas le fichier manifeste comme chemin de clé pour ce composant.
  2. Ajoutez une ligne à la table FeatureComponents qui lie le composant à une fonctionnalité Windows Installer. Pour en savoir plus, consultez Composants et fonctionnalités. Une fonctionnalité de Windows Installer doit être un élément de la fonctionnalité de l’application qui est reconnaissable par un utilisateur. L’assembly est activé lorsque cette fonctionnalité est sélectionnée par un utilisateur ou qu’une application a fait l’objet d’une erreur. Si l’assembly définit une fonctionnalité supplémentaire, ajoutez alors une ligne supplémentaire à la table Feature pour les attributs de la fonctionnalité. Cette étape n’est pas nécessaire lors de la création d’un module de fusion.
  3. Pour les assemblys côte à côte, les informations de liaison et d’activation, telles que les classes COM, les interfaces et les bibliothèques de types, sont stockées dans des fichiers manifestes plutôt que dans le registre. Les assemblys partagés stockent ces informations dans un manifeste d’assembly. Sur les systèmes qui prennent en charge les assemblys côte à côte, le programme d’installation ignore le traitement des informations sur le composant entrées dans la table Extension, la table Verb, la table TypeLib, la table MIME, la table Class, la table ProgId et la table AppId. Les informations de liaison et d’activation peuvent être entrées dans ces tables pour une utilisation par des systèmes qui ne prennent pas en charge le partage d’assemblys côte à côte.
  4. L’installation côte à côte n’inscrit pas globalement l’assembly. Le programme d’installation ignore l’inscription automatique du composant si des informations d’auto-inscription ont été entrées dans la table SelfReg. Les informations d’auto-inscription peuvent être entrées dans la table SelfReg pour l’auto-inscription du composant sur les systèmes qui ne prennent pas en charge le partage d’assemblys côte à côte.
  5. Ajoutez toutes les autres informations de registre, à l’exclusion de la liaison et de l’activation ou de l’inscription automatique du composant, à la table Registre, à la table RemoveRegistry et à la table Environment.
  6. Étant donné qu’il s’agit d’un assembly partagé, ne générez pas de fichier .local. N’incluez pas d’informations sur ce composant dans la table IsolatedComponent. Le programme d’installation ignore la table IsolatedComponent pour ce composant sur les systèmes d’exploitation qui prennent en charge le partage côte à côte. Ajoutez des informations à la table IsolatedComponent si vous souhaitez que l’assembly soit privé sur les systèmes qui prennent en charge les fichiers .local.
  7. Pour activer le partage côte à côte, l’assembly Win32 doit être installé dans le dossier Winsxs. Pour ce faire, laissez la colonne File_Application de la table MsiAssembly sur null pour l’assembly. Cela indique au programme d’installation d’installer l’assembly dans le dossier WinSxS et non dans le dossier du composant. Ajoutez une ligne à la table MsiAssembly pour le composant qui contient l’assembly Win32. Entrez la valeur 1 dans le champ Attributes de la table MsiAssembly pour spécifier qu’il s’agit d’un assembly Win32. Pour un assembly partagé, laissez le champ File_Application vide. Ajoutez l’action MsiPublishAssemblies à la table InstallExecuteSequence ou à la table AdvtExecuteSequence. Ajoutez l’action MsiUnpublishAssemblies à la table InstallExecuteSequence.
  8. Ajoutez des lignes à la table MsiAssemblyName pour le composant. Ajouter une ligne pour chaque paire de noms et valeurs spécifiée dans la section assemblyIdentity du manifeste. Pour obtenir un exemple, consultez table MsiAssemblyName.