質問

I want to write the installed version to registry using WiX. Here is the WiX code of mine:

<Product Id="B20795DC-5462-4DE6-B629-8C034D114D3C" Name="ProductName" Language="1033" Version="1.1.3" Manufacturer="Corp" UpgradeCode="8f5c57ff-71fe-4fc6-9400-9bbbb76b4262">

....
<Component Id="ProgramRegistry">
    <RegistryKey Id="RegInstallDir" Root="HKLM" Key="Software\[Manufacturer]\[ProductName]" Action="createAndRemoveOnUninstall">
      <RegistryValue Type="string" Name="InstallVersion" Value="[Version]"/>
    </RegistryKey>
  </Component>

It creates a key named "InstallVersion" but the value is empty. My question is how to write the product version into registry, the expected value should be the same as the version attribute in <Product> tag. (1.1.3)

役に立ちましたか?

解決

The ProductVersion property contains the value you're looking for.

他のヒント

You can use ProductVersion property, the way @Stephen suggests. Alternatively, you can use the following approach:

  • define the version in a WiX variable
  • reference this variable in both Product element and RegistryValue element
  • set the product version in your build script and pass it to WiX compiler

Hence, your sample might look like this:

<Product Id="B20795DC-5462-4DE6-B629-8C034D114D3C" Name="ProductName" Language="1033" Version="$(var.Version)" Manufacturer="Corp" UpgradeCode="8f5c57ff-71fe-4fc6-9400-9bbbb76b4262">
....
  <Component Id="ProgramRegistry">
    <RegistryKey Id="RegInstallDir" Root="HKLM" Key="Software\[Manufacturer]\[ProductName]" Action="createAndRemoveOnUninstall">
      <RegistryValue Type="string" Name="InstallVersion" Value="$(var.Version)"/>
    </RegistryKey>
  </Component>
</Product>

And somewhere in the build script (let's pretend, it is NAnt):

<candle out="${build.fodler}" rebuild="true" extensions="${build.extensions}" exedir="${wxs.dir}">
  <defines>
  ...
    <define name="Version" value="1.1.3" />
  ...
  </defines>
  <sources basedir="${paths.wxs}">
    <include name="**.wxs"/>
  </sources>
</candle>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top