Опубликован: 10.12.2007 | Доступ: свободный | Студентов: 822 / 20 | Оценка: 5.00 / 5.00 | Длительность: 58:33:00
Лекция 17:

Система распространения и установки - XPInstall

< Лекция 16 || Лекция 17: 12345678910
17.3.4. Объекты на стороне Web.

Система удаленной установки XPInstall снабжает прикладного программиста двумя объектами, используемыми на обычной HTML или XUL странице: InstallTrigger и InstallVersion. I nstallTrigger и InstallVersion - свойства глобального (window) объекта; объект InstallVersion может быть создан методом InstallTrigger.getVersion().

17.3.4.1. InstallTrigger

Таблица 17.3 описывает объект InstallTrigger. Заметьте, что доступны некоторые добавочные константы с тем же смыслом.

Таблица 17.3. Объект InstallTrigger системы XPInstall
Константы, свойства и методы Использование
SKIN (1), LOCALE (2), CONTENT (4), PACKAGE (7) Битовые флаги масок для installChrome()
MAJOR_DIFF(4), MINOR_DIFF(3), REL_DIFF(2), BLD_DIFF(1), EQUAL(0), NOT_FOUND(-5) Константы, возвращаемые compareVersion() ; указывают, чем отличаются две версии; значения с противоположным знаком также возможны, кроме значения 5
Boolean enabled() True, если система XPInstall активирована в свойствах платформы
Boolean install(Object xpi_list, function(url, err) ) True, если список XPI-комплектов был установлен без ошибки, аргумент function вызывается для каждого XPI URL, имеющего ошибку установки; см. раздел "Скрипты"
Boolean installChrome(Number flags, String url, String name) То же, что и install(), за исключением того, что флаги являются битовым OR, то есть говорят о том, что контент существует, а install.js не запущен; name - текстовое имя приложения
Number compareVersion(String name, String version) Number compareVersion(String name, InstallVersion version) Number compareVersion(String name, Number major, Number minor, umber release, Number build) Сравнивает версию устанавливаемого приложения с имеющейся в регистре с тем же именем "name"; возвращает позитивное число, если версия устанавливаемого приложения больше
InstallVersion getVersion(String name) Возвращает версию регистрового имени устанавливаемого приложения, или null
17.3.4.2. InstallVersion

Таблица 17.4 описывает объект InstallVersion. Заметьте, что доступны добавочные константы, имеющие то же самое значение, что и основные.

Таблица 17.4. Объект The XPInstall
Константы, свойства, методы Использование
MAJOR_DIFF(4), MINOR_DIFF(3), REL_DIFF(2), BLD_DIFF(1), EQUAL(0), BLD_DIFF_MINUS(-1), REL_DIFF_MINUS(-2), MINOR_DIFF_MINUS(-3), MAJOR_DIFF_MINUS(-4), NOT_FOUND (-5) Константы, возвращаемые compareTo (), показывают отличия двух версий
major Имеет значение главного числа версии
minor Имеет значение подчиненного числа версии
release Имеет значение релиза версии
build Имеет значение билда версии
void init() Устанавливает значение версии "0.0.0.0"
void init(String version) Устанавливает указанный номер версии
String toString() Возвращает строку, соответствующую версии
Number compareTo(String version) Number compareTo(InstallVersion version) Number compareTo(Number major, Number minor, Number release, Number build) Сравнивает имеющуюся версию с устанавливаемой; возвращает позитивную константу, если устанавливаемая версия больше

Объект InstallVersion также доступен из скрипта install.js

17.3.5. Объекты на стороне системы XPInstall

Скрипту install.js доступны следующие объекты:

Install InstallVersion FileSpecObject File WinProfile WinReg

Объект InstallVersion описан в разделе "Объекты на стороне web"; остальные описываются здесь.

17.3.5.1. Install

Объект Install - это глобальный объект в скриптовом окружении install.js. Методы этого объекта могут вызываться непосредственно или с префиксом Install. Объект Install - эквивалент свойству window web-страницы.

