生成 ICE

如果无法在 ICE 参考中列出的现有 ICE 自定义操作中找到所需的内部一致性计算器,则需要准备自己的 ICE 来验证程序包。

创作 ICE 自定义操作时,应执行以下操作:

  • ICE 仅基于所示表中列出的类型的自定义操作。
  • 调用 MsiProcessMessage 并发布 INSTALLMESSAGE_USER 类型的消息。 创作 ICE 消息时,请遵循 ICE 消息指南中的消息格式。
  • 编写 ICE,以便捕获任何 API 错误,并始终返回 ERROR_SUCCESS。 若要在 ICE 失败后运行后续自定义操作,则必须执行此操作。

ICE 自定义操作仅限于以下自定义操作类型。

自定义操作类型 说明
自定义操作类型 1 二进制流中的 DLL
自定义操作类型 2 二进制流中的 EXE
自定义操作类型 5 二进制流中的 JScript
自定义操作类型 6 二进制流中的 VBScript
自定义操作类型 37 作为字符串的 JScript 代码
自定义操作类型 38 作为字符串的 VBScript 代码

 

创作 ICE 自定义操作时,请勿执行以下操作:

  • 不要假定 ICE 接收的引擎的句柄是安装程序数据库的安装实例。 如果不是安装实例,则未定义某些属性,不会解析源目录和目标目录,并且未定义当前功能状态。
  • 不要依赖于先前执行或未执行的任何安装程序操作、自定义操作或其他 ICE。 由于以前的 ICE 可能在任何表中创建了临时列,因此作者应尽可能按名称引用列。 ICE 应在退出之前清理任何临时列或表。
  • 不要假定作者有权访问数据库的源目录的图像。
  • 不要假定对数据库所做的更改不会保留。

C++ 中的 ICE 示例

VBScript 中的 ICE 示例