次の方法で共有


TransactedInstaller.Uninstall メソッド

インストールした内容を削除します。

Overrides Public Sub Uninstall( _
   ByVal savedState As IDictionary _)
[C#]
public override void Uninstall(IDictionarysavedState);
[C++]
public: void Uninstall(IDictionary* savedState);
[JScript]
public override function Uninstall(
   savedState : IDictionary);

パラメータ

  • savedState
    インストールが完了した後のコンピュータの状態を格納している IDictionary

解説

このメソッドを呼び出して、以前にインストールした内容を削除します。この Uninstall メソッドは、 Installers プロパティ内の各インストーラの Uninstall メソッドを呼び出して、インストール中に設定されたすべてのリソースをアンインストールします。アンインストール中の例外はすべて無視されます。

メモ    Install メソッドおよび Commit メソッドはインストール後のコンピュータの状態を保存しますが、 savedState パラメータからの IDictionary を保持しているファイルが、インストール完了後のある時点で削除されている可能性があります。ファイルが削除されている場合、 savedState パラメータは null 参照 (Visual Basic では Nothing) です。

使用例

[Visual Basic, C#, C++] TransactedInstaller クラスの TransactedInstallerInstallUninstall の各メソッドの例を次に示します。

[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++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

TransactedInstaller クラス | TransactedInstaller メンバ | System.Configuration.Install 名前空間 | Install | Commit | Rollback | InstallerCollection | Installers