Role-based Guide to Windows Installer Documentation
Windows Installer is the recommended solution for the installation and setup of applications on Windows. Therefore, some of the information contained in this SDK will be of interest to a wide range of software development and IT professionals. This section is provided as a guide to readers who prefer to see links to topics organized by professional role and common task scenarios. Because roles can differ greatly between organizations, the following grouping should only be considered as a guide to a location to start searching for the information you need.
This documentation is intended for software developers who want to make applications that use Windows Installer. As the primary source of reference material for the installer, the SDK provides information about installation packages and the installer service. It contains complete descriptions of the application programming interface (API) and the elements of the installer database.
For more information, see Other Sources of Windows Installer Information.
Application Developers
Application developers create applications that call the Windows Installer application programming interface and install Windows installer packages at run time. The Windows Installer can do work in an application such as self-repair and installation-on-demand. Typically, application Developers do the following:
Enable installation-on-demand of applications at run time from within another application.
For more information, see the following:
Enable self-repair of applications by reinstalling components as needed at run time.
For more information, see the following:
Display a user interface to collect user information and configuration preferences the first time an application is installed or run. The user interface must be added by the Setup Author of the Windows Installer package.
For more information, see the following:
Create applications that use an indirection model to refer to components with parallel functionality. The qualified component categories must be added by the Setup Author of the Windows Installer package.
For more information, see the following:
Use private and side-by-side assemblies to isolate applications and reduce DLL conflicts.
For more information, see the following:
- Assemblies
- Assembly Registry Keys Written by Windows Installer
- Installing Win32 Assemblies for Side-by-Side Sharing on Windows XP
- Installing Win32 Assemblies for the Private Use of an Application on Windows XP
- MsiAssembly Table
- MsiAssemblyName Table
- MsiProvideAssembly
- MsiWin32AssemblySupport Property
- MsiNetAssemblySupport Property
- Isolated Components
Prepare the application to install its own comprehensive major upgrades.
For more information, see the following:
Prepare the application to install its own minor upgrades, small updates, or fixes.
For more information, see the following:
Organize application resources into components that can work with the Windows Installer.
For more information, see the following:
Setup Authors
Setup Authors create Windows Installer packages (.msi files) that contain the setup logic and information needed to install an application. They typically use authoring tools such as Orca.exe to populate the Windows Installer database with the setup logic and information. Typically, Setup Authors do the following:
Determine the functionality available with different Windows Installer versions.
For more information, see the following:
Organize application resources into Windows Installer components.
For more information, see the following:
Use third-party Windows Installer package authoring tools or SDK tools such as Orca.exe to populate an installation database and create a Windows Installer package.
For more information, see the following:
- Windows Installer Development Tools
- Installation Package, About the Installer Database
- Windows Installer File Extensions
- Database Tables
- Package Codes
- Authoring a Large Package
- Windows Installer on 64-bit Operating Systems
- Naming Custom Tables, Properties, and Actions
- OLE Limitations on Streams
- Column Definition Format
- Reducing the Size of an .msi File
Author the Windows Installer database to install files.
For more information, see the following:
- Core Tables Group
- File Tables Group
- File Table
- File Searching
- File Costing
- File Installation
- Companion Files
- File Versioning Rules
- Default File Versioning
- Replacing Existing Files
- Using Cabinets and Compressed Sources
- Removing Stranded Files
- Installing Permanent Components, Files, Fonts, Registry Keys
- FileSFPCatalog Table
- Searching for a File and Creating a Property Holding the File's Path
- Searching for a Directory and a File in the Directory
- Windows Installer Examples
Author a Windows Installer database that installs a directory structure and folders.
For more information, see the following:
Author a Windows Installer database that installs registry keys.
For more information, see the following:
- Core Tables Group
- Registry Tables Group
- Registry Table
- Modifying the Registry
- Adding or Removing Registry Keys on the Installation or Removal of Components
- Adding and Removing an Application and Leaving No Trace in the Registry
- Installing Permanent Components, Files, Fonts, Registry Keys
- Searching for Existing Applications, Files, Registry Entries or .ini File Entries
- Searching for a Registry Entry and Creating a Property Holding the Value of the Registry
- Assembly Registry Keys Written by the Windows Installer
- Uninstall Registry Key
- SelfReg Table
- Specifying the Order of Self Registration
- Windows Installer Examples
Author a Windows Installer database that installs services.
For more information, see the following:
Author a Windows Installer database that installs isolated components or COM components.
For more information, see the following:
- Registry Tables Group
- Class Table
- Complus Table
- Isolated Components
- Using Isolated Components
- Installation of Isolated Components
- Reinstallation of Isolated Components
- Removal of Isolated Components
- Installing a COM Component to a Private Location
- Make a COM Component in an Existing Package Private
- Installing a COM+ Application with the Windows Installer
- Installing a non-COM Component to a Private Location
- Make a non-COM Component in an Existing Package Private
Author a Windows Installer database that installs assemblies.
For more information, see the following:
Author a Windows Installer database that installs ODBC drivers and translators.
For more information, see the following:
Author a Windows Installer database that installs MIME.
For more information, see the following:
Author a Windows Installer database that installs environment variables.
For more information, see the following:
Author a Windows Installer database that installs shortcuts.
For more information, see the following:
Author a Windows Installer database that installs multiple instances of applications.
For more information, see the following:
Specify default feature selection states and options.
For more information, see the following:
Specify conditions that must be met to install an application or selected components.
For more information, see the following:
Author the sequence of actions used to install the application.
For more information, see the following:
- Using a Sequence Table
- Installation Procedure Tables Group
- Sequence Table Detailed Example
- Actions with Sequencing Restrictions
- Actions without Sequencing Restrictions
- Using Properties in Conditional Statements
- Conditional Statement Syntax
- Examples of Conditional Statement Syntax
- Conditioning Actions to Run During Removal
- Standard Actions
- Windows Installer Examples
Prepare the installation package of the application for future upgrades of the application by the Windows Installer service.
For more information, see the following:
Troubleshoot Windows Installer packages under development.
For more information, see the following:
- Package Validation
- Internal Consistency Evaluators - ICEs
- Windows Installer Logging
- Checking the Installation of Features, Components, Files
- Authoring a Large Package
- Wilogutl.exe
- Windows Installer Development Tools
- Validating Merge Modules
- Validating an Installation Database
- Validating an Installation Upgrade
- Searching for a Broken Feature or Component
- Windows Installer Error Messages
- Logging of Reboot Requests
Ensure a secure setup and installation of the application.
For more information, see the following:
- Guidelines for Authoring Secure Installations
- Guidelines for Securing Custom Actions
- Custom Action Security
- Guidelines for Securing Packages on Locked-Down Computers
- Authoring a Fully Verified Signed Installation Using Automation
- A URL-Based Windows Installer Installation Example
- Authoring the User Interface for Password Input
- Digital Signatures and Windows Installer
- Using Windows Installer with UAC
- User Account Control (UAC) Patching
- Msicert.exe
- AdminUser property
- Privileged property
- SecureCustomProperties property
Create a user interface to present options to configure the installation and obtain information from the user about the pending installation process.
For more information, see the following:
Create an external user interface to present a custom user interface to configure the installation and obtain information from the user about the pending installation process.
For more information, see the following:
Set information for the application in Add/Remove Programs (ARP.)
For more information, see the following:
Write custom actions to handle setup logic that is not natively supported by Windows Installer.
For more information, see the following:
- Custom Actions
- Summary List of All Custom Action Types
- Guidelines for Securing Custom Actions
- Custom Action Reference
- Using a Custom Action to Create User Accounts on a Local Computer
- Using a Custom Action to Launch an Installed File at the End of the Installation
- Accessing a Database or Session from Inside a Custom Action
- Accessing the Current Installer Session from Inside a Custom Action
- Changing the System State Using a Custom Action
Bootstrap the Windows Installer onto a user's computer.
For more information, see the following:
Adhere to Active Accessibility guidelines when writing Windows Installer packages.
For more information, see the following:
Prepare for the internationalization of an application setup.
For more information, see the following:
- Preparing a Windows Installer Package for Localization,
- Localizing a Windows Installer Package
- Code Page Handling (Windows Installer)
- Adding Localized Resources
- A Localization Example
- Localizing the Error and ActionText Tables
- Localizing Database Columns
- Creating a Database with a Neutral Code Page
- Code Page Handling of Imported and Exported Tables
- Localizing the Language Displayed by Dialogs
- Importing Localized Error and ActionText Tables
- Updating ProductLanguage and ProductCode Properties
- Updating a Summary Information Stream
- Qualified Components
- UIText Table
- Manage Language and Codepage
- Checking the Installation Database Code Page
Create Windows Installer packages for 32-bit and 64-bit platforms.
For more information, see the following:
Redistribute shared Windows Installer components and setup logic as merge modules.
For more information, see the following:
Schedule or suppress reboots during a Windows Installer installation.
For more information, see the following:
Create updates or fixes for an existing application by creating a patch.
For more information, see the following:
Author a dual-purpose package capable of installing an application either for only the current user or for all users of the computer.
For more information, see the following:
Customize services on the computer using the Windows Installer.
For more information, see the following:
Secure resources on the computer using the Windows Installer.
For more information, see the following:
Enumerate all components installed on the computer and obtain the key path for the component.
For more information, see the following:
Install multiple packages using transaction processing.
For more information, see the following:
Embed a custom user interface in the Windows Installer package.
For more information, see the following:
IT Professionals
IT Professionals and Administrators customize and deploy existing Windows Installer packages. These users repackage setups for existing applications into Windows Installer installation packages, and install and maintain administrative images of Windows Installer installations on networks.
Customize applications and setup by generating and applying Windows Installer transforms
For more information, see the following:
Deploy a Windows Installer installation package, update, or patch.
For more information, see the following:
- Installing an Application
- Patching and Upgrades
- Transforms
- Installing a Package with Elevated Privileges for a Non-Admin
- Applying Major Upgrades by Patching the Local Installation of the Product
- Applying Major Upgrades by Installing the Product
- Applying Small Updates by Patching the Local Installation of the Product
- Applying Small Updates by Reinstalling the Product
- Applying Small Updates by Patching an Administrative Image
- Patching Initial Installations
- Command Line Options
Troubleshoot Windows Installer packages.
For more information, see the following:
Use scripting to query Windows Installer packages for information about a product and modify the installation.
For more information, see the following:
Create and maintain administrative installations.
For more information, see the following:
Make an application available to all users of a computer or to a specified user only.
For more information, see the following:
Interpret packages, install products, and configure feature options using a command line.
For more information, see the following:
- Command Line Options
- Setting Public Property Values on the Command Line
- Getting and Setting Properties
- Reinstalling a Feature or Application
- Applying Small Updates by Patching the Local Installation of the Product
- Applying Small Updates by Reinstalling the Product
- Changing the Target Location for a Directory
- Applying Small Updates by Patching an Administrative Image
- Applying Major Upgrades by Installing the Product
- Configuration Properties
- Feature Installation Options Properties
Work with policy to manage access rights and permissions.
For more information, see the following:
- Machine Policies,
- User Policies,
- Installing a Package with Elevated Privileges for a Non-Admin
- Advertising a Per-User Application To Be Installed with Elevated Privileges
- Using a Custom Action to Create User Accounts on a Local Computer
- AdminUser Property
- Privileged Property
- EnableUserControl Property
- UserSID Property
- SecureCustomProperties Property
Install multiple packages using transaction processing.
For more information, see the following:
Embed a custom user interface within a Windows Installer package..
For more information, see the following:
Infrastructure Developers
Infrastructure Developers can create unified platforms for the deployment and management of software that uses the Windows Installer service. They can use the Windows Installer programming interface to query, manage, and distribute applications, patches, and sources on a system.
Locate, inventory and query for the state, information, and clients of components.
For more information, see the following:
Inventory and query for information and the state of products and features.
For more information, see the following:
Improve source resiliency by using the Windows Installer to inventory, query, and modify the source list of applications, upgrades, and patches.
For more information, see the following:
Improve source resiliency by using the Windows Installer to inventory, query, and modify media sources.
For more information, see the following:
Inventory and query for information and the state of patches.
For more information, see the following:
Work with policy to manage access rights and permissions.
For more information, see the following:
- Machine Policies
- User Policies
- Installing a Package with Elevated Privileges for a Non-Admin
- Advertising a Per-User Application To Be Installed with Elevated Privileges
- Using a Custom Action to Create User Accounts on a Local Computer
- AdminUser Property
- Privileged Property
- EnableUserControl Property
- UserSID Property
- SecureCustomProperties Property