Я внедрил установщик в мое приложение WPF System.Configuration.Install.Installer
классом. Я хотел удалить RegistryKey, добавленный моим приложением при его удалении, поэтому я написал следующее как часть CustomAction.dll:
using System;
namespace CustomAction
{
[System.ComponentModel.RunInstaller(true)]
public class ActionSetting : System.Configuration.Install.Installer
{
public override void Uninstall(System.Collections.IDictionary savedState)
{
var name = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
RemoveKey(name);
base.Uninstall(savedState);
}
private void RemoveKey(string Key)
{
try
{
Microsoft.Win32.RegistryKey regkey =
Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
@"Software\Microsoft\Windows\CurrentVersion\Run", true);
regkey.DeleteValue(Key, false);
regkey.Close();
}
catch
{
}
}
}
}
Но это не работает. На практике все, что я написал, независимо от содержания, кажется, не называется. Я подтвердил, что метод Uninstall определенно вызывается, тестирование выполняется по коду, например MessageBox.Show("uninstalled")
Что я должен делать? Я чувствую, что должен найти другой способ, не используя .dll
. Я использую Visual Studio 2017. спасибо.