1 out of 1 rated this helpful Rate this topic

Installer Class

Provides the foundation for custom installations.

Namespace:  System.Configuration.Install
Assembly:  System.Configuration.Install (in System.Configuration.Install.dll)
public class Installer : Component

The Installer type exposes the following members.

  Name Description
Public method Installer Initializes a new instance of the Installer class.
Top
  Name Description
Protected property CanRaiseEvents Gets a value indicating whether the component can raise an event. (Inherited from Component.)
Public property Container Gets the IContainer that contains the Component. (Inherited from Component.)
Public property Context Gets or sets information about the current installation.
Protected property DesignMode Gets a value that indicates whether the Component is currently in design mode. (Inherited from Component.)
Protected property Events Gets the list of event handlers that are attached to this Component. (Inherited from Component.)
Public property HelpText Gets the help text for all the installers in the installer collection.
Public property Installers Gets the collection of installers that this installer contains.
Public property Parent Gets or sets the installer containing the collection that this installer belongs to.
Public property Site Gets or sets the ISite of the Component. (Inherited from Component.)
Top
  Name Description
Public method Commit When overridden in a derived class, completes the install transaction.
Public method CreateObjRef Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.)
Public method Dispose Releases all resources used by the Component. (Inherited from Component.)
Protected method Dispose(Boolean) Releases the unmanaged resources used by the Component and optionally releases the managed resources. (Inherited from Component.)
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Releases unmanaged resources and performs other cleanup operations before the Component is reclaimed by garbage collection. (Inherited from Component.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetLifetimeService Retrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Protected method GetService Returns an object that represents a service provided by the Component or by its Container. (Inherited from Component.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method InitializeLifetimeService Obtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public method Install When overridden in a derived class, performs the installation.
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method MemberwiseClone(Boolean) Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject.)
Protected method OnAfterInstall Raises the AfterInstall event.
Protected method OnAfterRollback Raises the AfterRollback event.
Protected method OnAfterUninstall Raises the AfterUninstall event.
Protected method OnBeforeInstall Raises the BeforeInstall event.
Protected method OnBeforeRollback Raises the BeforeRollback event.
Protected method OnBeforeUninstall Raises the BeforeUninstall event.
Protected method OnCommitted Raises the Committed event.
Protected method OnCommitting Raises the Committing event.
Public method Rollback When overridden in a derived class, restores the pre-installation state of the computer.
Public method ToString Returns a String containing the name of the Component, if any. This method should not be overridden. (Inherited from Component.)
Public method Uninstall When overridden in a derived class, removes an installation.
Top
  Name Description
Public event AfterInstall Occurs after the Install methods of all the installers in the Installers property have run.
Public event AfterRollback Occurs after the installations of all the installers in the Installers property are rolled back.
Public event AfterUninstall Occurs after all the installers in the Installers property perform their uninstallation operations.
Public event BeforeInstall Occurs before the Install method of each installer in the installer collection has run.
Public event BeforeRollback Occurs before the installers in the Installers property are rolled back.
Public event BeforeUninstall Occurs before the installers in the Installers property perform their uninstall operations.
Public event Committed Occurs after all the installers in the Installers property have committed their installations.
Public event Committing Occurs before the installers in the Installers property committ their installations.
Public event Disposed Occurs when the component is disposed by a call to the Dispose method. (Inherited from Component.)
Top

This is the base class for all custom installers in the .NET Framework. Installers are components that help install applications on a computer.

There are several steps you must follow to use an Installer:

  • Inherit the Installer class.

  • Override the Install, Commit, Rollback, and Uninstall methods.

  • Add the RunInstallerAttribute to your derived class and set it to true.

  • Put your derived class in the assembly with your application to install.

  • Invoke the installers. For example, use the InstallUtil.exe to invoke the installers.

The Installers property contains a collection of installers. If this instance of Installer is part of an installer collection, the Parent property is set to the Installer instance that contains the collection. For an example of the use of the Installers collection, see the AssemblyInstaller class.

The Install, Commit, Rollback, and Uninstall methods of the Installer class go through the collection of installers stored in the Installers property, and invokes the corresponding method of each installer.

The Install, Commit, Rollback, and Uninstall methods are not always called on the same Installer instance. For example, one Installer instance might be used while installing and committing an application, and then the reference to that instance is released. Later, uninstalling the application creates a reference to a new Installer instance, meaning that the Uninstall method is called by a different instance of Installer. For this reason, in your derived class, do not save the state of a computer in an installer. Instead, use an IDictionary that is preserved across calls and passed into your Install, Commit, Rollback, and Uninstall methods.

Two situations illustrate the need to save information in the state-saver IDictionary. First, suppose that your installer sets a registry key. It should save the key's original value in the IDictionary. If the installation is rolled back, the original value can be restored. Second, suppose the installer replaces an existing file. Save the existing file in a temporary directory and the location of the new location of the file in the IDictionary. If the installation is rolled back, the newer file is deleted and replaced by the original from the temporary location.

The Installer.Context property contains information about the installation. For example, information about the location of the log file for the installation, the location of the file to save information required by the Uninstall method, and the command line that was entered when the installation executable was run.

The following example demonstrates the use of the Installer class. It creates a class which inherits from Installer. When Commit is about to complete, Committing event occurs and a message is displayed.


using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;

// Set 'RunInstaller' attribute to true.
[RunInstaller(true)]
public class MyInstallerClass: Installer
{
   public MyInstallerClass() :base()
   {
      // Attach the 'Committed' event.
      this.Committed += new InstallEventHandler(MyInstaller_Committed);
      // Attach the 'Committing' event.
      this.Committing += new InstallEventHandler(MyInstaller_Committing);

   }
   // Event handler for 'Committing' event.
   private void MyInstaller_Committing(object sender, InstallEventArgs e)
   {
      Console.WriteLine("");
      Console.WriteLine("Committing Event occured.");
      Console.WriteLine("");
   }
   // Event handler for 'Committed' event.
   private void MyInstaller_Committed(object sender, InstallEventArgs e)
   {
      Console.WriteLine("");
      Console.WriteLine("Committed Event occured.");
      Console.WriteLine("");
   }
   // Override the 'Install' method.
   public override void Install(IDictionary savedState)
   {
      base.Install(savedState);
   }
   // Override the 'Commit' method.
   public override void Commit(IDictionary savedState)
   {
      base.Commit(savedState);
   }
   // Override the 'Rollback' method.
   public override void Rollback(IDictionary savedState)
   {
      base.Rollback(savedState);
   }
   public static void Main()
   {
      Console.WriteLine("Usage : installutil.exe Installer.exe ");
   }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(2000 characters remaining)
Community Content Add
Annotations FAQ