私はウィンドウセットアッププロジェクトを作成し、メインアプリケーションにいくつかのカスタムインストーラクラスを追加して、セットアッププロジェクトのカスタムアクションセクションに含めました。 Imサードパーティのインストーラプログラムを使用していない単純なVisual Studioのセットアッププロジェクト。特権を持つMSIアンインストーラを実行しています
私は自分のアプリケーション用のカスタムインストーラクラスを持っています。アンインストール機能では、プロセスを強制終了し、プログラムディレクトリに作成された余分なファイルを削除する関数が含まれています。 これはWindows XPでは動作しますが、7では動作しません。だから私はUACと関係があると仮定しています。管理者権限でアンインストーラを強制的に実行するにはどうすればよいですか?
ここでアンインストーラのオーバーライドのための私の私のコード:
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
try
{
KillProcess();
DeleteAppPathFolder();
}
catch (Exception) { }
}
private void KillProcess()
{
for (; ;)
{
Process[] procMain = Process.GetProcessesByName("TaskbarNotificator");
if (procMain.Length > 0)
{
procMain[0].Kill();
}
else
break;
}
}
private void DeleteAppPathFolder()
{
FileInfo fileInfo = new FileInfo
(System.Reflection.Assembly.GetExecutingAssembly().Location);
string sProgram = Path.Combine(fileInfo.DirectoryName, GLOBALS.APP_DIR_NAME);
if (Directory.Exists(sProgram))
Directory.Delete(sProgram, true);
}
MSIを作成しているかどうか、または製品をアンインストールするカスタムアプリケーションがあるかどうかは不明です。 –
私はMSIを生産して何を意味するのか分かりません。私はカスタムアプリケーションの一部としてMSIインストーラプロジェクトに追加されたメインアプリケーションにインストーラクラスを作成しました。貼り付けたコードは、アンインストールオーバーライド機能の一部です。 – ArmenB