我可以通过引用其中定义的属性来包含Wix片段吗?

时间:2014-09-12 17:59:05

标签: wix

我正在使用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元素在主源文件中引用其中一个,您可以将它们全部放入项目中。“

这本书是错的,或者这是他们删除的功能,或者是新引入的错误。

2 个答案:

答案 0 :(得分:5)

您需要链接到一个组件以加载整个片段。

引用John Cooper:

  

您需要一个引用元素到片段内的任何一位。该   方式Wix链接当前有效,链接到片段中的一个项目   带来整个片段。

     

例如,如果片段中有Component元素,则可以   使用具有适当Id的ComponentRef链接片段   属性。

伊恩·威廉姆斯

  

是的,你需要参考   片段中的某些东西(DirectoryRef,ComponentRef等)来加载   片段(将全部加载,注意)。

     

还要记住在你的蜡烛和蜡烛的通话中加入他的.wxs文件   光

http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/How-to-reference-a-wxs-file-from-another-td7334084.html

修改

也可以使用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>