自定义操作执行计划选项

由于自定义操作可以在 UI 和执行序列表中进行计划,并且可以在服务或客户端进程中执行,因此自定义操作可能会多次执行。

请注意,安装程序:

  • 默认情况下,立即在序列表中执行操作。
  • 如果序列表的条件表达式字段计算结果为 False,则不执行操作。
  • 如果内部用户界面级别设置为完整的 UI 模式,则处理客户端进程中的 UI 序列表 (请参阅 MsiSetInternalUI, 了解 UI 级别) 。
  • 是使用 2000 Windows默认注册的服务,在这种情况下,将在安装程序服务中处理执行序列表。

可以使用以下选项标志来控制自定义操作的多个即时执行。 若要设置选项,请将此表中的值添加到 CustomAction 表 的" 类型"字段中的值。 以下任何标志都不应与延迟 执行自定义操作 一起使用

(默认)

十六进制:0x00000000

十进制:0

始终执行。 如果两个序列表中都有操作,则操作可以运行两次。

msidbCustomActionTypeFirstSequence

十六进制:0x00000100

十进制:256

如果两个序列表中都有 ,请执行多次。 如果 UI 序列已运行,则始终跳过执行序列中的操作。 UI 序列中不起作用。 无需在 UI 序列中显示或运行该操作,以在执行序列中跳过该操作。 不受安装服务注册的影响。

msidbCustomActionTypeOncePerProcess

十六进制:0x00000200

十进制:512

如果同时在两个序列表中,请执行每个进程一次。 如果 UI 序列已在同一进程中运行,则跳过执行序列中的操作,例如两者均在客户端进程中运行。 用于防止修改会话状态的操作(如属性和数据库数据)运行两次。

msidbCustomActionTypeClientRepeat

十六进制:0x00000300

十进制:768

仅在 UI 序列运行后在客户端上运行时执行。 只有当执行序列在客户端上按 UI 序列运行时,操作才运行。 可用于提供/或逻辑,或者用于取消与 UI 相关的处理(如果已针对客户端会话执行)。

请注意,若要在两种不同的运行模式下运行自定义操作,将两个条目创作到 CustomAction 表中 。 例如,若要在模式为 MSIRUNMODE SCHEDULED 和 MSIRUNMODE ROLLBACK 时调用 C/C++ 动态链接库 (DLL) ( 自定义操作类型1) 的自定义操作,请放入 _ CustomAction 表中调用相同 DLL 但具有不同的数值类型的两个条目。 _ 包括调用 MsiGetMode 以确定 何时运行哪个自定义操作的代码。

自定义操作参考

关于自定义操作

使用自定义操作