我有一个安装它的项目和部署项目。安装的软件在目标PC上生成多个文件(由用户使用)。我想知道是否有办法指示部署项目在卸载时删除这些文件?
所有文件都在用户Application Data文件夹中。我是否可以指示卸载程序删除文件夹(在Application Data中)及其中的所有文件(递归)?
答案 0 :(得分:3)
您可以使用自定义操作在卸载期间删除文件。最简单的设置方法之一是使用安装程序类。
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 Property编辑器注册事件,如果这更适合您。
本文的其余部分非常出色,特别是讨论各种安装事件的所有未记录的“功能”的部分。