Devolutions/UniGetUI · error · InvalidOperationException
No ready package manager matching
Error message
No ready package manager matching "{managerName}" is available. What it means
GetManagers throws 'No ready package manager matching "X"' when ready managers exist but none match the requested managerName (matched by public manager id via IpcManagerSettingsApi.MatchesManagerId).
Solutions
- Use the public manager id returned by the get-managers/list endpoint
- Drop managerName to let the API match any ready manager when the specific one is optional
- Verify the named manager is enabled and ready first
Example fix
// before
await IpcPackageApi.InstallPackageAsync(
new IpcPackageActionRequest { ManagerName = "Winget", PackageId = "git" });
// after
var id = (await GetManagersAsync()).First(m => m.Name == "Winget").Id; // "winget"
await IpcPackageApi.InstallPackageAsync(
new IpcPackageActionRequest { ManagerName = id, PackageId = "git" }); Defensive patterns
Strategy: validation
Validate before calling
var validIds = PEInterface.Managers
.Where(m => m.IsEnabled() && m.IsReady())
.Select(IpcManagerSettingsApi.GetPublicManagerId)
.ToHashSet(StringComparer.OrdinalIgnoreCase);
if (!validIds.Contains(managerName))
throw new ArgumentException($"Unknown manager: {managerName}"); Prevention
- Always use the public manager id, not the display name
- Re-fetch the manager list when a name lookup fails
When it happens
Trigger: Passing a managerName that is a typo, a display name, or refers to a disabled/not-ready manager.
Common situations: Client uses the human display name instead of the public id; that manager is disabled; casing/format mismatch.
Related errors
- No known source matching
- No package manager matching
- No ready package managers are available.
- No setting matching " " was found.
- Bundle export only supports .ubundle and .json output files.
AI-assisted analysis of Devolutions/UniGetUI@9b1d7d0eab (2026-08-13).
Data as JSON: /api/errors/70ba076b694c1a11.
Report an issue: GitHub.
Appendix: source
Thrown at src/UniGetUI.Interface.IpcApi/IpcPackageApi.cs:758
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))
{
return false;
}View on GitHub (pinned to 9b1d7d0eab)