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

sha*_*ora 3 .net c# setup-deployment visual-studio winforms

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

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

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

Rez*_*aei 10

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

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

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

自定义操作代码

添加对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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • `Context.Parameters["path"]` 是安装目录。 (2认同)