0
votes

I'm having an issue with an MSI created with InstallShield 2010 uninstalling correctly. My InstallShield project contains 5 different features all of which installed correctly, according to the logs.

Install Log

Action start 14:17:21: InstallValidate.
MSI (s) (60:48) [14:17:21:819]: PROPERTY CHANGE: Deleting MsiRestartManagerSessionKey property. Its current value is '87c91cda6f92ea4989c01c65f841e520'.
MSI (s) (60:48) [14:17:21:819]: Feature: F1; Installed: Absent;   Request: Local;   Action: Local
MSI (s) (60:48) [14:17:21:819]: Feature: F2; Installed: Absent;   Request: Local;   Action: Local
MSI (s) (60:48) [14:17:21:819]: Feature: F3; Installed: Absent;   Request: Local;   Action: Local
MSI (s) (60:48) [14:17:21:819]: Feature: F4; Installed: Absent;   Request: Local;   Action: Local
MSI (s) (60:48) [14:17:21:819]: Feature: F5; Installed: Absent;   Request: Local;   Action: Local

...

=== Logging stopped: 1/17/2012  14:21:37 ===
MSI (c) (14:1C) [14:21:37:566]: Note: 1: 1707 
MSI (c) (14:1C) [14:21:37:566]: Product: Foo -- Installation operation completed successfully.

MSI (c) (14:1C) [14:21:37:566]: Windows Installer installed the product. Product Name: Foo. Product Version: . Product Language: 1033. Installation success or error status: 0.

However, when I attempt an uninstall using the same MSI one of the features shows up as not being installed and is subsequently not uninstalled.

Uninstall Log

MSI (s) (38:04) [14:31:09:730]: Doing action: InstallValidate
Action ended 14:31:09: SetODBCFolders. Return value 0.
MSI (s) (38:04) [14:31:09:730]: PROPERTY CHANGE: Deleting MsiRestartManagerSessionKey property. Its current value is '63009fbd7945fe4d8897ff58c1aa8e21'.
MSI (s) (38:04) [14:31:09:730]: Feature: F1; Installed: Absent;   Request: Null;   Action: Null
MSI (s) (38:04) [14:31:09:730]: Feature: F2; Installed: Local;   Request: Absent;   Action: Absent
MSI (s) (38:04) [14:31:09:730]: Feature: F3; Installed: Local;   Request: Absent;   Action: Absent
MSI (s) (38:04) [14:31:09:730]: Feature: F4; Installed: Local;   Request: Absent;   Action: Absent
MSI (s) (38:04) [14:31:09:730]: Feature: F5; Installed: Local;   Request: Absent;   Action: Absent

When installing the latest MSI, after uninstalling, the log looks like the install log above. Even though the MSI doesn't see the F1 feature as being installed and reinstalls it, all of the files that are already on the system because of the failed uninstall do not get overwritten with newer files.

Any help would be greatly appreciated. Thank you in advance.

2
Is the F1 feature installed conditionally? If it is, how did you configure the condition?rmrrm
F1 is installed conditionally with the following Level 0: NOT ((IIS_VERSION>="#7") AND (NETVERSION>="3.5.30729.01") AND (ORACLEVERSION>="11.1.0.7.0") AND (POWERSHELLVERSION>="2.0") AND (WSEVERSION><"Version=3.0")) I've checked the install/uninstall logs on all of the above properties and they all match up. This condition has not changed and has worked well in the past.SadZ

2 Answers

1
votes

Odds are you should be seeing the following build warning:

Val0005: A condition for feature 'XXXXXXX' may possibly set the InstallLevel for this feature to zero at runtime. If this feature gets enabled on install, you must author similar logic to ensure that it is also enabled in maintenance mode, otherwise in an upgrade the feature will be ignored.

Basically if this feature gets installed you have to make sure you don't set it to 0 during the maintenance. If it does it'll be ignored like you are seeing.

0
votes

I have had a similar issue.
Things to check for:

Installshield component, disable sharing to prevent reference counting
Component Shared: No

Check registry for reference counts. Search this list to locate file: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs
If you developed an earlier buggy installer, bad reference counts can remain. You can verify this by installing in new unique folder and see if the problem persists.

Installshield, check for duplicate components. You may have the same file being installed twice due to an older entry that was not removed entirely.

Turn on verbose logging to investigate:
https://support.microsoft.com/en-us/kb/2545723
Log files name MSI*.LOG will end up in eg. C:\Users\Name\AppData\Local\Temp
Search for the files that are not being uninstalled and compare with others.
In my case Action: Null for the bad one, Action: Absent for the others.