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

时间:2018-08-28 17:13:40

标签: wix wix3.5 wix3 wix3.7 wix3.8

当我使用WIX 2.0工具集运行Windows Installer构建时,出现以下错误。

错误CNDL0027:File / @ Name属性的值'apcsystray.exe'不是有效的8.3兼容名称。合法名称不得超过8个字符,后跟一个可选扩展名 不超过3个字符。可以使用除以下字符以外的任何字符: | > <:/ *“ +,; = [](空格)。

我怀疑这是由于旧版本所致,因为我使用的是Windows 10 32位环境。

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

关于, 普拉卡什(Prakash)

1 个答案:

答案 0 :(得分:0)

WiX 2 :我肯定会将所有WiX 2.0源迁移到WiX 3或WiX4。我仅使用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自动填充-使得在“编译器”和“链接器”中进行的任何更改更为容易,而这些更改是由您的“ slimmer源”获取的。如果出于某种原因需要某个属性,则编译器/链接器/文档将要求您添加该属性。

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