nsinstall: ошибка неверного номера файла в Vista - PullRequest
0 голосов
/ 30 августа 2009

Я пытаюсь собрать Firefox на моей машине с Windows Vista Ultimate. Я продолжаю получать следующую ошибку:

nsinstall: неверный номер файла

Я читал, что эта ошибка вызвана UAC в Vista. Вот две статьи, которые приводят меня к такому выводу. https://wiki.mozilla.org/Penelope_Developer_Page#Windows_Vista и http://www.kevinbrosnan.net/mozilla-build-error-nsinstall-bad-file-number

Используя стандартную программу «Запуск от имени администратора», я попытался повторить сборку, но получил ту же ошибку. Я также запустил обычную командную строку от имени администратора, а затем перешел к командному файлу в mozilla-build (start-msvc8.bat) и запустил его. Тем не менее, та же ошибка в той же точке.

Любое другое понимание того, как я мог бы обойти эту ошибку или, возможно, что-то еще вызывает ошибку?

Примечание : я также разместил здесь кое-что в надежде получить помощь по теме, но не услышал писк ... После того, как я опубликовал, что нашел информацию на nsinstall. Во всяком случае, я предпочитаю ТАК, поэтому я решил попробовать здесь ...

Обновление : Я попытался полностью отключить UAC, чтобы исправить проблему, как это предлагает cnemelkasr. Я получил точно такую ​​же ошибку. Это новое знание заставляет меня думать, что файл или папка отсутствуют ... Кто-нибудь, имеющий опыт работы с NSInstall, знает, что может означать данная ошибка - неверный номер файла? Я полагаю, это может относиться к дескриптору файла ...

Ответы [ 3 ]

0 голосов
/ 01 сентября 2009

Я нашел ответ на свой вопрос. Я публикую ответ здесь, чтобы поделиться ответом с другими и закрыть этот вопрос.

После отключения UAC было предложено, чтобы глубина каталога мешала NSInstall. Я переместил папку с c:/Users/Frank/Documents/hg-repos/firefox-src-hgRepo/mozilla-fv-expirement/ на C:/mozilla-fv-expirement/. Очистил все предыдущие попытки сборки и, наконец, переделал мою сборку (с отключенным UAC), и я получил рабочий двоичный файл отладки.

Предложение было размещено по адресу: mozilla.dev.builds

0 голосов
/ 16 февраля 2012

Сообщение "Неверный номер файла" в случаях, которые я видел, вызвано слишком большим количеством аргументов, переданных функции execvp (command, argv) (или аналогичной). Но только из некоторых программ. Старая bash , sh или программа Borland / Watcom в вашей PATH является вероятным кандидатом.

Таким образом, когда вы сокращаете имя каталога сборки, общий размер командной строки (который в конечном итоге передается CreateProcess()) становится короче. Я не думаю, что UAC имеет к этому какое-либо отношение, так как я видел это и на Win-XP. Но немного странно, что Mozilla не использовала бы относительные пути при сборке. Я предполагаю, что он использует какой-то каталог prefix value в своих make-файлах (я никогда не пытался его собрать).

Если вы посмотрите документацию для _execvp():
http://msdn.microsoft.com/en-us/library/3xw6zy53.aspx

E2BIG - одно из возможных значений errno:
Пространство, необходимое для аргументов и параметров среды, превышает 32 КБ.

Теперь вот странная часть.

Факт 1 :
На Visual-C / MingW (любая версия) strerror(EBADF) не возвращает «Неверный номер файла» . (возвращается «Неверный дескриптор файла »).

Факт 2 :
В CBland Borland 5.6 и Watcom 1.9 (они , а не используют среду выполнения MSVC), strerror(EBADF) действительно возвращает «Неверный номер файла» .

Теория
Возможно ли, что Borland, Watcom (и другие CRT тоже?) Смешивают значения E2BIG и EBADF. Это имело какой-то смысл? Кто-нибудь, пожалуйста, поправьте меня, если у вас есть лучшая теория. Я немного запуталась сама ...

Заключение :
Либо сократите размер вашей среды (проще всего), либо сократите командную строку (не всегда легко).

- г.в.

0 голосов
/ 30 августа 2009

Если это действительно ошибка UAC, вы можете попробовать вообще отключить UAC. Я должен был сделать это для нескольких пакетов. В Интернете есть множество мест, где можно получить инструкции для этого.

http://www.petri.co.il/disable_uac_in_windows_vista.htm является одним из них.

...