Criticize - offer
We are often blamed on Habrahabr for the fact that the articles are not technical enough, and the description of the work of the program is poorly detailed. But in fact, every reader understands that it is simply impossible to describe everything in one post, because for several years the development of DRP has gone in many directions.
Some of them are directly connected with the executable file, the infamous .exe's file; the other with the creation of an archive and, importantly, the driver index; the third is with testing the application and individual driver versions for different hardware both on different versions of the Windows OS and on the iron racks. We give a part of these solutions to
testing for users who have shown particular interest.
Offer - do
Therefore, we decided to invite everyone to participate in the direct development of the DRP windows application, because it is always easier to look at the code, and we also take all the useful help in creating the most user-friendly application for installing and updating drivers.
GitHub repository is available to anyone and we will be happy for your subject interest, bug reports and any possible program improvements.
')
We have a number of problems that we can solve with experienced web developers:
- Unit tests software. We already have some insights on testing equipment and automated testing in a virtual lab (based on Azure).
- Documentation. We still have not figured out how to generate documents.
- As well as future features for the application and their implementation.

Introduction
DriverPack Solution is written in the HTA language (HTML Application), so the program code is executed by the Internet Explorer engine (mshta.exe process), which is standard on all versions of Windows. His description is located at the
following address .
DRP uses popular js and html frameworks, such as: jQuery Tools, Bootstrap, etc. The database we are currently using is: SQLite
Yes, HTA is a problem. It lacks the disadvantages, but its advantages are also obvious:
- The relationship between the front and back end
- Scripting language, easy editing
- Access to the registry and file system
- Using Javascript UI Libraries
- No compilation
Short description
HTA is not an object for security restrictions imposed on Web pages, but is executed the same as any executable file. HTA programs cannot be "subscribed", but can be installed from various installation formats.
HTA looks like a full-fledged Windows application, so it is familiar to
any user and combines all the features of the Explorer browser: the object model, HTML, cascading style sheets, scripts and events, as well as the specific HTA functionality.
The concept of DRP 16, which we are developing right now, is as follows:
- Modularity
- Multilingualism
- Auto-Coverage
- Asynchrony
- Fast speed
Folder structure
- Drivers \ - driverpack (7zip driver archives);
- Indexes \ - index files for quick search in the driver database;
- Soft \ - software for automatic installation;
- DriverPackSolution.exe - Launcher, transfers control to the file DriverPackSolution.html;
- \ bin \ DriverPackSolution.html - main executable file
- \ bin \ Tools - folder with JS-scripts, plug-ins and exe-applications;
Core modules
Dpinst module
Driver Package Installer (DPInst), being one of the DIFX components, allows installing driver packages for those devices that have not yet been installed in the computer (“initialization installation”).
DPInst also automatically updates drivers for all installed devices that are supported by the installed driver packages.
Devcon module
DevCon is a command line program that is used as an alternative to the device manager. With its help, you can: enable, disable, restart, update, delete and poll individual devices or groups of devices.
DevCon also provides information needed by the driver developer that is not available through Device Manager. Used by users who prefer to work with the command line.
The module allows you to work directly with the program and drivers, as well as use a list of identifiers for common classes of devices, which is relevant if there is no access to the device itself.
Mshta module
The module is designed to work with * .HTA files.
If the correct operation of the system requires the use of this module, it is worth noting that the integration of the program and the mshta module is configured in such a way as not to impair the performance of the entire system as a whole, first and foremost.
Plugins
In order not to make changes to the general code of the program, you can create a separate plug-in (js-file). Plugin can completely change the behavior of the application.
Plugins can
- Change button events (onClick, onMouseUp, onMouseDown, etc.)
- Redefinition of functions
- Upload external js or css files
- DOM manipulations
- CSS Manipulation
Ways to embed a plugin
Local plug-in work
Place the js-plugin in the bin \ tools \ modules folder and connect to DriverPackSolution.html
Online plugin
If at startup there is a network connection, you can connect a new plugin and change the program logic, even in the oldest versions of DRP.
On the placement of plug-ins, please contact me directly.
Beta-Online plugin
DRP with the Beta version name loads the Offline version of the bin \ tools \ update.js file. To load your plugin, add the following function to this file: inc ("<path to your plugin>");
It is important that every plugin that modifies the DRP interface supports multilingualism.
The main principle of writing a plugin: first write the script auto-test, only then the code itself. Auto tests run from a script: tools / modules / tests / RunTests.hta
DRP was originally developed without automatic testing and use of objects, which is why it is now suffering greatly, and we are busy making large-scale changes to the source code of the application.
Any possible questions and suggestions - in the comments or personal messages. If you are serious, we also recommend
watching the DRP 16-webinar .