WiX:替换repititous时未包含片段<;ComponentRef>;具有特征属性

WiX:替换repititous时未包含片段<;ComponentRef>;具有特征属性,wix,installation,Wix,Installation,我们正在更新一些旧的WiX脚本以利用,这样,无论何时添加或删除组件,我们都不必在两个位置更新文件(一次是添加组件,另一次是将ComponentRef添加到ComponentGroup) 我们将WiX项目分离成单独的文件,每个片段一个,以使事情更易于管理。但是,我定义特性组件的片段不再包括在内。这听起来与他对特性属性声明的回应完全相同。但是,当他使用Heat自动生成他的Wix文件时,我们正在从头开始手工制作它们 我尝试在片段的.wxs文件中创建一个伪属性,然后在Product元素的main.wxs

我们正在更新一些旧的WiX脚本以利用,这样,无论何时添加或删除组件,我们都不必在两个位置更新文件(一次是添加组件,另一次是将ComponentRef添加到ComponentGroup)

我们将WiX项目分离成单独的文件,每个片段一个,以使事情更易于管理。但是,我定义特性组件的片段不再包括在内。这听起来与他对特性属性声明的回应完全相同。但是,当他使用Heat自动生成他的Wix文件时,我们正在从头开始手工制作它们

我尝试在片段的.wxs文件中创建一个伪属性,然后在Product元素的main.wxs中引用它。片段仍然没有包含,我得到了一个无效的属性ID

我们最初尝试使用来引用组件中的目录,但这消除了对充满ComponentRef的单独ComponentGroup的需要,同时也将我的组件定义与目录树定义分离,这有点违背了只需在一个位置查找即可进行更新的目的

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


编辑:我想我在构建中发现了问题——我在产品标签下定义了一个目录,然后在片段中定义了一个
DirectoryRef
,而不是反过来。

看看我们是如何在ComponentGroups下编写:Author组件的,并使用ComponentGroupRef将这些组件拉入功能中的。这消除了大多数重复。您可以在组件/组件组所在的同一文件中编写片段中的Directory和DirectoryRef元素。

我看到你们使用了我问题中提到的
目录
属性。因此,在
目录下编写
组件
(以便文件位于其目录上下文中,而不是与目录分开的部分)并使用
功能
属性将其绑定到功能,没有一个简单的方法?如果我们能得到包含组件的片段文件,我们就可以做到这一点。就像我六年前说的:“正如德里克在我遇到同样的问题时告诉我的:“父母可以选择他们的孩子,但孩子不能选择他们的父母。”“因为通常目录元素比组件元素少,该语言没有针对您想要的创作进行优化。对——我已经阅读了该引文,这是一个很好的引文,但是我是否应该能够使用片段中定义的属性上的PropertyRef(例如)来拉入片段?我不确定为什么这不适用于包含片段,或者是否有其他方法可以这样做。只有
ComponentRef
将包含一个片段?PropertyRef将拉入一个片段。如果它没有连接Component/@功能,那就是WiX链接器中的一个bug。只需使用
PropertyRef
作为拉入片段的唯一方法构建一个最小的项目。不过它还是管用的!这样做有助于我在构建中发现问题——我在产品标签下定义了一个目录,然后在片段中定义了一个
DirectoryRef
,而不是相反。谢谢你的帮助!