Devolutions/UniGetUI · critical · InvalidOperationException

No ready package managers are available.

Error message

No ready package managers are available.

What it means

GetManagers throws 'No ready package managers are available' when zero managers are both enabled and ready and no specific managerName was requested. This is a global environment failure: every package operation routes through GetManagers.

Source

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

        {
            reload(loader).GetAwaiter().GetResult();
        }

        return loader.Packages.Where(package => MatchesManager(package.Manager, managerName)).ToArray();
    }

    private static IReadOnlyList<IPackageManager> GetManagers(string? managerName)
    {
        var managers = PEInterface.Managers
            .Where(manager => manager.IsEnabled() && manager.IsReady())
            .Where(manager => MatchesManager(manager, managerName))
            .ToArray();

        if (managers.Length == 0)
        {
            if (string.IsNullOrWhiteSpace(managerName))
            {
                throw new InvalidOperationException("No ready package managers are available.");
            }

            throw new InvalidOperationException(
                $"No ready package manager matching \"{managerName}\" is available."
            );
        }

        return managers;
    }

    private static bool MatchesManager(IPackageManager manager, string? requestedManager)
    {
        return IpcManagerSettingsApi.MatchesManagerId(manager, requestedManager);
    }

    private static bool MatchesIdentity(IPackage package, IpcPackageActionRequest request)
    {
        if (!package.Id.Equals(request.PackageId, StringComparison.OrdinalIgnoreCase))

View on GitHub (pinned to 9b1d7d0eab)

Solutions

  1. Poll the /status or get-app-info endpoint until managers report ready before issuing package calls
  2. Verify at least one manager is enabled in settings
  3. Confirm the underlying manager executables are installed and on PATH

Example fix

// before
await IpcPackageApi.InstallPackageAsync(req); // called during startup
// after
await WaitForReadyAsync(); // polls get-app-info until any manager is ready
await IpcPackageApi.InstallPackageAsync(req);
Defensive patterns

Strategy: validation

Validate before calling

async Task WaitForReadyAsync()
{
    while (IpcPackageApi.GetManagers(null).Count == 0) // or poll get-app-info
        await Task.Delay(TimeSpan.FromMilliseconds(250));
}

Prevention

When it happens

Trigger: Calling any package operation while no manager has finished loading, or while every manager is disabled in settings.

Common situations: Calling the API too early during startup, before managers initialize; all managers disabled; manager executables (winget/scoop/...) not installed.

Related errors


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