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

Help in the right direction please...

I have been tasked with determining the customisable limitations of InstallShield in respect to generalisation and seek some guidance please.

To summarise, 3 potential "flavours" of an application each of which have their own:

Product Name
Installation Path
Imagery
And components (include a MSM or not depending upon the flavour)
Ideally I would like to create a single project and through the use of environment variables (if they exist within InstallShield) build an appropriate installation.

I have identified the possibility of using skins to deal with the visual side but I am hoping someone can point me in the direction of areas of the application which could possibly help me achieve what I require.

Any help would be appreciated and I look forward to the replies.
Labels (1)
0 Kudos
(12) Replies
Christopher_Pai
Level 16

How different are your branding ( images ) requirements? If it's essentially the same UI story with different product names and different background bitmaps, then it can easily be done using a Basic MSI. ( More complicated requirements can be done in Basic MSI but it does get more `interesting` ) The other two requirements are also easy to do in a Basic MSI.
0 Kudos
KeithO
Level 3

Christopher Painter wrote:
How different are your branding ( images ) requirements? If it's essentially the same UI story with different product names and different background bitmaps, then it can easily be done using a Basic MSI. ( More complicated requirements can be done in Basic MSI but it does get more `interesting` ) The other two requirements are also easy to do in a Basic MSI.


Christopher , thanks for the reply.

After posting the reply I started to have a look at 2008 and indeed found the preprocessor variable definitions for each of the release types. Thus far I have successfully managed to change the text on the dialog and title depending upon the release and also I think the destination path.

What I am looking at is the "different components". I am trying to utilise the "features" to acheive this. The feature will include the necessary components required and again using the preprocesser variables I am hoping, using FeatureSelectedItem() to de-select the other two features that I do not require.

I have had partial success, as it does not seem to de-select the first feature although the code is the same. I am assuming this is a UI thing as I would not allow the user to choose a type nor choose a feature in the release.

I notice in 2008 I can apply a skin to the release type, so once producing the skins (and placing them in the local area) I can specify my custom skins per release.

There are two things which seem to be stumping me at the moment.

1. The dialog which appears "setting up the installation..." shows the product name of the project rather than the release. I guess it is to early for this to be picked up here. Obvioulsy this is what will show under add/remove programs so I really need it to be specific.

2. Splash screens. There only seems to be the ability to specify one. I may be able to overcome this will a pre-build procedure which will copy the relevant bitmap into the correct location.

I am hoping to automate the build through CruiseControl so I can perform pre and post build actions.

Christopher any help you can provide on the two items, or indeed comments on the other areas would be appreciated.

Thanks again
0 Kudos
Christopher_Pai
Level 16

Actually with a Basic MSI you shouldn't have to write any InstallScript at all to do what you need. Take a look at Product Configuration / Release settings and you'll see there is the concept of overridding the ProductName and ProductVersion as well as Flags which can be used to include or exclude features ( and their components ) from being consumed by a build. Then at build time you can use a slight of hand to replace the bitmaps that form the dialogs by pointing to relative path'd images and having your build script pull different versions of those images into scope.
0 Kudos
KeithO
Level 3

Thanks, that seems a better solution. I am just starting with a legacy installation (in 11.5) which is scripted.

Out of interest, do you have any idea how I could potentially get round the physicall installation name problem. Can I specify a different MSI filename per release or have I mis-understood what will happen. I must say I find 2008 easier to use than 11.5 although it may be the fact I have been given sometime to actually sit down and look at it more closely.

Thanks again,
0 Kudos
Christopher_Pai
Level 16

Yes, there is an attribute called "MSI Package File Name" and there is also a simialr attribute called "setup file name".
0 Kudos
KeithO
Level 3

Christopher Painter wrote:
Yes, there is an attribute called "MSI Package File Name" and there is also a simialr attribute called "setup file name".


🙂 You have been very helpful Christopher, i may be back 😉
0 Kudos
KeithO
Level 3

Good morning, I have a few more questions if I may.

I have started to look at a basic MSI install project and, as mentioned, I am able to specify a great deal of the specific items (product name, msi name etc) per release configuration.

I have not really looked at Custom Actions & Sequences (as the current project is InstallScript) but I believe I have managed to modify the behaviour of the dialogs I require to move to and back to the ones I want. I have also created a custom action to set the TARGETDIR property (depening on preprocesser flags) prior to displaying the target directory dialog.

