Пользовательское действие, реализованное с помощью класса Installer, не работает при удалении - PullRequest
0 голосов
/ 04 ноября 2019

Я внедрил установщик в мое приложение 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. спасибо.

...