Часть 6: упаковываем тулбар

Для того, чтобы установить расширение в Firefox, мы должны сначала упаковать все файлы расширения. Всего нам понадобится создать 2 архива: JAR-файл и XPI-файл (кроссплатформенный инсталлятор). Не позволяйте расширениям .jar и .xpi себя одурачить: оба файла — это простые zip-архивы. Соответственно, нам понадобится какой-нибудь zip-архиватор, подойдет любой, желательно чтоб у него была поддержка коммандной строки.

Создаем JAR файл

Первый архив, который мы создадим — это JAR-файл расширения. Он будет содержать все наши XUL-файлы, файлы JavaScript, таблицы стилей CSS и картинки. Помните, что нужно назвать этот файл тем именем, которое вы использовали в декларации установки в разделе 2. В нашем примере это "gbltutorial.jar" (в нижнем регистре, без пробелов). Этот файл создается в директории chrome:

+- GBLTutorial/
   +- install.rdf
   +- chrome/
      +- gbltutorial.jar
      +- content/
         +- contents.rdf
         +- gbltutorial.xul
         +- gbltutorial.js
      +- skin/
         +- contents.rdf
         +- tut_main.gif
         +- tut_combined.gif
         +- tut_web.gif
         +- tut_image.gif
         +- tut_overlay.css

Создайте новый zip архив и добавьте в него все содержимое папки chrome. Важно, чтоб относительные пути сохранились, то есть, содержимое архива должно выглядеть вот так:

+- content/
   +- contents.rdf
   +- gbltutorial.xul
   +- gbltutorial.js
+- skin/
   +- contents.rdf
   +- tut_main.gif
   +- tut_combined.gif
   +- tut_web.gif
   +- tut_image.gif
   +- tut_overlay.css

А теперь просто поменяйте расширение с .zip на .jar.

Создаем XPI файл

Второй архив, который мы создадим — это кроссплатформенный инсталлятор. Как и JAR файл, это не более, чем zip-архив. Этот файл будет содержать созданный нами JAR-файл и декларацию установки (install.rdf). Он должен располагаться в верхней папке нашего расширения:

+- GBLTutorial/
   +- gbltutorial.xpi
   +- install.rdf
   +- chrome/
      +- gbltutorial.jar
      +- content/
         +- contents.rdf
         +- gbltutorial.xul
         +- gbltutorial.js
      +- skin/
         +- contents.rdf
         +- tut_main.gif
         +- tut_combined.gif
         +- tut_web.gif
         +- tut_image.gif
         +- tut_overlay.css

Создаем новый zip, помещаем туда jar-файл и install.rdf, меняем расширение на .xpi. Вот структура XPI-файла:

+- install.rdf
+- chrome/
   +- gbltutorial.jar

Устанавливаем наш тулбар

Теперь все готово для установки расширения. Запускам FireFox, выбираем Файл -> Открыть файл... (или просто жмем Ctrl+O). Находим нах XPI-файл и выбираем его. Если вы сделали все верно, появится установщик расширения. Устанавливаем, закрываем браузер, запускаем снова, любуемся нашим творением. Поздравляю, вы создали свое первое расширение для FireFox!

Ускоряем процесс упаковки

Вы быстро устаните упаковывать расширение вручную. Почему бы не написать скрипт, который будет этим заниматься? Если у вас есть zip-архиватор с поддержкой интерфейса командной строки, весь процесс легко автоматизировать. Следующий пример покажет способ собирать наше расширение, используя досовский batch (.bat) и WinZip.

Сначала создаем два текстовых файла: первый — в главной папке (назовем его xpizip.txt), а второй — в папке chrome (jarzip.txt). В каждом из них перечислены пути к файлам, которые надо будет включить в архив. Посмотрите, ничего сложного.

xpizip.txt:

install.rdf
chrome\gbltutorial.jar

jarzip.txt

content\*.*
skin\*.*

Теперь создаем досовский batch-файл в главной папке нашего расширения. Его можно запускать из командной строки. Вот его код:

cls
cd chrome
wzzip -Pu gbltutorial.jar @jarzip.txt
cd ..
wzzip -Pu gbltutorial.xpi @xpizip.txt

Сначала он создает JAR файл, потом XPI файл. Это очень простой скрипт, не забывайте, что можно делать и гораздо сложнее. Например, мой скрипт для сборки Googlebar Lite делает еще кучу всего, например обновляет номер версии в файла install.rdf и about.xul. Написан на PERL. Кстати, вот его код.