Wix 基于FileSearchRef为ExePackage设置InstallCondition

Wix 基于FileSearchRef为ExePackage设置InstallCondition,wix,burn,wix3.7,Wix,Burn,Wix3.7,我有一个Exe1->Msi1->Exe2->Msi2的链 我需要一个文件搜索结果来决定Exe2是否以其InstallCondition安装 我在Bundle外部的一个片段中定义了一个FileSearch,我在链上方的Bundle中引用它 如何确保在执行Msi1后完成文件搜索? 使用RegistrySearch而不是带有一个MSI包的FileSearch时出现类似问题: 更新: 我已经从链中删除了Exe2,我正试图在Msi1的延迟自定义操作中执行Exe2。Exe2可以自行运行,但从自定义操作运行

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

我需要一个文件搜索结果来决定Exe2是否以其InstallCondition安装

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

如何确保在执行Msi1后完成文件搜索?

使用RegistrySearch而不是带有一个MSI包的FileSearch时出现类似问题:

更新:
我已经从链中删除了Exe2,我正试图在Msi1的延迟自定义操作中执行Exe2。Exe2可以自行运行,但从自定义操作运行时失败。需要挖得更深一点烧伤不是这样的。它在开始应用链之前处理InstallCondition,因此链期间发生的任何事情都不会影响链的其余部分。

Burn不会以这种方式工作。它在链开始应用之前处理InstallCondition,因此链期间发生的任何事情都不会影响链的其余部分。

与Bob提到的一样,InstallCondition在链开始之前处理,而不是在两者之间处理

MSI1是否始终包含要搜索的文件?与其检查文件是否存在,不如检查MSI1是否安装正确?如果是这种情况,您可以使用VITAL属性

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


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

就像Bob提到的那样,InstallCondition在链启动之前处理,而不是在链启动之间处理

MSI1是否始终包含要搜索的文件?与其检查文件是否存在,不如检查MSI1是否安装正确?如果是这种情况,您可以使用VITAL属性

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


因此,您的常规Burn BA不支持,您可以编写一个自定义BA来处理此问题,也可以断开到2、exe1和msi1以及第二个exe2 msi2的链接。

谢谢您提供的信息。Msi2中的自定义操作能否在Burn中设置InstallCondition?否,自定义操作无法在执行期间更改链。感谢提供信息。Msi2中的自定义操作能否在Burn中设置InstallCondition?否,自定义操作无法在执行期间更改链。可能重复您提出的问题稍有不同,但从语义上看,它与另一个问题非常接近是,您可以关闭此问题或因语义差异而保留此问题。可能重复您提出的问题略有不同,但在语义上与另一个问题非常接近。是的,您可以关闭此问题或因语义差异而保留此问题。Msi2是必需的,必须在链中运行。Exe2是可选的软件包,需要根据客户端在Msi1的自定义对话框中所做的选择来安装。拆分链有什么帮助?然后我可以创建一个主链,它支持选择退出Exe2的条件吗?保持简单:)根据用户选择设置注册表值或创建一个新的文件条目。必须在链中运行Msi2。Exe2是可选的软件包,需要根据客户端在Msi1的自定义对话框中所做的选择来安装。拆分链有什么帮助?然后我可以创建一个主链,它支持选择退出Exe2的条件吗?保持简单:)根据用户选择设置注册表值或创建一个新的文件条目。读第二章。