A package describes the installation of one or more full
products and is universally identified by a
GUID. A product is made up of
components, grouped into
features. Windows Installer does not handle dependencies between products.
Products A single, installed, working program (or set of programs) is a
product. A product is identified by a unique GUID (the ProductCode property) providing an authoritative identity throughout the world. The GUID, in combination with the version number (ProductVersion property), allows for release management of the product's files and registry keys. A
package includes the package logic and other
metadata that relates to how the package executes when running. For example, changing an
EXE file in the product may require the ProductCode or ProductVersion to be changed for the release management. However, merely changing or adding a launch condition (with the product remaining exactly the same as the prior version) would still require the PackageCode to change for release management of the MSI file.
Features A
feature is a hierarchical group of components. A feature may contain any number of components and other sub-features. Smaller packages can consist of a single feature. More complex installers may display a "custom setup" dialog box, from which the user can select which features to install or remove. The package author defines the product features. A
word processor, for example, might place the program's core file into one feature, and the program's help files, optional spelling checker and stationery modules into additional features.
Components A
component is the basic unit of a product. Each component is treated by Windows Installer as a unit. The installer cannot install just part of a component. Components can contain program
files,
folders,
COM components,
registry keys, and
shortcuts. The user does not directly interact with components. Components are identified globally by GUIDs; thus the same component can be shared among several features of the same package or multiple packages, ideally through the use of
Merge Modules.
Key paths A
key path is a specific file, registry key, or
ODBC data source that the package author specifies as critical for a given component. Because a file is the most common type of key path, the term
key file is commonly used. A component can contain at most one key path; if a component has no explicit key path, the component's destination folder is taken to be the key path. When an MSI-based program is launched, Windows Installer checks the existence of key paths. If there is a mismatch between the current system state and the value specified in the MSI package (e.g., a key file is missing), the related feature is re-installed. This process is known as
self-healing or
self-repair. No two components should use the same key path. ==Developing installer packages==