InstallContext 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
包含关于当前安装的信息。
public ref class InstallContext
public class InstallContext
type InstallContext = class
Public Class InstallContext
- 继承
-
InstallContext
示例
下面的示例演示 类的InstallContext构造函数、Parameters属性和 LogMessage 方法IsParameterTrueInstallContext。
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、Commit、 Rollback或 Uninstall 方法之前,安装程序将 的 Installer 属性设置为 Context 的InstallContext实例。 在调用这些方法之前, 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) |