{"record":{"id":"657a3b5e9e46ad26","repo":"Orbmu2k/nvidiaProfileInspector","slug":"the-selected-release-does-not-contain-a-downloadable-update","errorCode":null,"errorMessage":"The selected release does not contain a downloadable update package.","messagePattern":"The selected release does not contain a downloadable update package\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"nvidiaProfileInspector/Common/Updates/AppUpdateService.cs","lineNumber":50,"sourceCode":"                    .FirstOrDefault();\n\n                if (latestRelease == null)\n                    return UpdateCheckResult.Unavailable(\"No release information is available.\");\n\n                return latestRelease.Version > GetCurrentVersion()\n                    ? UpdateCheckResult.Available(latestRelease)\n                    : UpdateCheckResult.UpToDate(latestRelease);\n            }\n            catch\n            {\n                return UpdateCheckResult.Unavailable(\"Could not read release information.\");\n            }\n        }\n\n        public Task PrepareInstallAsync(UpdateRelease release)\n        {\n            if (release == null || !release.IsInstallable)\n                throw new InvalidOperationException(\"The selected release does not contain a downloadable update package.\");\n\n            return _installer.PrepareAndRunAsync(release);\n        }\n\n        public static Version GetCurrentVersion()\n        {\n            return Assembly.GetExecutingAssembly().GetName().Version;\n        }\n    }\n}\n","sourceCodeStart":32,"sourceCodeEnd":61,"githubUrl":"https://github.com/Orbmu2k/nvidiaProfileInspector/blob/2f50c388b3a4d661cade66b32746bec096d1eee1/nvidiaProfileInspector/Common/Updates/AppUpdateService.cs#L32-L61","documentation":"InvalidOperationException thrown by AppUpdateService.PrepareInstallAsync when the given UpdateRelease is null or its IsInstallable flag is false, i.e. the GitHub release has no downloadable asset/attached update package. This is a caller-side precondition check before delegating to the installer.","triggerScenarios":"Calling PrepareInstallAsync with a release that only has source-code archives and no binary asset; passing a null release; a release whose asset list failed to parse so IsInstallable stayed false; calling install from a 'check for updates' flow without verifying installability.","commonSituations":"Self-update on releases where the CI pipeline failed to attach the zip; draft/prerelease releases without assets; UI enabling the Install button for every listed release.","solutions":["Check release?.IsInstallable == true before calling PrepareInstallAsync and disable the install action otherwise","Ensure the update-check code only surfaces releases that contain installable assets","Catch the InvalidOperationException and show a 'no downloadable package for this release' message","Refresh the release list — the asset may have been attached after the cached release data was fetched"],"exampleFix":"// before\nawait updateService.PrepareInstallAsync(release);\n// after\nif (release?.IsInstallable == true)\n    await updateService.PrepareInstallAsync(release);\nelse\n    MessageBox.Show(\"This release has no downloadable update package.\");","handlingStrategy":"validation","validationCode":"if (release == null || !release.IsInstallable)\n    throw new InvalidOperationException(\"Release is not installable\");","typeGuard":null,"tryCatchPattern":"try { await updateService.PrepareInstallAsync(release); }\ncatch (InvalidOperationException) { MessageBox.Show(\"This release has no downloadable update package.\"); }","preventionTips":["Gate install commands on release?.IsInstallable == true","Only fetch/list releases that contain installable assets","Refresh release metadata if the asset was attached later","Distinguish null release (not selected) from non-installable release in the UI"],"tags":["update","validation","invalid-operation"],"backgroundTag":"missing-required-argument","analyzedSha":"2f50c388b3a4d661cade66b32746bec096d1eee1","analyzedAt":"2026-09-15T05:23:52.218Z","contentChangedAt":"2026-09-15T05:23:52.218Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}