Вежливое приглашение к разработке

в 13:53, , рубрики: driverpack, drivers, drp, github, hta, Блог компании DriverPack Solution, драйверы, модули, плагины, разработка, разработка под windows, метки: ,

Критикуешь – предлагай

Нас нередко ругают на Хабрахабре за то, что статьи недостаточно технические, а описание работы программы плохо детализировано. Но на самом деле каждый читатель понимает, что описать в одном посте абсолютно все – просто невозможно, потому что несколько лет развитие DRP шло во множестве направлений.

Часть из них связана непосредственно с исполняемым файлом, пресловутым .exe'шником; другая – с созданием архива и, что немаловажно, индекса драйверов; третья – с тестированием приложения и отдельных версий драйверов для различного оборудования как на разных версиях ОС Windows, так и на железных стойках. Часть из этих решений мы отдаем в тестирование пользователям, проявившим особенный интерес.

Предлагаешь – делай

Поэтому мы решили пригласить всех желающих принять участие в непосредственной разработке windows-приложения DRP, ведь всегда проще взглянуть на код, к тому же мы принимаем всю полезную помощь в создании наиболее удобного для пользователя приложения для установки и обновления драйверов.

GitHub-репозиторий доступен любому и мы будем рады вашему предметному интересу, багрепортам и любым возможным улучшениям программы.

У нас есть ряд проблем, которые мы сможем решить вместе с опытными web-разработчиками:

— Unit-тесты ПО. У нас уже есть небольшие наработки по тестированию оборудования и автоматическое тестирование в виртуальной лаборатории (на базе Azure).
— Документация. Мы до сих пор не придумали, при помощи чего генерировать документы.
— А также будущие фичи для приложения и их реализация.

Вежливое приглашение к разработке - 1

Введение

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, разработкой которой мы заняты прямо сейчас, следующая:

  1. Модульность
  2. Многоязычность
  3. Покрытие авто-тестами
  4. Асинхронность
  5. Быстрая скорость работы

Структура папки

  • 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-файл). Плагин может полностью изменить поведение приложения.

Плагины могут

  1. Изменять события кнопок (onClick, onMouseUp, onMouseDown и т.д.)
  2. Переопределение функций
  3. Загрузка внешних JS или CSS файлов
  4. Манипуляции с DOM
  5. Манипуляции с 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

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js