[wix-users] Burn is Unsetting Variable

Farrukh Waheed farrukh1 at gmail.com
Thu Aug 30 01:30:46 PDT 2018


In my Bundle project, I'm searching registry for a version and setting a
variable:

    <Variable Name="Installed_Ver" bal:Overridable="yes" Type="version"
Value="0.0.0.0" Persisted="yes" />

    <util:RegistrySearch
      Id="Self_Ver"
      Root="HKLM"
      Key="Software\MyCompany\MyProductName"
      Value="Version"
      Variable="Installed_Ver"
      Format="raw"
      Win64="yes"
  />

And using this in Condition as:

    <util:RegistrySearchRef Id="Self_Ver"  />
    <bal:Condition Message="A recent or same version of this product is
already installed on this machine. Please contact product support for more
information." >
      <![CDATA[WixBundleInstalled OR (WixBundleFileVersion >
Installed_Ver)]]>
    </bal:Condition>

This works fine if HKLM\Software\MyCompany\MyProductName\\Version exists.
But if this registry doesn't exist then registry search would fail and it
is  Unsetting the variable 'Installed_Ver'. This causes the condition
wrongly evaluating to false.

By defining <Variable>, I tried to set a default value i.e. "0.0.0.0" so it
should have some value and condition would be evaluated properly i.e. to
True in this case.

Here is the log, which shows that it is Unsetting the variable
'Installed_Ver'.

> [5898:2AC4][2018-08-30T13:15:08]i000: Setting string variable
'WixBundleName' to value 'RegVersionCheck'
[5898:2AC4][2018-08-30T13:15:08]i000: Setting string variable
'WixBundleManufacturer' to value 'Testing'
[5898:3354][2018-08-30T13:15:08]i000: Setting numeric variable
'WixStdBALanguageId' to value 1033
[5898:3354][2018-08-30T13:15:08]i000: Setting version variable
'WixBundleFileVersion' to value '7.1.2.3'
[5898:2AC4][2018-08-30T13:15:08]i100: Detect begin, 1 packages
[5898:2AC4][2018-08-30T13:15:08]i000: Registry key not found. Key =
'Software\MyCompany\MyProductName'
[5898:2AC4][2018-08-30T13:15:08]i000: ****Unsetting variable
'Installed_Ver'****
[5898:2AC4][2018-08-30T13:15:08]i101: Detected package: MainProduct, state:
Absent, cached: None
[5898:2AC4][2018-08-30T13:15:08]i104: Detected package: MainProduct,
feature: CalculatorFeature, state: Absent
[5898:2AC4][2018-08-30T13:15:08]i052: Condition 'WixBundleInstalled OR
(WixBundleFileVersion > Installed_Ver)' evaluates to false.
[5898:2AC4][2018-08-30T13:15:08]e000: A recent or same version of this
product is already installed on this machine. Please contact product
support for more information.
[5898:2AC4][2018-08-30T13:15:08]e000: Error 0x81f40001: Bundle condition
evaluated to false: WixBundleInstalled OR (WixBundleFileVersion >
Installed_Ver)
[5898:2AC4][2018-08-30T13:15:08]i199: Detect complete, result: 0x0

I tried by hard-coding "0.0.0.0" in the condition and it works fine.

***How should I get a default value for Installed_Ver if registry search
fails?***

Thanks


More information about the wix-users mailing list