自定义操作类型 17
此自定义操作调用以 C 或 C++ 编写的动态链接库 (DLL)。
源
DLL 在当前会话期间随应用程序一起安装。 CustomAction 表的“源”字段包含 File 表的键。 自定义操作代码的位置取决于对该文件的目标路径的解析,因此,必须在安装此文件之后且删除文件之前调用此自定义操作。
类型值
在 CustomAction 表的 Type 列中包含以下值,以指定基本数值类型。
常量 | 十六进制 | 十进制 |
---|---|---|
msidbCustomActionTypeDll + msidbCustomActionTypeSourceFile | 0x011 | 17 |
目标
DLL 通过 CustomAction 表的 Target 字段中指定的入口点调用,传递单个参数,即当前安装会话的句柄。 表中指定的入口点名称必须与从 DLL 导出的入口点名称匹配。 请注意,如果入口函数不是由 .DEF 文件或 /EXPORT: 链接器规范指定的,则名称可能有前导下划线和“@4”后缀。 调用的函数必须指定 __stdcall 调用约定。
返回处理选项
在 CustomAction 表的 Type 列中添加可选标志位,以指定返回处理选项。 有关这些选项和值的说明,请参阅自定义操作返回处理选项。
执行计划选项
在 CustomAction 表的 Type 列中包含可选标志位,以指定执行计划选项。 这些选项控制自定义操作的多次执行。 有关这些选项的说明,请参阅自定义操作执行计划选项。
脚本内执行选项
在 CustomAction 表的 Type 列中添加可选标志位,以指定脚本内执行选项。 这些选项将操作代码复制到执行、回滚或提交脚本中。 有关这些选项的说明,请参阅自定义操作脚本内执行选项。
返回值
请参阅自定义操作返回值。
备注
调用动态链接库 (DLL) 的自定义操作需要安装会话的句柄。 如果这也是一个延迟执行自定义操作,则在安装脚本执行期间,该会话可能不再存在。 要了解此类型的自定义操作如何获取上下文信息,请参阅获取延迟执行自定义操作的上下文信息。
自定义操作在单独的线程中执行,并且对系统的访问权限可能受限。 异步运行的自定义操作在当前序列或安装会话终止时阻塞主线程,直到自定义操作恢复。
引用已安装文件作为其源的自定义操作(例如自定义操作类型 17 (DLL))必须遵守以下顺序限制:
- 自定义操作必须排在 CostFinalize 操作之后。 这样,自定义操作就可以解析查找 DLL 所需的路径。
- 如果源文件尚未安装在计算机上,则必须将这种类型的延迟(脚本内)自定义操作排在 InstallFiles 操作之后。
- 如果源文件尚未安装在计算机上,则必须将这种类型的非延迟自定义操作排在 InstallFinalize 操作之后。
相关主题