The basic principle of TrackMySoftware is that the trial or registration status of each application on each device is stored in a database on your server.
- An application contacts the server to ask for the status on a particular device.
- The status cannot be changed by sending queries to the server. An external application can ask, but cannot modify the status.
- The status is automatically set on the server the first time it is contacted from a particular device, and any status can be changed manually by signing in to the database admin system, or changed by automatically generated licenses.
This has the advantage that you can extend a trial period for a user, or change or revoke a particular license, and the next time the user runs the program and queries the status, that change will come into effect. If a user uninstalls and then re-installs a product, it will have no effect on the status.
In the full version of TrackMySoftware, there is also a secure developer API, which allows you to automatically generate licenses when users register for the product, so this doesn’t have to be done manually.
There are also optional email notifications of installs, uninstalls, and user feedback. An application can also store and retrieve information on the server, and check the latest version number of the product.
If the application always has online access, then nothing more is needed.
Offline use and encryption
If there is no online access, then there has to be a way of storing and checking the status on the local machine. TrackMySoftware uses strong public key encryption to create a local license file with the trial/registration status. This file can be read, but it is not possible for anyone to create a fake license file – not even other users of TrackMySoftware.
An application running on any OS can use the web API,but the encryption system is currently available only for Windows. Modules for other operating systems will be available soon.
Two ways to use TrackMySoftware
So there are two ways to use TrackMySoftware:
- Via the web API only, storing the status yourself locally in way way you choose
- Via the function library which handles web API calls for you and creates an encrypted file for offline use.
This generates a unique DeviceID for the machine, makes calls to the online API for you, handles the encryption, and deals with the logic of checking the status.
Web API only
You have to generate a unique DeviceID yourself – which can be any string – and handle the logic of storing and checking the status offline if necessary.
Flowchart for using Web API only