In House Licensing Scheme FAQs

Contents

In House Licencing Scheme FAQs

Please edit any new questions into this sections, and I'll try to answer them!

Activation

How do I activate on a machine without a user interface such as a web server where I upload only via FTP?
You can use the DicomObjects.DicomLicense.ActivateOnLine method to pass the activation key
I was expecting to see the activation screen when the program started but it appears when the program tried to use DicomObjects.
By design, the activation is triggered only when one of the controlled features of DicomObjects is first used - this is deliberate to avoid problems with design environments. You can trigger the activation screen yourself if you wish by calling DicomLicense.Dialog.ShowDialog().
What should I enter in the "Customer Info 1" box?
This is your traceable name that we will issues all your licences under. It may be your name / company name or in some cases a serial number as long as we can recognise who is registering.
What should I enter in the "Customer Info 2"box?
Any extra information that is relevant to the registration. If the license is a replacement then enter "replacement" in this box.

Service & Web Server Issues

Why does my project work OK when debugging, but I get an exception (exact text varies with version) when I run on a live IIS server?
This is because ASP.NET code runs under the [local]\ASPNET account not [local]SYSTEM (as other services do), and that account may not have access to the appropriate registry hive where the registration information is stored! This problem should not occur in the "In-house" scheme, so if you see it, then please do let us know!
What happens to the reminder screen when run as a service?
The reminder screen will only display for one minute and if not cleared by the user after this time, it will generate an exception (which may stop your program), but it will still count as having been displayed, so it will not show (or in this case interrupt your program) again until the next appropriate interval (the next day for evaluation or 10 days for development copies). So, for services under development, I would recommend that you allow them to interact with the desktop, but even if you don't, the worst you will get is the service failing to start once every 10 days - just enough to discourage clinical use!!!!
What happens if I activate more than once on the same machine?
Don't worry - this only counts as one activation, so there is no incensing problem. If the license is still in place, then this will be located and the activation call will return immediately, but if the license has been deleted, then there will be a delay of a few seconds whilst the incensing server is contacted, so it is not a good idea routinely to clear licences and to re-activate at every run!

Licensing & Control

Where am I going to be able to track all my licences?
On each new registration an Email will be sent to you.
I'm using HASP keys to protect my software. I'm using it like a licencing tool and also protection (encryption). The keys I'm using have memory, so I can save the activation key in the HASP. So, my question is if there is any way to make your licencing to search the HASP (by code) to get the license number and not show the activation form? By this I mean write a routine that when the activation is needed look automatically in the HASP.
You should be able to do this directly yourself, using the Activate methods.
Does this license protection system stop the end user installing the software on multiple machines?
It can do, but that is not the default behaviour. By default, you will have a small number of end-user keys, each of which is good for multiple activations on different machines. Therefore, using this system, end-user activation is recorded but not controlled. The system is however very flexible, and if you wish to have a stock of single-activation licences for end-users systems, then just ask.
What is the difference between a workstation and server system license?
The difference is that a workstation-only license does not allow the system to function as a general purpose SCP. The Listen method and receipt of C-STORE and C-ECHO operations are still permitted, as these are required for a workstation using C-MOVE, but receipt of any other operations on a system with just a workstation license will generate an exception.
Can a developer and end-user license co-exist?
Yes, multiple licences can co-exist, but only one license can be active at any time. This can be controlled using the DicomLicense.CurrentLicense static property.
What will happen if I need to have two different products installed in the same machine for demo? Can two end-user licences co-exist?
They can co-exist, but cannot necessarily be used to control access to your products, as the licences are for DicomObjects itself, not for a particular product. If you wish to ensure that your product only uses YOUR license, then you can check the VendorID product of each license in the InstalledLicenses collection, and set CurrentLicense to the one you choose (or null if you wish to disable yourself!)
How am I going to get each license? Per request or are you going to have a web page where we can pay the developer license fee and get the license key code?
In general, developers will have a small number of license keys (one for development, one for workstations and one for servers) which will be used with multiple activations. Charging will then be on the basis of the number of licences installed.
How about the demo keys?
There will be a small number of generally used evaluation keys for DicomObjects itself (sent by mail to those that download it), and these will probably change every month or so. Keys for your own product evaluations can be created on request.
Is it possible to have a "mobile" licencing scheme, with a license tied to a USB dongle instead of to one machine?
This will be considered as an enhancement if there is sufficient demand.
Is it possible to uninstall/deactivate the license?
Individual licences may be deleted from a machine using DicomLicense.Delete, or all can be removed using the static DicomLicense.DeleteAll method.

Performance

How much effect will this licencing schema have on the speed of my application?
Performance effects should be minimal - the license decryption and checking is only performed the first time that each licenced functionality (read, write, listen etc.) is performed in a program.

Customisation

Can I disguise the use of DicomObjects in my product, or will users doing an activation see that DicomObjects is being used?
Yes, by in any of 4 ways:
  1. Setting the DicomGlobal.ProductName property to your product name, will cause this to appear in the all the activation dialogues in place of "DicomObjects", but the logos etc. will be unchanged.
  2. You can change the values of the properties of the static DicomLicense.LicenseDialog object prior to any time that it could be displayed, and this include changing the logo.
  3. You can derive a class from LicenseDialog, and set it up any way you wish.
  4. You can use ActivateOnline and ActivateOffline yourself, and ensure that you have a valid license in CurrentLicense before ever using any controlled functionality
The only exception to these possibilities is if a trial or developer license is in use, in which case the original dialogue box, showing DicomObjects and Medical Connections will always be displayed.
Relevance: