Export (0) Print
Expand All

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
public class InstallerCollection extends CollectionBase
public class InstallerCollection extends 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;

      try
      {
         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;
                  continue;
               
               // Determine whether the option is for printing help information.
               if(String.Compare(myOption, "?", true) == 0 ||
                  String.Compare(myOption, "help", true) == 0)
               {
                  toPrintHelp = true;
                  continue;
               
               // Add the option encountered to the list of all options
               // encountered for the current assembly.
               options.Add(myOption);
            
            else
            {
               // Determine whether the assembly file exists.
               if(!File.Exists(args[i]))
               {
                  // If assembly file doesn't exist then print error.
                  Console.WriteLine(" Error : {0 - Assembly file doesn't exist.", args[i]);
                  return;
               
               // 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'.
               myTransactedInstaller.Installers.Add(myAssemblyInstaller);
            
         
         // If user requested help or didn't provide any assemblies to install
         // then print help message.
         if(toPrintHelp || myTransactedInstaller.Installers.Count == 0)
         {
            PrintHelpMessage();
            return;
         

         // 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.
         if(!toUnInstall)
            myTransactedInstaller.Install(new Hashtable());
         else
            myTransactedInstaller.Uninstall(null);
      
      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.");
   


import System.*;
import System.ComponentModel.*;
import System.Collections.*;
import System.Configuration.Install.*;
import System.IO.*;

public class InstallerCollectionAdd
{
    public static void main(String[] args)
    {
        ArrayList options = new ArrayList();
        String myOption;
        boolean toUnInstall = false;
        boolean toPrintHelp = false;
        TransactedInstaller myTransactedInstaller = new TransactedInstaller();
        AssemblyInstaller myAssemblyInstaller;
        InstallContext myInstallContext;
        try {
            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;
                            continue;
                    

                    // Determine whether the option is 
                    //for printing help information.
                    if (String.Compare(myOption, "?", true) == 0 
                        || String.Compare(myOption, "help", true) == 0) {
                            toPrintHelp = true;
                            continue;
                    

                    // Add the option encountered to the list of all options
                    // encountered for the current assembly.
                    options.Add(myOption);
                
                else {
                    // Determine whether the assembly file exists.
                    if (!(File.Exists(args[i]))) {
                        // If assembly file doesn't exist then print error.
                        Console.WriteLine(" Error : {0 - Assembly "
                            +"file doesn't exist.", args[i]);
                        return;
                    
                    // Create an instance of 'AssemblyInstaller'
                    //that installs the given assembly.
                    myAssemblyInstaller = new AssemblyInstaller(args[i], 
                        (String[])(options.ToArray(String.class.ToType())));

                    // Add the instance of 'AssemblyInstaller'
                    //to the 'TransactedInstaller'.
                    myTransactedInstaller.get_Installers().
                        Add(myAssemblyInstaller);
                 
            
            // If user requested help or didn't provide any assemblies to 
            //install then print help message.
            if (toPrintHelp 
                || myTransactedInstaller.get_Installers().get_Count() == 0) {
                    PrintHelpMessage();
                    return;
            
            // Create an instance of 'InstallContext'
            //with the options specified.
            myInstallContext = new InstallContext("Install.log",
                (String[])(options.ToArray(String.class.ToType())));
            myTransactedInstaller.set_Context(myInstallContext);

            // Install or Uninstall an assembly depending
            //on the option provided.
            if (!(toUnInstall)) {
                myTransactedInstaller.Install(new Hashtable());
            
            else {
                myTransactedInstaller.Uninstall(null);
            
        
        catch (System.Exception e) {
            Console.WriteLine(" Exception raised : {0", e.get_Message());
        
     //main

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

System.Object
   System.Collections.CollectionBase
    System.Configuration.Install.InstallerCollection

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 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

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

.NET Framework

Supported in: 2.0, 1.1, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft