- PVSM.RU - https://www.pvsm.ru -
Привет! Меня зовут Александр Шапошников, я студент Google Summer of Code. Этим летом я работал над проектом "ReactOS App Manager".
ReactOS уже второй год подряд получил слоты для студентов GSoC. Я следил за проектом достаточно давно и подал свою заявку, как только увидел его в списке организайци. К слову, этот проект был чуть ли не единственным, который не требовал пулл реквест, так что я смог сфокусироваться на самой заявке. Мне повезло — я стал одним из четырех студентов GSoC в ReactOS! Это был мой первый опыт в программе, и он был весьма интересным.
Менеджер приложений ReactOS (ReactOS App Manager, RAPPS) это приложение ReactOS для загрузки программ, что были протестированы командой ReactOS и сообществом. Оно так же может использоваться для изменения или деинсталяции любых установленных в системе программ. Цель этого проекта улучшение RAPPS и добавление новых полезных функций. Это — финальный отчет по проекту.
Сборка RAPPS не отличается от сборки других компонентов ReactOS. Для сборки рекомендуется использовать среду сборки RosBE [1]:
reactos/branches/GSoC_2017/rapps/reactos
любым доступным клиентом. Также можно использовать утилиту ssvn из RosBE. Для этого нужно сперва установить ветку переменной среды ROS_BRANCH=GSOC_2017/rapps
и выполнить ssvn create
в выбраной директории. <source path>/configure
ninja rapps
<output folder>/base/applications/rapps
за EXE.Детальнее процесс сборки ReactOS описан в официальной инструкции на Wiki [2].
RAPPS достаточно интуитивное приложение. Просто скачайте и установите приложение двойным кликом по нему или выберите несколько приложений чекбоксами. Также можно вызвать контекстное меню для дополнительных опций.
Так же RAPPS без проблем работает на Windows.
Я не изменял общий вид RAPPS, однако добавил несколько деталей в интерфейс. Одной из задач проекта было изменение панели информации загружаемых приложений. Я добавил несколько новых полей в эту панель.
Одно из добавленых полей — статус установки приложения. Статус показывает, установлено ли приложение и есть ли обновления. Это сделано с помощью проверки ключей в реестре в ключе ...Uninstall
. До этого в базе приложений существовало специальное поле для поиска в, но оно не было задано в самих файлах, потому я расширил проверку на имя и имя с версией (что оказалось довольно распостаненной вещью). Здесь версия берется из файла базы.
Если приложение установлено, RAPPS пытается взять версию из вышеупомянутого ключа. Если эта версия будет меньше, чем версия из базы, RAPPS покажет статус "Есть обновление". Если версию достать не удастся, то поле отображаться не будет, а статус будет "Установлено".
Также было добавлено поле Языки. Оно показывает переведено ли выбраное приложение на язык системы или на английский плюс показывает сколько еще языков доступно. Это поле требует наличия списка языков для конкретного приложения в файле базы. Список должен быть представлен языковыми кодами, разделенными |
. Пример: Languages=0C09|0813|0422 \Английский|Датский|Украинский
Этот параметр является многострочным.
И последнее поле это изменения поля лицензии. В файлы базы добавил еще один параметр LicenseInfo
. Это поле определяет категорию лицензии приложения, и, если оно присутствует, меняет вид строки лицензии. Число 1 значит "Свободное ПО", 2 — "Бесплатное ПО", а 3 — "Пробная версия". Это поможет выделить свободное ПО среди другого доступного.
В этом превью были использованы иконки Faenza и некоторые другие из Интернета.
Старый RAPPS использовал одинаковую иконку для всех приложений в списке. Я добавил поддержу пользовательских иконок для каждого приложения, которые загружаются из папки AppData/rapps/rapps/icons
по его названию (в папке rapps, где лежат файлы базы).
Раньше можно было установить лишь одно приложение за раз, и при этом нельзя было выбрать второе приложение, пока не установится первое. Это нововведение являет собой немодальный диалог, который последовательно загружает сразу несколько приложений. Так как диалог немодальный, его можно свернуть и продолжить работу с RAPPS, пока идет загрузка и установка. Диалог показывает список приложений и статус загрузки (Загружается/Загружено/Установка.../Установлено).
Чтобы загрузить несколько приложений необходимо выбрать их при помощи чекбоксов или кнопки "Выбрать все" и нажать кнопку 'Установить'. После этого сразу же начнется процесс загрузки.
Эта анимация старая, и имеет визуальный баг, который был починен в процессе тестирования.
В статусбаре теперь также отображается количество выбраных приложений. Пока что выбраные приложения сбрасываются при переходе в другую категорию. Чекбоксы также скрываются в категории "Установленные".
Долгожданная функция — установка с командной строки и скриптом! Теперь можно установить любое приложение из RAPPS всего лишь одной командой в командной строке. Я добавил два ключа:
/INSTALL
— установка одного или нескольких приложений по имени.
Пример: rapps /INSTALL 7-Zip AkelPad
/SETUP
— принимает полный путь к скрипту .inf
, в котором в секции [RAPPS] есть перечисление приложений для установки, используя по одному параметру Install=
на одно приложение.
Пример:
[Version]
Signature = $Windows NT$
ClassGUID = {00000000-0000-0000-0000-000000000000}
[RAPPS]
Install=7-Zip
Install=AkelPad
Эти команды используют имена приложений, заданые в базе, однако они могуть быть довольно длинными. Поэтому, я планирую поменять это на короткие названия, аналогичные названиям самих файлов базы RAPPS.
Помимо этого в процессе работы я пофиксил некоторые баги RAPPS, среди них:
<user>My DocumentsRAPPS Downloads
) Обновленный менеджер приложений совсем скоро будет включен в trunk. Еще остались вещи, которые хотелось бы зашлифовать дальнейшем, такие как:
Так же есть цели, которые изначально были в проекте, но были вычтены из него. Это, например, режим "Установки", где RAPPS бы запускался на втором этапе установки для загрузки приложений. Команда сочла это ненужным сейчас и потому мы теперь имеем запуск с командной строки. Возможно, он вернется в дальнейшем.
В этом проекте я фокусировался на коде и возможностях приложения, чем над его внешним видом, как того хочет концепт от ReactOS. Скоро ли свет увидит концептуальный дизайн приложения покажет время.
Команда ReactOS очень классная! Мне понравилось работать над проектом со всей помощью менторов и других разработчиков. Он дал мне ощущение того, что такое сообщество FOSS, общий опыт, а так же Хакфест и FrOSCon, в рамках которого мне повезло встретить некоторых из них.
Для себя я решил, что точно останусь в проекте и буду помогать развивать проект в дальнейшем. Спасибо Google за программу GSoC которая дала мне возможность работать над чем-то увлекательным!
svn://svn.reactos.org/reactos/branches/GSoC_2017/rapps/reactos
Автор: Александр Шапошников
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/263218
Ссылки в тексте:
[1] среду сборки RosBE: https://www.reactos.org/wiki/Build_Environment
[2] официальной инструкции на Wiki: https://www.reactos.org/wiki/Building_ReactOS
[3] Проект на сайте GSoC: https://summerofcode.withgoogle.com/dashboard/project/6234367968935936/overview/
[4] udiff на Github Gist (на момент Final Evaluation): https://gist.github.com/sanchaez/19b09d41389bee02d935754e73d3a66d
[5] Просмотр коммитов: https://code.reactos.org/changelog/~br=GSoC_2017/reactos/branches/GSoC_2017/rapps?max=90
[6] Источник: https://habrahabr.ru/post/337026/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.