InstallerCollection Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Contains a collection of installers to be run during an installation.
public ref class InstallerCollection : System::Collections::CollectionBase
public class InstallerCollection : System.Collections.CollectionBase
type InstallerCollection = class
inherit CollectionBase
Public Class InstallerCollection
Inherits CollectionBase
- Inheritance
Examples
The following example demonstrates the Add method of the InstallerCollection class. This example provides an implementation similar to that of Installutil.exe (Installer Tool). 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.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 );
}
}
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.");
}
}
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
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
End Class
Remarks
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.
Properties
Capacity |
Gets or sets the number of elements that the CollectionBase can contain. (Inherited from CollectionBase) |
Count |
Gets the number of elements contained in the CollectionBase instance. This property cannot be overridden. (Inherited from CollectionBase) |
InnerList |
Gets an ArrayList containing the list of elements in the CollectionBase instance. (Inherited from CollectionBase) |
Item[Int32] |
Gets or sets an installer at the specified index. |
List |
Gets an IList containing the list of elements in the CollectionBase instance. (Inherited from CollectionBase) |
Methods
Add(Installer) |
Adds the specified installer to this collection of installers. |
AddRange(Installer[]) |
Adds the specified array of installers to this collection. |
AddRange(InstallerCollection) |
Adds the specified collection of installers to this collection. |
Clear() |
Removes all objects from the CollectionBase instance. This method cannot be overridden. (Inherited from CollectionBase) |
Contains(Installer) |
Determines whether the specified installer is included in collection. |
CopyTo(Installer[], Int32) |
Copies the items from the collection to an array, beginning at the specified index. |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
GetEnumerator() |
Returns an enumerator that iterates through the CollectionBase instance. (Inherited from CollectionBase) |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
IndexOf(Installer) |
Determines the index of a specified installer in the collection. |
Insert(Int32, Installer) |
Inserts the specified installer into the collection at the specified index. |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
OnClear() |
Performs additional custom processes when clearing the contents of the CollectionBase instance. (Inherited from CollectionBase) |
OnClearComplete() |
Performs additional custom processes after clearing the contents of the CollectionBase instance. (Inherited from CollectionBase) |
OnInsert(Int32, Object) |
Performs additional custom processes before a new installer is inserted into the collection. |
OnInsertComplete(Int32, Object) |
Performs additional custom processes after inserting a new element into the CollectionBase instance. (Inherited from CollectionBase) |
OnRemove(Int32, Object) |
Performs additional custom processes before an installer is removed from the collection. |
OnRemoveComplete(Int32, Object) |
Performs additional custom processes after removing an element from the CollectionBase instance. (Inherited from CollectionBase) |
OnSet(Int32, Object, Object) |
Performs additional custom processes before an existing installer is set to a new value. |
OnSetComplete(Int32, Object, Object) |
Performs additional custom processes after setting a value in the CollectionBase instance. (Inherited from CollectionBase) |
OnValidate(Object) |
Performs additional custom processes when validating a value. (Inherited from CollectionBase) |
Remove(Installer) |
Removes the specified Installer from the collection. |
RemoveAt(Int32) |
Removes the element at the specified index of the CollectionBase instance. This method is not overridable. (Inherited from CollectionBase) |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |
Explicit Interface Implementations
ICollection.CopyTo(Array, Int32) |
Copies the entire CollectionBase to a compatible one-dimensional Array, starting at the specified index of the target array. (Inherited from CollectionBase) |
ICollection.IsSynchronized |
Gets a value indicating whether access to the CollectionBase is synchronized (thread safe). (Inherited from CollectionBase) |
ICollection.SyncRoot |
Gets an object that can be used to synchronize access to the CollectionBase. (Inherited from CollectionBase) |
IList.Add(Object) |
Adds an object to the end of the CollectionBase. (Inherited from CollectionBase) |
IList.Contains(Object) |
Determines whether the CollectionBase contains a specific element. (Inherited from CollectionBase) |
IList.IndexOf(Object) |
Searches for the specified Object and returns the zero-based index of the first occurrence within the entire CollectionBase. (Inherited from CollectionBase) |
IList.Insert(Int32, Object) |
Inserts an element into the CollectionBase at the specified index. (Inherited from CollectionBase) |
IList.IsFixedSize |
Gets a value indicating whether the CollectionBase has a fixed size. (Inherited from CollectionBase) |
IList.IsReadOnly |
Gets a value indicating whether the CollectionBase is read-only. (Inherited from CollectionBase) |
IList.Item[Int32] |
Gets or sets the element at the specified index. (Inherited from CollectionBase) |
IList.Remove(Object) |
Removes the first occurrence of a specific object from the CollectionBase. (Inherited from CollectionBase) |
Extension Methods
Cast<TResult>(IEnumerable) |
Casts the elements of an IEnumerable to the specified type. |
OfType<TResult>(IEnumerable) |
Filters the elements of an IEnumerable based on a specified type. |
AsParallel(IEnumerable) |
Enables parallelization of a query. |
AsQueryable(IEnumerable) |
Converts an IEnumerable to an IQueryable. |