{"record":{"id":"509c3f380d829ef2","repo":"Devolutions/UniGetUI","slug":"no-ready-package-managers-are-available","errorCode":null,"errorMessage":"No ready package managers are available.","messagePattern":"No ready package managers are available\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":400,"severity":"critical","filePath":"src/UniGetUI.Interface.IpcApi/IpcPackageApi.cs","lineNumber":755,"sourceCode":"        {\n            reload(loader).GetAwaiter().GetResult();\n        }\n\n        return loader.Packages.Where(package => MatchesManager(package.Manager, managerName)).ToArray();\n    }\n\n    private static IReadOnlyList<IPackageManager> GetManagers(string? managerName)\n    {\n        var managers = PEInterface.Managers\n            .Where(manager => manager.IsEnabled() && manager.IsReady())\n            .Where(manager => MatchesManager(manager, managerName))\n            .ToArray();\n\n        if (managers.Length == 0)\n        {\n            if (string.IsNullOrWhiteSpace(managerName))\n            {\n                throw new InvalidOperationException(\"No ready package managers are available.\");\n            }\n\n            throw new InvalidOperationException(\n                $\"No ready package manager matching \\\"{managerName}\\\" is available.\"\n            );\n        }\n\n        return managers;\n    }\n\n    private static bool MatchesManager(IPackageManager manager, string? requestedManager)\n    {\n        return IpcManagerSettingsApi.MatchesManagerId(manager, requestedManager);\n    }\n\n    private static bool MatchesIdentity(IPackage package, IpcPackageActionRequest request)\n    {\n        if (!package.Id.Equals(request.PackageId, StringComparison.OrdinalIgnoreCase))","sourceCodeStart":737,"sourceCodeEnd":773,"githubUrl":"https://github.com/Devolutions/UniGetUI/blob/9b1d7d0eab91620fc15c86b36676532095936ae3/src/UniGetUI.Interface.IpcApi/IpcPackageApi.cs#L737-L773","documentation":"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.","triggerScenarios":"Calling any package operation while no manager has finished loading, or while every manager is disabled in settings.","commonSituations":"Calling the API too early during startup, before managers initialize; all managers disabled; manager executables (winget/scoop/...) not installed.","solutions":["Poll the /status or get-app-info endpoint until managers report ready before issuing package calls","Verify at least one manager is enabled in settings","Confirm the underlying manager executables are installed and on PATH"],"exampleFix":"// before\nawait IpcPackageApi.InstallPackageAsync(req); // called during startup\n// after\nawait WaitForReadyAsync(); // polls get-app-info until any manager is ready\nawait IpcPackageApi.InstallPackageAsync(req);","handlingStrategy":"validation","validationCode":"async Task WaitForReadyAsync()\n{\n    while (IpcPackageApi.GetManagers(null).Count == 0) // or poll get-app-info\n        await Task.Delay(TimeSpan.FromMilliseconds(250));\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Do not fire package calls during startup; wait for a ready signal","Keep at least one manager enabled","Verify manager executables on PATH"],"tags":["ipc","manager","environment","startup"],"backgroundTag":null,"analyzedSha":"9b1d7d0eab91620fc15c86b36676532095936ae3","analyzedAt":"2026-08-13T12:19:18.278Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}