Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Пособие по 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:

  1. Зазипуйте свою папку "/chrome/названиеПриложения" и сохраните "названиеПриложения.zip" в директорию "/chrome".
  2. Переименуйте названиеПриложения.zip в названиеПриложения.jar
  3. Измените 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

P.S. XULRunner – это фреймворк, созданный специально под браузер Mozilla FireFox и обеспечивающий ему потрясающую гибкость и функциональность. Именно XULRunner обеспечивает работу многочисленных расширений FireFox. О некоторых из них можно прочесть в статье "FireFox в своих приложениях".

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2010-11-28 10:35:10

Метки материала: XULRunner, XUL, Gecko, FireFox, учебник, приложения, application, app, разработка программ, софт

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.