Showing results for 
Show  only  | Search instead for 
Did you mean: 
Level 3

Serial number based installation


I am using InstallShield 2012, Spring. We have a requirement to install selective features based on the serial number.

Say, if I enter serial number ABC, feature 1, 3, 5 will have to be installed. If I enter serial number DEF, feature 2, 4, 5 will have to get installed.

Currently, I have enabled the serial number field in the customer information dialog. I have also set some conditions for the features to evaluate the serial number and set the install level appropriately. The problem is, though the serial number is set properly in the customer information dialog, I find that the conditions that I had set for the features are evaluated before any UI is shown and hence does not take into consideration the recently set serial number.

I believe the conditions are evaluated during the Cost Initialize, Cost Finalize portions and these activities takes place before the UI is shown. As a result, all the features are enabled / disabled at that stage prior to UI being shown and hence any input in the customer information dialog is not taken into consideration.

If I create a custom action to be scheduled prior to cost initialize where I set the serial number property to a specified value, then the conditions are evaluated and appropriate features are enabled appropriately. However, this would mean, I will have to create a custom UI (as part of a custom action) that pops up and asks the user for the serial number and then perform the cost initialize, finalize activities and then show the install shield standard welcome scree and so forth.

Is there a better approach for this?

Ours is a standard MSI project.

Thanks and regards,
Shoban Jayaraj
Labels (1)
0 Kudos
(1) Reply
Level 12 Flexeran
Level 12 Flexeran

Take a look at the AddLocal and related control events. You can edit these by selecting the Events tab in the lower right of your dialog's behavior node. The idea is once features have been put into their originally selected state, only direct manipulation through a feature selection control or these control events will change what happens to them. Alternately you could push your conditions down to your components, but that's probably painful.

Bear in mind that this is far from foolproof unless you catch all paths and prevent transforms or direct edits. Don't forget that silent installations skip the UI sequence, an advanced user can run msiexec /i your.msi /qn ADDLOCAL=anyfeature, and can access all the files that are part of the MSI. You're better off trying to implement license enforcement inside your application.
0 Kudos