Visual Studio安装项目 - 在卸载时不会删除在运行时创建的文件

时间:2017-10-17 08:59:08

标签: c# .net winforms visual-studio setup-deployment

我正在创建一个C#.NET WinForms应用程序,我正在将该安装程序创建为Visual Studio安装项目。

在Windows 10上,我可以删除控制面板中已安装的文件。但是,在运行时,我的应用程序会创建一个包含日志文件的文件夹,并且在卸载应用程序时不会删除此文件夹和日志文件。

如何在卸载程序时删除这些文件?

1 个答案:

答案 0 :(得分:3)

您可以使用自定义安装程序操作在安装或卸载应用程序期间执行自定义操作。为此,您需要添加一个新的类库,其中包含一个派生自CustomAction

的类

为此,请按照以下步骤操作:

  1. 添加新的安装项目。 (如果您没有项目模板,请从此处下载并安装VS2013VS2015VS2017
  2. 将主项目的主要输出添加到安装项目中。
  3. 添加新的类库项目。
  4. 向类库项目添加新的安装程序操作,并使用这些步骤末尾的代码。
  5. 将类库的主要输出添加到安装项目
  6. 右键单击解决方案资源管理器中的安装项目,然后在视图菜单中选择自定义操作
  7. 在自定义肌动蛋白编辑器中,右键单击卸载并选择添加自定义操作... 并选择类库的主输出。
  8. 将操作重命名为 RemoveFiles ,并在属性中将CustomActionData属性设置为/path="[TARGETDIR]\"
  9. 重建解决方案和安装项目。
  10. 安装项目。
  11. 自定义操作代码

    添加对System.Configuration.Install程序集的引用,然后将类添加到具有以下内容的项目中。你可以在这里找到你需要的任何逻辑。

    using System.Collections;
    using System.ComponentModel;
    using System.Configuration.Install;
    
    namespace InstallerActions
    {
        [RunInstaller(true)]
        public partial class RemoveFiles : Installer
        {
            protected override void OnAfterUninstall(IDictionary savedState)
            {
                var path = System.IO.Path.Combine(Context.Parameters["path"], "log");
                System.IO.Directory.Delete(path, true);
            }
        }
    }