diff --git a/LANCommander.Playnite.Extension/LANCommander.Playnite.Extension.csproj b/LANCommander.Playnite.Extension/LANCommander.Playnite.Extension.csproj index 47919a7..284400b 100644 --- a/LANCommander.Playnite.Extension/LANCommander.Playnite.Extension.csproj +++ b/LANCommander.Playnite.Extension/LANCommander.Playnite.Extension.csproj @@ -87,6 +87,7 @@ + diff --git a/LANCommander.Playnite.Extension/PlayniteLibraryPlugin.cs b/LANCommander.Playnite.Extension/PlayniteLibraryPlugin.cs index 29616a1..5b8c159 100644 --- a/LANCommander.Playnite.Extension/PlayniteLibraryPlugin.cs +++ b/LANCommander.Playnite.Extension/PlayniteLibraryPlugin.cs @@ -74,6 +74,14 @@ namespace LANCommander.Playnite.Extension yield return new LANCommanderInstallController(this, args.Game); } + public override IEnumerable GetUninstallActions(GetUninstallActionsArgs args) + { + if (args.Game.PluginId != Id) + yield break; + + yield return new LANCommanderUninstallController(this, args.Game); + } + public override ISettings GetSettings(bool firstRunSettings) { return Settings; diff --git a/LANCommander.Playnite.Extension/UninstallController.cs b/LANCommander.Playnite.Extension/UninstallController.cs new file mode 100644 index 0000000..dc52409 --- /dev/null +++ b/LANCommander.Playnite.Extension/UninstallController.cs @@ -0,0 +1,34 @@ +using Playnite.SDK; +using Playnite.SDK.Models; +using Playnite.SDK.Plugins; +using LANCommander.SDK.Extensions; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using ICSharpCode.SharpZipLib.Zip; +using ICSharpCode.SharpZipLib.Core; + +namespace LANCommander.Playnite.Extension +{ + public class LANCommanderUninstallController : UninstallController + { + private PlayniteLibraryPlugin Plugin; + + public LANCommanderUninstallController(PlayniteLibraryPlugin plugin, Game game) : base(game) + { + Name = "Uninstall LANCommander Game"; + Plugin = plugin; + } + + public override void Uninstall(UninstallActionArgs args) + { + Directory.Delete(Game.InstallDirectory, true); + + InvokeOnUninstalled(new GameUninstalledEventArgs()); + } + } +}