2010-07-29 151 views
2

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

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

回答

3

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

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

但是,不要重写Installer类中的方法,最好添加事件侦听器。你得到“保存状态”的地方也有一点不同。例如,在本文介绍的覆盖安装方法捕捉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属性编辑器注册事件,如果这更重要的话。

本文的其余部分非常优秀,特别是讨论各种安装事件的所有无证“特性”的章节。