OACM - Менеджер компонентов для OAC

Top  Previous  Next

Сайт компонента: http://opera-ac.net

Автор: AC Team (G.Sandler a.k.a CreatoR)

 

 

Что это такое?

Менеджер компонентов призван облегчить жизнь многим пользователям Opera AC, в основном страдающим манией обновления :) - Ну а если серьёзно, этот компонент представляет собой центр управления многими добавлениями в Opera AC. Он позволяет не только проверять обновления для этих добавлений, но и отдельно отключать/включать их. Это делает сборку Opera AC ещё более лояльной и удобной для использования.

 

Менеджер создан за очень короткое время, но идее и задумке уже немало лет.

Механизм менеджера очень прост и управляется "извне". Это позволяет всем разработчикам OAC иметь доступ к модулям обновлений, и при надобности, делать все необходимые изменения.

 

О принципе работы:
 
* Сам менеджер это ядро, которое использует внешние модули (*.plg файлы). Каждый модуль отвечает за один компонент. О самих модулях см. далее.
* Вся информация о компонентах берётся из файла «OACM_Components.dat», который имеет структуру ini-файла. Пример:

[Oget]
Tab Name=
Version=2.5.11
Description=Download managers integrator
Copyright URL=http://lexi.ucoz.ru
Enabled=1
Enable Module=Oget.plg
Icon=Oget.exe
IconID=0

 

[Имя секции]                (Oget в нашем случае) используется как имя компонента при отображении в менеджере.
Tab Name                = Ключ отвечает за то, где будет располагаться данный компонент (в какой вкладке). Это сделано для того, чтобы можно было поместить несколько компонентов в одну вкладку (группу).
Version                        = Ключ определяет текущую версию компонента. Это кстати единственная индикация о версии компонента при проверке обновления.
Description                = Ключ отвечает за описание компонентов. Отображается под названием в виде ссылки (см. далее).
Copyright URL                = Ключ определяет ссылку на сетевой ресурс автора компонента. Ссылка будет помещена под описание компонента.
Enabled                = Ключ определяет состояние компонента:
                                0        = Отключён.
                                1        = Включён.
                               -1        = Компонент отображается как Включён, но изменение его состояния будет недоступно для менеджера.
                               -2        = Компонент отображается как Отключён, но изменение его состояния будет недоступно для менеджера.
Enable Module                = Ключ определяет имя модуля, который будет запускаться при смене состояния компонента.
Icon                        = Ключ отвечает за имя файла, с которого будет считываться иконка компонента для отображения в менеджере.
IconID                        = Ключ отвечает за идентификатор иконки в файле указанном в предыдущем ключе.

 

 

* Немного о модулях переключения состояния компонентов:
 
- Как уже сказано ранее, имя модуля (файла) должно совпадать с именем модуля в файле базы данных, OACM_Components.dat.
- Когда пользователь ставит или снимает птичку с пункта «Enabled» (в менеджере), соответствующий модуль запускается (через сам менеджер).

В модуль передаётся командная строка; 0 - Птичка снята, 1 - Птичка отмечена.
- При запуске рабочая папка = папке Opera, это позволяет модулю лучше ориентироваться.

 

Вот шаблон такого модуля:

 

#NoTrayIcon
#include <OACM_Main.lib>
 
Global $sOpera_Dir = @WorkingDir
Global $sUserJS_Dir = _OperaGetUserJSDir($sOpera_Dir)
Global $sMenu_File = _OperaGetConfigFile("Menu", $sOpera_Dir)
Global $sOpera6_File = _OperaGetOpera6File($sOpera_Dir)
 
Switch $CmdLine[1]
       Case 0
               _Disable_Proc()
       Case 1
               _Enable_Proc()
EndSwitch
 
Func _Disable_Proc()
        ;тут выполняется Отключение компонента
EndFunc
 
Func _Enable_Proc()
        ;тут выполняется Включение компонента
EndFunc

 

«OACM_Main.lib» нужен для дополнительных функции при работе с файлами оперы (этот, и файл «Opera.lib» находятся в папке модулей).
 
- Менеджер написан на AutoIt 3.3.0.0, поэтому и модули должны придерживаться этой версии.
 
 
* О пакетах обновления и самой проверке:
 
- Сервер, и страничку для проверки обновлений можно указать в файле конфигурации «OACM_Config.ini»...

 

[Main]
Main OACM Host=opera-ac.clan.su
Main OACM Page=/Components_Man/

 

- При попытке проверить обновление для компонента, менеджер считывает в память файл «OACM_Components.dat» (тот что на сервере), и проверяет в нём данные. Вот так выглядит секция для одного компонента в этом файле:

 

[Oget]
Version=2.5.11
Update URL=$Server$/$Page$/Components/Oget.info

 

[Имя секции]                соответствует имени секции в локальном файле.
Version                        = Определяет последнюю версию компонента, если менеджер определяет что она больше чем та что указана в локальном файле, то предлагает обновить компонент.
Update URL                = Ключ определяет ссылку на файл информации в сети, поддерживаются переменные $Server$ и $Page$. Подробнее о самом файле см. далее.

 

Далее по ссылке из ключа Update URL считывается информационный файл (~.info), который содержит в себе всю необходимую информацию для проверки и скачивания обновления:

 

[3.7.5]
File=Oget_$OpVer$_$CmpntVer$.oac
Changelog=Список изменений
[3.7.6]
File=Oget_$OpVer$_$CmpntVer$.oac
Changelog=Список изменений

 

[Имя секции]                Это версия сборки с которой совместимо данное обновление, поддерживается формат вида 3.6-3.7.6, что предполагает поддержку сборки от версий 3.6x по 3.7.6.
File                        = Ключ определяет имя пакета обновления, поддерживаются переменные $OpVer$ (версия Opera) и $CmpntVer$ (версия компонента). Пакет должен находится рядом с файлом информаций.
Changelog                = Ключ содержит список изменений для данного обновления. Для перевода строк используется \n.
 
В этом примере видно две секций, менеджер будет проверять только ту секцию, в которой найдена совместимость версий сборки.

 

- Когда пользователь соглашается произвести обновление, в папку сборки скачивается пакет обновления (имя которого указано в инфо. файле), и запускается.
- Сам пакет обновления должен быть запакован как SFX-архив, и распаковываться в тихом режиме, т.е без диалогов подтверждения, и с перезаписью файлов.
- Структура файлов и папок естественно может совпадать со структурой файлов и папок в Opera, таким образом будут заменяться нужные файлы по назначению.
- В корне архива может содержаться файл инсталляций «Install.plg», если менеджер его находит, то перемещает его в папку модулей («Opera AC\Misc\OAC_Components_Manager\OACM_Modules»), и запускает также как и модули переключения состояния компонентов (только без командной строки).
-- Подобный файл предусматривался, например для случая, когда нужно заменить какие то отдельные строчки в меню, дописать новые строчки, удалить файлы, и т.п.
- По окончанию обновления файл пакета и Install.plg будут удалены, а в файл Базы данных будет записана новая версия компонента.