Как удалить настройки при удалении - PullRequest
6 голосов
/ 23 апреля 2010

Моя программа установлена ​​вместе с проектом установки Visual Studio.При запуске программа создает файл user.config в его расположении по умолчанию, поскольку я использую Настройки .При деинсталляции, как заставить деинсталлятор удалить этот файл user.config?Кроме того, как заставить деинсталлятор удалить папку в %AppData%?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2010

В принципе, вы не можете / не должны / не должны. Вот репост мой ответ на дубликат этого вопроса ...

Удаление всех пользовательских данных должно быть отдельным процессом для удаления.

Моя рекомендация (и то, что мы делаем) должна заключаться в том, чтобы создать отдельную утилиту «очистки», которая должна запускаться от имени администратора и перечислять профили, удаляя дополнительные пользовательские файлы. При желании он также может перечислять кусты реестра пользователей и удалять дополнительные ключи реестра и т. Д. У одного из наших клиентов есть свои собственные пользовательские сценарии, которые делают именно это.

Затем я бы предоставил клиенту этот инструмент очистки и сказал бы после удаления, что если вы хотите удалить все пользовательские данные, используйте это.

Рассмотрим следующие случаи

  • Клиент удаляет перед установкой новой версии
  • Основные обновления (которые удаляют старую версию, так что вам нужно об этом знать)
  • Случайное удаление пользователем, который не должен был этого делать, но имел возможность сделать это

Если вам необходимо удалить данные , то самый простой способ удалить эти данные для всех пользователей, о которых я могу подумать, - воспользоваться Active Setup и использовать это запустить сценарий для каждого пользователя, который запускается при следующем входе каждого пользователя. Данные не будут удалены во время удаления, но при следующем входе в систему. И вы оставите несколько записей в реестре, однако вероятность повреждения будет меньше, чем при перечислении профилей пользователей.

2 голосов
/ 23 апреля 2010

Для этого вам нужно написать пользовательское задание - по умолчанию (и дизайн) установщик удалит только то, что он установил, все, что было добавлено впоследствии, не является частью транзакции установки. Вы можете попробовать установить фиктивный файл для user.config, и вы сможете добавить папку AppData в установку (хотя она не будет удалена, если вы добавили файлы, которые были в ней во время удаления).

...