我有一个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]
未得到解决。显然,因为我也收到编译器警告。
如何解决该属性?
答案 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>