创作合并模块

以下过程介绍了创作合并模块的常规步骤。

创建新合并模块

  1. 获取可用于编辑合并模块数据库的软件工具。
  2. 获取空白合并模块数据库。
  3. 为合并模块生成 GUID。 在合并模块中创作数据库表的主键时,需要使用此 GUID。
  4. 对于合并传递的每个组件,向 Component 表添加一条记录。 每个合并模块中都需要有一个 Component 表。 请注意,合并模块对组件运行,而不适用于功能。 但在某些情况下,数据库表条目可能需要引用功能。 有关详细信息,请参阅在合并模块中引用功能
  5. Directory 表添加到合并模块,该表指定合并模块添加到目标数据库的目录布局。 每个合并模块都需要一个 Directory 表。
  6. 将空白的 FeatureComponents 表 导入合并模块数据库。 如果 .msi 文件不包含其自己的 FeatureComponents 表,此空表可为合并工具提供指南。
  7. 收集此合并模块传递的所有文件,并创建 MergeModule.CABinet Cabinet 文件。 将 Cabinet 作为 .msm 文件中的流添加到合并模块。
  8. 对于 MergeModule.CABinet 中存储的每个文件,向 File 表添加一条记录。
  9. 添加在 ModuleSignature 表中标识合并模块所需的信息。 每个合并模块都需要一个 ModuleSignature 表。
  10. ModuleComponents 表中列出合并模块中的组件。 每个合并模块都需要一个 ModuleComponents 表。
  11. 仅当合并模块需要修改目标安装数据库的序列表时,才将合并模块序列表添加到 .msm 文件。
  12. 将 _Validation 表添加到合并模块。 合并模块需要 _Validation 表才能通过验证。
  13. 在极少数情况下,合并模块需要用户界面。 不建议使用合并模块包含 UI。 如果需要用户界面,UI 表可以与其他表一样合并到 .msi 文件中。
  14. 将注册表信息添加到合并模块数据库中的相应注册表表。 将类型库、类、扩展和谓词的注册表信息添加到 TypeLibClassAppIdProgIdExtensionVerbMIME 表中。 所有其他注册表信息都可以进入注册表。 建议不要使用 SelfReg 表。
  15. 将摘要信息添加到合并模块摘要信息流
  16. 尝试安装之前,请对所有合并模块运行验证。

获取空白合并模块数据库

获取合并模块创作工具

在合并模块数据库中命名主键

创作合并模块 Component 表

创作合并模块 Directory 表

创作合并模块 FeatureComponents 表

生成 MergeModule.CABinet Cabinet 文件

创作合并模块 File 表

创作 ModuleSignature 表

创作 ModuleComponents 表

创作合并模块 Sequence 表

验证合并模块

在合并模块中创作用户界面

创作“合并模块注册表”表

创作合并模块摘要信息流

合并模块摘要信息流参考

验证合并模块

使用 64 位合并模块