Удаление проекта развертывания - удаление файлов? - PullRequest
2 голосов
/ 29 июля 2010

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

Все файлы находятся в папке Application Data пользователя.Могу ли я поручить программе удаления удалить папку (внутри Application Data) и все файлы в ней (рекурсивно)?

1 Ответ

3 голосов
/ 30 июля 2010

Вы можете удалить файлы во время удаления, используя пользовательское действие. Один из самых простых способов настроить это с помощью класса установщика.

Эта статья Арнальдо Сандовала немного устарела, но все же это довольно хороший обзор того, как использовать классы установщика для реализации пользовательских действий. Он даже включает раздел об очистке файлов при удалении.

Однако вместо переопределения методов в классе Installer лучше добавить прослушиватели событий. То, где вы получаете «сохраненное состояние», также немного отличается. Например, в статье описывается переопределение метода Install для захвата TargetDir вместо:

public override void Install(System.Collections.IDictionary stateSaver) 
{ 
   base.Install(stateSaver); 
   stateSaver.Add("TargetDir", Context.Parameters["DP_TargetDir"].ToString()); 
}

Вы бы создали метод, подобный следующему:

private void onBeforeInstall(object sender, InstallEventArgs args) 
{ 
   // The saved state dictionary is a property on the event args
   args.SavedState.Add("TargetDir", Context.Parameters["DP_TargetDir"].ToString()); 
}

И зарегистрировать его в конструкторе:

public InstallerClass() : base()
{
   this.BeforeInstall += new InstallEventHandler(onBeforeInstall);
}

Вы также можете зарегистрировать события через редактор свойств Visual Studio, если это больше ваша вещь.

Остальная часть статьи превосходна, особенно разделы, в которых обсуждаются все недокументированные «особенности» различных событий установки.

...