📜 ⬆️ ⬇️

Polite invitation to develop

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:

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:
  1. Modularity
  2. Multilingualism
  3. Auto-Coverage
  4. Asynchrony
  5. Fast speed


Folder structure



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

  1. Change button events (onClick, onMouseUp, onMouseDown, etc.)
  2. Redefinition of functions
  3. Upload external js or css files
  4. DOM manipulations
  5. 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 .

Source: https://habr.com/ru/post/254433/


All Articles