InstallContext 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
含有目前安裝的相關資訊。
public ref class InstallContext
public class InstallContext
type InstallContext = class
Public Class InstallContext
- 繼承
-
InstallContext
範例
下列範例示範 類別的 InstallContext 建構函式、 Parameters 屬性和 LogMessage 和 IsParameterTrue 方法 InstallContext 。
Install呼叫安裝程式的 方法時,它會檢查命令行中的參數。 視情況而定,它會在控制台上顯示進度訊息,並將它儲存至指定的記錄檔。
在沒有任何自變數的情況下叫用程式時,會建立空 InstallContext 的 。 當指定 「/LogFile」 和 「/LogtoConsole」 時, InstallContext 會藉由將個別自變數傳遞至 InstallContext來建立 。
#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 );
}
}
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 )
{
base.Install( 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 )
{
base.Uninstall( mySavedState );
// The 'Uninstall' procedure should be added here.
}
public override void Rollback( IDictionary mySavedState )
{
base.Rollback( 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 )
{
base.Commit( 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 );
}
}
}
}
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
Public Overrides Sub Uninstall(mySavedState As IDictionary)
' The 'Uninstall' procedure should be added here.
End Sub
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
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
' 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
End Class
End Namespace 'MyInstallContextNamespace
備註
一般而言, InstallContext 會由安裝元件的安裝可執行檔所建立,例如 InstallUtil.exe。 安裝程式會叫用建 InstallContext 構函式,並傳遞預設的記錄檔路徑和命令行參數。
在呼叫、 Install或 方法之前,安裝程式會將 Context 的 Installer 屬性設定為 的實體。UninstallRollbackCommitInstallContext 在呼叫這些方法之前, Installer 屬性中包含安裝程式集合的 Installers 會設定 Context 每個自主安裝程序的 屬性。
屬性 Parameters 包含已剖析的命令行版本,該命令行會輸入以執行安裝可執行檔。 屬性包含記錄檔的路徑、是否要在控制台上顯示記錄資訊,以及是否要在安裝期間顯示使用者介面等資訊。 IsParameterTrue呼叫 方法來找出命令列參數是否為 true
。
使用方法, LogMessage 將狀態消息寫入安裝記錄檔和控制台。
建構函式
InstallContext() |
初始化 InstallContext 類別的新執行個體。 |
InstallContext(String, String[]) |
初始化 InstallContext 類別的新執行個體,並且建立安裝的記錄檔。 |
屬性
Parameters |
取得當執行 InstallUtil.exe 時所輸入的命令列參數。 |
方法
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
IsParameterTrue(String) |
判斷指定的命令列參數是否為 |
LogMessage(String) |
將訊息寫入主控台和安裝的記錄檔。 |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ParseCommandLine(String[]) |
剖析命令列參數為字串字典。 |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |