Devolutions/UniGetUI · warning · InvalidOperationException

No installed package matching id "{PackageId}" was found.

Error message

No installed package matching id "{PackageId}" was found.

What it means

FindInstalledPackage throws when the installed-packages snapshot (loader cache, else a live manager query) contains no package matching the id. Used by uninstall and reinstall.

Source

Thrown at src/UniGetUI.Interface.IpcApi/IpcPackageApi.cs:626

    }

    private static IPackage FindAnyPackage(IpcPackageActionRequest request)
    {
        return TryFindPackageForStateMutation(request)
            ?? FindSearchResult(request);
    }

    private static IPackage FindInstalledPackage(IpcPackageActionRequest request)
    {
        var package = GetInstalledPackagesSnapshot(request.ManagerName).FirstOrDefault(candidate =>
            MatchesIdentity(candidate, request)
        );
        if (package is not null)
        {
            return package;
        }

        throw new InvalidOperationException(
            $"No installed package matching id \"{request.PackageId}\" was found."
        );
    }

    private static IPackage FindUpgradablePackage(IpcPackageActionRequest request)
    {
        var package = GetUpgradablePackagesSnapshot(request.ManagerName).FirstOrDefault(candidate =>
            MatchesIdentity(candidate, request)
        );
        if (package is not null)
        {
            return package;
        }

        throw new InvalidOperationException(
            $"No upgradable package matching id \"{request.PackageId}\" was found."
        );
    }

View on GitHub (pinned to 9b1d7d0eab)

Solutions

  1. Refresh the installed snapshot before acting
  2. Source the exact id/source pair from the installed list the UI already has
  3. Pre-check the snapshot with a FindInstalledPackage-style lookup

Example fix

// before
await IpcPackageApi.UninstallPackageAsync(staleRequest);
// after
var installed = manager.GetInstalledPackages()
    .FirstOrDefault(p => p.Id == request.PackageId);
if (installed is null) return Result.NotFound("not installed");
await IpcPackageApi.UninstallPackageAsync(ToRequest(installed));
Defensive patterns

Strategy: validation

Validate before calling

// Confirm the package is in the installed snapshot before uninstall
var present = GetInstalledPackagesSnapshot(request.ManagerName)
    .Any(p => MatchesIdentity(p, request));
if (!present) return Result.NotFound("not installed");

Prevention

When it happens

Trigger: Calling uninstall/reinstall on a package that is not installed under any matching manager.

Common situations: Stale client list; package already removed by another path; the installed loader has not finished loading yet.

Related errors


AI-assisted analysis of Devolutions/UniGetUI@9b1d7d0eab (2026-08-13). Data as JSON: /api/errors/9af393db645dbdba. Report an issue: GitHub.