【问题标题】:candle.exe error CNDL0027 : The File/@Name attribute's value testdata.value.dll is not a valid 8.3-compliant name蜡烛.exe 错误 CNDL0027:File/@Name 属性的值 testdata.value.dll 不是有效的 8.3 兼容名称
【发布时间】:2015-10-23 21:28:22
【问题描述】:

我在从 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:File/@Name 属性的值 testdata.value.dll 不是符合 8.3 的有效名称”

【问题讨论】:

  • 我想说这很清楚:文件是 14.3 而不是 8.3。保持注册表不变,打开 shell 并在存储文件的目录中键入“dir /x”
  • 是的文件大于 8。'testdata.value.dll' 名称只是示例。实际文件名大于那个。您建议的命令只是列出特定目录下的文件。那不是我的问题。有我正在传递 wxm 文件的命令蜡烛.exe。此 wxm 文件包含“testdata.value.dll”名称。如果 wxm 文件中的文件名不适合 8.3,则会引发上述错误。我的问题是如果我禁用 'NtfsDisable8dot3NameCreation' 那么我不应该得到错误。但我仍然收到错误。
  • 不。您需要将注册表值恢复到其原始状态。然后 Windows 将创建两个文件名:一个长文件名和一个 8.3 文件名。使用dir /x,您将看到长文件名的 8.3

标签: c# wix windows-installer


【解决方案1】:

由于某种原因,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

您也可以按卷执行此操作,有关详细信息,请参阅this 链接。

【讨论】:

  • 我在注册表中将值设置为 0。重新启动机器。但我看不到我的文件的 8.3 名称。我认为是这个问题。在我的长文件名机器中,没有创建 8.3 名称。
  • 您是否以某种方式触摸过文件?我认为在您编辑注册表后,Windows 不会自行处理所有文件。将文件复制到新目录并将其复制回来或创建新目录。还有:你为什么要输入dir /r ?!?
  • 复制到其他目录并复制回来。没有看到预期的结果。我也尝试创建具有长名称的新文件,但也没有显示预期的结果。
  • 在我的 Windows 10 上默认为 2。也许您应该使用 fsutil 更改此值并停止摆弄注册表 (fsutil 8dot3name set /?)
  • 使用了 fsutil 8dot3name set 2。我可以看到短文件名。但是在使用candle.exe时仍然出现同样的错误(无效的8.3兼容)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 2019-08-31
相关资源
最近更新 更多