I think between the two types I have managed to do all I require but not in a single project file.

Using a Basic MSI i no longer seem (or cant find how to do the following):

1) Validate the destination selection. In the current project once the selection has been made, I can check the path selected, perform my checks and display an appropriate message and stay on the destination screen if necessary. I am assuming custom actions are the way (the code will be the same) but I cant see an appropriate entry point for the custom action which, as stated would be after the selection of location.

2) Dynamically change the ready to copy text, again this is done through text and at a basic level I want to show the user where it will be installed to.

3. Specify an individual icon per release for which will be displayed in the Add or Remove programs screen. I can see I can specify a "program" version but not per release.

4. Its a shame that I cant specify a skin per release in a basic MSI, I can on a InstallScript version, is this true? It does not seem I can even change the skin which is used and I am forced to use none or a predefined, again is this correct.

5. If, as I fear, I cant use the skins then does anybody know how I would, again through custom actions I guess, display a background bitmap for the install. I have the code but I am unsure again of the entry point in the sequence to ensure that it is displayed correctly.


As mentioned its a real shame I cant do everything in either, If I could get the InstallScript version to allow me have different product GUIDs, names etc then it would be great. I am hoping someone can help me with these last few things.

Cheers
0 Kudos
DeepakJ
Level 3

Use regular installscript. I find it to be much more accomodating than Basic MSI.
0 Kudos
Christopher_Pai
Level 16

Overriding properties like ProductName is done in the ISProductConfigurationProperty table. Unfortunatly, despite what the foreign keys would suggest, IS won't let you override just any property. ( Bug Bug )

So to define properties for different configurations, I use `fake` merge modules that contain nothing but configuration data like the Property table. I associate the merge module to a feature that has a Product Configuration Flag and the built MSI will have properties set with unique values for that release. You can then use this property data to drive UI elements in both the form of Control Text and behavior such as ControlEvent and ControlCondition conditional expressions.

You can also do things like change the file pointers for skin graphics to be relativly pathed from the project ISM. Then in your source control system make different versions of the graphics available to achieve different themes.

It takes a little creative use of windows installer, but it is possible to do all of this without actually writing custom actions and/or using InstallScript.
0 Kudos
Holger_G
Level 10

I just followed this thread.....

Chris, that 'fake' merge modules method is really nice and tricky 😄 .
Thanks.

-Nick
0 Kudos
praveendanam
Level 5

hai,

it is very helpful

-praveen
0 Kudos
Gvarma
Level 7

KeithO wrote:
Good morning, I have a few more questions if I may.

I have started to look at a basic MSI install project and, as mentioned, I am able to specify a great deal of the specific items (product name, msi name etc) per release configuration.

I have not really looked at Custom Actions & Sequences (as the current project is InstallScript) but I believe I have managed to modify the behaviour of the dialogs I require to move to and back to the ones I want. I have also created a custom action to set the TARGETDIR property (depening on preprocesser flags) prior to displaying the target directory dialog.

I think between the two types I have managed to do all I require but not in a single project file.

Using a Basic MSI i no longer seem (or cant find how to do the following):

1) Validate the destination selection. In the current project once the selection has been made, I can check the path selected, perform my checks and display an appropriate message and stay on the destination screen if necessary. I am assuming custom actions are the way (the code will be the same) but I cant see an appropriate entry point for the custom action which, as stated would be after the selection of location.

2) Dynamically change the ready to copy text, again this is done through text and at a basic level I want to show the user where it will be installed to.

3. Specify an individual icon per release for which will be displayed in the Add or Remove programs screen. I can see I can specify a "program" version but not per release.

4. Its a shame that I cant specify a skin per release in a basic MSI, I can on a InstallScript version, is this true? It does not seem I can even change the skin which is used and I am forced to use none or a predefined, again is this correct.

5. If, as I fear, I cant use the skins then does anybody know how I would, again through custom actions I guess, display a background bitmap for the install. I have the code but I am unsure again of the entry point in the sequence to ensure that it is displayed correctly.


As mentioned its a real shame I cant do everything in either, If I could get the InstallScript version to allow me have different product GUIDs, names etc then it would be great. I am hoping someone can help me with these last few things.

Cheers


Keith,

I am also in a similar boat and have not used "Release" flag before except the default one...could you share your experience or perpahps the MSI database that you have created?

TIA
0 Kudos