インストーラによるインストールが正常終了したか、失敗してコンピュータが初期状態のままのいずれであるかを明確にします。
この型のすべてのメンバの一覧については、TransactedInstaller メンバ を参照してください。
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Configuration.Install.Installer
System.Configuration.Install.TransactedInstaller
Public Class TransactedInstaller
Inherits Installer
[C#]
public class TransactedInstaller : Installer
[C++]
public __gc class TransactedInstaller : public Installer
[JScript]
public class TransactedInstaller extends Installer
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
トランザクション内でインストーラを実行するには、対象となるインストーラを TransactedInstaller インスタンスの Installers プロパティに追加します。
使用例
[Visual Basic, C#, C++] TransactedInstaller クラスの TransactedInstaller 、 Install 、 Uninstall の各メソッドの例を次に示します。
[Visual Basic, C#, C++] インストーラ ツール (Installutil.exe) の実装に類似した実装の例を次に示します。特定のアセンブリの前にオプションを指定して、アセンブリをインストールします。アセンブリに対してオプションが指定されていない場合、直前のアセンブリがリストにある場合は、直前のアセンブリのオプションが使用されます。"/u" オプションまたは "/uninstall" オプションのいずれかを指定した場合、アセンブリはアンインストールされます。"/?" オプションまたは "/help" オプションが指定された場合は、ヘルプ情報がコンソールに表示されます。
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' an 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(ControlChars.Newline + _
"Error : {0} - Assembly file doesn't exist.", args(i))
Return
End If
' Create a 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 a 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(ControlChars.Newline + "Exception raised : {0}", e.Message)
End Try
[C#]
ArrayList myOptions = 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' an 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.
myOptions.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("\nError : {0} - Assembly file doesn't exist.",
args[i]);
return;
}
// Create a instance of 'AssemblyInstaller' that installs the given assembly.
myAssemblyInstaller =
new AssemblyInstaller(args[i],
(string[]) myOptions.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 a instance of 'InstallContext' with the options specified.
myInstallContext =
new InstallContext("Install.log",
(string[]) myOptions.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("\nException raised : {0}", e.Message);
}
[C++]
String* args[] = Environment::GetCommandLineArgs();
ArrayList* myOptions = new ArrayList();
String* myOption;
bool toUnInstall = false;
bool toPrintHelp = false;
TransactedInstaller* myTransactedInstaller = new TransactedInstaller();
AssemblyInstaller* myAssemblyInstaller;
InstallContext* myInstallContext;
try {
for (int i = 1; i < args->Length; i++) {
// Process the arguments.
if (args[i]->StartsWith(S"/") || args[i]->StartsWith(S"-")) {
myOption = args[i]->Substring(1);
// Determine whether the option is to 'uninstall' an assembly.
if (String::Compare(myOption, S"u", true) == 0 ||
String::Compare(myOption, S"uninstall", true) == 0)
{
toUnInstall = true;
continue;
}
// Determine whether the option is for printing help information.
if (String::Compare(myOption, S"?", true) == 0 ||
String::Compare(myOption, S"help", true) == 0)
{
toPrintHelp = true;
continue;
}
// Add the option encountered to the list of all options
// encountered for the current assembly.
myOptions->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(S"\nError : {0} - Assembly file doesn't exist.",
args[i]);
return 0;
}
// Create a instance of 'AssemblyInstaller' that installs the given assembly.
myAssemblyInstaller = new AssemblyInstaller(args[i],
__try_cast<String*[]>(myOptions->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 0;
}
// Create a instance of 'InstallContext' with the options specified.
myInstallContext = new InstallContext(S"Install.log",
__try_cast<String*[]>(myOptions->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(0);
} catch (Exception* e) {
Console::WriteLine(S"\nException raised : {0}", e->Message);
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Configuration.Install
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Configuration.Install (System.Configuration.Install.dll 内)