我正在使用Wix 3.8.我有一个Wix库,在其wxs文件中我有一个具有属性的Fragment:
<Fragment>
<!-- The following property is only used for reference -->
<Property Id="ReferenceProp"></Property>
<!-- other stuff here ... -->
</Fragment>
Run Code Online (Sandbox Code Playgroud)
在我的安装项目中,我想使用这个片段的内容,但我想以一种简单的方式进行,所以我尝试将一个PropertyRef
to 添加到ReferenceProp
上面定义的属性中.我收到一个错误:
Unresolved reference to symbol 'Property:ReferenceProp'
Run Code Online (Sandbox Code Playgroud)
但是,如果我将所述属性更改为ComponentGroup
(并且ref为a ComponentGroupRef
),那么它可以正常工作.这是一个错误吗?它的设计是否以不直观的方式工作?还是我错过了什么?
编辑:要清楚我遇到上述错误时确实有我的PropertyRef
内部Product
元素.
Edit2:我知道在明确说明我可以使用PropertyRef引入片段之前我已经看过一些信息.以下是来自Nick Ramirez的Wix 3.6开发人员指南Windows安装程序XML的引用:
例如,属性(可用于存储数据的变量)由Property元素表示,可以存储在Fragment元素中的单独文件中.然后,通过使用PropertyRef元素在主源文件中引用其中一个元素,您可以将它们全部放入项目中."
这本书是错的,或者这是他们删除的功能,或者是新引入的错误.
您需要链接到一个组件以加载整个片段.
引用John Cooper的话:
您需要一个引用元素到片段内的任何一位.Wix链接当前的工作方式,链接到片段中的一个项目会带来整个片段.
例如,如果片段中有Component元素,则可以使用具有相应Id属性的ComponentRef链接片段.
和伊恩威廉姆斯
是的,您需要引用片段中的内容(DirectoryRef,ComponentRef等)来加载片段(它将全部被加载,请注意).
还记得在你的蜡烛和灯光调用中加入他的.wxs文件
编辑
PropertyRef也可以.我自己检查了一下.改变这个:
<Property Id="ReferenceProp"></Property>
Run Code Online (Sandbox Code Playgroud)
对此:
<Property Id="ReferenceProp" Value="1" />
Run Code Online (Sandbox Code Playgroud)
您需要设置一个值.