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

时间:2009-07-13 05:51:33

标签: file uninstall

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

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

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

3 个答案:

答案 0 :(得分:10)

您必须使用自定义操作:

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

    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项目的项目输出(主输出)添加到安装项目。
    2. 右键单击您的安装项目,然后单击View =>自定义操作
    3. 右键单击uninstall =>添加自定义操作=> Application Folder => CustomActions的主要输出
    4. 注意:这是一个很好的例子,位于here。他们更详细地解释了这个例子。在这个答案中一开始并不明显的事实是你必须在APPLICATION'S项目中添加Installer Class模板,而不是Application的SETUP项目。基本上,安装项目从添加到安装项目中的自定义操作的任何应用程序调用procs Install()和Uninstall()。我们的想法是覆盖这两个过程以注入代码来进行出价......

答案 1 :(得分:0)

创建自定义安装程序,您可以在此处阅读更多详细信息 的修改 这里有更好的link,示例是在VB.NET中,但不难理解;)

答案 2 :(得分:0)

据我所知,如果您使用安装程序来安装应用程序&该文件夹由您的应用创建;不是安装程序,那么它不会删除它。

相反,您必须使用将在卸载时运行的自定义操作,该操作将删除它。或者创建一个自定义C#应用程序,该应用程序仅在卸载过程中运行,该应用程序将删除该文件夹。 (我假设您使用的是一些专业的安装程序,如InstallShield)