Devolutions/UniGetUI · error · InvalidOperationException
No ready package manager matching "{managerName}" is availab
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).
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)
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 package manager matching "{managerName}" was found.
- No known source matching "{request.SourceName}" was found fo
- No setting matching "{settingKey}" was found.
- No ready package managers are available.
- GitHub request failed with HTTP {(int)response.StatusCode} (
AI-assisted analysis of Devolutions/UniGetUI@9b1d7d0eab (2026-08-13).
Data as JSON: /api/errors/70ba076b694c1a11.
Report an issue: GitHub.