|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer|
When you create installation components for your Framework Services components, a default class called ProjectInstaller is created in your project. This file contains all of the installation components you create for that project. The following figure shows this process.
Installation Components and Project
After you create an installation component and its associated ProjectInstaller class for your project, you compile the project into a DLL or EXE. You then can do one of two things:
- You can use the installutil.exe tool to install that DLL on your local computer.
- You can create a deployment package for your application and add your project's DLL to it as a custom action. When deployment occurs, the deployment project recognizes that it needs to run the ProjectInstaller class, and it launches the installation process for your component resources.
Resource installation is transactional. That is, the installation processes through each installer in your ProjectInstaller class (or any class with the RunInstallerAttribute value set to true) and makes sure that no errors occur before committing the installation as final. If any errors occur along the way, all of the resources that have previously been installed are uninstalled in a rollback transaction. Rollback is performed in the reverse order of install. The following figure shows this process.
In this picture, the ProjectInstaller class is installing two component resources — a message queue and an event log. The message queue installation succeeds without error, so processing is passed on to the event log installation. An error is encountered in this log, so a rollback begins. During the rollback, the message queue is uninstalled and the system is returned to its original state. For more information on how the Rollback method works, see State Storage in the Installation Process.
For a list of the overall steps in creating and testing an installation component, see Creating Installation Components - High-Level Process.