如何在C#.NET应用程序中卸载时删除文件夹?

Dha*_*ana 3 uninstall file

我有一个名为"XYZ"的窗口.net应用程序,我在安装后使用我的应用程序时创建了一个名为"ABC"的自定义文件夹(文件夹可能是应用程序路径以外的任何位置).

当我卸载应用程序时,所有文件夹都被删除但"ABC"文件夹仍保留在那里.

如何删除除应用程序路径之外的"ABC"文件夹?

wei*_*ure 10

您必须使用自定义操作:

  1. 将新库("CustomActions")添加到安装项目
  2. 添加=>新项=>安装程序类
  3. 切换到代码视图并覆盖卸载方法

码:

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

    // Delete folder here.
}
Run Code Online (Sandbox Code Playgroud)

如果您不想编写自己的DeleteFolder方法,请添加对Microsoft.VisualBasic的引用:

 Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory("C:\\MyFiles", Microsoft.VisualBasic.FileIO.DeleteDirectoryOption.DeleteAllContents);
Run Code Online (Sandbox Code Playgroud)
  1. 将CustomActions项目的项目输出(主输出)添加到安装项目.
  2. 右键单击您的安装项目,然后单击View => Custom Actions
  3. 右键单击uninstall => Add Custom Action => Application Folder => CustomActions的Primary Output

注意:这方面的一个很好的例子就在这里.他们更详细地解释了这个例子.在这个答案中一开始并不明显的事实是你必须在APPLICATION'S项目中添加Installer Class模板,而不是Application的SETUP项目.基本上,安装项目从添加到安装项目中的自定义操作的任何应用程序调用procs Install()和Uninstall().我们的想法是覆盖这两个触发器以注入代码来进行投标......