Россия, Звенигород |
Система распространения и установки - XPInstall
17.3.5.2. FileSpecObject
FileSpecObject - объект, подобный значению (value-like object), который передается между методами других объектов в системе XPInstall. Совершать какие-либо действия с этим объектом приходится редко. Он никогда не порождается оператором new в JavaScript. Он имеет лишь одно полезное свойство:
String toString()
Этот метод возвращает путь к папке, уникальный для каждой операционной системы, который представляет объект FileSpecObject.
17.3.5.3. File
Объект Install отвечает за установку и проверку соответствия папок, файлов и поддеревьев файлов. Объект File, по сравнению с ним, отвечает за проверку и точное манипулирование конкретным файлом. Некоторые из методов объекта Install используются для выполнения запланированных задач во время установки. Все методы объекта File выполняются на более позднем этапе.
Всегда используется только один объект File, он доступен как свойство с именем File глобального объекта. Все методы этого объекта доступны как:
File.method_name(args);
Имя | Имя | Имя |
---|---|---|
ACCESS_DENIED | INSUFFICIENT_DISK_SPACE | READ_ONLY |
ALREADY_EXISTS | INVALID_ARGUMENTS | REBOOT_NEEDED |
APPLE_SINGLE_ERR | IS_DIRECTORY | SCRIPT_ERROR |
BAD_PACKAGE_NAME | IS_FILE | SOURCE_DOES_NOT_EXIST |
CANT_READ_ARCHIVE | KEY_ACCESS_DENIED | SOURCE_IS_DIRECTORY |
CHROME_REGISTRY_ERROR | KEY_DOES_NOT_EXIST | SOURCE_IS_FILE |
DOES_NOT_EXIST | MALFORMED_INSTALL | SUCCESS |
DOWNLOAD_ERROR | NETWORK_FILE_IS_IN_USE | UNABLE_TO_LOAD_LIBRARY |
EXTRACTION_FAILED | NO_INSTALL_SCRIPT | UNABLE_TO_LOCATE_LIB_FUNCTION |
FILENAME_ALREADY_USED | NO_SUCH_COMPONENT | UNEXPECTED_ERROR |
GESTALT_INVALID_ARGUMENT | PACKAGE_FOLDER_NOT_SET | UNINSTALL_FAILED |
GESTALT_UNKNOWN_ERR | PATCH_BAD_CHECKSUM_RESULT | USER_CANCELLED |
INSTALL_CANCELLED | PATCH_BAD_CHECKSUM_TARGET | VALUE_DOES_NOT_EXIST |
INSTALL_NOT_STARTED | PATCH_BAD_DIFF |
Таблица 17.8 описывает объект File.
17.3.5.4. Объект WinProfile
Объект WinProfile, созданные с помощью метода Install.getWinProfile(), может выполнять операции с характерным для Microsoft Windows файлом .INI, например,C:\WINDOWS\WIN.INI. У него есть только два метода:
String getString(String section, String key) String writeString(String section, String key, String value)
Поскольку файл .INI имеет расширенный ASCII формат, в него нельзя записывать информацию в юникоде.
17.3.5.5. Объект WinReg
Объект WinReg, созданный с помощью метода Install.GetWinRegistry(), дает доступ к регистру Windows. Операции с регистром выполняются незамедлительно, они не откладываются.
Объект WinReg содержит текущий корневой ключ регистра. По-умолчанию, это HKEY_CLASSES_ROOT.
Имена путей в регистре Windows разделены обратным слешем (\). В скриптах JavaScript обратный слеш нужно писать дважды (\\), противном случае он понимается как управляющий символ.
Таблица 17.9 описывает объект WinReg. Некоторые методы возвращают данные, но многие лишь код статуса. Когда возвращается код статуса, null означает, что платформа Mozilla не может корректно обработать изменения регистра. Обычно это означает проблемы с аргументами метода. Если возвращается не null, значение берется из реальной операции с регистром. Даже когда возвращаемое значение - обычные данные, null означает неудачное действие, в этом случае также, скорее всего, из-за проблем с аргументами. Необходимо всегда проверять возвращаемое значение на null.
17.3.6. Объекты XPCOM
Система XPInstall не дает доступа к интерфейсам XPCOM из скрипта install.js.
Есть, однако, несколько компонентов и интерфейсов за пределами XPInstall, которые дублируют функциональность XPCOM. Если необходима собственная система развертывания приложений, эти приложения и объекты стоит рассмотреть подробнее.
Данная XPCOM пара предоставляет доступ к регистру Mozilla, хотя она не завершена и не очень гибка:
@mozilla.org/registry;1 nsIRegistry
Этот интерфейс работает с различными файлами регистра, как если бы они были одним файлом. Регистр также можно понимать как источник данных RDF. В то время, когда писалась наша книга, этот источник данных RDF еще не был доступен. Будущая XPCOM пара для доступа:
@mozilla.org/registry-viewer;1 nsIRDFDataSource
Другой интерфейс к регистру предоставляется так называемым chrome-регистром. Этот интерфейс позволяет платформе перепрочитать содержание chrome, т.е. оверлеи, скины и локали. Он также может устанавливать в chrome пакеты, скины и локали. Пара XPCOM, предоставляющая эту функциональность:
@mozilla.org/chrome/chrome-registry;1 nsIXULChromeRegistry;1
Для разработчиков на платформе Microsoft Windows представляют интерес следующие два интерфейса:
@mozilla.org/winhooks;1 nsIWindowsRegistry @mozilla.org/winhooks;1 nsIWindowsHooks
Эти интерфейсы предоставляют много возможностей по низкоуровневому доступу к Microsoft Windows.
Особняком от этих интерфейсов, работающих с регистрами, стоит много интерфейсов для работы с файлами и сетью, описанными в "Объекты XPCOM" , "Объекты XPCOM", в том числе интерфейсы для распаковывания архивов ZIP.
Несколько замечаний относительно собственно объектов XPInstall. Объекты "на стороне Web", InstallTrigger и InstallVersion не имеют полезных интерфейсов XPIDL. Они, однако, имеют Contract ID, зарегистрированные в XPCOM, кроме самой инфраструктуры XPInstall:
@mozilla.org/xpinstall/installtrigger;1 @mozilla.org/xpinstall/installversion;1 @mozilla.rg/xpinstall;1
Тем не менее использовать эти Contract ID бессмысленно, поскольку полезных интерфейсов все равно нет. Объекты, доступные в скриптовом окружении install.js, также не представлены в XPCOM. В этом втором случае нет даже и Contract ID для этих объектов.