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

error CNDL0027 : The File/@Name attribute's value, is not a valid 8.3-compliant name

当我 运行 使用 WIX 2.0 工具集构建 windows 安装程序时,出现以下错误。

错误 CNDL0027:文件/@Name 属性的值无效。合法名称包含不超过 8 个字符,后跟一个可选的扩展名 不超过 3 个字符。可以使用除以下字符之外的任何字符:\ ? | > < : / * " + , ; = [ ] (space).

我怀疑是旧版本的问题,因为我使用的是 windows 10 32 位环境。

所以我需要迁移代码并使用WIX 3.0版本来解决这个错误吗?

此致, 普拉卡什

WiX 2:我肯定会将任何 WiX 2.0 源迁移到 WiX 3 或 WiX 4。我只使用 WiX 3。我认为您可以通过节食 WiX 源来解决这个特定问题 - 而不是深入研究实际主题/问题。如果你问我,处理 8.3 文件名只是浪费时间。如果可以,请避免。对于必须处理 Windows.

中所有这些陈旧遗留问题的开发人员,我感到很遗憾

Simplify WiX Markup:换句话说我觉得这个问题可以"removed rather than fixed"。所以请耐心等待:我喜欢将我的 WiX 源文件精简到最基本的必需品,并允许编译器自动神奇地添加尽可能多的字段(candle.exe ) 和链接器 (light.exe)。这是可能的,因为很多字段只是 "boilerplate" 或多余的,并且总是 "change together"。它们也可能是自动生成的。

这里简要介绍了如何删除较新 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 自动填充 - 使您可以更轻松地在您的 "slimmer source" 选取的编译器和链接器中实施任何更改。如果需要某个属性 - 出于某种原因 - 编译器/链接器/文档会告诉您添加它。

解决方法?:据此,请尽量去掉整个Name attribute 看看这是否能解决您的问题。我也会尽可能多地删除其他字段(应该使将来的迁移更容易 - 也许)。