CNDL0005:Wix 元素包含意外的子元素'component'



我正试图在安装过程中实现web.config编辑,就像这里所做的那样,但在构建时遇到了一个错误:

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

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

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

我正在运行Wix 3.9。

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

功能<->功能组件<->组件

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

一个目录可以有多个组件,但一个组件只能属于一个目录。组件和文件也是如此。因此,在WiX中,Directory元素是Component元素的父元素,而Component元素是File元素的父。WiX在构建时将这些转换为PK-FK关系。MSBuild只调用WiX编译器工具(candle("CNDL005"错误的来源(、light(,而MSBuild对此一无所知。

一个要素可以包含多个零部件,零部件可以属于多个要素(多对多联接(。在这种情况下,WiX创建了功能<->ComponentRef关系。

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

最新更新