我正在尝试在安装过程中实现web.config编辑here,但我在构建时遇到错误:
CNDL0005: the wix element contains an unexpected child element 'component'
这似乎表明Component不应该放在product元素中。然而,我使用的是相同的架构。似乎我必须将 my 组件放在片段内的目录中,以便msbuild接受它。有谁知道这是为什么?
我用Google搜索了上面的错误,然后返回no exact results。
我正在运行Wix 3.9。
答案 0 :(得分:1)
WiX是底层Windows Installer数据库的XML / XSD抽象。该数据库是关系型的,具有Feature,FetaureComponent,Component,Directory和File等表。每个表都有主键和外键列。例如
功能和LT; - > FeatureComponent< - >成分
指南< - >成分< - >文件
目录可以包含多个组件,但组件只能属于一个目录。对于组件和文件,可以说同样的事情。因此,在WiX中,Directory元素是Component元素的父元素,Component Element是File元素的父元素。 WiX在构建时将这些转换为PK FK关系。 MSBuild只调用WiX编译器工具(蜡烛(你的'CNDL0005'错误的来源),光),MSBuild对此没有直接了解。
一个功能可以包含多个组件,一个组件可以属于多个功能(多对多连接)。在这种情况下,WiX创建了功能< - > ComponentRef关系。
您引用的示例以正确的关系显示元素。你只是没有正确组装它。 startmenu中的Wix.chm包含每个元素的帮助主题,并列出哪些元素可以是父元素,父元素可以是子元素,并且具有指向元素所代表的相关Windows Installer数据库表的链接。