アンインストールのカスタムアクション(ClickOnceの) - .NETで
-
18-09-2019 - |
質問
.NETアプリケーションは、ClickOnceのを使用してインストールするために、
、アンインストールプロセス中にカスタムアクションを実行するためにどのような方法があります。
具体的には、私は(私は最初の実行時に作成された)いくつかのアプリ関連ファイルを削除して、アンインストールプロセス中にWebサービスを呼び出す必要があります。
任意のアイデア?
解決
ClickOnceの自分自身でそれをする方法はありませんが、あなたはClickOnceアプリケーションをインストールし、これはカスタムアンインストール作用を有する標準のSetup.exeブートストラップを作成することができます。
これはしかし、これは追加/削除プログラムで2つのエントリが作成されますので、あなたは、エントリ(のClickOnceアプリ)のいずれかを非表示にする必要があります。
ことに注意してください あなたはこのような何かを行うことができますので、あなたの最後の問題は、その後、ClickOnceのには、「サイレントアンインストール」オプションが存在しないことになります:
On Error Resume Next
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "taskkill /f /im [your app process name]*"
objShell.Run "[your app uninstall key]"
Do Until Success = True
Success = objShell.AppActivate("[your window title]")
Wscript.Sleep 200
Loop
objShell.SendKeys "OK"
(ここで見つけますの)
他のヒント
ClickOnceのは、あなたのClickOnceアプリケーションにアクセス可能であるHKEY_CURRENT_USERでUninstallレジストリキーをインストールします。
特定の場所である "HKEY_CURRENT_USER \ソフトウェア\マイクロソフト\ Windowsの\ CurrentVersionの\アンインストール"
あなたはあなたのアプリケーションの表示名とキーを検索する必要があります。
あなたはその後、通常のアンインストールアクションをラップすることができ、
string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
Microsoft.Win32.RegistryKey uninstallKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(registryKey);
if (uninstallKey != null)
{
foreach (String a in uninstallKey.GetSubKeyNames())
{
Microsoft.Win32.RegistryKey subkey = uninstallKey.OpenSubKey(a, true);
// Found the Uninstall key for this app.
if (subkey.GetValue("DisplayName").Equals("AppDisplayName"))
{
string uninstallString = subkey.GetValue("UninstallString").ToString();
// Wrap uninstall string with my own command
// In this case a reg delete command to remove a reg key.
string newUninstallString = "cmd /c \"" + uninstallString +
" & reg delete HKEY_CURRENT_USER\\SOFTWARE\\CLASSES\\mykeyv" +
MYAPP_VERSION + " /f\"";
subkey.SetValue("UninstallString", newUninstallString);
subkey.Close();
}
}
}
所属していません StackOverflow