nsinstall:Vista上的文件编号错误

时间:2009-08-29 21:06:36

标签: uac windows-vista

我正在尝试在Windows Vista Ultimate计算机上构建Firefox。我一直收到以下错误:

  

nsinstall:错误的文件编号

我读过这个错误是因为Vista中的UAC引起的。这两篇文章引导我得出这个结论。 https://wiki.mozilla.org/Penelope_Developer_Page#Windows_Vistahttp://www.kevinbrosnan.net/mozilla-build-error-nsinstall-bad-file-number

使用标准的“以管理员身份运行”,我试图重做我的构建,但我得到完全相同的错误。我还以管理员身份启动了正常的命令提示符,然后转到mozilla-build(start-msvc8.bat)中的批处理文件并运行它。在同一点上,同样的错误仍然存​​在。

关于我如何解决此错误或其他可能导致错误的任何其他见解?

注意:我也posted something here希望获得针对特定主题的帮助,但我没有听到过窥视......在我发布之后,我发现了{{{ 1}}。无论如何,我更喜欢所以我想我会在这里尝试......

更新:我已尝试完全禁用UAC来纠正问题,正如cnemelkasr所建议的那样。我收到了完全相同的错误。这个新知识让我觉得文件或文件夹丢失了......有没有NSInstall经验的人都知道给定的错误 - 文件号错误 - 可能意味着什么?我想它可能是指文件句柄......

3 个答案:

答案 0 :(得分:0)

如果确实是UAC错误,您可以尝试完全关闭UAC。我必须为几个包做这个。网上有很多地方可以获得这方面的指示。

http://www.petri.co.il/disable_uac_in_windows_vista.htm就是其中之一。

答案 1 :(得分:0)

我找到了问题的答案。我在这里发布答案,与其他人分享答案并结束这个问题。

禁用UAC后,有人建议目录深度干扰NSInstall。我将文件夹从c:/Users/Frank/Documents/hg-repos/firefox-src-hgRepo/mozilla-fv-expirement/移到了C:/mozilla-fv-expirement/。清除所有以前的构建尝试,最后重新构建我的构建(关闭UAC),我收到了一个有效的调试二进制文件。

该建议发布于:mozilla.dev.builds

答案 2 :(得分:0)

在我看到的情况下,"错误的文件编号" 消息是由传递给execvp (command, argv)(或类似)函数的过多参数引起的。但只能来自一些程序。您 PATH 中的旧 bash sh 或Borland / Watcom程序可能是候选人。

因此,当您缩短构建目录的名称时,命令行的总大小(最终传递给CreateProcess())会变短。我不认为UAC与此有任何关系,因为我也在Win-XP上看过这个。但是有点奇怪Mozilla在构建时不会使用相对路径。我猜它在它的makefile中使用了一些目录前缀值(我从未尝试过构建它)。

如果您查看_execvp()的文档:
  http://msdn.microsoft.com/en-us/library/3xw6zy53.aspx

E2BIG 是可能的errno值之一:
参数和环境设置所需的空间超过32 KB。

现在,这是一个奇怪的部分。

事实1
在Visual-C / MingW(任何版本)上,strerror(EBADF)不会返回"错误的文件编号" 。 (它返回"错误的文件描述符")。

事实2
在Borland的CBuilder 5.6和Watcom 1.9上(这些使用MSVC运行时),strerror(EBADF)确实返回&#34;错误的文件编号&#34; < / i>的。

理论的:
有可能Borland,Watcom(以及其他CRT也是如此?)混淆了E2BIGEBADF的含义。这有什么意义吗?如果你有更好的理论,请有人纠正我。 我自己有点困惑......

结论
缩短环境的大小(最简单)或缩短命令行(并非总是容易)。

- GV