06-23-2010 02:01 AM
Hello,
I created an installation kit for a CVI program. I would like to control the way this program is installed by the end user (not installed on many computers...).
Is there an efficient way to do that ?
Indeed, I noticed that we could add a licence dialog message at the installation, but I would like to use a stronger way than a message (maybe as it is used with NI licence manager that requires the computer ID).
Thanks,
Grégoire
06-23-2010 05:23 PM
In my opinion this problem cannot be solved in a single pass. I mean, if you want to restrict the user to install the appliction to a single machine you need to know something of the machine and tailor / enable your application to it. That is to say, you cannot solve this problem inside the setup program as it requires an interaction between you -the developer- and the end user.
What you may want to do is somehing in the line NI has used with CVI installation: in the fisrt run the application:
- checks some location (the registry) for license informations
- if found, validates them
- if not found, generates a "signature" of the machine so that you can produce license informations to install in the target system
System signature can be generate using unique IDs stored in the machine: here some links to useful discussions:
How to get hardware informations using LabWindows
Is it possible to retrive the motherboard/hard disk ID through Labwindows CVI 7.0
I havo no special clues at the moment on generating machine signature: I guess the problem is to obtain a unique value, but as far as I can understand the possibility to have different PCs in the same location with similar disk S/N and/or MAC addresses is *very* low
Regarding where/how to store informations in the registry, this discussion can help you in addressing this item on VISTA machines; I suppose this will apply as well to Win7 boxes.
06-23-2010 07:45 PM
Roberto is on the right track here.
In the Windows SDK I believe there are functions to create a globally unique ID number that can be used to uniquely identify a machine. This GUID number can then be used to generate a unique license key to unlock your software (which is what many vendors do).
Of course, this won't stop a determined person from cracking your software. It just keeps honest people honest.