JosefNemec/Playnite · error · Exception

Failed to download update file.

Error message

Failed to download update file.

What it means

Thrown by the updater after a network exception escapes downloader.DownloadFileAsync while fetching the update package. The underlying exception is logged, then re-wrapped in a generic Exception so callers get a stable error type regardless of transport. It indicates the update payload could not be retrieved from any of the configured PackageUrls.

Source

Thrown at source/Playnite/App/Updater.cs:160

            }

            if (File.Exists(updaterPath))
            {
                if (VerifyUpdateFile(updateManifest.Checksum, updaterPath))
                {
                    logger.Info("Update already downloaded skipping download.");
                    return;
                }
            }

            try
            {
                await downloader.DownloadFileAsync(updateManifest.PackageUrls, updaterPath, progressHandler);
            }
            catch (Exception e)
            {
                logger.Error(e, "Failed to download update file.");
                throw new Exception("Failed to download update file.");
            }

            if (!VerifyUpdateFile(updateManifest.Checksum, updaterPath))
            {
                throw new Exception($"Update file integrity check failed.");
            }
        }

        public void InstallUpdate(ApplicationMode mode)
        {
            var portable = PlayniteSettings.IsPortable ? "/PORTABLE" : "";
            var fullscreen = mode == ApplicationMode.Fullscreen ? "/FULLSCREEN" : "";
            logger.Info("Installing new update to {0}, in {1} mode".Format(PlaynitePaths.ProgramPath, portable));
            playniteApp.QuitAndStart(
                updaterPath,
                @"/SILENT /NOCANCEL /DIR=""{0}"" /UPDATE {1} {2}".Format(PlaynitePaths.ProgramPath, portable, fullscreen),
                !FileSystem.CanWriteToFolder(PlaynitePaths.ProgramPath));
        }

View on GitHub (pinned to 5911f4e964)

Solutions

  1. Confirm network connectivity and that the update host is reachable from the machine.
  2. Retry the update check later (transient server/network issues).
  3. Disable/​configure proxy or firewall rules blocking the update domain.
  4. Ensure the updater download directory is writable and has free space.
  5. Temporarily disable AV real-time scanning for the updater path if it interferes.

Example fix

// before
await updater.DownloadUpdatePackage(progressHandler);

// after
int attempts = 0;
while (true)
{
    try { await updater.DownloadUpdatePackage(progressHandler); break; }
    catch (Exception e) when (++attempts < 3) { logger.Warn(e, "retry update download"); await Task.Delay(2000); }
}
Defensive patterns

Strategy: retry

Try / catch

int attempts = 0;
while (true)
{
    try { await updater.DownloadUpdatePackage(progressHandler); break; }
    catch (Exception e) when (++attempts < 3) { logger.Warn(e, "retry download"); await Task.Delay(2000); }
}

Prevention

When it happens

Trigger: DownloadUpdatePackage calls DownloadFileAsync(updateManifest.PackageUrls, updaterPath, progress); a network/HTTP/IO exception is raised (offline, DNS failure, 404, proxy block, disk write error to updaterPath).

Common situations: No internet connection; a corporate proxy/firewall blocks the update host; the update server returns an error for a listed URL; antivirus scans/quarantines the in-progress download; insufficient disk space or permissions on the updater path.

Related errors


AI-assisted analysis of JosefNemec/Playnite@5911f4e964 (2026-08-13). Data as JSON: /api/errors/99034c0c952b59c5. Report an issue: GitHub.