wix - 错误 CNDL0027:File/@Name 属性的值不是有效的 8.3 兼容名称
问题描述
当我使用 WIX 2.0 工具集运行 Windows 安装程序构建时,我收到以下错误。
错误 CNDL0027:File/@Name 属性的值无效。合法名称包含不超过 8 个字符,后跟不超过 3 个字符的可选扩展名。可以使用除以下之外的任何字符:\ ? | > < : / * " + , ; = [ ](空格)。
我怀疑这是由于旧版本的原因,因为我使用的是 windows 10 32 位环境。
那么我是否需要迁移代码并使用 WIX 3.0 版本来解决此错误?
问候, 普拉卡什
解决方案
WiX 2:我肯定会将任何 WiX 2.0 源迁移到 WiX 3 或 WiX 4。我只使用 WiX 3。我认为您可以通过节食您的 WiX 资源来解决这个特定问题 - 而不是深入研究实际的主题/问题。如果你问我,处理 8.3 文件名只是浪费时间。如果可以,请避免。对于必须在 Windows 中处理所有这些旧的遗留问题的开发人员,我感到很抱歉。
简化 WiX 标记:换句话说,我认为这个问题可以“删除而不是修复”。所以请多多包涵:我喜欢将我的 WiX 源文件精简到最基本的要求,并允许编译器 (candle.exe
) 和链接器light.exe
。这是可能的,因为很多字段只是“样板”或冗余,并且总是“一起改变”。它们也可能是自动生成的。
以下是关于如何在较新的 WiX 源中删除多余 XML 属性的简要说明:WIX 中 guid 的语法?(推荐阅读 - 应该很快)。
它的要点是你可以这样做:
<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
,看看这是否能解决您的问题。我也会尽可能多地删除其他字段(应该使未来的迁移更容易 - 也许)。
推荐阅读
- javascript - 我的模态组件在另一个文件中,我正在尝试从另一个组件打开它
- c++ - 为什么STM32不中断?
- php - Laravel 5.8 403 此操作未经授权
- machine-learning - 我如何知道成本函数是否已成为最小值?
- single-sign-on - 设置与 CAS 服务器集成的 Apereo Cas Management
- javafx - 需要在 javafx 中使用 xml 数据自定义组合框
- python - 如何使用 pyTorch 为 LSTM 神经网络暗示装袋方法?
- android - Dagger2 没有找到提供的实例
- ionic-framework - 在全新安装 npm、角度 cli 和 ionic 时执行“离子服务”时出错 - 找不到模块 @angular\cli\bin\ng
- neutrinos-platform - 如何在 neutrinos-platform 中切换我的应用程序工作区?