0
votes

I have created installer with InstallShield 2012 which basically is an MSI packed into setup.exe

The problem is that when I try to remove it (using msiexec /x {productcode} or by "uninstall" in Add/Remove programs (appwiz.cpl)) the process looks fine and uninstallation is complete with success according to verbose log but package is not removed (msiexec /x {productcode} can again be started and calls out msiexec which shows uninstall process) and I still have entry in add-remove programs. This repeates number of times.

The weird thing is that if I start installer in maintenance mode ("change" button in ARP) or start installer and select "Remove" it works as expected.

Most likely this behavior appeared after adding chained package. The installation condition for which is:

Not Installed AND &FeatureName=3

The uninstall condition is set to always be false (the case requre it to remain). But I remove this product using it's own msi. However in order to make it clear I tried to remove uninstall condition or set it to REMOVE~="ALL" on this chained package and it didn't help. While experimenting I was editing msi under c:\Windows\installer before removal. Uninstallation verbose log is around 10 megs and it says uninstallation successful so it's quite hard to investigate.

1) I would appreciate any advices on how would it be better to investigate.

2) And how come that removal works in maintenance mode but don't in uninstall?

3) If the problem is still in chained MSI, is there a way to leave it and to have main MSI removed correctly?

1
I'm pretty sure it was a confirmed InstallShield bug but I can't find the correspondence right now. I ended up adding a custom action that deletes the add/remove entry from registry, but I'm sure there is a better solution.yossiz74
removing add-remove entry is not an option because the package itself remains in repository :( that can be a problem for lets say upgrades at least. and my installation is around 1 Gb .. leaving such in a system is at least "not-nice" ..s1me0ne
I'm ok with removing chained package using it's MSI first and then performing removal of main MSI, but I can not understand why it works only in maintenance mode for main ones1me0ne

1 Answers

0
votes

The problem was that one single feature had it's level "0" but on installation it was changed using condition table to appropriate level (1 or 300 depending on condition) but on uninstall it remained as level "0" The problem is that installer's function for changing feature state do not process features with level "0" so even for REMOVE=ALL this feature state was not atered

Feature: featurename; Installed: Local;   Request: None;   Action: None

In order to fix it i have added condition table entry setting feature level to 300 with condition REMOVE~="ALL".