From b914a0c3098110008950d4e868dda79d83dfac9c Mon Sep 17 00:00:00 2001 From: GabrielDuf Date: Fri, 10 Apr 2026 08:08:57 -0400 Subject: [PATCH] revert getWinGetPackageForUpdates and add a fallback tot the cli --- .../ClientHelpers/NativeWinGetHelper.cs | 60 +++---------------- 1 file changed, 9 insertions(+), 51 deletions(-) diff --git a/src/UniGetUI.PackageEngine.Managers.WinGet/ClientHelpers/NativeWinGetHelper.cs b/src/UniGetUI.PackageEngine.Managers.WinGet/ClientHelpers/NativeWinGetHelper.cs index 586fc001e1..232559b3a5 100644 --- a/src/UniGetUI.PackageEngine.Managers.WinGet/ClientHelpers/NativeWinGetHelper.cs +++ b/src/UniGetUI.PackageEngine.Managers.WinGet/ClientHelpers/NativeWinGetHelper.cs @@ -24,6 +24,7 @@ internal sealed class NativeWinGetHelper : IWinGetManagerHelper public string ActivationMode { get; private set; } = string.Empty; public string ActivationSource { get; private set; } = string.Empty; + private bool _isBundledActivation; public NativeWinGetHelper(WinGet manager) { @@ -61,6 +62,7 @@ private bool TryInitializeBundledFactory() factory.LibraryPath, "Connected to WinGet API using bundled in-proc activation." ); + _isBundledActivation = true; return true; } catch (WinGetComActivationException ex) @@ -268,11 +270,17 @@ var filter_type in new[] public IReadOnlyList GetAvailableUpdates_UnSafe() { + if (_isBundledActivation) + { + Logger.Info("WinGet is using bundled in-proc COM — falling back to CLI for update detection"); + return new BundledWinGetHelper(Manager).GetAvailableUpdates_UnSafe(); + } + var logger = Manager.TaskLogger.CreateNew(LoggableTaskType.ListUpdates); List packages = []; foreach ( var nativePackage in TaskRecycler>.RunOrAttach( - GetWinGetPackagesForUpdates + GetLocalWinGetPackages ) ) { @@ -475,56 +483,6 @@ private IReadOnlyList GetLocalWinGetPackages() return foundPackages; } - private IReadOnlyList GetWinGetPackagesForUpdates() - { - var logger = Manager.TaskLogger.CreateNew(LoggableTaskType.OtherTask); - logger.Log("OtherTask: GetWinGetPackagesForUpdates"); - - try - { - CreateCompositePackageCatalogOptions createCompositePackageCatalogOptions = Factory.CreateCreateCompositePackageCatalogOptions(); - foreach (var catalogRef in WinGetManager.GetPackageCatalogs().ToArray()) - { - logger.Log($"Adding catalog {catalogRef.Info.Name} to composite catalog"); - createCompositePackageCatalogOptions.Catalogs.Add(catalogRef); - } - - createCompositePackageCatalogOptions.CompositeSearchBehavior = CompositeSearchBehavior.RemotePackagesFromAllCatalogs; - var updateSearchCatalogRef = WinGetManager.CreateCompositePackageCatalog(createCompositePackageCatalogOptions); - updateSearchCatalogRef.AcceptSourceAgreements = true; - var connectResult = updateSearchCatalogRef.Connect(); - - if (connectResult.Status != ConnectResultStatus.Ok) - { - logger.Error("Failed to connect to update catalog. Aborting."); - throw new InvalidOperationException("WinGet: Failed to connect to update catalog."); - } - - FindPackagesOptions findPackagesOptions = Factory.CreateFindPackagesOptions(); - PackageMatchFilter filter = Factory.CreatePackageMatchFilter(); - filter.Field = PackageMatchField.Id; - filter.Option = PackageFieldMatchOption.StartsWithCaseInsensitive; - filter.Value = ""; - findPackagesOptions.Filters.Add(filter); - - var taskResult = connectResult.PackageCatalog.FindPackages(findPackagesOptions); - List foundPackages = []; - foreach (var match in taskResult.Matches.ToArray()) - { - if (match.CatalogPackage.InstalledVersion is not null) - foundPackages.Add(match.CatalogPackage); - } - - logger.Close(0); - return foundPackages; - } - catch - { - logger.Close(1); - throw; - } - } - public IReadOnlyList GetSources_UnSafe() { List sources = [];