lauantai 29. lokakuuta 2011

Minor upgrade in Windows Installer does not update files

We had a problem with our product that it didn't update files of previous installation when runnning Service Pack as minor upgrade. We are using InstallShield 12 to build our setup packages. Installation itself run successfully but it left one feature in Advertised state and no files were upgraded.

When investigating install log it appeared through SELMGR messages that one component that exist in previous version were missing from feature that were left in Advertised state.

MSI (s) (88:84) [13:24:44:060]: Feature: CustomTools_Files; Installed: Advertise;

MSI (s) (88:84) [13:24:43:607]: SELMGR: ComponentId '{9EE2A7ED-8A13-0C17-B01F-C8B3B9A1E18E}' is registered to feature 'CustomTools_Files', but is not present in the Component table. Removal of components from a feature is not supported!

That was not straightforward to notice since the component was missing from VC 2008 runtime libraries included as merge modules. One merge module was updated by automatic Windows update service on our build server. I know - this is so no-no to do on build server.

By upgrade rules a major upgrade is compulsory when removing a component from a feature. After applying major upgrade the upgrade from previous service pack went fine and no features were left in Advertised state.