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