When you support hundreds of office and home PCs, you cannot do without a set of universal drivers. Without a doubt, the most popular solution here is DriverPack Full, which has a huge driver base, 10 Gb in size! These are as many as 910,000 drivers compiled and tested manually.
If you need to configure only 1 computer, then you don’t want to download 10 Gb at all, so DriverPack Online was made. He had his flaws, which we tried to fix in a new release. So let's dwell on the most interesting points of development.

From scratch
It was decided to rewrite and redesign DriverPack Online from scratch. Our goal was to make a light and simple application that provides the user with the functionality of the Full version.
')
We used
the same technology stack . I know that there are people who dislike the HTA. But, friends, it works the way our users need it.
Any admin who has ever written VBScript scripts or has riveted a "business card site" can easily “file” DriverPack for themselves. No compilation, just HTML and JavaScript, in which even the student will understand.
And yes, we experimented with node-webkit - it did not suit us.

Analytics
On the Web, there are many standardized solutions, and we were able to transfer them to Desktop. Using the Statistics.js script, events are sent to Google Analytics and Yandex.Metrica from the application.
Statistics.js can:
- Work with send Events events to GA (category, action, label);
- Supports Dimensions (settings in statistics.config);
- Forwarding ClientID from the site;
- Generate ClientID if it is not forwarding;
- Generate the correct URL to send via the Measurement Protocol;
- Sending events to Yandex.Metrica (via yaCounter.hit ()).
The event sending syntax is pretty simple:
statistics.event(
{
category: 'desktop',
action: 'opened',
label: '16.1.1'
}
);
Thanks to this, we can analyze problems, find faulty or incompatible drivers and configurations even earlier than the users write to us ... And in the end, we need to understand how convenient and understandable the product itself is to the user.
Here is the map of events sent from DriverPack:

Google Analytics and ClientID
In Google Analytics, external events are sent via the Measurement Protocol, so its integration did not cause any problems. But, we went further and learned how to roll ClientID from the site, directly into the application! It is necessary in order to be able to understand where the user originally came from and for what search phrase and associate it with what he does inside the application.
From the site to the application ClientID is forwarded through the file name, like this:
download.drp.su/online/DriverPack-Online_2089238336.1403776545.exe
We can tell in detail about how easy it is to set up, but in another post, if someone is interested.
Yandex.Metrica
Google Analytics is good, but two tools are better, so they turned to Metric. A huge disadvantage of Google Analytics is the “sampling”, which is included for resources with high traffic. It beats the data very strongly and it is no longer possible to believe such statistics. Yandex.Metrica helps us verify / confirm conclusions made on data from Google Analytics.
I had to tinker with Metric, as they don’t have any REST API to send events. But, we were able to make friends with regular JavaScript tracking code with the HTA.
By sending events about user actions (hits) to Metric, we also send a JSON object containing computer configuration information.
The interface "Metrics" allows you to work with this data and find very interesting insights: below is the screen with indicators of refusals to use our application on computers of two groups of users: with 1 Gb of RAM and more than 2 Gb.

From this diagram, we can conclude that users of computers with 1 Gb of RAM on board have a bounce rate higher by 1.5 times than users of computers with more memory. This is quite simply a conclusion, but sometimes there are really super obscure things.
Auto tests
HTA - works on the Internet Explorer engine, so DriverPack should work correctly in completely different environments and run on different engines. If we ignore the impossible combinations of the form
“Window 8.1 x IE6” , we can say that the number of options is a Cartesian product
[Windows ver] x [IE ver] is a lot, not to mention the fact that it is happening with antivirus zoo on users' computers.
To test all this, we:
1. Raise a series of virtual locks;
2. The latest version of the application is deployed via Dropbox;
3. Unit tests run every minute through the scheduler;
4. Reports from machines are collected in one Dropbox folder.
Thus, we have significantly reduced the cost of the testing process.

Driver testing
Auto-tests we cover the application code. But 910,000 drivers can not be tested on virtuals. Therefore, we created the
“Remote Driver Testing Lab” , which we talked about in Habré.
All this in a new, in our opinion, minimalist design.
At last
Download DriverPack Online:
http://drp.su/ru/GitHub page:
https://github.com/DriverPackSolution/DriverPack-Solution/tree/DriverPack-16Change Log:
https://github.com/DriverPackSolution/DriverPack-Solution/commits/DriverPack-16?page=1List of changes to the new version, carefully! PS Thanks to those who responded to
one of our previous publications.
You really helped us improve DriverPack a bit: to make it fast and reliable, and at the same time simple and understandable for any user.
Special thanks to
Denis Sedchenko for the design of the application.