InstallContext-Klasse
Enthält Informationen über die derzeitige Installation.
Namespace: System.Configuration.Install
Assembly: System.Configuration.Install (in system.configuration.install.dll)
Syntax
'Declaration
Public Class InstallContext
'Usage
Dim instance As InstallContext
public class InstallContext
public ref class InstallContext
public class InstallContext
public class InstallContext
Hinweise
Ein InstallContext wird i. d. R. von einer Installationsdatei wie InstallUtil.exe erstellt, mit der Assemblys installiert werden. Das Installationsprogramm ruft den InstallContext-Konstruktor auf und übergibt diesem den Pfad der Standardprotokolldatei sowie Befehlszeilenparameter.
Vor dem Aufruf seiner Install-Methode, Commit-Methode, Rollback-Methode oder Uninstall-Methode legt das Installationsprogramm die Context-Eigenschaft eines Installer auf eine Instanz von InstallContext fest. Vor dem Aufrufen dieser Methoden legt ein Installer, der in der Installers-Eigenschaft eine Auflistung von Installationsprogrammen enthält, die Context-Eigenschaft für jedes enthaltene Installationsprogramm fest.
Die Parameters-Eigenschaft enthält die Parameter der eingelesenen Befehlszeile, die zum Ausführen der Installationsdatei eingegeben wird. Die Eigenschaft enthält u. a. Informationen über den Pfad einer Protokolldatei und darüber, ob Protokollinformationen in der Konsole angezeigt werden und ob während der Installation eine Benutzeroberfläche angezeigt wird. Rufen Sie die IsParameterTrue-Methode auf, um festzustellen, ob ein Befehlszeilenparameter true ist.
Verwenden Sie die LogMessage-Methode, um Statusmeldungen an die Protokolldatei für die Installation und an die Konsole auszugeben.
Beispiel
Das folgende Beispiel veranschaulicht die InstallContext-Konstruktoren, die Parameters-Eigenschaft sowie die LogMessage-Methode und die IsParameterTrue-Methode der InstallContext-Klasse.
Beim Aufruf der Install-Methode des Installationsprogramms wird zunächst nach Befehlszeilenparametern gesucht. In Abhängigkeit davon werden die Statusmeldungen auf der Konsole angezeigt wie auch in der angegebenen Protokolldatei gespeichert.
Wenn das Programm ohne Argumente aufgerufen wird, wird ein leerer InstallContext erstellt. Wenn "/LogFile" und "/LogtoConsole" angegeben werden, wird der InstallContext erstellt, indem die entsprechenden Argumente an InstallContext übergeben werden.
Imports System
Imports System.ComponentModel
Imports System.Configuration.Install
Imports System.Collections
Imports System.Collections.Specialized
Namespace MyInstallContextNamespace
<RunInstallerAttribute(True)> Class InstallContext_Example
Inherits Installer
Public myInstallContext As InstallContext
Public Overrides Sub Install(mySavedState As IDictionary)
Dim myStringDictionary As StringDictionary = myInstallContext.Parameters
If myStringDictionary.Count = 0 Then
Console.WriteLine("No parameters have been entered in the command line" + _
"hence, the install will take place in the silent mode")
Else
' Check wether the "LogtoConsole" parameter has been set.
If myInstallContext.IsParameterTrue("LogtoConsole") = True Then
' Display the message to the console and add it to the logfile.
myInstallContext.LogMessage("The 'Install' method has been called")
End If
End If
' The 'Install procedure should be added here.
End Sub 'Install
Public Overrides Sub Uninstall(mySavedState As IDictionary)
' The 'Uninstall' procedure should be added here.
End Sub 'Uninstall
Public Overrides Sub Rollback(mySavedState As IDictionary)
If myInstallContext.IsParameterTrue("LogtoConsole") = True Then
myInstallContext.LogMessage("The 'Rollback' method has been called")
End If
' The 'Rollback' procedure should be added here.
End Sub 'Rollback
Public Overrides Sub Commit(mySavedState As IDictionary)
If myInstallContext.IsParameterTrue("LogtoConsole") = True Then
myInstallContext.LogMessage("The 'Commit' method has been called")
End If
' The 'Commit' procedure should be added here.
End Sub 'Commit
' Entry point which delegates to C-style main Private Function
Public Overloads Shared Sub Main()
Main(System.Environment.GetCommandLineArgs())
End Sub
Overloads Shared Sub Main(args() As String)
Dim myInstallObject As New InstallContext_Example()
Dim mySavedState = New Hashtable()
If args.Length < 2 Then
' There are no command line arguments, create an empty 'InstallContext'.
myInstallObject.myInstallContext = New InstallContext()
ElseIf args.Length = 2 And args(1) = "/?" Then
' Display the 'Help' for this utility.
Console.WriteLine("Specify the '/Logfile' and '/LogtoConsole' parameters")
Console.WriteLine("Example: ")
Console.WriteLine("InstallContext_InstallContext.exe /LogFile=example.log" + _
" /LogtoConsole=true")
Return
Else
' Create an InstallContext object with the given parameters.
Dim commandLine() As String = New String(args.Length - 2) {}
Dim i As Integer
For i = 1 To args.Length - 1
commandLine(i-1) = args(i)
Next i
myInstallObject.myInstallContext = _
New InstallContext("/LogFile:example.log", commandLine)
End If
Try
' Call the 'Install' method.
myInstallObject.Install(mySavedState)
' Call the 'Commit' method.
myInstallObject.Commit(mySavedState)
Catch
' Call the 'Rollback' method.
myInstallObject.Rollback( mySavedState )
End Try
End Sub 'Main
End Class 'InstallContext_Example
End Namespace 'MyInstallContextNamespace
using System;
using System.ComponentModel;
using System.Configuration.Install;
using System.Collections;
using System.Collections.Specialized;
namespace MyInstallContextNamespace
{
[RunInstallerAttribute(true)]
class InstallContext_Example : Installer
{
public InstallContext myInstallContext;
public override void Install( IDictionary mySavedState )
{
StringDictionary myStringDictionary = myInstallContext.Parameters;
if( myStringDictionary.Count == 0 )
{
Console.WriteLine( "No parameters have been entered in the command line "
+"hence, the install will take place in the silent mode" );
}
else
{
// Check whether the "LogtoConsole" parameter has been set.
if( myInstallContext.IsParameterTrue( "LogtoConsole" ) == true )
{
// Display the message to the console and add it to the logfile.
myInstallContext.LogMessage( "The 'Install' method has been called" );
}
}
// The 'Install procedure should be added here.
}
public override void Uninstall( IDictionary mySavedState )
{
// The 'Uninstall' procedure should be added here.
}
public override void Rollback( IDictionary mySavedState )
{
if( myInstallContext.IsParameterTrue( "LogtoConsole" ) == true )
{
myInstallContext.LogMessage( "The 'Rollback' method has been called" );
}
// The 'Rollback' procedure should be added here.
}
public override void Commit( IDictionary mySavedState )
{
if( myInstallContext.IsParameterTrue( "LogtoConsole" ) == true )
{
myInstallContext.LogMessage( "The 'Commit' method has been called" );
}
// The 'Commit' procedure should be added here.
}
static void Main( string[] args )
{
InstallContext_Example myInstallObject = new InstallContext_Example();
IDictionary mySavedState = new Hashtable();
if( args.Length < 1 )
{
// There are no command line arguments, create an empty 'InstallContext'.
myInstallObject.myInstallContext = new InstallContext();
}
else if( ( args.Length == 1 ) && ( args[ 0 ] == "/?" ) )
{
// Display the 'Help' for this utility.
Console.WriteLine( "Specify the '/Logfile' and '/LogtoConsole' parameters" );
Console.WriteLine( "Example: " );
Console.WriteLine( "InstallContext_InstallContext.exe /LogFile=example.log"
+" /LogtoConsole=true" );
return;
}
else
{
// Create an InstallContext object with the given parameters.
String[] commandLine = new string[ args.Length ];
for( int i = 0; i < args.Length; i++ )
{
commandLine[ i ] = args[ i ];
}
myInstallObject.myInstallContext = new InstallContext( args[ 0 ], commandLine);
}
try
{
// Call the 'Install' method.
myInstallObject.Install( mySavedState );
// Call the 'Commit' method.
myInstallObject.Commit( mySavedState );
}
catch( Exception )
{
// Call the 'Rollback' method.
myInstallObject.Rollback( mySavedState );
}
}
}
}
#using <System.dll>
#using <System.Configuration.Install.dll>
using namespace System;
using namespace System::ComponentModel;
using namespace System::Configuration::Install;
using namespace System::Collections;
using namespace System::Collections::Specialized;
[RunInstallerAttribute(true)]
ref class InstallContext_Example: public Installer
{
public:
InstallContext^ myInstallContext;
virtual void Install( IDictionary^ mySavedState ) override
{
StringDictionary^ myStringDictionary = myInstallContext->Parameters;
if ( myStringDictionary->Count == 0 )
{
Console::Write( "No parameters have been entered in the command line " );
Console::WriteLine( "hence, the install will take place in the silent mode" );
}
else
{
// Check whether the "LogtoConsole" parameter has been set.
if ( myInstallContext->IsParameterTrue( "LogtoConsole" ) )
{
// Display the message to the console and add it to the logfile.
myInstallContext->LogMessage( "The 'Install' method has been called" );
}
}
// The 'Install procedure should be added here.
}
virtual void Uninstall( IDictionary^ mySavedState ) override
{
// The 'Uninstall' procedure should be added here.
}
virtual void Rollback( IDictionary^ mySavedState ) override
{
if ( myInstallContext->IsParameterTrue( "LogtoConsole" ) )
{
myInstallContext->LogMessage( "The 'Rollback' method has been called" );
}
// The 'Rollback' procedure should be added here.
}
virtual void Commit( IDictionary^ mySavedState ) override
{
if ( myInstallContext->IsParameterTrue( "LogtoConsole" ) )
{
myInstallContext->LogMessage( "The 'Commit' method has been called" );
}
// The 'Commit' procedure should be added here.
}
};
int main()
{
array<String^>^args = Environment::GetCommandLineArgs();
InstallContext_Example^ myInstallObject = gcnew InstallContext_Example;
IDictionary^ mySavedState = gcnew Hashtable;
if ( args->Length < 2 )
{
// There are no command line arguments, create an empty 'InstallContext'.
myInstallObject->myInstallContext = gcnew InstallContext;
}
else
if ( (args->Length == 2) && (args[ 1 ]->Equals( "/?" )) )
{
// Display the 'Help' for this utility.
Console::WriteLine( "Specify the '/Logfile' and '/LogtoConsole' parameters" );
Console::WriteLine( "Example: " );
Console::WriteLine( "InstallContext_InstallContext.exe /LogFile=example.log /LogtoConsole=true" );
return 0;
}
else
{
// Create an InstallContext object with the given parameters.
array<String^>^commandLine = gcnew array<String^>(args->Length - 1);
for ( int i = 0; i < args->Length - 1; i++ )
{
commandLine[ i ] = args[ i + 1 ];
}
myInstallObject->myInstallContext = gcnew InstallContext( args[ 1 ],commandLine );
}
try
{
// Call the 'Install' method.
myInstallObject->Install( mySavedState );
// Call the 'Commit' method.
myInstallObject->Commit( mySavedState );
}
catch ( Exception^ )
{
// Call the 'Rollback' method.
myInstallObject->Rollback( mySavedState );
}
}
import System.*;
import System.ComponentModel.*;
import System.Configuration.Install.*;
import System.Collections.*;
import System.Collections.Specialized.*;
/** @attribute RunInstallerAttribute(true)
*/
class InstallContextExample extends Installer
{
public InstallContext myInstallContext;
public void Install(IDictionary mySavedState)
{
StringDictionary myStringDictionary = myInstallContext.get_Parameters();
if (myStringDictionary.get_Count() == 0) {
Console.WriteLine("No parameters have been entered in the command "
+"line hence, the install will take place in the silent mode");
}
else {
// Check whether the "LogtoConsole" parameter has been set.
if (myInstallContext.IsParameterTrue("LogtoConsole") == true) {
// Display the message to the console and add it
//to the logfile.
myInstallContext.LogMessage(
"The 'Install' method has been called");
}
}
// The 'Install procedure should be added here.
} //Install
public void Uninstall(IDictionary mySavedState)
{
// The 'Uninstall' procedure should be added here.
} //Uninstall
public void Rollback(IDictionary mySavedState)
{
if (myInstallContext.IsParameterTrue("LogtoConsole") == true) {
myInstallContext.LogMessage(
"The 'Rollback' method has been called");
// The 'Rollback' procedure should be added here.
}
} //Rollback
public void Commit(IDictionary mySavedState)
{
if (myInstallContext.IsParameterTrue("LogtoConsole") == true) {
myInstallContext.LogMessage("The 'Commit' method has been called");
// The 'Commit' procedure should be added here.
}
} //Commit
public static void main(String[] args)
{
InstallContextExample myInstallObject = new InstallContextExample();
IDictionary mySavedState = new Hashtable();
if (args.length < 1) {
// There are no command line arguments, create an empty
//'InstallContext'.
myInstallObject.myInstallContext = new InstallContext();
}
else {
if (args.length == 1 && args[0] == "/?") {
// Display the 'Help' for this utility.
Console.WriteLine(
"Specify the '/Logfile' and '/LogtoConsole' parameters");
Console.WriteLine("Example: ");
Console.WriteLine("InstallContext_InstallContext.exe"
+" /LogFile=example.log" + " /LogtoConsole=true");
return;
}
else {
// Create an InstallContext object with the given parameters.
String commandLine[] = new String[args.length];
for (int i = 0; i < args.length; i++) {
commandLine.set_Item(i, args[i]);
}
myInstallObject.myInstallContext =
new InstallContext(args[0], commandLine);
}
}
try {
// Call the 'Install' method.
myInstallObject.Install(mySavedState);
// Call the 'Commit' method.
myInstallObject.Commit(mySavedState);
}
catch (System.Exception exp) {
// Call the 'Rollback' method.
myInstallObject.Rollback(mySavedState);
}
} //main
} //InstallContextExample
Vererbungshierarchie
System.Object
System.Configuration.Install.InstallContext
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
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 unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
InstallContext-Member
System.Configuration.Install-Namespace
Installer
TransactedInstaller
AssemblyInstaller-Klasse