{"record":{"id":"24593fdf239f77bf","repo":"Devolutions/UniGetUI","slug":"flatpak-does-not-support-installing-arbitrary-vers","errorCode":null,"errorMessage":"Flatpak does not support installing arbitrary versions","messagePattern":"Flatpak does not support installing arbitrary versions","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"warning","filePath":"src/UniGetUI.PackageEngine.Managers.Flatpak/Helpers/FlatpakPkgDetailsHelper.cs","lineNumber":101,"sourceCode":"        // System-wide installs live under /var/lib/flatpak, per-user installs under\n        // ~/.local/share/flatpak. Return whichever actually contains the app.\n        foreach (var baseDir in new[]\n        {\n            \"/var/lib/flatpak\",\n            Path.Join(\n                Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),\n                \".local\", \"share\", \"flatpak\"),\n        })\n        {\n            var path = Path.Join(baseDir, \"app\", package.Id);\n            if (Directory.Exists(path))\n                return path;\n        }\n        return null;\n    }\n\n    protected override IReadOnlyList<string> GetInstallableVersions_UnSafe(IPackage package)\n        => throw new InvalidOperationException(\"Flatpak does not support installing arbitrary versions\");\n}\n","sourceCodeStart":83,"sourceCodeEnd":103,"githubUrl":"https://github.com/Devolutions/UniGetUI/blob/9b1d7d0eab91620fc15c86b36676532095936ae3/src/UniGetUI.PackageEngine.Managers.Flatpak/Helpers/FlatpakPkgDetailsHelper.cs#L83-L103","documentation":"Flatpak's GetInstallableVersions_UnSafe unconditionally throws InvalidOperationException. Flatpak installs one commit per branch and has no arbitrary-version catalog, so requesting installable versions is unsupported.","triggerScenarios":"Any code path that calls GetInstallableVersions on a Flatpak package (version picker, pre-install resolution).","commonSituations":"UI version dropdown for a Flatpak app; automation assuming a version list exists.","solutions":["Disable the version picker for Flatpak via the capability check.","Install the default Flatpak branch/commit without a version pin.","Catch InvalidOperationException and surface only the current/default version."],"exampleFix":"// before\nvar versions = await pkg.GetInstallableVersionsAsync(); // throws for flatpak\n// after\nif (pkg.Manager.Capabilities.SupportsArbitraryVersions)\n    versions = await pkg.GetInstallableVersionsAsync();\nelse\n    versions = [pkg.Version];","handlingStrategy":"validation","validationCode":"if (package.Manager.Capabilities.SupportsArbitraryVersions)\n    versions = package.GetInstallableVersionsAsync();\nelse\n    versions = new[] { package.Version };","typeGuard":"static bool CanListVersions(IPackage pkg) =>\n    pkg.Manager.Capabilities.SupportsArbitraryVersions;","tryCatchPattern":null,"preventionTips":["Hide the version picker for Flatpak packages.","Install the default Flatpak branch/commit.","Centralize the capability check for all no-version managers."],"tags":["flatpak","capability-not-supported","versions","package-manager"],"backgroundTag":null,"analyzedSha":"9b1d7d0eab91620fc15c86b36676532095936ae3","analyzedAt":"2026-08-13T12:19:18.278Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}