Installation analytics for Inno Setup

Installation analytics

What is Inno Setup

Inno Setup is one of the best installation (Setup/Uninstall) tools for Windows software. It is also free.
As a result, it is loved by the independent shareware developers.

InnoSetup has several 3rd party add-ons that further enhance its capabilities.

Our SoftMeter library can be used as an InnoSetup add-on.

What is SoftMeter for Inno Setup

SoftMeter (formely libAppTelemetry) telemetry library allows software developers to see installation statistics/analytics of their shareware software via their free Google Analytics account.

Our library tracks installation statistics, such as Country, Operating System, Screen resolution, Application version and sends them to Google Analytics.
Google analytics has numerous reports (even real-time view) and can also show you aggregated data such as installations per month, installations per country, etc.

Our library is currently free. You can include it in your setup in a couple of hours. This is a pretty good deal for the independent shareware/software developers.

Having usage statistics in your software is vital to the success of your software.

How to add SoftMeter to your Inno Setup script

You will need two files, installation-statistics-script.iss and libSoftMeter.dll, from our GitHub page:

The installation-statistics-script.iss file contains some InnoSetup script, some Delphi source code and the implementation instructions. Open the file in Inno setup (or any other preferred code editor) and follow the instructions inside the file.

procedure trackInstallation(appName, appVersion, appLicense, appEdition, PropertyID:PAnsiChar);
	eventAction: string;
	iStart(appName, appVersion, appLicense, appEdition, PropertyID, TRUE);
	// Here we track the installation with a Google Analytics "Event" hit.
	// Depending on the monitoring model you create for your software you can alternatively send PageViews or ScreenViews.
	// In our model we decided that "Events" should be considered as milestones in the software's usage.
	// E.g. Download, Installation, Registration, Uninstall.
	// We send PageViews and  ScreenViews hits for the daily usage of the software.
	// E.g. App launch, User went to settings screen, user created a new invoice, etc.
	// With this separation we avoid having the important actions (e.g. installation)
	// burried in the noise that the high volume of PageViews or ScreenViews create.
	eventAction :=  appName + ' Install';
	iSendEvent(PAnsiChar(eventAction), 'Install', 1);

procedure trackUninstall(appName, appVersion, appLicense, appEdition, PropertyID:PAnsiChar);
	eventAction: string;
	uStart(appName, appVersion, appLicense, appEdition, PropertyID, TRUE);
	eventAction :=  appName + ' Uninstall';
	uSendEvent(PAnsiChar(eventAction), 'Uninstall', -1);
During the install, the event value is 1, while during the uninstall is -1. This way, GA will automatically calculate the "net" installations.
What kind of reports can I have about my software installations?
Below you can see some report examples. These screeshots are from a report we created to monitor our own shareware.
We shared the report template as "Installs vs uninstalls of desktop software" on the Google Analytics solutions gallery. You can import it from there, into your G.A. property.
statistics of desktop software installations
statistics of installations of software per application version
desktop software analytics about installation per operating system
Timeline of installations of desktop software per month
Installation and removal (uninstall) analytics report

After including the library in your setup, you can release your new software version and start monitoring in Google Analytics how many installations you have, under which operating systems, the countries of the users, etc.


We will soon post instructions for Install Shield and NSIS (Nullsoft Scriptable Install System). But the way to link the DLL is similar.

We created a new report template for Google analytics. "Installs vs uninstalls of desktop software". You can import this custom report in your Google analytics profile and see the installation statistics of your desktop shareware software, using libAppTelemetry and Inno setup (or your preferred setup maker program).

See the report at:

and rate us if you like it.

In SoftMeter v0.6.1, an all-in-one function was added, specifically for tracking installs and uninstalls.

  • aio_sendEvent() // this is the cdecl calling convention
  • aio_sendEvent_stdcall() // this is the stdcall calling convention

This function does the complete sequence of start(), sendEvent(), stop().

As its parameters, it takes the combined parameters of start() and sendEvent()

We will soon update our examples to show this function in action.

Add new comment