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

I Need to upgrade a InstallShield Express (.iwz) setup.exe

We have converted a old InstallShield Express 2.0 project to InstallShield 2009.

Everything installs and works fine, but it doesn't upgrade from the old install. So if you install our new package over the old one then there are two entries in add remove programs.

It seems that the most likely explanation for this is that the GUIDs are different for the Upgrade Code. The problem is that I can't find the original GUID. The old installer creates a number of SETUP.* and _SETUP.* files as a intermediate step, but none of them seem to be a .MSI file.

Is there some way to force the 2009 installer to uninstall the old product?

Thanks for any ideas,
-Reinyn
Labels (1)
0 Kudos
(6) Replies
RobertDickau
Flexera Alumni

InstallShield Express 2.x predates Windows Installer, I believe, so in your newer (MSI?) project you'll probably want a custom action that executes the UninstallString command in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\old_product_name...
0 Kudos
Reinyn
Level 4

Ok, I found the uninstall string as you described.

C:\WINDOWS\uninst.exe -fC:\Cadwell\QuickReport\DeIsL6.isu -cC:\Cadwell\QuickReport\_ISREG32.DLL

I attempted to add a Uninstall custom action. I set the "Install UI Sequence" and "Install Exec Condition" to "After Find Related Products" but when the setup executed I received a error message about the Directory Manager not being initialized (error 2732).

So then I tried seting the sequence to "After Cost Finalize", but then nothing seemed to happen.

so I'm not sure what to try next.

Working Directory - WindowsFolder
Filename & Command line - uninst.exe -fC:\Cadwell\QuickReport\DeIsL6.isu -cC:\Cadwell\QuickReport\_ISREG32.DLL
Return Processing - Synchronous (Ignores Exit Code)
In-Script Execution - Immediate Execution
Execution Scheduling - Always Execute
0 Kudos
Reinyn
Level 4

Ok I was able to get it to exectue. I needed to fully qualify the "Filename & Command Line" argument with C:\Windows\uninst.exe

However I ran into another problem with DeIsL6.isu file having a different postfix (DeIsL1.isu on my test computer). Is there a way to read the uninstall string out of the registry and then execute it exactly?

Thank you,
-Reinyn
0 Kudos
RobertDickau
Flexera Alumni

Perhaps read the data into a property using a system search (the System Search Wizard will help), and then use a "Launch EXE > stored in a property" action?

(Of course you'll want a condition on the action so that it runs only when that uninstall registry key exists, and not during repair or uninstall or etc., but first things first.)
0 Kudos
Reinyn
Level 4

Hello Robert,

I was able to use the System Search wizard to find the registry entry. Then I executed the custom action on that property and it worked!

I think I am still going to need some help setting a condition on the action so it runs at the appropriate time.

Thank you,
-Reinyn
0 Kudos
RobertDickau
Flexera Alumni

Another general tip is that an action that makes system changes should be in the Execute sequence, scheduled for deferred-in-system-context (and not immediate) execution.

To run the action only when that registry value is present, you can use the property name as the condition. For example, if your system search uses OLD_UNINSTALL_STRING as the property, use OLD_UNINSTALL_STRING as the condition.

Another common option is to use Not Installed to detect a first-time installation.
0 Kudos