我正在創建一個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