Критикуешь – предлагай
Нас нередко ругают на Хабрахабре за то, что статьи недостаточно технические, а описание работы программы плохо детализировано. Но на самом деле каждый читатель понимает, что описать в одном посте абсолютно все – просто невозможно, потому что несколько лет развитие DRP шло во множестве направлений.
Часть из них связана непосредственно с исполняемым файлом, пресловутым .exe'шником; другая – с созданием архива и, что немаловажно, индекса драйверов; третья – с тестированием приложения и отдельных версий драйверов для различного оборудования как на разных версиях ОС Windows, так и на железных стойках. Часть из этих решений мы отдаем в тестирование пользователям, проявившим особенный интерес.
Предлагаешь – делай
Поэтому мы решили пригласить всех желающих принять участие в непосредственной разработке windows-приложения DRP, ведь всегда проще взглянуть на код, к тому же мы принимаем всю полезную помощь в создании наиболее удобного для пользователя приложения для установки и обновления драйверов.
GitHub-репозиторий доступен любому и мы будем рады вашему предметному интересу, багрепортам и любым возможным улучшениям программы.
У нас есть ряд проблем, которые мы сможем решить вместе с опытными web-разработчиками:
— Unit-тесты ПО. У нас уже есть небольшие наработки по тестированию оборудования и автоматическое тестирование в виртуальной лаборатории (на базе Azure).
— Документация. Мы до сих пор не придумали, при помощи чего генерировать документы.
— А также будущие фичи для приложения и их реализация.
Введение
DriverPack Solution написан на языке HTA (HTML Application), поэтому программный код исполняется движком Internet Explorer (процесс mshta.exe), являющимся стандартным на всех версиях Windows. Его описание находится по следующему адресу.
В DRP используются популярные js- и html-фреймворки, такие как: jQuery Tools, Bootstrap и др. Используемая сейчас нами база-данных: SQLite
Да, HTA – проблема. В нём хватает недостатков, однако его преимущества также очевидны:
- Взаимосвязь между фронт- и бэк-эндом
- Скриптовый язык, простое редактирование
- Доступ к реестру и файловой системе
- Использование Javascript UI-библиотек
- Отсутствие компиляции
Краткое описание
HTA не является объектом для ограничений безопасности, накладываемых на Web-страницы, а выполняется также, как любой исполняемый файл. HTA-программы не могут быть «подписаны», однако могут быть установлены из различных инсталляционных форматов.
HTA выглядит как полноценное Windows-приложение, поэтому привычно для любого пользователя и объединяет в себе все возможности браузера Explorer: объектную модель, HTML, каскадные листы стилей, скрипты и события, а также специфическую функциональность HTA.
Концепция DRP 16, разработкой которой мы заняты прямо сейчас, следующая:
- Модульность
- Многоязычность
- Покрытие авто-тестами
- Асинхронность
- Быстрая скорость работы
Структура папки
- Drivers – драйверпаки (7zip архивы драйверов);
- Indexes – индексные файлы, для быстрого поиска по базе драйверов;
- Soft – софт для автоматической установки;
- DriverPackSolution.exe – Launcher, передает управление файлу DriverPackSolution.html;
- binDriverPackSolution.html – главный исполняемый файл
- binTools – папка с JS-скриптами, плагинами и exe-приложениями;
Основные модули
Модуль dpinst
Driver Package Installer (DPInst), являясь одним из компонентов DIFX, позволяет производить установку пакетов драйверов для тех устройств, которые еще не были установлены в компьютере («инициализационная установка»).
DPInst также автоматически обновляет драйверы для всех установленных устройств, которые поддерживаются установленными пакетами драйверов.
Модуль devcon
DevCon — это программа с интерфейсом командной строки, которая используется в качестве альтернативы диспетчеру устройств. С её помощью можно: включать, выключать, перезапускать, обновлять, удалять и опрашивать отдельные устройства или группы устройств.
Программа DevCon также предоставляет необходимые разработчику драйвера сведения, которые недоступны с помощью диспетчера устройств. Используется пользователями, которым удобнее работать с командной строкой.
Модуль позволяет как напрямую работать с программой и драйверами, так и использовать список идентификаторов для распространенных классов устройств, который актуален в случае, если нет доступа к самому устройству.
Модуль mshta
Модуль предназначен для работы с файлами *.HTA.
Если для корректной работы системы требуется использование этого модуля, стоит отметить, что интеграция программы и модуля mshta настроены таким образом, чтобы не снижать производительность всей системы в целом, в первую очередь.
Плагины
Чтобы не вносить изменений в общий код программы, можно создать отдельный плагин (js-файл). Плагин может полностью изменить поведение приложения.
Плагины могут
- Изменять события кнопок (onClick, onMouseUp, onMouseDown и т.д.)
- Переопределение функций
- Загрузка внешних JS или CSS файлов
- Манипуляции с DOM
- Манипуляции с CSS
Способы внедрить плагин
Локальная работа плагина
Разместите js-плагин в папке bintoolsmodules и подключите в DriverPackSolution.html
Online плагин
Если при запуске есть подключение к сети, можно подключить новый плагин и менять логику программы, даже в самых старых версиях DRP.
По вопросу размещения плагинов обращайтесь напрямую ко мне.
Beta-Online плагин
DRP с названием версии Beta подгружает Offline версию файла bintoolsupdate.js. Для загрузки вашего плагина добавьте в этот файл функцию: inc("<путь до вашего плагина>");
Важно чтобы каждый плагин который модифицирует интерфейс DRP поддерживал многоязычность.
Главный принцип написания плагина: сначала пишем сценарий авто-теста, только потом сам код. Авто-тесты выполняются из скрипта: tools/modules/tests/RunTests.hta
DRP изначально разрабатывался без автоматического тестирования и использования объектов, из-за чего теперь сильно страдает, а мы заняты внесением масштабных изменений в исходный код приложения.
Любые возможные вопросы и предложения – в комментариях или личных сообщениях. Если вы настроены всерьез, мы также рекомендуем просмотреть вебинар по DRP 16-версии.
Автор: ArtX