Showing posts with label Advertising info. Show all posts
Showing posts with label Advertising info. Show all posts

Thursday, October 30, 2008

Difference Between Self Heal and Repair

Self Heal and Repair are two different concepts in Windows Installer which people many times consider to be the same thing, however there is difference in these two.

Self Heal is triggered by advertised shortcuts, or other advertising information in the package which eventually Repairs the application.

When the application is launched by advertised shortcut, it checks for all the key paths of the Current Feature, if any of the key paths is missing it will launch Repair.

Note that if there are multiple features then it will not check the missing key paths of the other features, but only the feature of which the advertised shortcut is launched.

Repair of an MSI can be triggered by

Repair button in Add/Remove programs
Giving the command line msiexec /f{other option} {MSI name}
Self Heal by advertised shortcut or other advertising information.
Active setup
Once the repair of the package is triggered, even with Self Heal, then the whole of the MSI is reinstalled. Then it does not see that only the feature which triggered the self heal should be repaired, but the whole MSI, by which I mean, all its features are reinstalled.

Hope this clarifies the difference between two.

Friday, July 20, 2007

Advertising info

The Darwin Descriptor for COM Advertising is stored as the InProcServer32 registry value.
The advertised shortcut's TargetPath is a combination of the ProductCode & Darwin Descriptor + some tags. Open the shortcut using ex. notepad and you'll find the descriptor there.
A Darwin Descriptor is an encoded string and when decoded produces a combination of the ProductCode, Feature & ComponentId(s).As the Darwin Descriptor is stored as a "REG_MULTI_SZ" entry it can contain more then one descriptor where other packages may have installed the same component.
You should be able to find Darwin Descriptors under the following locations

HKCR\CLSID\(clsid)\InprocServer32
HKCR\Installer\AssembliesHKCR\Installer\Components
HKCR\Installer\Win32Assemblies
HKCR\(progid)\shell\(mycustomname;)\command
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\(sid)\Products\(compressed)\Features(targetpath)

Contributor: AngelD (from juice.altris.com)