【问题标题】:Order of Bootstrapper actions引导程序操作的顺序
【发布时间】:2016-02-17 13:19:35
【问题描述】:

我有一个带有自定义 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 中进行检测?

【问题讨论】:

    标签: wix burn wix3


    【解决方案1】:

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

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

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

    并像这样比较它:

    DetectCondition="VCRedist2010SP1_x86 = 1"
    

    【讨论】:

      猜你喜欢
      • 2016-02-15
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多