Utilisation d’Automation pour fusionner un module de fusion dans une base de données
Les modules de fusion fournissent une méthode standard pour que vous fournissiez des composants Windows Installer partagés et configuriez la logique 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 de fournisseurs de logiciels indépendants, par exemple, vous pouvez utiliser Mergemod.dll.
La procédure suivante vous montre comment fusionner un module de fusion dans une base de données Windows Installer à l’aide de l’automatisation de module de fusion.
Fusionner un module dans une base de données
Ouvrez un fichier journal à l’aide de la méthode OpenLog.
Cette étape n’est requise que 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 que 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 en cours de fusion dans la base de données. Un module doit être ouvert avant de pouvoir être fusionné 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 peuvent être appelées qu’une seule fois pour fusionner une combinaison spécifique de fichiers .msi et .msm.
Notes
La méthode MergeEx est disponible uniquement 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 Error qu’elle retourne 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 à plusieurs reprises la propriété Errors.
Associez les composants du module de fusion aux fonctionnalités à l’aide de la méthode Connect.
Cette étape n’est requise que 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 effectuant une ou plusieurs des opérations suivantes :
Pour extraire des fichiers d’un fichier de .cab incorporé, puis les copier dans un répertoire spécifié, utilisez ExtractFiles ou ExtractFilesEx.
Notes
Notez que ExtractFilesEx nécessite Mergemod.dll version 2.0 ou ultérieure.
Pour extraire des fichiers d’un fichier .cab incorporé, puis enregistrer dans un fichier spécifié, utilisez ExtractCAB.
Pour extraire des fichiers d’un module, puis les copier sur une image source sur le disque après la fusion, utilisez CreateSourceImage.
Notes
Notez que CreateSourceImage est disponible uniquement avec Mergemod.dll version 2.0 ou ultérieure.
Fermez le module de fusion ouvert actuel à 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 CloseDatabase.
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 obligatoire si vous disposez d’un fichier journal ouvert.
Une fois que le module a été fusionné dans la base de données à l’aide de Mergemod.dll, la table Media doit être mise à jour pour décrire la disposition d’image source souhaitée. Le processus de fusion fourni par Mergemod.dll ne met pas à jour la table Media, car le consommateur du module de fusion peut sélectionner différentes façons de mettre en page l’image source.
Rubriques connexes