[This is preliminary documentation and subject to change.]
As well as being an installation technology, the installer manages the complex array of components found in applications. The installer saves system state to track everything needed for an application to install and run smoothly. It can resolve which applications require a particular component, which files make up that component, and where those files are. The installer can also determine when a file is no longer needed and can safely remove it, reducing wasted disk space.
There is also an installation database that describes how to install an application in any situation. This database includes tables for registry entries, directory structure, components, features, files, installation sequence, dialog boxes, and controls. For example, if an application requests a particular feature (for more information, see Requesting a Feature), and the application requests the installer to install the feature, the installer runs a query that resolves issues such as:
This process is shown in the following illustration.
The installer also enables the application to keep usage metrics on components. So, when a component is not being used, it can be taken off the hard drive, further reducing the disk space requirements. For a stand-alone user, this method can eliminate the usual installation process; this user can simply start using a new application. As features are used, components are migrated off the installation medium and onto the hard drive. After a time, the optimal configuration for that user is locally available. Only the components used regularly take up any disk space. Because installations can become much more efficient, developers are free to incorporate more features without the risk of complicating the setup procedure, or taking up too much disk space.