JosefNemec/Playnite · error · Exception

Update file integrity check failed.

Error message

Update file integrity check failed.

What it means

Thrown by the updater after the downloaded package fails VerifyUpdateFile, which compares the manifest's Checksum against the downloaded file. A mismatch means the bytes on disk do not match the published checksum, so the updater refuses to install a corrupt or tampered package.

Source

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

                {
                    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));
        }

        public UpdateManifest DownloadManifest()
        {
            var dataString = string.Empty;

View on GitHub (pinned to 5911f4e964)

Solutions

  1. Delete the cached updater file and re-run the update check to force a clean download.
  2. Disable AV real-time scanning temporarily if it is altering the downloaded file.
  3. Verify network stability to avoid truncated downloads; retry on a stable connection.
  4. If persistent, manually download the update from the official source and verify its checksum.

Example fix

// before
await updater.DownloadUpdatePackage(progressHandler);

// after
string updaterPath = GetUpdaterPath();
for (int i = 0; i < 3; i++)
{
    if (File.Exists(updaterPath)) File.Delete(updaterPath);
    try { await updater.DownloadUpdatePackage(progressHandler); break; }
    catch (Exception e) { logger.Warn(e, $"integrity/attempt {i}"); }
}
Defensive patterns

Strategy: retry

Try / catch

for (int i = 0; i < 3; i++)
{
    if (File.Exists(updaterPath)) File.Delete(updaterPath);
    try { await updater.DownloadUpdatePackage(progressHandler); break; }
    catch (Exception e) { logger.Warn(e, $"integrity/attempt {i}"); if (i == 2) throw; }
}

Prevention

When it happens

Trigger: DownloadUpdatePackage completes the download but VerifyUpdateFile(updateManifest.Checksum, updaterPath) returns false because the computed hash differs from the manifest's Checksum.

Common situations: A truncated download (connection dropped mid-transfer), AV modifying the file, a partially-written file from a crashed prior download, a CDN/​cache serving wrong bytes, or a genuinely tampered/​mismatched manifest on the server.

Related errors


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