0

我有一个带有 Exe1->Msi1->Exe2->Msi2 的链。

我需要一个 FileSearch 结果来确定是否在其 InstallCondition 中安装了 Exe2。

我在 Bundle 外部的 Fragment 中定义了一个 FileSearch,我在链上方的 Bundle 中引用它。

如何确保执行 Msi1 后完成 FileSearch?

使用 RegistrySearch 而不是 FileSearch 和一个 MsiPackage 的类似问题: WiX Bundle bal:condition - util:RegistrySearch variable always false

更新: 我已经从链中删除了 Exe2,我正在尝试在 Msi1 的延迟自定义操作中执行 Exe2。Exe2 可以自行运行,但从自定义操作运行时会失败。需要深入挖掘

4

2 回答 2

3

燃烧不是那样工作的。它在链开始应用之前处理 InstallCondition,因此链中发生的任何事情都不会影响链的其余部分。

于 2013-07-27T18:50:07.150 回答
0

就像 Bob 提到的 InstallCondition 是在链开始之前处理的,而不是介于两者之间。

MSI1 是否总是包含您要搜索的文件?而不是检查文件的存在,为什么不检查 MSI1 是否正确安装?如果是这种情况,您可以使用 VITAL 属性。

Vital YesNoType 指定包是否必须成功才能使链继续。默认的“yes”表示如果包失败,则链将失败并回滚或停止。如果指定“否”,则即使包报告失败,链也会继续。

因此,您的常规 Burn BA 将不支持,您可以编写自定义 BA 来处理此问题,或者将您的链中断为 2 、 exe1 和 msi1 以及第二个 exe2 msi2。

于 2013-07-30T21:41:48.563 回答