2015-01-19 3 views
0

У меня есть программа на C#, которая установлена ​​с использованием сценария установщика Nullsoft, и я обнаружил, что программа засоряет файлы :).Удаление настроек программы с помощью деинсталлятора nullsoft

Программа использует:

Properties.Settings.Default.Save 

для хранения параметров. Эти настройки, кажется, в конечном итоге в папке с очень нетривиальным именем, как:

$user/appdata/local/$publisher/myprogram_Url_sad546a5s4d6a5sd1adsd6/$version/ 

Так что мой вопрос: Как найти это имя от NullSoft, так что я могу удалить файлы?

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

+0

Является ли это вашей программой? У вас есть какой-либо контроль над уникальным идентификатором установки? – Anders

+0

является «myprogram_Url_sad546a5s4d6a5sd1adsd6» фактическим примером идентификационной части или просто случайными символами? Если это GUID, это, вероятно, идентификатор программы от установщика, который должен быть доступен в деинсталляторе для вас. –

+0

Возможно, вы сможете очистить эти файлы от текущего пользователя (если вы уверены, что они не просто пытаются удалить и переустановить ваше приложение), но не (надежно) для других пользователей, поскольку они, возможно, были скопированы в другие компьютеры через роуминг-профили. Я склоняюсь к [совету Раймонда Чена] (http://blogs.msdn.com/b/oldnewthing/archive/2007/09/17/4948130.aspx), чтобы просто оставить данные для каждого пользователя. Здесь пользователь не увидит его, и файлы .settings, вероятно, не будут занимать достаточно места на диске. –

ответ

2

Вы можете найти файлы/папки с помощью макроса ${Locate} "$localappdata\$publisher" "/L=D /G=0 /M=myprogram_*" MyCallbackfunc и проверить MyCallbackfunc, если эта папка содержит папку с версией $. Вы также можете позвонить FindFirst, если вы не хотите использовать макрос ...

+0

Кажется, что это лучшее решение на данный момент, и я поговорил с ответственными за проект, и кажется, что было бы нормально просто стереть все папки с именем «myprogram *», так как мы не будем поддерживать использование нескольких версий на в любом случае. – jimmy

Смежные вопросы