文件/@Name属性的值testdata.value.dll不是一个有效的8.3兼容的名称

本文关键字:有效 一个 属性 @Name testdata value dll 文件 | 更新日期: 2023-09-27 18:18:58

我在从wxm文件生成msi文件时遇到了以下错误。

candle.exe错误CNDL0027: File/@Name属性的值testdata.value.dll不是一个有效的8.3兼容的名称。

下面的解决方案不起作用。在注册表HKEY_LOCAL_MACHINE'SYSTEM'CurrentControlSet'Control'FileSystem中修改NtfsDisable8dot3NameCreation值为1

注意:我使用的是candle.exe版本2。我的机器是64位的,安装了windows 10。

你知道如何设置或更改来解决这个问题吗?

更新1:

试图使用FSUTIL.EXE 8dot3name 2.

FSUTIL.EXE 8dot3name查询E:卷状态为:0(启用了创建8dot3名称)。注册表状态为:2(每个卷设置-默认)。

基于上述两个设置,在E:

上启用8dot3名称创建。

结果:使用dir/x

可以看到文件的短名称

问题:我仍然得到"错误CNDL0027:文件/@Name属性的值testdata.value.dll不是一个有效的8.3兼容的名称"

文件/@Name属性的值testdata.value.dll不是一个有效的8.3兼容的名称

由于某些原因,wix需要将所有文件名的长度限制在8个字符加上扩展名3的范围内。

通过设置您提到的注册表值,您告诉Windows 创建这样的文件名。这可能会导致问题,看看Microsoft告诉您的设置NtfsDisable8dot3NameCreation=1:

时可能发生的情况

NTFS不创建短文件名。虽然这个设置增加了文件性能,应用程序不能处理长文件名和使用不同代码页的计算机可能无法找到文件。

将注册表值设置回2,然后在存储文件的目录中调用dir /x。该命令将告诉您文件的8.3名称,如下所示:

24.10.2015  00:35                14 TESTDA~1.DLL testdata.value.dll

要避免regedit,可以使用fsutil命令显示…

fsutil 8dot3name set /?

…并操作值:

fsutil 8dot3name set 2

您也可以在每个卷的基础上执行此操作,详细信息请参见此链接。

相关文章: