我正在创建一个C#.NET WinForms应用程序,并且我将该安装程序创建为Visual Studio安装项目。Visual Studio安装项目 - 在运行时创建的文件在卸载时不会被删除
在Windows 10上,我可以删除控制面板中安装的文件。但是,在运行时,我的应用程序会创建一个包含日志文件的文件夹,并且在卸载应用程序时不会删除此文件夹和日志文件。
如何在卸载程序时将这些文件也删除?
我正在创建一个C#.NET WinForms应用程序,并且我将该安装程序创建为Visual Studio安装项目。Visual Studio安装项目 - 在运行时创建的文件在卸载时不会被删除
在Windows 10上,我可以删除控制面板中安装的文件。但是,在运行时,我的应用程序会创建一个包含日志文件的文件夹,并且在卸载应用程序时不会删除此文件夹和日志文件。
如何在卸载程序时将这些文件也删除?
您可以使用自定义安装程序操作在安装或卸载应用程序期间执行自定义操作。为此,您需要添加一个新的类库,其中包含一个派生自CustomAction
的类。
为此,请按照下列步骤操作:
CustomActionData
属性完全为/path="[TARGETDIR]\"
。代码自定义操作
增加提及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);
}
}
}
正是我在找的东西!只是想知道,而不是使用特定的目标目录,反正我可以抓住安装目录吗? AppDomain.CurrentDomain.BaseDirectory(我在主应用程序中使用的)没有实现这一点。 – shadowsora
'Context.Parameters [“path”]是安装目录。 –
您是否使用ClickOnce发布应用程序? – ZerosAndOnes
不确定ClickOnce是什么..我在Visual Studio中构建安装程序 – shadowsora
[卸载clickonce应用程序后删除额外文件]的可能副本(https://stackoverflow.com/questions/7829151/removing-extra-files-after -uninstalling-a-clickonce-application) – user12345