cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Jeff19
Level 2

Change/Remove Button Disappears after Minor Upgrade

Hi,

I recently upgraded from IS 11.5 to IS2008. After installing a minor update of my software, the change/remove button disappears in the Add/Remove programs window, so there is no way to uninstall the software. I could use some help resolving this issue, thanks.

I'm using an Installscript MSI Project. More Info below.

1. Create project X using Installshield 11.5
2. Install software X.
3. Install Installshield 2008 on my machine.
4. Upgrade project X from a 11.5 project to IS2008 project.
5. Create minor update for project X using IS2008.
6. Install the update on my system.
7. Click on Add/Remove programs and the 'Change/Remove' button is gone.
Labels (1)
0 Kudos

(6) Replies
cbragg
Level 7

Make sure that your upgrade does not have the ARPNOREMOVE and ARPNOMODIFY properties in the upgrade table. Please note also that setting them to 0 does not work, they have to be removed because it is their exsitance that is checked by installer, not their value.

On a sideline educational note: I have a confirmed reported bug with macrovision on this issue actually because if you set these properties to 0 in the direct editor the GUI reports that the remove and change buttons are enabled but if you run them up they are actually disabled :eek:
0 Kudos
Jeff19
Level 2

Thanks for the response, cbragg. I checked my project and I do not have the ARPNOREMOVE & ARPNOMODIFY properties in the upgrade table, but the problem still occurs. Is there any way I can add code to my script to fix the problem as a temporary fix?

I looked into the RegDBSetItem(REGDB_UNINSTALL_NOREMOVE...) and RegDBSetItem(REGDB_UNINSTALL_NOMODIFY..) functions but was unable to get them to work. Thanks in advance.
0 Kudos
joshstechnij
Level 10 Flexeran
Level 10 Flexeran

The NoModify and NoRemove registry entries can cause this behavior when performing a minor upgrade of a pre-IS 12 InstallScript MSI to a post-IS 12 InstallScript MSI due to the changes made to the InstallScript engine. A major upgrade is generally recommended for InstallScript MSI projects migrating from version older than IS 12 to IS 12 or newer.

You may be able to work around this behavior by deleting the NoModify and NoRemove registry entries from the OnEnd event with RegDBDeleteValue function, with the following string used for the uninstall key:
szUninstKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall" ^ UNINSTALLKEY;
0 Kudos
davbrown2
Level 4

joshstechnij wrote:
The NoModify and NoRemove registry entries can cause this behavior when performing a minor upgrade of a pre-IS 12 InstallScript MSI to a post-IS 12 InstallScript MSI due to the changes made to the InstallScript engine. A major upgrade is generally recommended for InstallScript MSI projects migrating from version older than IS 12 to IS 12 or newer.

You may be able to work around this behavior by deleting the NoModify and NoRemove registry entries from the OnEnd event with RegDBDeleteValue function, with the following string used for the uninstall key:
szUninstKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall" ^ UNINSTALLKEY;



I also had this problem - see thread http://community.macrovision.com/showthread.php?t=176080

I found that I needed to use a + rather than a ^ before PRODUCT_GUID. Otherwise an extra backslash gets introduced (UninstallShield_\{..guid..} and it doesn't work.

However, this solved the issue only partially - I am now investigating a recurrence (when updating to a later version of my IS2008-based project) - i.e. I think it reoccurs when I upgrade from v1 (IS11-based) to v2 (IS2008-based) to v2.1 (IS2008) - at least that's my conjecture. Need to investigate.

Unfortunately, the reoccurrence was first noticed at a customer site - ugh...
0 Kudos
davbrown2
Level 4

davbrown2 wrote:
I also had this problem - see thread http://community.macrovision.com/showthread.php?t=176080

I found that I needed to use a + rather than a ^ before PRODUCT_GUID. Otherwise an extra backslash gets introduced (UninstallShield_\{..guid..} and it doesn't work.

However, this solved the issue only partially - I am now investigating a recurrence (when updating to a later version of my IS2008-based project) - i.e. I think it reoccurs when I upgrade from v1 (IS11-based) to v2 (IS2008-based) to v2.1 (IS2008) - at least that's my conjecture. Need to investigate.

Unfortunately, the reoccurrence was first noticed at a customer site - ugh...


OK - more details. The solution seems to work when the IS11->IS2008 transition happens with a major update, but fails when the transition is a minor update. Perhaps OnEnd() is invoked only during a major update? Seems odd to me.

So, in our case, we had a major update from 5.29 to 5.30, and upgraded to IS2008 at 5.32. the OnEnd() solution works for

5.29 -> 5.33.0215
IS11 -> IS2008 major update

(this is what I tested mostly, since originally the goal was to move to IS2008 at 5.30, but this bug prevented us from doing it at that time)


as does this:
5.29 -> 5.32.011 > 5.33.0215
(IS11-> IS2008 major update -> IS2008 minor update)

but fails for:

5.31 > 5.33
IS11 -> IS2008 minor update

(as does this, but that is a subset of the above)
5.29 -> 5.31.1212 > 5.33.0215
(IS11-> IS11 major update -> IS2008 minor update)
0 Kudos
davbrown2
Level 4

davbrown2 wrote:
I also had this problem - see thread http://community.macrovision.com/showthread.php?t=176080

I found that I needed to use a + rather than a ^ before PRODUCT_GUID. Otherwise an extra backslash gets introduced (UninstallShield_\{..guid..} and it doesn't work.

However, this solved the issue only partially - I am now investigating a recurrence (when updating to a later version of my IS2008-based project) - i.e. I think it reoccurs when I upgrade from v1 (IS11-based) to v2 (IS2008-based) to v2.1 (IS2008) - at least that's my conjecture. Need to investigate.

Unfortunately, the reoccurrence was first noticed at a customer site - ugh...



Aha - false alarm - somehow my code had a carat again (instead of a plus sign, as I determined earlier. Must have checked in the wrong version of setup.rul into our source code control system. Changed it to +, works again.
0 Kudos