Пособие по XULRunner
Игрался на днях с органайзером, написанным на XUL и открывающемся в отдельном
окне. Приложение очень простое, позволяет мне создавать список заданий и
отслеживать, как долго я выполняю выбранное. В отдельном попапе я могу быстро
редактировать задачи и это помогает мне более аккуратно планировать свое
время.
Но была проблема. При клике по ссылкам в письмах или в моем IM страницы
открывались в попапе моего органайзера, а не в новой вкладке Firefox'а. Это
приводило к утрате моих данных. Натан (Nathan) посоветовал воспользоваться
XULRunner'ом, и после того как я еще раза 3 потерял данные, мне не осталось
ничего другого как идти по приведенной ссылке и читать, как этот XULRunner
установить. Он оказался консольным приложением для запуска приложений XUL. По
сути XULRunner запускает новый экземпляр Gecko и запускает с его помощью ваш
код. При этом Outlook перестает считает окно запущенного приложения хорошим
местом для открытия ссылок, и если падает Firefox, мой экземпляр XULRunner
продолжает нормально работать.
Документация по XULRunner несколько скудна, но я смог нагуглить пример
приложения под XULRunner - XULmine и смог провести его реверс-инжиниринг. Таким
способом я узнал, как работать с XULRunner. После этого я просмотрел еще
несколько ссылок и нашел блог Дарина
(Darin)
который, на мой взгляд, содержит самую подробную информацию о XULRunner.
В качестве соглашения скажу, что выделенные слова являются
переменными и должны заменяться на специфичные для вашего приложения
значения.
Создайте нужную структуру папок
Для своего приложения по следующему образцу:
/названиеПриложения
/chrome
/названиеПриложения
файлы вашего приложения
chrome.manifest
/defaults
/preferences
prefs.js
application.ini
Структура папок может быть еще более запутанной. Я привел лишь минимальный ее
вариант. Теперь будем писать конфигурационные файлы.
Создайте свой application.ini
В начале работы XULRunner читает файл application.ini,
находящийся в описанной выше структуре директорий. Вот простой пример
application.ini:
[App]
Vendor=компания
Name=названиеПриложения
Version=0.1
BuildID=20050506
[Gecko]
MinVersion=1.8
MaxVersion=1.8
Важнейшей частью является раздел [Gecko]. Раздел
[App] полезен, но, кажется, не является необходимым. Часть
[Gecko] сообщает XULRunner'у, какие версии Gecko могут
использоваться для выполнения вашего приложения. Если эти строки отсутствуют,
XULRunner сообщит об ошибке.
Создайте свой prefs.js
Это - файл привилегий, в который Вам следует вписывать начальные значения
всяких вещей, таких как опций работы движка Gecko или опций вашего приложения.
Сейчас нам нужно только это:
pref("toolkit.defaultChromeURI", "chrome://названиеПриложения/content/startPage.xul");
Где startPage - это страница XUL, которая должна отображаться
первой.
Создайте свой chrome.manifest
Этот файл содержит карту соответствий между URL "chrome://" и файлами вашего
приложения:
content названиеПриложения file:названиеПриложения/
Тем самым мы указали XULRunner'у, что если встретиться URI
"chrome://названиеПриложения/content/", надо обращаться к директории
"chrome", находящейся в "названиеПриложения/".
Большинство приложений XUL, которые я видел, распространялись как файлы с
расширением ".jar", которые содержали все файлы из соответствующей приложению
подпапки из "chrome/". В ходе разработки удобно иметь свое приложение
распакованным, но когда вы готовите его к распространению, то создайте jar:
- Зазипуйте свою папку "/chrome/названиеПриложения" и сохраните
"названиеПриложения.zip" в директорию "/chrome".
- Переименуйте названиеПриложения.zip в
названиеПриложения.jar
- Измените
chrome.manifest, сослав его на
названиеПриложения.jar:
content названиеПриложения jar:названиеПриложения.jar!/
Протокол "jar:" сообщает XULRunner'у, что это - jar-файл. Восклицательный знак
после названия файла сообщает ему, что необходимо просматривать содержимое
jar-файла.
Запуск вашего приложения с XULRunner
Теперь все подготовительные работы завершены и ваше приложение готово к
запуску. После того, как вы
скачаете XULRunner, выполните следующую команду из командной строки:
xulrunner application.ini
Ваш startPage.xul будет открыт в окне, похожем на другие десктопные
приложения.
Выводы
Для создания приложения XUL, работающего с XULRunner, вам потребуется создать
3 конфигурационных файла в 3 различных форматах. Это, конечно, неприятно. Хорошо
еще, что формат chrome.manifest является таким же как и для
расширений Firefox и, следовательно, его можно будет переиспользовать. Но вот
необходимость указывать свою стартовую страницу в prefs.js кажется
излишней. В статье "Упаковка
приложения XUL" предлагается несколько способов сборки, но статья несколько
устарела и не объясняет, как можно автоматизировать этот процесс.
Если вам по какой-то причине приходится остерегаться Firefox, то основать
свое приложение на XULRunner может оказаться хорошим решением. Мне пришлось
избегать Firefox из-за Outlook'а, но ради справедливости должен сказать, что не
вижу больших преимуществ этого решения перед созданием приложения как
расширения.
За:
- Запускается как отдельный процесс
- Не модифицируется другими расширениями, скинами и конфигурацией
Firefox'а.
- Не содержит Firefox'а
Против:
- Не обновляется автоматически с Firefox'ом. Автообновление придется писать
самому.
- Не модифицируется другими расширениями, скинами и конфигурацией
Firefox'а.
- Скачиваемый инсталляционный пакет должен содержать в себе бинарники
XULRunner'а (более 13 MB).
Сейчас я работаю над большим приложением, которое является расширением к
Firefox'у и, вероятно, всегда будет оставаться таковым. Но эксперименты с
XULRunner'ом меня очень многому научили. В плане организации приложений XUL.
Интересно, возможно ли изменить его конфигурационные файлы так, чтобы запускать
расширения Firefox? Тогда можно было бы автоматически обновлять их вместе с
Firefox'ом и спокойно пользоваться преимуществами XULRunner.
Автор: Ryan (06.05.2005)
Перевод: Д. Скоробогатов (28.10.2009)
Оригинальный текст:
XULRunner tutorial
Последнее редактирование: 2010-01-24 11:57:54
Метки материала:
XULRunner, XUL, Gecko, FireFox, учебник, приложения, application, app, разработка программ, софт
Оставьте свой комментарий:
|