This documentation is archived and is not being maintained.

InstallerCollection Class

Contains a collection of installers to be run during an installation.

Namespace:  System.Configuration.Install
Assembly:  System.Configuration.Install (in System.Configuration.Install.dll)

public class InstallerCollection : CollectionBase

The InstallerCollection provides the methods and properties that your application needs to manage a collection of Installer objects.

Use any of the following three ways to add installers to the collection:

  • The Add method adds a single installer to the collection.

  • The AddRange methods add multiple installers to the collection.

  • The Insert method and the Item property, which is the InstallerCollection indexer, each add a single installer to the collection at the specified index.

Remove installers through the Remove method. Check whether an installer is in the collection by using the Contains method. Find where an installer is located in the collection by using the IndexOf method.

The installers in a collection are run when the installer containing the collection, as specified by the Installer.Parent property, calls their Install, Commit, Rollback, or Uninstall methods.

For examples of the usage of an installer collection, see the AssemblyInstaller and TransactedInstaller classes.

The following example demonstrates the Add method of the InstallerCollection class. This example provides an implementation similar to that of Installer Tool (Installutil.exe). It installs assemblies with the options preceding that particular assembly. If an option is not specified for an assembly, the previous assembly's options are taken if there is a previous assembly in the list. If the "/u" or "/uninstall" option is specified, the assemblies are uninstalled. If the "/?" or "/help" option is provided, the help information is displayed to the console.

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

public class InstallerCollection_Add
   public static void Main(String[] args)
      ArrayList options = new ArrayList();
      String myOption;
      bool toUnInstall = false;
      bool toPrintHelp = false;
      TransactedInstaller myTransactedInstaller = new TransactedInstaller();
      AssemblyInstaller myAssemblyInstaller;
      InstallContext myInstallContext;

         for(int i = 0; i < args.Length; i++)
            // Process the arguments. 
            if(args[i].StartsWith("/") || args[i].StartsWith("-"))
               myOption = args[i].Substring(1);
               // Determine whether the option is to 'uninstall' a assembly. 
               if(String.Compare(myOption, "u", true) == 0 ||
                  String.Compare(myOption, "uninstall", true) == 0)
                  toUnInstall = true;
               // Determine whether the option is for printing help information. 
               if(String.Compare(myOption, "?", true) == 0 ||
                  String.Compare(myOption, "help", true) == 0)
                  toPrintHelp = true;
               // Add the option encountered to the list of all options 
               // encountered for the current assembly.
               // Determine whether the assembly file exists. 
                  // If assembly file doesn't exist then print error.
                  Console.WriteLine(" Error : {0} - Assembly file doesn't exist.", args[i]);
               // Create an instance of 'AssemblyInstaller' that installs the given assembly.
               myAssemblyInstaller = new AssemblyInstaller(args[i],
                  (string[]) options.ToArray(typeof(string)));
               // Add the instance of 'AssemblyInstaller' to the 'TransactedInstaller'.
         // If user requested help or didn't provide any assemblies to install 
         // then print help message. 
         if(toPrintHelp || myTransactedInstaller.Installers.Count == 0)

         // Create an instance of 'InstallContext' with the options specified.
         myInstallContext =
            new InstallContext("Install.log",
            (string[]) options.ToArray(typeof(string)));
         myTransactedInstaller.Context = myInstallContext;

         // Install or Uninstall an assembly depending on the option provided. 
            myTransactedInstaller.Install(new Hashtable());
      catch(Exception e)
         Console.WriteLine(" Exception raised : {0}", e.Message);

   public static void PrintHelpMessage()
      Console.WriteLine("Usage : InstallerCollection_Add [/u | /uninstall] [option [...]] assembly" +
         "[[option [...]] assembly] [...]]");
      Console.WriteLine("InstallerCollection_Add executes the installers in each of" +
         " the given assembly. If /u or /uninstall option" +
         " is given it uninstalls the assemblies.");


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

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