0

我正在尝试在我的 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) 中的批处理文件并运行它。仍然,在同一点出现同样的错误。

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

注意:我还在这里发布了一些内容,希望获得特定主题的帮助,但我没有听到任何消息……在我发布之后,我在nsinstall. 无论如何,我更喜欢所以我想我会在这里尝试......

更新:我已尝试完全禁用 UAC 以纠正 cnemelkasr 建议的问题。我收到了完全相同的错误。这种新知识让我认为缺少文件或文件夹......有 NSInstall 经验的人知道给定的错误 - 错误的文件编号 - 可能意味着什么?我想它可能是指一个文件句柄......

4

3 回答 3

0

如果确实是 UAC 错误,您可以尝试完全关闭 UAC。我不得不为几个包做这个。网上有很多地方可以获取执行此操作的说明。

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

于 2009-08-29T21:24:43.143 回答
0

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

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

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

于 2009-09-01T14:57:24.340 回答
0

在我看到的案例中,“错误文件号”execvp (command, argv)消息是由传递给(或类似)函数的参数过多引起的。但仅来自某些程序。PATH中的旧bashsh或 Borland/Watcom 程序很可能是候选者。

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

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

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

现在,这是奇怪的部分。

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

事实 2
在 Borland 的 CBuilder 5.6 和 Watcom 1.9(这些使用 MSVC 运行时)上, strerror(EBADF)确实返回"Bad file number"

理论
Borland、Watcom(以及其他 CRT 也有可能?)混淆了 和 的E2BIG含义EBADF。这有什么意义吗?如果您有更好的理论,请有人纠正我。我自己也有点糊涂……

结论
要么缩短环境的大小(最简单),要么缩短命令行(并不总是那么容易)。

--gv

于 2012-02-16T08:50:31.087 回答