错误 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”

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

ArcGIS微课1000例0027:ArcGIS属性表(dbf)转Excel的4中方法

ArcGIS微课1000例0027:ArcGIS属性表(dbf)转Excel的4中方法

0027read命令

0027第二次作业