2009-07-13 152 views
2

我有一个名为“XYZ”的窗口.net应用程序,在安装后使用我的应用程序时,我创建了一个名为“ABC”的自定义文件夹(文件夹可能在应用程序路径以外的任何位置)。如何在C#.NET应用程序中卸载时删除文件夹?

当我卸载应用程序时,所有文件夹都将被删除,但“ABC”文件夹保留在那里。

如何删除除应用程序路径以外的“ABC”文件夹?

回答

9

你必须使用该自定义操作:

  1. 添加一个新的库(“CustomActions”)的安装项目
  2. 添加=>新项=>安装程序类
  3. 切换到代码视图和重写卸载方法

代码:

public override void Uninstall(IDictionary savedState) 
{ 
    base.Uninstall(savedState); 

    // Delete folder here. 
} 

如果你不想写自己的DeleteFolder方法添加一个参考Microsoft.VisualBasic程序:

Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory("C:\\MyFiles", Microsoft.VisualBasic.FileIO.DeleteDirectoryOption.DeleteAllContents); 
  1. 的CustomActions项目的项目输出(主输出)添加到安装项目。 CustomActions的
  2. 右键单击您的安装项目,然后单击查看=>自定义操作
  3. 右键单击卸载=>添加自定义操作=>应用程序文件夹=>主输出

注:这方面的一个很好的例子是位于here。他们更详细地解释了这个例子。起初在这个答案中并不明显的一点是,您必须在APPLICATION'S项目中添加安装程序类模板,而不是应用程序的SETUP项目。基本上,安装项目会从添加到安装项目中的“自定义操作”中的任何应用程序中调用procs Install()和Uninstall()。这个想法是重写这两个过程来注入代码来执行您的出价...

+0

是否有可能从savedState []集合中获取原始安装目录?我不想将路径硬编码到我的应用程序中,我希望它尝试删除原始安装目录。尝试检查当前目录在'C:\ Windows \ SysWOW64'目录中结束。 :/ – 2014-05-30 09:44:13

0

创建自定义安装程序,你可以阅读这里更多detailes 编辑 这里是更好link,样品是在VB.NET,但不难理解;)

0

按我的知识,如果您使用的是安装程序来安装应用程序&该文件夹是由您的应用程序&而不是安装程序创建的,则它不会将其删除。

相反,您将不得不使用将在卸载时运行的自定义操作,该操作会将其删除。或者创建一个自定义的C#应用​​程序,该应用程序仅在正在进行卸载时才会运行,这将删除该文件夹。 (我假设你使用的是一些专业的安装程序类似的InstallShield)

相关问题