我有一个自定义操作,比如 CA1,它适用于从对话框输入的 PIDKEY,比如 Dlg1。根据 PIDKEY 的值,CA1 将一些值写入属性,并且某些组件将该属性作为其条件的一部分。因为 CA1 需要 PIDKEY 并且组件条件在 CostFinalize 进行评估,所以 CA1 必须放在 Dlg1 之后,CostFilnalize 之前。(Dlg1 -> CA1 -> CostFinalize)
但似乎除非我手动编写这些操作的序列号,否则 CostFinalize( InstallUISequence 和 InstallExecuteSequence 中的1000)操作总是在 Dlg1( InstallUISequence 中的1297)之前。所以,我刚刚在CostFinalize 和 Dlg1之前安排了 CA1(在 InstallExecuteSequnce 中)。(CA1 -> CostFinalize -> Dlg1) 有趣的是,虽然我预期的结果是错误的,但它完全符合我的预期。
我检查了日志文件,它显示了与 MSI 表完全不一致的顺序(Dlg1 -> CA1 -> CostFinalize)。我不明白发生了什么,想知道如何通过查看 MSI 表(InstallUISequence 和 InstallExecuteSequence)来确定首先执行什么操作。