Обновление XULRunner 30.0

У меня есть приложение для Mac OS X, которое отлично работает на XULRunner версии 18.0.

Сейчас я обновляю версию XULRunner с 18.0 до 30.0. Выполните следующие действия:

  1. Загружена среда выполнения XULRunner 30.0.
  2. Удалите содержимое из каталога XULRunner.Framework.
  3. Скопированы последние файлы, загруженные в XULRunner 30.0 Runtime.
  4. Теперь при запуске приложения я получаю эту ошибку:

Сообщение об ошибке Dyld: библиотека не загружена: @executable_path/libmozglue.dylib Ссылка на: /Users/USER/Desktop/*/MyApp.app/Contents/MacOS/xulrunner Причина: изображение не найдено


person user3222789    schedule 14.07.2014    source источник
comment
Итак, где libmozglue.dylib? В сообщении об ошибке ясно сказано, что он должен быть там, но его нет.   -  person Wladimir Palant    schedule 14.07.2014
comment
Он есть только в Contents/Frameworks/XUL.framework/Versions/Current. Работает нормально для 18.0, но показывает ошибку в 30.0.   -  person user3222789    schedule 14.07.2014


Ответы (1)


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

По сути, все инструкции, которые я могу найти о том, как структурировать пакет, устарели. Mozilla пришлось реструктурировать двоичные файлы из-за изменений в Mac требования к макету подписи кода. Из этого отчета об ошибке и некоторых проб и ошибок я смог определить макет требования.

Первая ошибка, которую мы можем увидеть при запуске бинарника Contents/MacOS/xulrunner из командной строки.

Ошибка 1:

dyld: библиотека не загружена: @executable_path/libmozglue.dylib

Все содержимое XUL.framework должно быть помещено в каталог Contents/MacOS/ приложения. Итак, чтобы исправить эту ошибку, скопируйте все из XUL.framework/Versions/Current в каталог MacOS вашего приложения.

Хорошо, теперь бинарник запустится. Однако это подводит нас к следующей ошибке, которую также можно увидеть из командной строки.

Ошибка 2:

Не удалось загрузить XPCOM.

Эта ошибка не является описательной, но для ее решения вам просто нужно скопировать файл dependentlibs.list (теперь в вашем каталоге MacOS) в ваш каталог Contents/Resources/.

Ошибка 3:

Теперь, когда вы запустите командную строку, вы получите что-то вроде следующего.

Mozilla XULRunner 36.0.4

Usage: xulrunner [OPTIONS]
       xulrunner APP-FILE [APP-OPTIONS...]

OPTIONS
      --app                  specify APP-FILE (optional)
  -h, --help                 show this message
  -v, --version              show version
  --gre-version              print the GRE version string on stdout

APP-FILE
  Application initialization file.

APP-OPTIONS
  Application specific options.

К сожалению, xulrunner не находит автоматически файл application.ini в Contents/Resources. Для тестирования мы можем форсировать его через командную строку. Что-то вроде следующего поможет:

./MyApp.app/Contents/MacOS/xulrunner MyApp.app/Contents/Resources/application.ini

На данный момент единственное возможное решение этой последней проблемы, которое я могу предложить на данный момент, - это загрузить стад, либо сценарий оболочки, либо скомпилированный двоичный файл, который выполняет необходимую команду для запуска application.ini в xulrunner.

person Alexander O'Mara    schedule 24.03.2015
comment
Отличный тайминг! Я как раз собирался начать ту же битву. Спасибо. - person J Evans; 27.03.2015