Объект Install - объект-фабрика, с его помощью можно создать все иные существующие в XPInstall объекты. Он хранит все аргументы, переданные ему триггер-скриптом. Он обеспечивает доступ к глобальной системе номеров сообщений об ошибках, подобной системе C/C++. Он хранит значение текущей директории в процессе установки. Он может совершать основные операции по ведению логов, взаимодействию с пользователем и выполнению программ в операционной системе.

Таблицы 17.5, 17.6, и 17.7 описывают этот объект. Все его свойства доступны только для чтения.

Таблица 17.5. Объект Install (* Действие откладывается до завершения установки?)
Константа, свойство или метод * Использование
SKIN (1), LOCALE (2), CONTENT (4), PACKAGE (7), DELAYED_CHROME(16) Значения битовой маски флагов свойств и registerChrome() ; использование DELAYED_CHROME задерживает регистрацию до следующего старта платформы.
Number buildID Номер билда данной установки платформы (e.g., 2002060411)
Error constants (see Table 17.6)
String platform Содержит тип операционной системы и версию, наподобие window.navigator.userAgent
String jarfile Полный путь к копии файла XPI на локальном компьютере
String archive Полный путь к копии файла XPI на локальном компьютере. То же, что и jarfile
String arguments В URL файла XPI содержит любую строку после "?", или null
String url Полный URL файла XPI, переданный install() или installChrome()
Number flags Флаги, переданные методом installChrome() объекта InstallTrigger
Number _finalStatus Значение, возвращаемое счетчику в диалоговом окне удаленной установки
Boolean _installedFiles Получает значение False, если вызван метод cancelInstall()
File File Ссылка на объект File
Object Install Ссылка на глобальный объект Install
Number addDirectory(String XPItree) Number addDirectory(String name, String XPItree, FileSpecObject OSpath, String localPath) Number addDirectory(String name, String version, String XPItree, FileSpecObject OSpath, String localPath) Number addDirectory(String name, InstallVersion version, String XPItree, FileSpecObject OSpath, String localPath) + Копирует указанный путь XPItree в локальную файловую систему; устанавливает с именем текущего приложения или регистровым именем приложения, если оно указано; всегда устанавливает с номером последней версии, или, если версия указана, сравнивает указанную версию с имеющейся, если имеется более новая, процесс установки прекращается; если место для копирования не указано, копирует в текущую директорию, если указаны OSpath и localPath, соединяет их в строку и копирует содержание XPItree по полученному пути; возвращает ошибки
Number addFile(String XPIfile) Number addFile(String name, String version, String XPIfile, FileSpecObject Ospath, String localPath, [Boolean force]) Number addFile(String name, InstallVersion version, String XPIfile, FileSpecObject OSpath, String localPath, [Boolean force]) + Копирует файлы из XPI-архива в локальную файловую систему; устанавливает в текущую директорию, текущее приложение и текущую версию, если иное не указано; если указано регистровое имя, используется оно, а не текущее имя; если указана версия, не устанавливает приложение, если имеющееся приложение новее устанавливаемого; если указаны OSpath и localPath, объединяет их и устанавливает файлы по полученному пути; если force имеет значение true, не проверяет значение версии, в этом случае установка производится всегда; возвращает ошибки
Null alert(String value) Отображает окно модального диалога, ожидающее подтверждения пользователя
void cancelInstall() void cancelInstall(Number reason) Не выполняются никакие предписанные инструкции; если указана причина, она указывается в коде ошибки, в противном случае указывается NSTALL_CANCELLED
Boolean confirm (String value) Отображает окно модального диалога, ожидающее принятия или отклонения условия пользователем; в случае отклонения возвращает false
Number execute(String XPIpath, String args, Boolean blocking) Number execute(String XPIpath, String args); Number execute(String XPIpath); Выполнить программу, расположенную по адресу XPIpath в архиве XPI; можно передать ей системно-зависимую строку аргументов; можно, присвоить параметру blocking значение true, это задерживает процесс установки до окончания выполнения программы; значение blocking по умолчанию равно false
Number gestalt(String selector) Только для платформы Macintosh - возвращает значение селектора согласно Gestalt Manager; в противном случае null
FileSpecObject getComponentFolder(String name) FileSpecObject getComponentFolder(String name, String subpath) возвращает имя папки из subpart имени приложения, если subpath присутствует; в противном случае null
FileSpecObject getFolder(String keyword) FileSpecObject getFolder(String keyword, String subpath) FileSpecObject getFolder(FileSpecObject folder, String subpath) Возвращает имя папки, соответствующее keyword, или подпапки этой папки, если subpart присутствует: если subpart имя архива JAR, а не папки, архив прочитывается и рассматривается как папка; null в случае неудачи
Number getLastError() Возвращает последний код ошибки или SUCCESS
WinProfile getWinProfile(FileSpecObject folder, String filename) Возвращает объект WinProfile указанного в файле .INI; возвращает null, если ОС не Microsoft Windows
WinReg getWinRegistry() Возвращает объект WinReg
Number initInstall(String text_name, String reg_name, String version) Number initInstall(String text_name, String reg_name, InstallVersion version); Начинает назначенный процесс данной установки; устанавливает имя данного приложения в text_name, имя регистра reg_name, версию - в version ; возвращает ошибки
Object loadResources(String XPIpath) Возвращает JavaScript-объект, моделируемый на основании файла свойств (stringbundle) в архиве XPI; этот файл свойств имеет относительное имя пути XPIpath; каждое свойство в фале появляется как свойство объекта JavaScript; возвращает null в случае ошибки
Null logComment(String text) + Записывает text, с некоторым форматированием, в файл install.log
patch() Этот метод позволяет обновить данный файл на основе побайтной дельты; не рекомендуется к использованию, задействуйте вместо этого addFile()
Number performInstall() Выполняет все предписанные задачи и возвращает статус ошибки
Number registerChrome(Number flags, FileSpecObject folder) Number registerChrome(Number flags, FileSpecObject folder, String rdfpath) Заставляет платформу перепрочитать chrome на предмет обновления оверлеев, локалей и скинов; flags сообщает, какие типы информации будут регистрироваться (см. ниже), folder - местоположение рассматриваемых файлов, rdfpath - необязательный подпуть (включающий имя файла) к файлу ontents.rdf для оверлеев
Number refreshPlugins() Number refreshPlugins Boolean reloadPages) Заставляет платформу обновить доступные плагины и перезагрузить все окна, зависящие от них; если reloadPages имеет значение false, перезагрузки не происходит
void resetError() void resetError(Number error) Устанавливает последнюю полученную ошибку в ноль или данное значение, если оно имеется
Number setPackageFolder(FileSpecObject folder) Заменяет значение текущей директории на указанную папку
Number uninstall(String name) Назначает имя регистра указанного приложения к удалению; возвращает код ошибки

Следующие замечания поясняют таблицу 17.5

Важно понять, что возвращаемые значения ошибок предписанных методов описывают лишь проблемы с процессом назначения инструкций. Они не сообщают о проблемах, возникших во время выполнения предписанных инструкций. Даже если проблем не возникает на этапе назначения инструкций, они могут появиться во время установки приложения.

Значения ошибок - обычно отрицательные целые. Целые между -200 и -299 зарезервированы; значения меньшие -5550 относятся к платформе Macintosh; 0 есть SUCCESS, а 999 - REBOOT_NEEDED. Все значения, генерируемые платформой, имеют соответствующие имена свойств, содержащие константы. В таблице 17.6 эти имена перечислены.

Список корректных селекторов метода gestalt() и их значений можно найти по адресу http://www.rgaros.nl/gestalt/index.html.

Специальные ключевые слова, передаваемые как аргументы методу getFolder(), перечисляются в Таблице 17.7.

Ключевое слово "Program" соответствует корню области установки платформы. Ключевое слово "file:///" соответствует корню локальной файловой системы. Чтобы посмотреть значения специальных ключевых слов на конкретном компьютере, используйте следующую строчку кода:

alert(getFolder(keyword).toString());
< Лекция 16 || Лекция 17: 12345678910