WiX - 使用属性

时间:2016-08-03 10:16:37

标签: wix windows-installer

我有一个WiX 3.10安装程序,可以为现有应用程序安装附加模块。出于这个原因,我使用RegistrySearch获取应该放置加载项的安装文件夹。在此之后,必须使用一些参数执行已预先存在的(意味着这是基本应用程序的一部分而不是附加组件)实用程序。

我试过了:

    <Property Id="INSTALLFOLDER">
      <RegistrySearch Id='InstallPathRegistry' Type='raw' Root='HKLM' Key='SOFTWARE\Vendor\Application' Name='InstallPath' Win64='no'/>
    </Property>

    <Condition Message="Application installation folder not found.">
      <![CDATA[Installed OR INSTALLFOLDER]]>
    </Condition>

    <Property Id="WixQuietExecCmdLine" Value="RegAddOn.exe /f [INSTALLFOLDER]\Addon.RegFile" />
    <CustomAction Id="QtExec" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="immediate" Return="check" />




<InstallExecuteSequence>
  <Custom Action="QtExec" OnExit="success"/>
</InstallExecuteSequence>

不幸的是,[INSTALLFOLDER]未得到解决。显然,因为我也收到编译器警告。

如何解决该属性?

1 个答案:

答案 0 :(得分:1)

你的警告说该怎么做:

Warning     The 'X1' Property contains '[X2]' in its value which is an illegal reference to another property.  If this value is a string literal, not a property reference, please ignore this warning.  To set a property with the value of another property, use a CustomAction with Property and Value attributes.

注意:使用带有属性和值属性的CustomAction。

所以你需要定义没有值的属性

<Property Id="WixQuietExecCmdLine" Value=" " />

并使用自定义操作填充

<CustomAction Id="SetProp" Property="WixQuietExecCmdLine" Value="RegAddOn.exe /f [INSTALLFOLDER]\Addon.RegFile"></CustomAction>

并在当前自定义操作之前运行它

<InstallExecuteSequence>
  <Custom Action="SetProp" OnExit="success"/>
  <Custom Action="QtExec" After="SetProp"/>
</InstallExecuteSequence>