使用内部一致性评估器

若要验证某个数据库,请使用特殊的验证工具将包含内部一致性评估器 (ICE) 的 .cub 文件合并到该数据库中,执行 ICE,然后报告结果。 Microsoft Windows 软件开发工具包 (SDK) 中提供了多个这样的工具。 第三方供应商的创作环境也可以将 ICE 验证系统合并到他们的创作环境中。 你也可以编写自己的工具来执行 ICE 验证。 大多数 ICE 验证工具将 .cub 文件和数据库合并到第三个临时数据库中。 Windows Installer 在执行 .cub 文件中的每个 ICE 时会显示警告、错误、调试信息和 API 错误。 当安装程序执行完 ICE 时,它会关闭 .msi 文件、.cub 文件和临时数据库,且不保存任何更改。 .msi 文件和 .cub 文件在验证测试后保持不变。

ICE 自定义操作通过调用 MsiProcessMessage 和发布 INSTALLMESSAGE_USER 消息来向用户传达信息。 ICE 消息通常返回如下信息:

  • 发现错误的 ICE 的名称
  • ICE 的创建日期
  • ICE 的作者
  • ICE 的上次修改日期。
  • 导致 ICE 失败的 API 错误的说明
  • 错误说明
  • 向用户显示的警告
  • 包含错误或警告的数据库表的名称
  • 包含错误或警告的表列的名称
  • 包含错误或警告的表的主键
  • 提供调试建议的 HTML 文件的 URL
  • 可包含其他信息的字符串

安装包的作者可以编写 ICE 自定义操作,或使用 SDK 随附的 .cub 文件中包含的标准 ICE 集。 有关如何编写 ICE 的详细信息,请参阅生成 ICE

在编写用于验证的适当 ICE 之后,开发人员必须将自定义操作一起收集到一个 .msi 数据库中,收集的信息称为 .cub 文件,其中仅包含 ICE 及其必需的表。 .cub 文件无法安装,它仅用来存储 ICE 自定义操作并提供对这些操作的访问。 有关创建 .cub 文件的详细信息,请参阅生成 ICE 数据库。 或者,开发人员可以使用 ICE 参考中所述的现有 ICE 来验证他们的安装包。 可以从 SDK 随附的标准 .cub 文件中获取这些 ICE。

数据库表编辑器 Orca 或验证工具 msival2 安装提供了 Logo.cub、Darice.cub 和 Mergemod.cub 文件。 Logo.cub 文件中的 ICE 集是 Darice.cub 文件中 ICE 的子集。 如果包通过了使用 Darice.cub 进行的验证,则它也会通过 Logo.cub 验证。 Mergemod.cub 包含用于验证合并模块的 ICE 集。 有关详细信息,请参阅合并模块 ICE 参考

验证安装包

  1. 获取或创作适当的 ICE 自定义操作。 可以使用 ICE 参考中所述的一个或多个现有 ICE。 如果验证需要用到尚未加入此列表的 ICE,你可以按照生成 ICE 中所述创建新的 ICE。
  2. 准备一个包含所有 ICE 自定义操作的 ICE 数据库。 有关准备 .cub 文件的信息,请参阅生成 ICE 数据库部分。
  3. 将 .cub 文件和 .msi 文件提供给包验证工具,例如 Orca.exeMsival2.exe

请注意,应按照验证合并模块中所述验证合并模块。