Orbmu2k/nvidiaProfileInspector · error · InvalidOperationException

The selected release does not contain a downloadable update…

Error message

The selected release does not contain a downloadable update package.

What it means

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.

Solutions

  1. Check release?.IsInstallable == true before calling PrepareInstallAsync and disable the install action otherwise
  2. Ensure the update-check code only surfaces releases that contain installable assets
  3. Catch the InvalidOperationException and show a 'no downloadable package for this release' message
  4. Refresh the release list — the asset may have been attached after the cached release data was fetched

Example fix

// before
await updateService.PrepareInstallAsync(release);
// after
if (release?.IsInstallable == true)
    await updateService.PrepareInstallAsync(release);
else
    MessageBox.Show("This release has no downloadable update package.");
Defensive patterns

Strategy: validation

Validate before calling

if (release == null || !release.IsInstallable)
    throw new InvalidOperationException("Release is not installable");

Try / catch

try { await updateService.PrepareInstallAsync(release); }
catch (InvalidOperationException) { MessageBox.Show("This release has no downloadable update package."); }

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of Orbmu2k/nvidiaProfileInspector@2f50c388b3 (2026-09-15). Data as JSON: /api/errors/657a3b5e9e46ad26. Report an issue: GitHub.

Appendix: source

Thrown at nvidiaProfileInspector/Common/Updates/AppUpdateService.cs:50

                    .FirstOrDefault();

                if (latestRelease == null)
                    return UpdateCheckResult.Unavailable("No release information is available.");

                return latestRelease.Version > GetCurrentVersion()
                    ? UpdateCheckResult.Available(latestRelease)
                    : UpdateCheckResult.UpToDate(latestRelease);
            }
            catch
            {
                return UpdateCheckResult.Unavailable("Could not read release information.");
            }
        }

        public Task PrepareInstallAsync(UpdateRelease release)
        {
            if (release == null || !release.IsInstallable)
                throw new InvalidOperationException("The selected release does not contain a downloadable update package.");

            return _installer.PrepareAndRunAsync(release);
        }

        public static Version GetCurrentVersion()
        {
            return Assembly.GetExecutingAssembly().GetName().Version;
        }
    }
}

View on GitHub (pinned to 2f50c388b3)