我正在使用Wix 3.8。我有一个Wix库,在它的wxs文件中我有一个Fragment,它有一个属性:
<Fragment>
<!-- The following property is only used for reference -->
<Property Id="ReferenceProp"></Property>
<!-- other stuff here ... -->
</Fragment>
在我的安装项目中,我想使用此片段的内容,但我希望以简单的方式完成,因此我尝试将PropertyRef
添加到上面定义的ReferenceProp
属性中。我收到了一个错误:
Unresolved reference to symbol 'Property:ReferenceProp'
但是,如果我将所述属性更改为ComponentGroup
(并将ref更改为ComponentGroupRef
),那么它可以正常工作。这是一个错误吗?它的设计是否以不直观的方式工作?或者我错过了什么?
修改:要清楚我收到上述错误时,我的PropertyRef
元素中确实有Product
。
Edit2:我知道在明确说明我可以使用PropertyRef引入片段之前我已经看过一些信息。以下是来自Nick Ramirez的Wix 3.6开发人员指南Windows安装程序XML的引用:
例如,属性(可用于存储数据的变量)由Property元素表示,可以存储在Fragment元素的单独文件中。然后,通过使用PropertyRef元素在主源文件中引用其中一个,您可以将它们全部放入项目中。“
这本书是错的,或者这是他们删除的功能,或者是新引入的错误。
答案 0 :(得分:5)
您需要链接到一个组件以加载整个片段。
引用John Cooper:
您需要一个引用元素到片段内的任何一位。该 方式Wix链接当前有效,链接到片段中的一个项目 带来整个片段。
例如,如果片段中有Component元素,则可以 使用具有适当Id的ComponentRef链接片段 属性。
伊恩·威廉姆斯
是的,你需要参考 片段中的某些东西(DirectoryRef,ComponentRef等)来加载 片段(将全部加载,注意)。
还要记住在你的蜡烛和蜡烛的通话中加入他的.wxs文件 光
修改强>
也可以使用PropertyRef。我自己检查了一下。改变这个:
<Property Id="ReferenceProp"></Property>
对此:
<Property Id="ReferenceProp" Value="1" />
您需要设置一个值。
答案 1 :(得分:1)
如果在片段中创建属性,则需要以这种方式将PropertyRef添加到产品中:
带片段的文件:
<Fragment>
<Property Id="SQL_CE_64">
<RegistrySearch Id="SqlCe64Search"
Root="HKLM"
Key="SOFTWARE\Classes\Installer\Products\DA93DA4DE19033D4BBB2956FCF8BDA3C"
Name="Version"
Type="raw" />
</Property>
</Fragment>
带有产品标签的文件:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product ...>
<PropertyRef Id="SQL_CE_64" />
...
</Product>
</Wix>