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

Download from GitHub page:

The inno-statistics.iss file contains the pascal code and the implementation instructions. Open the file in Inno setup (or any other preferred code editor) and follow the instructions inside the file.

Edit inno-statistics-config.iss to add the parameters of your application.

procedure trackInstallation(appName, appVersion, appLicense, appEdition, PropertyID:PAnsiChar);
var
	eventAction: string;
begin
	iStart(appName, appVersion, appLicense, appEdition, PropertyID, TRUE);
	eventAction :=  appName + ' Install';
	iSendEvent(PAnsiChar(eventAction), 'Install', 1);
	iStop;
end;


procedure trackUninstall(appName, appVersion, appLicense, appEdition, PropertyID:PAnsiChar);
var
	eventAction: string;
begin
	uStart(appName, appVersion, appLicense, appEdition, PropertyID, TRUE);
	eventAction :=  appName + ' Uninstall';
	uSendEvent(PAnsiChar(eventAction), 'Uninstall', -1);
	uStop;
end;
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 screenshots 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.

Comments

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: https://www.google.com/analytics/gallery/#posts/search/%3F_.viewId%3DWJ0...

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