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

Chance to cancel a major upgrade

I'm looking for any help on trying to find a way that I could prompt a user during a Major Upgrade that the previous version will be uninstalled if they continue with the installation.

There may be reasons that some of our users may want to keep our previous version of our program so they may not want to uninstall that version yet.

I've been looking for a way that I can give them a confirmation message box (so that would need an OK/Cancel buttons) that if they continue with the installation the previous version will be uninstalled.

Can anyone give me any help with this? I'm using IS2011 with a basic MSI package. If this is possible, please try to give me as much details as possible since I still get lost within the InstallShield Development window.

Mike...
Labels (1)
0 Kudos
(5) Replies
WalterT
Level 4

I am not exactly sure what you want to do so here are some questions for clarification:

Is it the case that you would want the two application versions to reside side by side?
Or is the scenario that you want nothing to be installed if the user says don't Upgrade.

The first case is quite complex to achieve as you would have to make sure that no conflicts occur between the two versions if installed on the same system.

The second case is simpler but still requires some "fiddling".
Here are the steps to get it done:
1. Use a System Search to detect if your previous application is installed. You can check for its productCode, registry keys, files etc. Any check that is unique to your installation is good. Store this in a PUBLIC property called for example FOUNDUPGRADE. Make sure that FOUNDUPGRADE is not located in your property manager table, if it is make sure its empty (not 0 value but really empty). Type System Search in Installshield help for more info.

2. You then make a simple vbscript custom action that gets executed after the SystemSearch action but before the launchcondition action and has the condition FOUNDUPGRADE. Set it in the Install UI sequence and it should be executed immediately (custom action settingsin InstallShield IDE)

3. vb script should look like this:
 Session.Property("UNINSTALLPREVIOUS")=msgbox ("This will perform an upgrade and uninstall your previous version. Hit Yes if OK, click No to cancel installation", vbYesNo, "Upgrade Detected")


4. The final step is set a Launch Condition that checks if UNINSTALLPREVIOUS=7 (that is the no return value) and then gives a nice message to the user. See the attached image for clarification on this step.

good luck

Walt
0 Kudos
JohnMike
Level 3

Walt,

Thanks, the option 2 is basically exactly what I want to do and your steps really help.

I only have one problem. I've never created or added a VBscript to an installation setup so I'm at a loss on how to do this. I've been searching for anything that would help in actual steps in doing this. I started to walk through the Custom Action Wizard but it looks like I have to bring it in as an external file? So I'm not sure exactly what this external file should look like.

Can you or anyone else help me in creating and adding a VBscript file? I really appreciate it and then this hopefully will do just what I want.

Mike
0 Kudos
WalterT
Level 4

John,

To add a vbscript custom action go to Custom Actions and Sequences, right click on Custom Actions and select New VBScript -> stored in Custom action. Name this custom Action whatever you want.I name it MSGboxYESNO.

You have two tabs in the right pane of your screen. One is Common where you configure all the custom action settings and one is Script where you just dump your script in. I filled in the values I mentioned in the common tab and made a screenshot. Script tab just contains the script.

Oh yeah I also changed the condition to "Not Installed AND FOUNDUPGRADE".
This makes sure that the custom action only takes place during Installation.
0 Kudos
JohnMike
Level 3

Walt,

I really appreciate the help. This has taught me a lot. I've just about got it all set up but I'm getting an error on the message box and it doesn't matter which button I click on.

My Message box is being displayed as expected:



But then it displays this error when I click either button:



The vbScript code is as follows which is pretty much what you originally listed (I even tried your exact line and I still got the error):

Session.Property("UNINSTALLPREVIOUS")=msgbox ("This will perform an upgrade and uninstall your previous version." & vbCrLf & "Hit Yes if OK, click No to cancel installation", vbYesNo, "Upgrade Detected")


This is the only line of code I have in the Scirpt and there is a line feed at the end of the code line.

So do you have any thoughts as to what I might be doing incorrectly?

Mike...
0 Kudos
WalterT
Level 4

A bit of a nooby mistake on my part John.

You can only place strings in properties, and that value was an integer(7), so you need to change the vbscript a bit. This should do it.
Temp=msgbox ("This will perform an upgrade and uninstall your previous version." & vbCrLf & "Hit Yes if OK, click No to cancel installation", vbYesNo , "Upgrade Detected")
Session.Property("UNINSTALLPREVIOUS")=cStr(Temp)


And you're welcome. I've been finding information on this forum for quite a while now, and I thought I should contribute a bit. 🙂
0 Kudos