错误 CNDL0027:File/@Name 属性的值不是有效的 8.3 兼容名称
Posted
技术标签:
【中文标题】错误 CNDL0027:File/@Name 属性的值不是有效的 8.3 兼容名称【英文标题】:error CNDL0027 : The File/@Name attribute's value, is not a valid 8.3-compliant name 【发布时间】:2018-08-28 17:13:39 【问题描述】:当我使用 WIX 2.0 工具集运行 Windows 安装程序构建时,我收到以下错误。
错误 CNDL0027:File/@Name 属性的值无效。合法名称包含不超过 8 个字符,后跟可选扩展名 不超过3个字符。可以使用除以下之外的任何字符:\ ? | >
我怀疑是旧版本的原因,因为我使用的是windows 10 32位环境。
那么我需要迁移代码并使用 WIX 3.0 版本来解决此错误吗?
问候, 普拉卡什
【问题讨论】:
【参考方案1】:WiX 2:我肯定会将任何 WiX 2.0 源迁移到 WiX 3 或 WiX 4。我只使用 WiX 3。我认为您可以通过节食您的 WiX 资源来解决这个特定问题 - 而不是深入研究实际的主题/问题。如果你问我,处理 8.3 文件名只是浪费时间。如果可以,请避免。对于必须在 Windows 中处理所有这些旧的遗留问题的开发人员,我感到很抱歉。
简化 WiX 标记:换句话说,我认为这个问题可以“删除而不是修复”。所以请多多包涵:我喜欢将我的 WiX 源文件精简到最基本的要求,并允许编译器 (candle.exe
) 和链接器 (light.exe
)。这是可能的,因为很多字段只是“样板”或冗余,并且总是“一起改变”。它们也可能是自动生成的。
这里简要介绍了如何在较新的 WiX 源中删除多余的 XML 属性:Syntax for guids in WIX?(推荐阅读 - 应该很快)。
它的要点是你可以这样做:
<Component>
<File Source="..\File.dll" />
</Component>
而不是旧的,更精细的:
<!-- Sample guid below, do not copy paste -->
<Component Id="File.dll" Guid="12345678-1234-1234-1234-123456789ABC">
<File Id="File.dll" Name="File.dll" KeyPath="yes" Source="..\File.dll" />
</Component>
所有缺失的属性都将由 WiX 自动填充 - 使您更容易在编译器和链接器中实现由“更精简的源”获取的任何更改。如果需要某个属性 - 出于某种原因 - 编译器/链接器/文档会告诉您添加它。
解决方案?:因此,请尝试删除整个 Name attribute
,看看这是否能解决您的问题。我也会尽可能多地删除其他字段(应该使未来的迁移更容易 - 也许)。
【讨论】:
以上是关于错误 CNDL0027:File/@Name 属性的值不是有效的 8.3 兼容名称的主要内容,如果未能解决你的问题,请参考以下文章
wix - 错误CNDL0004:从命令行运行时,file元素包含意外的属性“src”
ArcGIS微课1000例0027:ArcGIS属性表(dbf)转Excel的4中方法