Принудительно удалить user.config во время удаления? - PullRequest
4 голосов
/ 18 июля 2011

как мне написать пользовательское действие во время удаления?Требуется ли пакетный файл?

спасибо!

Ответы [ 5 ]

5 голосов
/ 18 июля 2011

Данные user.config хранятся в папке %APPDATA%\ProjectName.

Если вы хотите удалить данные user.config при удалении, вы можете просто использовать System.IO.Directory.Delete("%APPDATA%\ProjectName");

Примечание. Вы можете получить установленный путь, используя следующую команду Context.Parameters["assemblypath"]:путь, который пользователь выбирает для установки проекта.

2 голосов
/ 26 октября 2012
var filePath = Environment.ExpandEnvironmentVariables(@"%userprofile%\APPDATA/ProjectName");
System.IO.Directory.Delete(filePath );
2 голосов
/ 19 мая 2012

Это сработало для меня, основываясь на ответе выше. Для моего приложения я разрешаю установку только для одного пользователя, а не для «всех пользователей», поэтому мне не нужно беспокоиться об удалении для нескольких пользователей или для пользователей, отличных от текущего пользователя, выполняющего удаление. Если вы разрешите установку для всех пользователей, у вас возникнут некоторые проблемы.

    public override void Uninstall(System.Collections.IDictionary savedState)
    {
        String p = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CompanyName");
        string[] ss = Directory.GetDirectories(p, "ProjectName.*");
        foreach (string s in ss)
        {
            if(MessageBox.Show("Delete " + s + "?","Delete Settings?",MessageBoxButtons.YesNo) == DialogResult.Yes)
                Directory.Delete(s, true);
        }
        base.Uninstall(savedState);
    }

На самом деле я не собираюсь оставлять подсказку там, просто для тестирования, чтобы убедиться, что я не удаляю неправильные папки на моем ПК ... пока этот код не будет полностью протестирован. CompanyName и ProjectName необходимо изменить в соответствии с вашим проектом.

Я мог бы добавить страницу для удаления пользовательского интерфейса или просто запросить, хотят ли они удалить все настройки (чтобы они могли отказаться, если собираются переустанавливать).

0 голосов
/ 19 ноября 2015

1) Создание настраиваемого действия (статья включает рисунки)

2) Обработка события Uninstall настраиваемого действия

  [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
    public override void Uninstall(IDictionary savedState)
    {
        try
        {
            string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            path = Path.Combine(path, "{Your application folder name}");
            Directory.Delete(path, true);
        }
        catch(Exception)
        {
        }
        base.Uninstall(savedState);
    }
0 голосов
/ 12 декабря 2011

Вы можете написать настраиваемое действие для запуска исполняемого файла при установке или удалении или обоих.например: создайте .exe, который удалит папку user.config.Добавьте этот exe в двоичную таблицу.Добавьте запись в таблицу CustomAction, где Source является внешним ключом для имени в двоичной таблице, а TArget - фактическим именем exe-файла и тип = 2. Теперь добавьте это действие в InstallExecuteSequence в любом порядке последовательности, который вы хотите запустить .exe в процессе установки.

...