【问题标题】:WiX Bundle bal:condition - util:RegistrySearch - Not workingWiX Bundle bal:condition - util:RegistrySearch - 不工作
【发布时间】:2017-03-25 01:38:48
【问题描述】:

一个类似的帖子在这里,但我不能让我的工作 WiX Bundle bal:condition - util:RegistrySearch variable always false

先生,我正在努力让这个确切的东西正常工作。 “版本”在注册表项不存在时设置为 0,在存在键时设置为 1。无论哪种情况,我的包仍然会被安装。

我正在使用 VS 2015 和 Wix 3.10。请你帮忙。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
 xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
 xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">  
 <Bundle Name="XXX"
      Version="XXX"
      Manufacturer="XXX"
      UpgradeCode="XXX"
      IconSourceFile="XXX"
      Copyright="XXX" >

<util:RegistrySearchRef Id='SearchForMyIns' />

<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
  ...
</BootstrapperApplicationRef>

<Chain>
  <PackageGroupRef Id='NetFx40Web' />

  <MsiPackage SourceFile="$(var.DummyInstaller.TargetDir)\DummyInstaller.msi"  DisplayName="Dummy Conditioning" />      
</Chain>
</Bundle>

<Fragment>
<util:RegistrySearch
      Id='SearchForMyInst'
      Variable="Version"
      Result="exists"
      Root="HKLM"
      Key="SOFTWARE\MyInst" 
      Win64="yes" />
<bal:Condition Message="ThirdParty Application Required.">Version</bal:Condition>
</Fragment>

</Wix>

【问题讨论】:

    标签: wix registry bundle bootstrapper launch-condition


    【解决方案1】:

    Bal:Condition 不会评估您是否正在使用 MBA。检查以下链接

    http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Wix-Burn-Bundle-condition-does-not-work-if-using-MBA-td7581757.html

    改变

    <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
    

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
    

    你会看到 Bal:Condition 工作

    【讨论】:

      【解决方案2】:

      它总是为你安装的原因是

      <bal:Condition Message="messagehere">Version</bal:Condition>
      

      将评估 Version 的存在而不是 Version 的值。由于您的注册表搜索已存在,版本已始终定义,因此条件始终通过。 (我相信这是因为所有注册表搜索变量都是隐式字符串变量)

      如果您添加“版本 = 1”,那么您的安装应该仅在您的注册表搜索确实找到您要查找的内容时继续。

      我还想指出这种情况的一个特别严重的陷阱。如果用户安装了您的捆绑包然后决定他们不再需要您的捆绑包第三方程序并且他们都卸载了它们但他们首先卸载了第三方程序会发生什么?

      您的安装程序将无法卸载,因为当它尝试运行时,每次都会失败 bal:Condition,因为系统上不再存在第三方程序。

      要解决此问题,您应该在 bal:Condition 中添加“OR WixBundleInstalled”。

      【讨论】:

        猜你喜欢
        • 2013-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多