Поделиться через


Использование автоматизации для слияния модуля слияния с базой данных

Модули слияния предоставляют стандартный метод доставки общих компонентов установщика Windows и логики установки в приложения.

Модули слияния должны быть объединены в пакет установки с помощью средства слияния. Рекомендуется получить свободно распределенное средство слияния или приобрести одно из средств слияния, доступных у независимых поставщиков программного обеспечения. Например, можно использовать Mergemod.dll.

В следующей процедуре показано, как объединить модуль слияния с базой данных установщика Windows с помощью автоматизации модуля слияния.

Слияние модуля с базой данных

  1. Откройте файл журнала с помощью метода OpenLog .

    Этот шаг требуется только в том случае, если необходимо создать файл журнала или добавить существующий файл журнала для процесса слияния.

  2. Откройте базу данных установки.msi с помощью метода OpenDatabaseобъекта Merge.

    Этот шаг является обязательным.

    Открываемая база данных — это та база данных, в которую вы хотите получить модуль слияния.

  3. Откройте модуль слияния MSM с помощью метода OpenModule .

    Этот шаг является обязательным.

    Это модуль слияния, который объединяется с базой данных. Модуль должен быть открыт, прежде чем его можно будет объединить с базой данных установки.

  4. Объедините модуль с базой данных установки, вызвав метод Merge или MergeEx .

    Этот шаг является обязательным.

    Метод Merge или MergeEx можно вызвать только один раз, чтобы объединить определенное сочетание .msi и MSM-файлов.

    Примечание

    Метод MergeEx доступен только в Mergemod.dll версии 2.0 или более поздней и только при использовании интерфейса IMsmMerge2 .

     

  5. Получите свойство Errors и проверьте коллекцию объектов Error , возвращаемых им, на наличие конфликтов слияния или других ошибок.

    Все ошибки необходимо устранить.

    Извлечение является неразрушительным, и несколько экземпляров коллекции ошибок можно получить, многократно считывая свойство Errors .

  6. Свяжите компоненты модуля слияния с компонентами с помощью метода Connect .

    Этот шаг требуется только в том случае, если у вас есть существующие компоненты и вы хотите добавить компоненты для слияния с базой данных установки.

    Компонент должен существовать перед вызовом этого метода. Дополнительные сведения см. в разделе Подключение модуля слияния к нескольким компонентам.

  7. При необходимости извлеките исходные файлы из модуля, выполнив одно или несколько из следующих действий.

    • Используйте ExtractFiles или ExtractFilesEx , чтобы извлечь файлы из внедренного файла .cab, а затем скопировать их в указанный каталог.

      Примечание

      Для ExtractFilesEx требуется Mergemod.dll версии 2.0 или более поздней.

       

    • Используйте ExtractCAB для извлечения файлов из внедренного файла .cab, а затем сохраните его в указанном файле.

    • Используйте CreateSourceImage для извлечения файлов из модуля, а затем после слияния скопируйте его в исходный образ на диске.

      Примечание

      CreateSourceImage доступен только в Mergemod.dll версии 2.0 или более поздней.

       

  8. Закройте текущий открытый модуль слияния с помощью метода CloseModule .

    Этот шаг является обязательным.

  9. Закройте открытую базу данных установки с помощью метода CloseDatabase .

    Этот шаг является обязательным.

    Закрытие базы данных очищает все сведения о зависимостях, но не влияет на ошибки, которые не извлекаются.

  10. Закройте текущий файл журнала с помощью метода CloseLog .

    Этот шаг является обязательным, если у вас есть открытый файл журнала.

После объединения модуля с базой данных с помощью Mergemod.dllнеобходимо обновить таблицу мультимедиа , чтобы описать нужный макет исходного образа. Процесс слияния, предоставляемый Mergemod.dll, не обновляет таблицу мультимедиа, так как потребитель модуля слияния может выбрать различные способы размещения исходного изображения.

Выпущенные версии, средства и распространяемые компоненты