cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Nick_Umanski
Level 7

Feature Selection on Upgrade

How does a basic MSI package determine what features were installed previously when performing a major upgrade?

I have a problem which only affects a small number of machines in that when attempting to upgrade our product, the upgrade appears to complete successfully, but no files are actually upgraded.  Further investigating found that when running the Setup, the package determined that no features had been installed (even though they had and the files from those features are present on the machine).  Thus when running silently, the product 'successfully' upgraded nothing and when running in UI mode, the CustomSetup dialog was displayed with no features pre-selected (not even the default ones).

Note, this only affects a small number of customer machines, most upgrade successfully and we cannot recreate the problem in our test environment.

Thanks in advance.

Labels (1)
0 Kudos
(2) Replies
Jenifer
Flexera Alumni

Hi @Nick_Umanski ,

 

You can refer table given in this link for what can/can't be done in different upgrade options:

https://helpnet.flexerasoftware.com/installshield22helplib/helplibrary/MajorMinorSmall.htm

 

Generally MigrateFeatureSets function of msi will play a role in feature migration in major upgrades:

https://docs.microsoft.com/en-us/windows/win32/msi/migratefeaturestates-action

When you say upgrade works in different machines,can you compare the log files between working & non-working machine  installation and upload it here if possible.That can give you clue on what might go wrong.

 

Thanks,

Jenifer

0 Kudos

Thanks for the response Jenifer. I am familiar with what should happen and I did compare the logs of a working machine versus non working one (although it stated it had completed successfully), which is how I determined that the non working one didn't think any of the features were installed.

What I needed was the nut and bolts of how the MSI engine determined which features were installed and after further investigation I found that it was a set of registry settings namely.

  • [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Features\<MangledProductGUID>]
  • "<TopLevelFeature>"=""
  • "<SubFeature>"="<TopLevelFeature>"

 

  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\<MangledProductGUID>\Features]
  • "<TopLevelFeature>"="<HugeRandomStringOfCharacters>"
  • "<SubFeature>"="<HugeButDifferentRandomStringOfCharacters> <TopLevelFeature>"

Where <MangledProductGUID> = 42E15F854475F1D41AD1B0543CC43EFA instead of {58F51E24-5744-4D1F-A11D-0B45C34CE3AF}

On a bad machine I found the second set of entries missing, while the first set of entries appeared corrupted as follows:

  • [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Features\<MangledProductGUID>]
  • "<TopLevelFeature>"="[ACK]"
  • "<SubFeature>"="[ACK] <TopLevelFeature>"

Further investigation found that the apparant corruption was the unicode character ACK, which is actually a valid entries used by the MSI engine to indicate that a feature in not installed. It appears that the entries for all features are added to the registry with the ACK character flagging which ones aren't installed. However, it doesn't seem possible or shouldn't be possible to have the MSI engine flag the <TopLevelFeature> as not installed. Attempting to install the product on a fresh machine and choosing no features on the CustomSetup dialog results in no install of the product, rather than a featureless install, even though the install runs to completion.

At this point I don't think the problem is in the installer but an environmental issue. The problem has happened on about 100 out of 800 machines on a single customer with the last upgrade sent out. This customer installs the product via a GPO process. Other customers have no problem and some of them also use a GPO process. Although a second customer did initially report issues this turned out to be on a single machine with an unrelated problem. However, my Support department are coming to me for answers. But although I can now manually replicate the problem, I can't explain how the customer machines got into that state in the first place and the customer is adamant that there is nothing wrong with their environment.

0 Kudos