diff --git a/src/UniGetUI.PackageEngine.Managers.WinGet/Helpers/WinGetPkgOperationHelper.cs b/src/UniGetUI.PackageEngine.Managers.WinGet/Helpers/WinGetPkgOperationHelper.cs index 401ecc1841..a5ca741b8d 100644 --- a/src/UniGetUI.PackageEngine.Managers.WinGet/Helpers/WinGetPkgOperationHelper.cs +++ b/src/UniGetUI.PackageEngine.Managers.WinGet/Helpers/WinGetPkgOperationHelper.cs @@ -4,6 +4,7 @@ using UniGetUI.Core.SettingsEngine; using UniGetUI.Core.Tools; using UniGetUI.PackageEngine.Classes.Manager.BaseProviders; +using UniGetUI.PackageEngine.Classes.Packages.Classes; using UniGetUI.PackageEngine.Enums; using UniGetUI.PackageEngine.Interfaces; @@ -157,10 +158,16 @@ protected override OperationVeredict _getOperationResult( return OperationVeredict.Failure; } - if (uintCode is 0x8A15002B) - { // TODO: The update cannot be installed (not applicable) - return OperationVeredict.Failure; - } + if (uintCode is 0x8A15002B) + { + if (Settings.Get("IgnoreUpdatesNotApplicable")) + { + Logger.Warn($"Ignoring update {package.Id} as the update is not applicable to the platform, and the user has enabled IgnoreUpdatesNotApplicable"); + IgnoredUpdatesDatabase.Add(IgnoredUpdatesDatabase.GetIgnoredIdForPackage(package), package.VersionString); + return OperationVeredict.Success; + } + return OperationVeredict.Failure; + } if (uintCode is 0x8A15010D or 0x8A15004F or 0x8A15010E) { // Application is already installed diff --git a/src/UniGetUI/Pages/SettingsPage.xaml.cs b/src/UniGetUI/Pages/SettingsPage.xaml.cs index 971c0b9551..98976faf18 100644 --- a/src/UniGetUI/Pages/SettingsPage.xaml.cs +++ b/src/UniGetUI/Pages/SettingsPage.xaml.cs @@ -196,10 +196,17 @@ public SettingsPage() _ = PEInterface.InstalledPackagesLoader.ReloadPackages(); }; + CheckboxCard WinGet_HideNonApplicableUpdates = new() + { + Text = CoreTools.Translate("Add updates that fail with a 'no applicable update found' to the ignored updates list"), + SettingName = "IgnoreUpdatesNotApplicable" + }; + ExtraSettingsCards[PEInterface.WinGet].Add(WinGet_EnableTroubleshooter); ExtraSettingsCards[PEInterface.WinGet].Add(WinGet_EnableTroubleshooter_v2); ExtraSettingsCards[PEInterface.WinGet].Add(WinGet_ResetWindowsIPackageManager); ExtraSettingsCards[PEInterface.WinGet].Add(WinGet_UseBundled); + ExtraSettingsCards[PEInterface.WinGet].Add(WinGet_HideNonApplicableUpdates); // ----------------------------------------------------------------------------------------