MattPow
Level 3

InstallScript MSI Projects crash when performing a Major Upgrade

I thought that I would let you all know of this problem before it affects other people. InstallShield have recognised this as a bug in their software.

When an InstallScript MSI project that is created in InstallShield 2009 undergoes a Major Upgrade it crashes during the un-installed process. This means InstallScript event code such as ‘OnEnd’ are not called. It also means that duplicate entries will exist in the Add/Remove Program control panel applet. :mad:

If you plan to release an InstallScript MSI project generated with InstallShield 2009 (it does not affect older products) and it proposed that it can be upgraded by a Major Upgrade then you should investigate this problem now!

You can remove the duplicate ARP entry by using a Custom Action, see this thread for information on how to do this.

If you have already released a product then you may need to modify your new product installer to clean-up the previous installations (deleting the duplicate ARP entries and repairing any custom information that should have been modified within the ‘OnEnd’ event handler of the old installation during the upgrade process).

NOTE: I have only noticed that the ‘OnEnd’ event handler is not called on the old product when upgrading, it could apply to other InstallShield events. So I suggest you try a major upgrade scenario before you release.
Labels (1)
0 Kudos
5 Replies
joshstechnij
Flexera
Flexera

I have attached a hotfix that is available for this issue. This hotfix resolves the crash that occurs when the InstallScript engine attempts to remove its part of the setup during a major upgrade and also resolves an issue with InstallScript logging for InstallScript MSI projects. To apply the hotfix:
- Make a backup copy of C:\Program Files\InstallShield\2009\Redist\Language Independent\i386\ISSetup.dll.
- Extract ISSetup.dll from the attached zip file to C:\Program Files\InstallShield\2009\Redist\Language Independent\i386.
- Rebuild any setups that are seeing these issues.

Note that the base setup version for an installation encountering this behavior also needs to be rebuilt to resolve the crash. If this is not possible because the setup has already been released, a "manual" major upgrade is recommended:
- In script code in the upgrade setup project, look for the uninstall key of the setup to be upgraded (HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{ProductCode}).
- If the uninstall key is present, use LaunchApplication to run the uninstall of the old product using the following command line:
"C:\Program Files\InstallShield Installation Information\{ProductCode}\setup.exe /uninst"
0 Kudos
MattPow
Level 3

Thanks very much for the reply. 🙂

This patch does indeed resolve the duplicate ARP entries and crash entry in the MSI log when being patched by a Major Upgrade.

Unfortunately the base product does not get the "OnEnd" event notification when being upgraded, even with this patch applied. 😞

To get around this issue I will add an InstallScript custom action just before the end of the upgrade and move my functional code from the "OnEnd" handler into another function.

Once again, thanks for the patch.
0 Kudos
joshstechnij
Flexera
Flexera

The OnEnd event being skipped is expected behavior for InstallScript MSI projects running as the uninstall part of a major upgrade starting with InstallShield 12 and newer. This is due to the changes made to the InstallScript engine starting in IS 12. The OnEnd event used to run as a part of a hidden custom action before IS 12. All InstallScript events that were run as hidden custom actions were moved into and called by the InstallScript engine directly. As a result, if the MSI package is ever run without setup.exe (as is the case when MSI uninstalls an existing product with the RemoveExistingProducts action), those events will not run. (Most of these behavioral changes are covered in the KB article Q112115: HOWTO: Upgrading Projects to InstallShield 12.)

The recommended work around to this behavior would be to use an InstallScript custom action to call any code that was run as a part of the OnEnd event.
0 Kudos
_shielder_
Level 6

joshstechnij,

I'm running 2009 Pro with Service Pack 2. Has this issue been fixed or do I still need to do a Hotfix?

Thanks
0 Kudos
Newmarket
Level 4

I have an InstallScript MSI installation in the field that was built with InstallShield 2008. When I upgrade this version with a Major Upgrade to a new InstallScript MSI installation built in InstallShield 2010 I experience this same problem. The issue ONLY occurs when I'm upgrading my previous installation on a Windows 7 machine. I have not seen the problem on any other OS. All indications with this issue from the Knowledge Base are that this issue was a bug introduced in IS2009 and subsequently fixed. However, as I said, I'm seeing the exact same problem--InstallShield_{prod_code} Uninstall entry is left in the registry causing duplicate ARP entries.

Is this a different problem that existed in IS2008 or that exists in IS2010? Is there a different resolution?

Thank you.
0 Kudos