延迟执行自定义作

延迟执行自定义作的目的是将系统更改的执行延迟到执行安装脚本的时间。 这与常规自定义作或标准作不同,即安装程序在序列表中或调用 MsiDoAction时立即执行该作。 延迟执行自定义作使包作者能够在执行安装脚本的特定点指定系统作。

安装程序在处理安装序列时不执行延迟的执行自定义作。 相反,安装程序会将自定义作写入安装脚本。 在这种情况下,安装程序集的唯一模式参数是MSIRUNMODE_SCHEDULED。 有关运行模式参数的说明,请参阅 MsiGetMode

必须在执行脚本生成的节中的执行序列表中计划延迟执行自定义作。 延迟执行自定义作必须位于 InstallInitialize 之后,然后才能在作序列中 InstallFinalize

设置属性、功能状态、组件状态或目标目录的自定义作,或者通过将行插入序列表来计划系统作,在许多情况下可以安全地使用即时执行。 但是,直接更改系统或调用另一个系统服务的自定义作必须推迟到执行安装脚本的时间。 有关其自定义作与主安装线程之间潜在冲突的详细信息,请参阅 同步和异步自定义作

由于安装脚本可以在写入它的安装会话之外执行,因此在执行安装脚本期间,该会话可能不再存在。 这意味着在安装序列期间,原始会话句柄和属性数据集不适用于延迟执行自定义作。 调用动态链接库(DLL)的延迟自定义作传递的句柄只能用于获取非常有限的信息量,如 获取延迟执行自定义作的上下文信息中所述。

请注意,延迟的自定义作(包括 回滚自定义作提交自定义作)是唯一可在用户安全上下文外部运行的作类型。

自定义作 In-Script 执行选项

自定义作参考