1

アプリケーションをアンインストールする方法は2つあります。

  1. 同じ設定を使用する。
  2. コントロールパネルでのプログラムの追加/削除

セットアップには特別なアンインストール手順があり、ユーザー入力を取得するための特別なダイアログボックスがいくつか起動します。このようにして、ユーザー入力に従ってアンインストールが行われます。ただし、「プログラムの追加と削除」を使用してアンインストールすると、特別なアンインストール手順が実行されないという問題があります。「プログラムの追加と削除」を使用してアプリケーション固有のアンインストールを起動する方法はありますか?

4

2 に答える 2

1

MSIベースのプロジェクトを使用している場合、[アンインストール]ボタンはパッシブモードでアンインストールを実行します。したがって、UIまたはダイアログシーケンスのアクションはスキップされます。これを回避するには、アンインストールボタン(ARPNOREMOVEを参照)を無効にし、代わりにエンドユーザーに[変更]ボタン(UIが表示されます)を使用するように要求するのが一般的です。

于 2012-10-19T12:16:06.467 に答える
0

WMIを使用してそれを行うことができます。必要に応じて、アンインストーラソフトウェアをカスタマイズできます。これを実現するには、 Win32_Productクラスアンインストールメソッドを使用する必要があります。以下は、ローカルマシンにプログラムをアンインストールする例です。

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class CallWMIMethod
    {
        public static void Main()
        {
            try
            {
                ManagementObject classInstance =
                    new ManagementObject("root\\CIMV2",
                    "Win32_Product.IdentifyingNumber='{EDDE41A3-A870-4D97-A1ED-67FF62AA0552}',Name='MyServiceSetup',Version='1.0.0'",
                    null);

                // No method in-parameters to define


                // Execute the method and obtain the return values.
                ManagementBaseObject outParams =
                    classInstance.InvokeMethod("Uninstall", null, null);

                // List outParams
                Console.WriteLine("Out parameters:");
                Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);
            }
            catch(ManagementException err)
            {
                MessageBox.Show("An error occurred while trying to execute the WMI method: " + err.Message);
            }
        }
    }
}

戻り値はエラーコードWindowsデスクトップアプリ)で確認できます。

于 2012-10-19T07:17:37.390 に答える