cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Korben_Dallas
Level 4

Major Upgrade issue

Hi,
I have a installer from Installshield 11 (InstallScript MSI) and I'm now using IS2008.

I didn't design the previous installer and it was a bit of a mess, so I created a new setup design / features / components from scratch. This new project is a "Basic MSI Project" because Installscript was not actually needed.

The new project will install a more recent version of the application to the same location and using basically the same files.

I assigned a new product code and used the old Upgrade code from the IS11 project.

I added a new "Major Upgrade item" and the upgrade works but there are two problems:


    Uninstalling the old application works fine except for the fact that there is a REBOOT PROMPT... if you keep the default setting to reboot and continue there is an error "0x80040706". You click OK in the error window and installer goes on.


    Now there are 2 entries in "Add/Remove Programs", one for the old version and one for the new one


How can I solve this?

I thought about a custom action to uninstall previous versions and another one to delete the reg keys for the add/remove program entry.

But really, I'd prefer to get this workign without any "tricks".

Any ideas?
Labels (1)
0 Kudos
(4) Replies
KathyMorey
Level 10

If I understood you correctly, your issue is this: the old InstallScript MSI project creates registry keys used by the InstallShield engine that runs when you uninstall it from, say, Add/Remove Programs. That uninstall runs the engine, which in turn uninstalls the msi.

Your new Basic msi project uninstalls the old version simply by running the uninstall of the old msi - it obviously won't know anything about the script.

Consequently, the old InstallShield registry entries do not get removed.

If you don't need to support silent installs, you can create a custom action in the UI sequence to run the old scripted uninstall. You can't do this in the Execute sequence because you can't run two msi's at the same time. This is not really Best Practice, but we've done it successfully.

Or, you can use the RemoveRegistry table to remove the InstallShield-created entries when the upgrade runs. This will work so long as the old script didn't set any msi properties that the old msi will need to properly uninstall. We've done this, too.

Or, although I haven't tried this, if you can release your product with a wrapper setup.exe, you might be able to set a prerequisite to uninstall your old version before the new version runs. This will mean that you can't support feature migration in the upgrade, though, because the old settings will be gone when the new msi starts.

Hope this helps.
0 Kudos
Korben_Dallas
Level 4

Hi,

The old installer only uses InstallScript to set LicensePath and apparently to set SdFinishReboot, I'm not sure. Let me know what I should check to help you understand this scenario.

The problem is that after uninstalling the previous version it shows the reboot screen (for the previous version) on top of the current install screen.

If you click "NO" it goes on, if you click "YES" it gives an error and it goes on.
This doesn't interrupt the installation but it will confuse the users so I have to get rid of it.

Also, where can I put a custom action to run a task before uninstalling the old version?

Thanks
0 Kudos
Korben_Dallas
Level 4

I found the "RemoveExistingProducts" action and read the info on it. So this is the step where the actions in the "Upgrades" section are run.

Still, I can't find a way to prevent the uninstallation of the old version from popping up a reboot dialog 😞

Is there a condition that only makes an action run when there is an "Upgrades" action going on?
0 Kudos
Korben_Dallas
Level 4

I can't find a way to supress the reboot prompt :mad: :mad: :mad:

To recap, I have an installer from InstallShield 11 that installed an app. Now I'm making a new one in Installshield 2008 with a new feature structure and product code.

I've tried using the upgrade code and I still get the reboot prompt.
Now I've been trying to do this using MSIEXEC.EXE to remove the previous version, and I still can't do it.

The reboot prompt always appears.

I've tried REBOOT=ReallySuppress and RebootYesNo="No" and every possible combination. It shows up everytime. Is there a way to suppress any INSTALLSCRIPT running while uninstalling the old application?

I'm going mad and I'm actually considering deleting stuff manually (directory, registry entries) which is not the desired solution at all.
0 Kudos