wix - 错误 CNDL0004:从命令行运行时文件元素包含意外的属性“src”

Posted

技术标签:

【中文标题】wix - 错误 CNDL0004:从命令行运行时文件元素包含意外的属性“src”【英文标题】:wix - error CNDL0004: The file element contains an unexpected attribute "src" when running from the command line 【发布时间】:2018-09-04 17:17:01 【问题描述】:

当我从 2.0 版迁移到 4.0 版后从 WIx 安装程序的命令行运行以下命令时

E:\Code\PCPE\builder>ant -v -f Build.xml -Dlabel =.001 install

我收到以下错误:

error CNDL0004: The file element contains an unexpected attribute "src"

我在 EMR_COMMON.wxs 文件的第 4 行看到了错误。

    片段> DirectoryRef Id="INSTALLDIR"> 组件 ID="component_COMMON" Guid="" DiskId="1"> 文件 ID="file0_COMMON" Name="apcrun.exe" src="E:\Code\apcrun.exe"/>

我认为“src”属性已被弃用,应该用其他属性替换。

但是这里我不能直接替换EMR_COMMON.wxs文件bcz中的"src"属性,它是从"Build.xml"生成的。

那么我需要在"Build.xml" 文件中更改哪些属性才能在"EMR_COMMON.wxs" 文件中替换"src" 的适当属性?

【问题讨论】:

是的,src 已弃用,取而代之的是 Source for File Elements(朝向底部)。至于Build.xml,那是一个Ant构建脚本吗?您使用的是 Visual Studio、Eclipse 还是其他工具? 您可以添加自己的答案并将其设置为已接受。所以谁有类似的问题可以找到它。 【参考方案1】:

我解决了这个问题。我编写了下面的 C# 代码,将“src”属性名称替换为“Source”属性。 为此,我首先获得了“文件”节点列表,获取文件节点的计数,然后使用 XmlNodeList fileNodeList = compElement.GetElementsByTagName("File"); XmlElement fileElement = (XmlElement)fileNodeList[i]; String srcString = fileElement.GetAttribute("src"); fileElement.SetAttribute("Source", srcString); fileElement.RemoveAttribute("src");

【讨论】:

以上是关于wix - 错误 CNDL0004:从命令行运行时文件元素包含意外的属性“src”的主要内容,如果未能解决你的问题,请参考以下文章

Wix错误未定义的预处理器变量(错误CNDL0150)

错误 CNDL0027:File/@Name 属性的值不是有效的 8.3 兼容名称

Wix 3.7:candle.exe 从命令行崩溃

WiX Bootstrapper:如何从命令行设置刻录变量?

即使使用 --no-build 标志运行 dotnet test 时如何避免 Wix 构建错误?

将Wix 3.0迁移到Wix 4.0时出现错误:WXCP0006:此节点前的空格不正确(WhitespacePrecedingNodeWrong)