Utilisation de l’automatisation pour fusionner un module de fusion dans une base de données
les Modules de fusion fournissent une méthode standard pour vous permettre de fournir des composantsde Windows Installer partagés et une logique de configuration aux applications.
Les modules de fusion doivent être fusionnés dans un package d’installation à l’aide d’un outil de fusion. La meilleure pratique consiste à obtenir un outil de fusion distribué librement, ou à acheter l’un des outils de fusion disponibles auprès des éditeurs de logiciels indépendants, par exemple, vous pouvez utiliser Mergemod.dll.
la procédure suivante montre comment fusionner un module de fusion dans une base de données Windows Installer à l’aide de l' automatisation des modules de fusion.
Pour fusionner un module dans une base de données
Ouvrez un fichier journal à l’aide de la méthode OpenLog .
Cette étape est requise uniquement si vous devez créer un fichier journal ou ajouter un fichier journal existant pour le processus de fusion.
Ouvrez la base de données d’installation .msi à l’aide de la méthode OpenDatabase de l' objet Merge.
Cette étape est obligatoire.
La base de données que vous ouvrez est celle pour laquelle vous souhaitez recevoir le module de fusion.
Ouvrez le module de fusion . msm à l’aide de la méthode OpenModule .
Cette étape est obligatoire.
Il s’agit du module de fusion qui est fusionné dans la base de données. Vous devez ouvrir un module avant de pouvoir le fusionner avec une base de données d’installation.
Fusionnez le module dans la base de données d’installation en appelant la méthode Merge ou la méthode MergeEx .
Cette étape est obligatoire.
La méthode Merge ou la méthode MergeEx ne peut être appelée qu’une seule fois pour fusionner une combinaison spécifique de fichiers .msi et. msm.
Notes
La méthode MergeEx est uniquement disponible dans Mergemod.dll version 2,0 ou ultérieure, et uniquement lors de l’utilisation de l’interface IMsmMerge2 .
Récupérez la propriété Errors et examinez la collection d’objets d' erreur qu’elle renvoie pour les conflits de fusion ou d’autres erreurs.
Vous devez résoudre toutes les erreurs.
La récupération n’est pas destructrice et plusieurs instances de la collection d’erreurs peuvent être récupérées en lisant de manière répétée la propriété Errors .
associez les composants du module de fusion aux fonctionnalités à l’aide de la méthode Connecter .
Cette étape est requise uniquement si vous disposez de fonctionnalités existantes et que vous souhaitez ajouter des fonctionnalités à fusionner dans la base de données d’installation.
Une fonctionnalité doit exister avant d’appeler cette méthode. Pour plus d’informations, consultez connexion d’un module de fusion à plusieurs fonctionnalités.
Si nécessaire, extrayez les fichiers sources du module en exécutant une ou plusieurs des opérations suivantes :
Utilisez ExtractFiles ou ExtractFilesEx pour extraire des fichiers d’un fichier .cab incorporé, puis copiez-les dans un répertoire spécifié.
Notes
ExtractFilesEx requiert Mergemod.dll version 2,0 ou ultérieure.
Utilisez ExtractCAB pour extraire les fichiers d’un fichier .cab incorporé, puis enregistrez-les dans un fichier spécifié.
Utilisez CreateSourceImage pour extraire les fichiers d’un module, puis, après la fusion, copiez-les dans une image source sur le disque.
Notes
CreateSourceImage est disponible uniquement dans Mergemod.dll version 2,0 ou ultérieure.
Fermez le module de fusion ouvert en cours à l’aide de la méthode CloseModule .
Cette étape est obligatoire.
Fermez la base de données d’installation ouverte à l’aide de la méthode FermerBase .
Cette étape est obligatoire.
La fermeture d’une base de données efface toutes les informations de dépendance, mais n’affecte pas les erreurs qui ne sont pas récupérées.
Fermez le fichier journal actuel à l’aide de la méthode CloseLog .
Cette étape est requise si vous disposez d’un fichier journal ouvert.
Une fois le module fusionné dans la base de données à l’aide de Mergemod.dll, la table de supports doit être mise à jour pour décrire la disposition souhaitée de l’image source. Le processus de fusion fourni par Mergemod.dll ne met pas à jour la table multimédia, car l’utilisateur du module de fusion peut sélectionner différentes méthodes pour la disposition de l’image source.