我在从wxm文件生成msi文件时遇到了以下错误。
candle.exe错误CNDL0027:文件/ @名称属性的值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:文件/ @名称属性的值testdata.value.dll不是有效的8.3兼容名称"
答案 0 :(得分:0)
出于某种原因,wix需要拥有8个字符范围内的所有文件名加上扩展名为3的文件。
通过设置您提到的注册表值,您告诉Windows 而不是创建此类文件名。这可能会导致问题,请参阅设置NtfsDisable8dot3NameCreation = 1时Microsoft告诉您可能发生的事情:
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
您也可以按卷进行此操作,有关详细信息,请参阅this链接。