Bootstrapper操作的顺序

时间:2016-02-17 13:19:36

标签: wix burn wix3

我有一个自定义UI,1 msi包和一些先决条件的引导程序。我想要做的是在自定义UI中检测先决条件,然后覆盖bundle元素中的一个变量,以便安装先决条件。

基本上是这样的:

    <Variable Name="VCRedist2010SP1_x86" Value="TRUE"/>
<Chain>    
  <ExePackage Id="VCRedist2010SP1_x86" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q"
    SourceFile="E:\Redist\vcredist_2010_SP1_x86.exe"
    DetectCondition="NOT VCRedist2010SP1_x86"/>
...      
</Chain>

然后从我的UI中覆盖VCRedist2010SP1_x86变量。 问题是在覆盖变量之前检查DetectCondition。这是日志:

Condition 'NOT VCRedist2010SP1_x86' evaluates to false.
Setting string variable 'VCRedist2010SP1_x86' to value 'FALSE'

问题是它是否可以像这样工作,或者我是否总是必须使用RegistrySearch在XML中进行检测?例如?

1 个答案:

答案 0 :(得分:0)

原因是我在过程中过早地调用了Detect,我需要稍后调用它并小心,因为它是异步的。我可能需要听DetectComplete事件。

但是我的更大问题是没有Boolean类型变量。我最终使用了:

<Variable Name="VCRedist2010SP1_x86" Value="0" Type="numeric"/>

并将其比作:

DetectCondition="VCRedist2010SP1_x86 = 1"