candle.exe错误CNDL0027:文件/ @名称属性的值testdata.value.dll不是有效的8.3兼容名称

时间:2015-10-23 21:28:22

标签: c# wix windows-installer

我在从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兼容名称"

1 个答案:

答案 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链接。