WiX:当我用Feature属性</componentref>替换repititous <componentref>时,片段未被包含

时间:2014-04-15 21:02:53

标签: wix installer

我们正在更新一些旧的WiX脚本以利用Feature attribute of components,因此无论何时添加或删除组件,我们都不必在两个位置更新文件(一次添加组件和再次将ComponentRef添加到ComponentGroup中。

我们将WiX项目分成单独的文件,每个片段一个,以使事情更易于管理。但我的片段定义了一个功能的组件不再被包含在内。在对Feature属性声明的响应中,它与Tomas's issue听起来完全相同。但是当他使用Heat自动生成他的Wix文件时,我们会从头开始手动制作它们。

我尝试在片段的.wxs文件中创建一个虚拟属性,然后在Product元素的主.wxs中引用它。该片段仍未包含在内,我收到了无效的属性ID。

我们最初尝试使用the strategy described here来引用组件中的目录,但是这样就不再需要一个完整的ComponentRef的单独ComponentGroup,它还将我的组件定义与目录树定义分开,这种类型会破坏目的只需要在一个地方寻找更新。

我是否需要将所有片段都拉到主要的Product.wxs文件中,以便利用Feature属性,并避免每个组件在两个位置更新文件?或者是否有一种简单的方法来包含片段?再次使用虚拟属性引用似乎不起作用。

编辑我认为我在构建中发现了问题 - 我在产品标记下定义了一个目录,然后在片段中定义了DirectoryRef,而不是相反

1 个答案:

答案 0 :(得分:3)

看看我们如何在ComponentGroups下创作WiX setup itself:作者组件,并使用ComponentGroupRef将这些组件引入功能。这消除了大多数重复。您可以在与Components / ComponentGroups相同的文件中创建片段中的Directory和DirectoryRef元素。