0

我正在尝试在我的安装过程中实现 web.config 编辑,就像在此处完成的那样,但是我在构建时遇到了一个错误:

CNDL0005: the wix element contains an unexpected child element 'component'

这似乎表明不应将 Component 放置在产品元素内。然而,我使用的是与他相同的模式。似乎我必须将我的组件放在一个目录中,一个片段内,以便 msbuild 接受它。有谁知道这是为什么?

我用谷歌搜索了上面的错误,它没有返回确切的结果

我正在运行 Wix 3.9。

4

1 回答 1

1

WiX 是底层 Windows Installer 数据库的 XML/XSD 抽象。该数据库是关系型的,具有 Feature、FetaureComponent、Component、Directory 和 File 等表。这些表中的每一个都有主键和外键列。例如

特征<->特征组件<->组件

目录<->组件<->文件

一个目录可以有多个组件,但一个组件只能属于一个目录。对于组件和文件也可以这样说。因此,在 WiX 中,Directory 元素是 Component 元素的父元素,而 Component Element 是 File 元素的父元素。WiX 在构建时将这些转换为 PK FK 关系。MSBuild 仅调用 WiX 编译器工具(蜡烛(您的 'CNDL0005' 错误的来源),灯),MSBuild 对此一无所知。

一个特征可以包含多个组件,一个组件可以属于多个特征(多对多连接)。在这种情况下,WiX 创建了 Feature <-> ComponentRef 关系。

您引用的示例显示了正确关系中的元素。你只是没有正确组装它。开始菜单中的 Wix.chm 包含每个元素的帮助主题,并列出了哪些元素可以是父元素,哪些元素可以是子元素,并具有指向该元素所代表的相关 Windows Installer 数据库表的链接。

于 2015-01-20T16:05:27.673 回答