| |
Developing
Applications Using The SoftwareShield System > Creating
Licensing Solutions > Available License Models
> >
Copy Protection License Model
Copy Protection License Model
This model allows you to lock a license tightly
to an individual machine based on its FingerPrint.
Note
that the copy-protection that SoftwareShield provides is a "Machine
Locked" type of enforcement. If you are unsure what this means, please
review Introduction To The SoftwareShield Licensing And Copy Protection
System. For more detailed information about the Copy-Protection feature
itself, please see Copy Protection
in the Feature Guide.
Note that if you choose not to use Copy-Protection
(which implicitly uses FingerPrinting), you can still get the benefit
of FingerPrinting your Activation Codes. FingerPrinting
Activation Codes ensures that the code will only wok on the exact machine
for which it is intended.
Overview - How to Integrate the Copy-Protection License Model Into
Your Application
The
first step is simply defining a license that is copy-protected. This is
a simple check-box in your project properties inside the License Manager
Application. Once you have set this, you can select what System FingerPrint
options you wish to use. Generally, more options means that the fingerprint
is more restrictive and more secure. Please make sure you read the section
on Deploying
Licensed Software when deciding what level of copy-protection you
need. Please see License Behaviour Tab for detailed information about
setting copy protection in your license project.
The
next step is to ensure that your license has a copy-protection release
definition built into it. This is a simple step because the SoftwareShield
License Manager will not let you compile a copy-protected license unless
you also define an Authorization Definition to release it. Please see
Authorization
Definitions Tab for detailed information on how to define a copy protection
release definition for your license.
Once
you are satisfied with your license, compile a distributed copy of it.
The distributed copy is encrypted and compressed and only contains absolutely
necessary information for the enforcement of your license. Place a copy
of this distributed license in your applications directory. If you have
decided to use steganographic alias files, make sure that they are also
in the application directory. Have a look at the programming notes file
that the SoftwareShield License Manager creates for your specific license.
This will make your programming a little easier by supplying you with
the code you will need to invoke the start up event. Please see Deploying
the License for Your Application for more detailed information about
deploying your license.
Next,
in your programs startup event (main form load etc.) create an instance
of the ClientProtector object and immediately call its StartUp
function. You will have to pass specific parameters such as the license
name, main license file password, and the finger print options code -
but this code will have been already written for your convenience when
you compiled your license - just look in the programming notes file created
by the SoftwareShield License Manager. Have a look at the exact details
of the StartUp function for more information on making this call.
Next,
in your program code, you can define an event handler for the OnAttemptReleaseCP COM event that will
be fired from the ClientProtector server. This is where you will define
a UI for the user to interact with the ClientProtector and enter an Activation
Code to release the copy protection. Alternatively,
you can activate the license (releasing the Copy Protection for this machine)
using CheckPoint
Central Server Controlled Licensing.
Now,
depending on the return value from the ClientProtector StartUp call (in
the return_code reference parameter), you can launch the program or not.
Put simply, the ClientProtector will tell you if your program has been
authorized to run on this specific machine or not. Its as easy as that.
For information on how to interpret the return_code parameter, have a
look at RETURNCODES.
|