Система распространения и установки - XPInstall
В этой лекции рассказывается о том, как распространить свое приложение с web-сайта по всему миру. Этим занимается система XPInstall (Cross Platform Install).
Большинство приложений Mozilla создаются для использования. Перед тем, как применять их, нужно инсталлировать эти приложения на свой компьютер. Инсталляция - часть общей проблемы распространения. Mozilla поддерживает несколько стратегий распространения. В данной лекции все эти стратегии описаны, но мы сосредоточим внимание на автоматическом распространении приложения с некоторого URL, обслуживаемого обычным web-сервером.
Распространение ПО с удаленного сервера - заманчивая идея еще со времен первых Java-апплетов, а сейчас это часть стратегии .NET. Такой способ делает пользователя или покупателя ПО легко доступным, а стоимость дистрибуции сводит до минимума, что естественным образом согласуется с традиционной архитектурой клиент-сервер. По мере расширения сферы применения Internet аргументы в пользу локально управляемых приложений ослабевают, а значение сервис-провайдеров возрастает, особенно в сфере бизнес-приложений. Даже для локально установленного приложения поток исправлений, ревизий, новостных сообщений делает необходимым создание коммуникационного канала между сервером и пользователем.
Mozilla имеет переносимую инсталляционную систему, которая называется XPInstall. В инструменте вне самой Mozilla, наподобие InstallShield или rpm(1), необходимости нет; XPInstall - все, что вам нужно. XPInstall можно запускать из любого приложения Mozilla вручную, а можно из скрипта.
Создание системы распространения - это не просто связывание между собой нескольких окошек в мастере установки. Система распространения предназначена для выполнения реальной работы. Если она организована хорошо, весь мир сможет использовать ваше приложение, не беспокоя вас попусту. Если же в ней есть недочеты, приложение попросту канет в лету, не оставив следа.
Распространение основывается на основной идее комплекта (пакета, bundle). Комплект - это просто набор файлов и скриптов, необходимых для установки приложения. RPMs, тарболы и выполнимые архивы - все это примеры комплектов. Говоря о комплектах, мы здесь будем избегать других похожих терминов, таких как пакет, приложение, инсталлятор и т.п. Все они имеют собственное значение в Mozilla. В Mozilla комплекты - это файлы XPI (суффикс .xpi) или выполнимые файлы. XPI - это сокращение от Cross(X) Platform Install. Файлы XPI - это просто zip-файлы, подразумевающие выполнение нескольких дополнительных соглашений.
На другой стороне процесса - инсталляция. В этой лекции под словом "инсталляция" мы понимаем копирование части комплекта на локальный компьютер. Можно сделать комплект для приложения таким, что он будет устанавливаться на любую из поддерживаемых Mozilla операционных систем. Поскольку каждая ОС имеет свои особенности, процесс инсталляции вынужден в них довольно глубоко закапываться. Тем не менее, 90% подготовки комплекта можно сделать переносимым способом.
В случае инсталляции из удаленного источника, XPInstall получает файлы так же, как JVM получает файлы апплета JAR. В отличие от JAR, файлы XPI не содержатся в "песочнице". Они могут быть инсталлированы в любую часть платформы Mozilla и даже в любую часть операционной системы. И та, и другая могут быть сильно повреждены, если комплект плохо сделан. Наиболее безопасная стратегия - инсталлировать приложение только в зону chrome.
Для создания готовых к распространению приложений знакомство с исходным кодом платформы не требуется, но если мы выбираем сложную стратегию распространения, доступ к работающему сборочному окружению платформы становится более важен.
На диаграмме в начале лекции показано, какое влияние имеет XPInstall на платформу Mozilla. Здесь видно, что XPInstall может изменять любые критичные для работающей платформы файлы. По сути дела, вся диаграмма может быть подсвечена, поскольку XPInstall может подменить даже динамически линкуемые библиотеки, другими словами, все, что угодно. Такие обширные замены, однако, редки. Две вещи на диаграмме совсем не указаны - инсталлируемые файлы и собственно XPInstall. Файлы приложения, такие как XUL, CSS, RDF и JavaScript отделены от собственно платформы, но это наиболее часто устанавливаемые файлы. XPInstall - это маленький мирок, потому он и не показан. Его лучше всего рассматривать как специализированный инструмент для закачки файлов, наподобие FTP-клиента или WinAMP.
XPInstall и предоставляет, и использует знакомые нам технологии. Процесс распространения контролируется JavaScript, и есть специальные объекты, этому способствующие. XPInstall предоставляет пользователю последовательность интерактивных окон. Это делается несколькими специальными XUL-тегами.
Мы начнем эту лекцию с описания вариантов установки приложения. Затем опишем процесс удаленной установки и закончим реальным примером используемых технологий.