使用 API 将合并模块合并到数据库中

合并模块为开发人员提供了一种标准方法,用于向其应用程序提供共享Windows安装程序组件和设置逻辑。 必须使用合并工具将合并模块合并到安装包中。 最好的选择是获取自由分发的合并工具,或购买独立软件供应商提供的合并工具之一。 例如,可以使用 Mergemod.dll提供的功能。

按顺序使用以下步骤,通过Mergemod.dllAPI 将合并模块合并到 Windows Installer 安装数据库中。

将合并模块合并到 Windows Installer 安装数据库

  1. 使用 OpenLog 打开日志文件。 仅当需要为合并过程创建日志文件或追加现有日志文件时,才需要执行此步骤。

  2. 打开安装数据库( .msi文件),该文件将使用 OpenDatabase 接收合并模块。 此步骤是必需的。

  3. 使用 OpenModule 打开合并模块(.msm 文件)并将其合并到数据库中。 必须先打开模块,然后才能将其与安装数据库合并。 此步骤是必需的。

  4. 使用 MergeMergeEx 将模块合并到安装数据库中。 请注意,合并或 MergeEx 只能调用一次,以合并.msi和 .msm 文件的特定组合。 MergeEx 仅在使用 Mergemod.dll 版本 2.0 或更高版本且仅在使用 IMsmMerge2 接口时才可用。 此步骤是必需的。

  5. 调用 get_Errors 并检查检索到的错误集合,了解合并冲突或其他错误。 检索是非破坏性的。 可以通过重复读取调用 get_Errors来检索错误集合的多个实例。 你需要根据情况解决任何错误。

  6. 将合并模块的组件与已使用连接合并到安装数据库中,或者将它合并到安装数据库中。 在调用此方法之前,该功能必须已存在。 仅当具有其他功能时,才需要执行此步骤,有关详细信息,请参阅 将合并模块连接到多个功能

  7. 如有必要,请执行下列操作之一或多项,从模块中提取源文件。

    若要从嵌入.cab文件中提取文件,然后复制到指定的目录中,请使用 ExtractFilesExtractFilesEx。 请注意, ExtractFilesEx 需要 Mergemod.dll 2.0 或更高版本。

    若要从嵌入.cab文件中提取文件,然后保存在指定文件中,请使用 ExtractCAB

    若要从模块中提取文件,然后在合并后复制到磁盘上的源映像,请使用 CreateSourceImage。 请注意, CreateSourceImage 仅适用于 Mergemod.dll 2.0 或更高版本。

  8. 使用 CloseModule 关闭当前打开的合并模块。 此步骤是必需的。

  9. 使用 CloseDatabase 关闭当前打开的安装数据库。 此步骤是必需的。 关闭数据库可清除所有依赖项信息,但不会影响未检索的任何错误。

  10. 使用 CloseLog 关闭当前日志文件。 如果已打开日志文件,则需要执行此步骤。

使用 Mergemod.dll将模块合并到数据库中后,必须更新 媒体表 以描述所需的源图像布局。 Mergemod.dll提供的合并过程不会更新媒体表,因为合并模块的使用者可以选择各种方法来布局源图像。