Freigeben über


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