views:

244

answers:

1

Hello,

I have an old VB6 application that is deployed using a very old 16 bit version of InstallShield. I have created a new installer with Innosetup to be 64 bit friendly for my VB6 application with updates.

All of my users already have the existing InstallShield version installed. Currently, I have Innosetup working. The problem is, I do not want to overwrite the old InstallShield installation files, so my InnoSetup installs to another directory. This causes problems because now i have 2 versions installed, with 2 separate icons.

I need a way to invoke the uninstaller of the old InstallShield application when i install the new InnoSetup version. How do I call the uninstaller from the windows add/remove programs through InnoSetup? If i reuse the app_id for the installshield version to be the same as the innosetup, and then manually delete the old files, would that work?

+1  A: 

You would have to locate the InstallShield uninstall registry key which will reside under either HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ or HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ and then execute it's UninstallString value. Once that is done, delete the registry key: it is not possible to reuse the same key with Inno Setup since it will always append '_is1' to your AppId to generate the uninstall registry key name. Additionally on older Windows versions it may also truncate this key name and append a checksum, because of length limitations.

Do all this from a PrepareToInstall event function.

mlaan

related questions