自定义操作类型 1
此自定义操作调用以 C 或 C++ 编写的动态链接库 (DLL)。
源
DLL 是从临时二进制流生成的。 CustomAction 表的 Source 字段包含指向 Binary 表的键。
Binary 表中的 Data 列包含流数据。 为每行分配一个单独的流。 可从文件插入新的二进制数据,方式是先使用 MsiRecordSetStream,再使用 MsiViewModify,将记录插入表中。 调用自定义操作时,流数据会复制到临时文件中,然后根据自定义操作的类型处理该临时文件。
类型值
将以下标志位包含在 CustomAction 表的 Type 列中,以指定基本数值类型。
常量 | 十六进制 | 十进制 |
---|---|---|
msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData | 0x001 | 1 |
目标
DLL 通过 CustomAction 表的 Target 字段中指定的入口点调用,传递单个参数,即当前安装会话的句柄。 表中指定的入口点名称必须与从 DLL 导出的入口点名称匹配。 请注意,如果入口函数不是由 .DEF 文件或 /EXPORT: 链接器规范指定的,则名称可能有前导下划线和“@4”后缀。 调用的函数必须指定 __stdcall 调用约定。
返回处理选项
在 CustomAction 表的 Type 列中添加可选标志位,以指定返回处理选项。 有关这些选项和值的说明,请参阅自定义操作返回处理选项。
执行计划选项
在 CustomAction 表的 Type 列中包含可选标志位,以指定执行计划选项。 这些选项控制自定义操作的多次执行。 有关这些选项的说明,请参阅自定义操作执行计划选项。
脚本内执行选项
在 CustomAction 表的 Type 列中添加可选标志位,以指定脚本内执行选项。 这些选项将操作代码复制到执行、回滚或提交脚本中。 有关这些选项的说明,请参阅自定义操作脚本内执行选项。
返回值
请参阅自定义操作返回值。
备注
调用动态链接库 (DLL) 的自定义操作需要安装会话的句柄。 如果这也是一个延迟执行自定义操作,则在安装脚本执行期间,该会话可能不再存在。 要了解此类型的自定义操作如何获取上下文信息,请参阅获取延迟执行自定义操作的上下文信息。
导出数据库表时,每个流都会写成一个单独的文件放入以表命名的子文件夹中,使用主键作为文件名(Binary 表的 Name 列),默认扩展名为“.ibd”。 如果文件系统或版本控制系统不支持长文件名,则名称应使用 8.3 格式。 永久性存档文件将流数据替换为使用的文件名,这样在导入表时可以找到该数据。
相关主题