INFO: Description of Resiliency in Windows Installer

This article has been archived. It is offered "as is" and will no longer be updated.
This article describes how Windows Installer implements resiliency for damaged installations. This article also describes how to remove resiliency in authored packages, and describes the loss of functionality that occurs if you do so.
More information

Description of Resiliency

Resiliency is a program's ability to recover gracefully from situations in which a vital component is missing. By authoring an installation package and by using the Installer functions, developers can use Windows Installer to produce resilient programs that can recover from such situations.

How Resiliency Works

Windows Installer reinstalls a feature if it determines that a file or registry key that is specified in the KeyPath column of the Component table is missing. When a program is started, Windows Installer first checks the KeyPath information for that file's or registry key's component, and then verifies that the file or registry key is present. If the file or registry key is missing, Windows Installer uses the KeyPath information to repair that feature. The KeyPath information is verified for all of the components of the feature that is being used.

A component might contain more than one file or registry key. However, you can specify only one KeyPath value for each component. If you want every file in your package to be resilient, use a separate component for each file. If you do, each file can have its own KeyPath information.

If You Do Not Want Resiliency for a File

If you do not want a file to be resilient, you can leave the KeyPath information off of a component. This causes the file not to be resilient. Microsoft does not recommend that you do this. If you leave the KeyPath information off of a component, you cannot advertise that component. Advertising uses the KeyPath information of a component to activate the installation of the advertised component. The Windows Logo specification states that a package must be able to be advertised to meet the specification standards. Instead of leaving the KeyPath information off of a component, Microsoft recommends that you use a component with multiple files. The KeyPath information for that component can then point to a file to which resiliency can be applied.

Resiliency and Folders

You might have a component that has no KeyPath information, and therefore has no resiliency, but that is still reinstalled. This behavior may occur if the folder or feature in which the component is installed is removed. A null KeyPath column indicates that Windows Installer will use the component installation folder as the KeyPath information. This reinstalls any missing components in either the folder or the feature that is missing.

When Resiliency Does Not Work

Resiliency does not reinstall a file or registry key if the KeyPath information is replaced with a file or registry key that has the same name. The Windows Installer engine checks only for the file's existence in the installation folder. If, for example, the Sample.exe file is resilient, and is replaced with another Sample.exe file, resiliency does not repair the file because it is still present in the installation folder.
For additional information about how to turn off Windows Installer reseliency, click the article number below to view the article in the Microsoft Knowledge Base:
303439 HOWTO: Disable Windows Installer Resiliency

Article ID: 290997 - Last Review: 12/06/2015 01:01:42 - Revision: 3.0

  • kbnosurvey kbarchive kbenv kbinfo KB290997