部署项目卸载 - 删除文件?

Posted

技术标签:

【中文标题】部署项目卸载 - 删除文件?【英文标题】:Deployment project uninstall - deleting files? 【发布时间】:2011-03-22 16:03:07 【问题描述】:

我有一个安装它的项目和部署项目。安装的软件会在目标 PC 上生成多个文件(用户使用时)。我想知道是否有办法指示部署项目在卸载时删除这些文件?

所有文件都在用户应用程序数据文件夹中。我可以指示卸载程序删除文件夹(在 Application Data 中)及其中的所有文件(递归)吗?

【问题讨论】:

【参考方案1】:

您可以在卸载期间使用自定义操作删除文件。设置它的最简单方法之一是使用安装程序类。

Arnaldo Sandoval 的This article 有点过时了,但它仍然是关于如何使用安装程序类来实现自定义操作的一个很好的概述。它甚至包括关于在卸载时清理文件的部分。

但是,最好添加事件侦听器,而不是覆盖 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 属性编辑器注册事件,如果这更适合您的话。

本文的其余部分非常出色,尤其是讨论各种安装事件的所有未记录“功能”的部分。

【讨论】:

以上是关于部署项目卸载 - 删除文件?的主要内容,如果未能解决你的问题,请参考以下文章

subversion 彻底删除 服务器上的 一个项目,搭建subversion 服务器,并自动部署项目...

subversion 彻底删除 服务器上的 一个项目,搭建subversion 服务器,并自动部署项目...

subversion 彻底删除 服务器上的 一个项目,搭建subversion 服务器,并自动部署项目...

subversion 彻底删除 服务器上的 一个项目,搭建subversion 服务器,并自动部署项目...

如何在不重新启动的情况下卸载 Windows 服务并删除其文件

.NET 部署项目:取消卸载程序的自定义操作