InstallException クラス
インストールのコミット、ロールバック、またはアンインストールの各フェーズでエラーが発生したときにスローされる例外。
この型のすべてのメンバの一覧については、InstallException メンバ を参照してください。
System.Object
System.Exception
System.SystemException
System.Configuration.Install.InstallException
<Serializable>
Public Class InstallException Inherits SystemException
[C#]
[Serializable]
public class InstallException : SystemException
[C++]
[Serializable]
public __gc class InstallException : public SystemException
[JScript]
public
Serializable
class InstallException extends SystemException
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
使用例
[Visual Basic, C#, C++] InstallException コンストラクタの例と共に、独自のインストーラを持つアセンブリを表示する例を次に示します。インストーラは MyInstaller
という名前で、属性 RunInstallerAttribute
を持っており、このインストーラが インストーラ ツール (Installutil.exe) によって起動されることを示しています。 インストーラ ツール (Installutil.exe) は、 Commit 、 Rollback 、 Install 、および Uninstall の各メソッドを呼び出します。 Commit のコードは、アセンブリのインストールがコミットされる前に、 FileDoesNotExist.txt
という名前のファイルが存在すると仮定しています。ファイル FileDoesNotExist.txt
が存在しない場合、 Commit は、 InstallException を発生させます。同じことは、 FileDoesNotExist.txt
という名前のファイルが存在する場合にだけアンインストールが行われる Uninstall にも当てはまります。それ以外の場合は、 InstallException が発生します。 Rollback でコード片が実行されます。このコード片の実行は、例外を発生させる可能性があります。例外が発生した場合、その例外はキャッチされ、渡される例外を使用して InstallException を発生させます。
[Visual Basic, C#, C++] メモ この例は Installutil.exe を使用して実行します。コマンド プロンプトで次のように入力します。
[Visual Basic, C#, C++] Installutil InstallException.exe
[Visual Basic, C#, C++] または
[Visual Basic, C#, C++] Installutil /u InstallException.exe
Imports System
Imports System.ComponentModel
Imports System.Collections
Imports System.Configuration.Install
Imports System.IO
<RunInstaller(True)> Public Class MyInstaller
Inherits Installer
Public Overrides Sub Install(savedState As IDictionary)
MyBase.Install(savedState)
Console.WriteLine("Install ...")
' Commit is called when install goes through successfully.
' Rollback is called if there is any error during Install.
' Uncommenting the code below will lead to 'RollBack' being called,
' currently 'Commit' shall be called.
' throw new IOException();
End Sub
Public Overrides Sub Commit(savedState As IDictionary)
MyBase.Commit(savedState)
Console.WriteLine("Commit ...")
' Throw an error if a particular file doesn't exist.
If Not File.Exists("FileDoesNotExist.txt") Then
Throw New InstallException()
End If
' Perform the final installation if the file exists.
End Sub
Public Overrides Sub Rollback(savedState As IDictionary)
MyBase.Rollback(savedState)
Console.WriteLine("RollBack ...")
Try
' Performing some activity during rollback that raises an 'IOException'.
Throw New IOException()
Catch e As Exception
Throw New InstallException("IOException raised", e)
End Try
End Sub 'Rollback
' Perform the remaining rollback activites if no exception raised.
Public Overrides Sub Uninstall(savedState As IDictionary)
MyBase.Uninstall(savedState)
Console.WriteLine("UnInstall ...")
' Throw an error if a particular file doesn't exist.
If Not File.Exists("FileDoesNotExist.txt") Then
Throw New InstallException("The file 'FileDoesNotExist'" + " does not exist")
End If
' Perform the uninstall activites if the file exists.
End Sub
End Class
' An Assembly that has its own installer.
Public Class MyAssembly1
Public Shared Sub Main()
Console.WriteLine("This assembly is just an example for the Installer")
End Sub
End Class
[C#]
using System;
using System.ComponentModel;
using System.Collections;
using System.Configuration.Install;
using System.IO;
[RunInstaller(true)]
public class MyInstaller : Installer
{
public override void Install(IDictionary savedState)
{
base.Install(savedState);
Console.WriteLine("Install ...");
// Commit is called when install goes through successfully.
// Rollback is called if there is any error during Install.
// Uncommenting the code below will lead to 'RollBack' being called,
// currently 'Commit' shall be called.
// throw new IOException();
}
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
Console.WriteLine("Commit ...");
// Throw an error if a particular file doesn't exist.
if(!File.Exists("FileDoesNotExist.txt"))
throw new InstallException();
// Perform the final installation if the file exists.
}
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
Console.WriteLine("RollBack ...");
try
{
// Performing some activity during rollback that raises an 'IOException'.
throw new IOException();
}
catch(Exception e)
{
throw new InstallException("IOException raised", e);
}
// Perform the remaining rollback activites if no exception raised.
}
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
Console.WriteLine("UnInstall ...");
// Throw an error if a particular file doesn't exist.
if(!File.Exists("FileDoesNotExist.txt"))
throw new InstallException("The file 'FileDoesNotExist'" +
" does not exist");
// Perform the uninstall activites if the file exists.
}
}
// An Assembly that has its own installer.
public class MyAssembly1
{
public static void Main()
{
Console.WriteLine("This assembly is just an example for the Installer");
}
}
[C++]
#using <mscorlib.dll>
#using <System.dll>
#using <System.Configuration.Install.dll>
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Configuration::Install;
using namespace System::IO;
[RunInstaller(true)]
__gc class MyInstaller : public Installer {
public:
void Install(IDictionary* savedState) {
Installer::Install(savedState);
Console::WriteLine(S"Install ...");
// Commit is called when install goes through successfully.
// Rollback is called if there is any error during Install.
// Uncommenting the code below will lead to 'RollBack' being called,
// currently 'Commit' shall be called.
// throw new IOException();
}
void Commit(IDictionary* savedState) {
Installer::Commit(savedState);
Console::WriteLine(S"Commit ...");
// Throw an error if a particular file doesn't exist.
if(!File::Exists(S"FileDoesNotExist.txt"))
throw new InstallException();
// Perform the final installation if the file exists.
}
void Rollback(IDictionary* savedState) {
Installer::Rollback(savedState);
Console::WriteLine(S"RollBack ...");
try {
// Performing some activity during rollback that raises an 'IOException*'.
throw new IOException();
} catch (Exception* e) {
throw new InstallException(S"IOException* raised", e);
}
// Perform the remaining rollback activites if no exception raised.
}
void Uninstall(IDictionary* savedState) {
Installer::Uninstall(savedState);
Console::WriteLine(S"UnInstall ...");
// Throw an error if a particular file doesn't exist.
if(!File::Exists(S"FileDoesNotExist.txt"))
throw new InstallException(S"The file 'FileDoesNotExist' does not exist");
// Perform the uninstall activites if the file exists.
}
};
int main() {
Console::WriteLine(S"This assembly is just an example for the Installer");
}
[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 内)
参照
InstallException メンバ | System.Configuration.Install 名前空間 | Commit | Installer | Rollback | Uninstall