InstallerCollection 类

包含要在安装过程中运行的安装程序的集合。

**命名空间:**System.Configuration.Install
**程序集:**System.Configuration.Install(在 system.configuration.install.dll 中)

语法

声明
Public Class InstallerCollection
    Inherits CollectionBase
用法
Dim instance As InstallerCollection
public class InstallerCollection : CollectionBase
public ref class InstallerCollection : public CollectionBase
public class InstallerCollection extends CollectionBase
public class InstallerCollection extends CollectionBase

备注

InstallerCollection 提供方法和属性,应用程序需要这些方法和属性来管理 Installer 对象的集合。

请使用下面三种方法之一向集合添加安装程序:

  • Add 方法向集合添加单个安装程序。

  • AddRange 方法向集合添加多个安装程序。

  • Insert 方法和 Item 属性分别向集合的指定索引位置添加单个安装程序,该属性是 InstallerCollection 的索引器。

通过 Remove 方法移除安装程序。使用 Contains 方法来检查某安装程序是否在集合中。使用 IndexOf 方法来查找某安装程序在集合中的位置。

当包含某集合的安装程序(由 Installer.Parent 属性指定)调用该集合中安装程序的 InstallCommitRollbackUninstall 方法时,该集合中的安装程序就会运行。

有关安装程序集合用法的示例,请参见 AssemblyInstallerTransactedInstaller 类。

示例

下面的示例说明 InstallerCollection 类的 Add 方法。此示例提供与 安装程序工具 (Installutil.exe) 的实现相似的实现。使用特定程序集前的选项来安装程序集。如果没有为程序集指定选项,而且列表中有前一个程序集,则使用前一个程序集的选项。如果指定“/u”或“/uninstall”选项,则卸载程序集。如果提供了“/?”或“/help”选项,将在控制台上显示帮助信息。

Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Configuration.Install
Imports System.IO

Public Class InstallerCollection_Add
   
   'Entry point which delegates to C-style main Private Function
   Public Overloads Shared Sub Main()
      Main(System.Environment.GetCommandLineArgs())
   End Sub
   
   Overloads Public Shared Sub Main(args() As String)
      Dim options As New ArrayList()
      Dim myOption As String
      Dim toUnInstall As Boolean = False
      Dim toPrintHelp As Boolean = False
      Dim myTransactedInstaller As New TransactedInstaller()
      Dim myAssemblyInstaller As AssemblyInstaller
      Dim myInstallContext As InstallContext
      
      Try
         Dim i As Integer
         For i = 1 To args.Length - 1
            ' Process the arguments.
            If args(i).StartsWith("/") Or args(i).StartsWith("-") Then
               myOption = args(i).Substring(1)
               ' Determine whether the option is to 'uninstall' a assembly.
               If String.Compare(myOption, "u", True) = 0 Or String.Compare(myOption, "uninstall", _
                                                                              True) = 0 Then
                  toUnInstall = True
                  GoTo ContinueFor1
               End If
               ' Determine whether the option is for printing help information.
               If String.Compare(myOption, "?", True) = 0 Or String.Compare(myOption, "help", _
                                                                                 True) = 0 Then
                  toPrintHelp = True
                  GoTo ContinueFor1
               End If
               ' 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 Not File.Exists(args(i)) Then
                  ' If assembly file doesn't exist then print error.
                  Console.WriteLine(" Error : {0} - Assembly file doesn't exist.", args(i))
                  Return
               End If
               ' Create an instance of 'AssemblyInstaller' that installs the given assembly.
               myAssemblyInstaller = New AssemblyInstaller(args(i), CType(options.ToArray _
                                                               (GetType(String)), String()))
               ' Add the instance of 'AssemblyInstaller' to the 'TransactedInstaller'.
               myTransactedInstaller.Installers.Add(myAssemblyInstaller)
            End If
         ContinueFor1: 
         Next i
         ' If user requested help or didn't provide any assemblies to install
         ' then print help message.
         If toPrintHelp Or myTransactedInstaller.Installers.Count = 0 Then
            PrintHelpMessage()
            Return
         End If
         
         ' Create an instance of 'InstallContext' with the options specified.
         myInstallContext = New InstallContext("Install.log", CType(options.ToArray _
                                                               (GetType(String)), String()))
         myTransactedInstaller.Context = myInstallContext
         
         ' Install or Uninstall an assembly depending on the option provided.
         If Not toUnInstall Then
            myTransactedInstaller.Install(New Hashtable())
         Else
            myTransactedInstaller.Uninstall(Nothing)
         End If
      Catch e As Exception
         Console.WriteLine(" Exception raised : {0}", e.Message)
      End Try
   End Sub 'Main

   Public Shared Sub 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.")
   End Sub 'PrintHelpMessage
End Class 'InstallerCollection_Add
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.");
   }
}
#using <System.dll>
#using <System.Configuration.Install.dll>

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Configuration::Install;
using namespace System::IO;

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" + 
      "option is given it uninstalls the assemblies." );
}

int main()
{
   array<String^>^ args = Environment::GetCommandLineArgs();
   ArrayList^ options = gcnew ArrayList;
   String^ myOption;
   bool toUnInstall = false;
   bool toPrintHelp = false;
   TransactedInstaller^ myTransactedInstaller = gcnew 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 0;
            }
            // Create an instance of 'AssemblyInstaller' that installs the given assembly.
            myAssemblyInstaller = gcnew AssemblyInstaller( args[ i ],
              (array<String^>^)(options->ToArray( String::typeid )) );
            // Add the instance of 'AssemblyInstaller' to the 'TransactedInstaller'.
            myTransactedInstaller->Installers->Add( myAssemblyInstaller );
         }
      }
      // then print help message.
      if ( toPrintHelp || myTransactedInstaller->Installers->Count == 0 )
      {
         PrintHelpMessage();
         return 0;
      }

      // Create an instance of 'InstallContext' with the options specified.
      myInstallContext =
         gcnew InstallContext( "Install.log",
              (array<String^>^)(options->ToArray( String::typeid )) );
      myTransactedInstaller->Context = myInstallContext;

      // Install or Uninstall an assembly depending on the option provided.
      if (  !toUnInstall )
         myTransactedInstaller->Install( gcnew Hashtable );
      else
         myTransactedInstaller->Uninstall( nullptr );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( " Exception raised : {0}", e->Message );
   }
}
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

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

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

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

InstallerCollection 成员
System.Configuration.Install 命名空间
Installer 类
Install
Commit
Rollback
Uninstall
AssemblyInstaller 类
TransactedInstaller