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
- Delete the cached updater file and re-run the update check to force a clean download.
- Disable AV real-time scanning temporarily if it is altering the downloaded file.
- Verify network stability to avoid truncated downloads; retry on a stable connection.
- 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
- Delete a cached/corrupt updater file before re-downloading.
- Disable AV scanning on the updater path if it alters downloads.
- Retry on a stable connection to avoid truncated files.
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
- Failed to download update file.
- Failed to download update manifest.
- Cannot add file to database, file not found.
- Not supported in Desktop mode.
- Cannot open plugin settings in Fullscreen mode.
AI-assisted analysis of JosefNemec/Playnite@5911f4e964 (2026-08-13).
Data as JSON: /api/errors/30afb8f3cb20110e.
Report an issue: GitHub.