Partager via


Utilisation de l’API pour fusionner un module de fusion dans une base de données

Les modules de fusion fournissent une méthode standard permettant aux développeurs de fournir des composants Windows Installer partagés et une logique de configuration à leurs applications. Les modules de fusion doivent être fusionnés dans un package d’installation à l’aide d’un outil de fusion. La meilleure alternative 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 les fonctionnalités fournies par Mergemod.dll.

Utilisez les étapes suivantes dans l’ordre pour fusionner un module de fusion dans une base de données d’installation Windows Installer par l’API de Mergemod.dll.

Pour fusionner un module de fusion dans une base de données d’installation Windows Installer

  1. Ouvrez un fichier journal à l’aide d’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.

  2. Ouvrez la base de données d’installation, un fichier.msi, qui recevra le module de fusion à l’aide d’OpenDatabase. Cette étape est obligatoire.

  3. Ouvrez le module de fusion, un fichier .msm, qui est en cours de fusion dans la base de données à l’aide d’OpenModule. Un module doit être ouvert avant de pouvoir être fusionné avec une base de données d’installation. Cette étape est obligatoire.

  4. Fusionnez le module dans la base de données d’installation à l’aide de Merge ou MergeEx. Notez que Merge ou MergeEx ne peut être appelé qu’une seule fois pour fusionner une combinaison particulière de fichiers .msi et .msm. MergeEx est disponible uniquement lors de l’utilisation deMergemod.dll version 2.0 ou ultérieure et uniquement lors de l’utilisation de l’interface IMsmMerge2 . Cette étape est obligatoire.

  5. Appelez get_Errors et examinez la collection d’erreurs récupérée pour rechercher des conflits de fusion ou d’autres erreurs. La récupération est non destructive. Plusieurs instances de la collection d’erreurs peuvent être récupérées en lisant à plusieurs reprises get_Errors appelant. Vous devez résoudre les erreurs en fonction de votre cas.

  6. Associez les composants du module de fusion à toutes les fonctionnalités supplémentaires qui ont été ou seront fusionnées dans la base de données d’installation à l’aide de Connect. La fonctionnalité doit déjà exister avant d’appeler cette méthode. Cette étape n’est requise que si vous disposez de fonctionnalités supplémentaires. Pour plus d’informations, consultez Connexion d’un module de fusion à plusieurs fonctionnalités

  7. 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. 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. Notez que CreateSourceImage est disponible uniquement avec Mergemod.dll version 2.0 ou ultérieure.

  8. Fermez le module de fusion ouvert actuel à l’aide de CloseModule. Cette étape est obligatoire.

  9. Fermez la base de données d’installation ouverte actuelle à l’aide de 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 n’ont pas été récupérées.

  10. Fermez le fichier journal actuel à l’aide de CloseLog. Cette étape est obligatoire si vous avez ouvert un fichier journal.

Une fois que le module a été fusionné dans la base de données à l’aide Mergemod.dll, la table multimédia 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 multimédia, car le consommateur du module de fusion peut sélectionner différentes façons de mettre en page l’image source.