Использование автоматизации для слияния модуля слияния с базой данных
Модули слияния предоставляют стандартный метод доставки общих компонентов установщика Windows и логики установки в приложения.
Модули слияния должны быть объединены в пакет установки с помощью средства слияния. Рекомендуется получить свободно распределенное средство слияния или приобрести одно из средств слияния, доступных у независимых поставщиков программного обеспечения. Например, можно использовать Mergemod.dll.
В следующей процедуре показано, как объединить модуль слияния с базой данных установщика Windows с помощью автоматизации модуля слияния.
Слияние модуля с базой данных
Откройте файл журнала с помощью метода OpenLog .
Этот шаг требуется только в том случае, если необходимо создать файл журнала или добавить существующий файл журнала для процесса слияния.
Откройте базу данных установки.msi с помощью метода OpenDatabaseобъекта Merge.
Этот шаг является обязательным.
Открываемая база данных — это та база данных, в которую вы хотите получить модуль слияния.
Откройте модуль слияния MSM с помощью метода OpenModule .
Этот шаг является обязательным.
Это модуль слияния, который объединяется с базой данных. Модуль должен быть открыт, прежде чем его можно будет объединить с базой данных установки.
Объедините модуль с базой данных установки, вызвав метод Merge или MergeEx .
Этот шаг является обязательным.
Метод Merge или MergeEx можно вызвать только один раз, чтобы объединить определенное сочетание .msi и MSM-файлов.
Примечание
Метод MergeEx доступен только в Mergemod.dll версии 2.0 или более поздней и только при использовании интерфейса IMsmMerge2 .
Получите свойство Errors и проверьте коллекцию объектов Error , возвращаемых им, на наличие конфликтов слияния или других ошибок.
Все ошибки необходимо устранить.
Извлечение является неразрушительным, и несколько экземпляров коллекции ошибок можно получить, многократно считывая свойство Errors .
Свяжите компоненты модуля слияния с компонентами с помощью метода Connect .
Этот шаг требуется только в том случае, если у вас есть существующие компоненты и вы хотите добавить компоненты для слияния с базой данных установки.
Компонент должен существовать перед вызовом этого метода. Дополнительные сведения см. в разделе Подключение модуля слияния к нескольким компонентам.
При необходимости извлеките исходные файлы из модуля, выполнив одно или несколько из следующих действий.
Используйте ExtractFiles или ExtractFilesEx , чтобы извлечь файлы из внедренного файла .cab, а затем скопировать их в указанный каталог.
Примечание
Для ExtractFilesEx требуется Mergemod.dll версии 2.0 или более поздней.
Используйте ExtractCAB для извлечения файлов из внедренного файла .cab, а затем сохраните его в указанном файле.
Используйте CreateSourceImage для извлечения файлов из модуля, а затем после слияния скопируйте его в исходный образ на диске.
Примечание
CreateSourceImage доступен только в Mergemod.dll версии 2.0 или более поздней.
Закройте текущий открытый модуль слияния с помощью метода CloseModule .
Этот шаг является обязательным.
Закройте открытую базу данных установки с помощью метода CloseDatabase .
Этот шаг является обязательным.
Закрытие базы данных очищает все сведения о зависимостях, но не влияет на ошибки, которые не извлекаются.
Закройте текущий файл журнала с помощью метода CloseLog .
Этот шаг является обязательным, если у вас есть открытый файл журнала.
После объединения модуля с базой данных с помощью Mergemod.dllнеобходимо обновить таблицу мультимедиа , чтобы описать нужный макет исходного образа. Процесс слияния, предоставляемый Mergemod.dll, не обновляет таблицу мультимедиа, так как потребитель модуля слияния может выбрать различные способы размещения исходного изображения.
Связанные темы