Polite invitation to the development

    You criticize - offer

    We are often blamed on Habrahabr for the fact that the articles are not technical enough, and the description of the program is poorly detailed. But in fact, every reader understands that to describe everything in one post is simply impossible, because for several years the development of DRP went in many directions.

    Some of them are directly related to the executable file, the notorious .exe'shnik; another - with the creation of the archive and, importantly, the driver index; the third - with testing the application and individual versions of drivers for various equipment both on different versions of Windows and on iron racks. We give part of these solutions for testing to users who have shown particular interest.

    Suggest - do it

    Therefore, we decided to invite everyone to take part in the direct development of the DRP windows application, because it is always easier to look at the code, and we take all the useful help in creating the most user-friendly application for installing and updating drivers.

    The GitHub repository is accessible to anyone and we will be happy for your substantive interest, bug reports and any possible program improvements.

    We have a number of problems that we can solve together with experienced web-developers:

    - Unit-tests of software. We already have small developments in equipment testing and automatic testing in a virtual laboratory (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.


    DriverPack Solution is written in the HTA language (HTML Application), so the program code is executed by the Internet Explorer engine (the mshta.exe process), which is standard on all versions of Windows. Its description is located at the following address .

    DRP uses popular js and html frameworks, such as: jQuery Tools, Bootstrap, etc. Our current database: SQLite

    Yes, HTA is a problem. It has enough shortcomings, 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
    • Lack of compilation

    Short description

    An HTA is not an object for security restrictions imposed on Web pages, but is executed just like any executable file. HTA programs cannot be “signed”, but can be installed from various installation formats.

    HTA looks like a full-fledged Windows application, therefore it is familiar to any user and combines all the features of Explorer browser: object model, HTML, cascading style sheets, scripts and events, as well as specific HTA functionality.

    The concept of DRP 16, which we are currently developing, is as follows:
    1. Modularity
    2. Multilingualism
    3. Auto test coverage
    4. Asynchrony
    5. Fast speed

    Folder structure

    • Drivers \ - driver packs (7zip driver archives);
    • Indexes \ - index files, for quick search of the driver database;
    • Soft \ - software for automatic installation;
    • DriverPackSolution.exe - Launcher, transfers control to the file DriverPackSolution.html;
    • \ bin \ DriverPackSolution.html - the main executable file
    • \ bin \ Tools - a folder with JS scripts, plugins and exe applications;

    Core modules

    Dpinst module

    Driver Package Installer (DPInst), being one of the components of DIFX, allows you to install driver packages for devices that have not yet been installed on your 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 interface program that is used as an alternative to device manager. With its help you can: turn on, turn off, restart, update, delete and interrogate individual devices or groups of devices.

    DevCon also provides the driver-specific information that is not available through the device manager. Used by users who are more comfortable working with the command line.
    The module allows you to work directly with the program and drivers, and use the list of identifiers for common device classes, 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 are configured in such a way as not to reduce the performance of the entire system as a whole, in the first place.


    In order not to make changes to the general code of the program, you can create a separate plug-in (js-file). The plugin can completely change the behavior of the application.

    Plugins can

    1. Change button events (onClick, onMouseUp, onMouseDown, etc.)
    2. Function override
    3. Loading external JS or CSS files
    4. DOM manipulation
    5. CSS manipulations

    Ways to Deploy a Plugin

    Local plugin operation

    Place the js plugin in the bin \ tools \ modules folder and plug it into DriverPackSolution.html

    Online plugin

    If at startup there is a network connection, you can connect a new plug-in and change the program logic, even in the oldest versions of DRP.

    For placement of plugins, 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 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 we write an auto-test script, only then the code itself. Auto tests are performed from a script: tools / modules / tests / RunTests.hta

    DRP was originally developed without automatic testing and using objects, which is why it suffers a lot now, and we are busy making large-scale changes to the application source code.

    Any possible questions and suggestions - in the comments or private messages. If you are serious, we also recommend watching the DRP 16 webinar..

    Also popular now: