JosefNemec/Playnite · warning · Exception
Uknown installer manifest url format {InstallerManifestUrl}.
Error message
Uknown installer manifest url format {InstallerManifestUrl}. What it means
Thrown by DownloadInstallerManifest when InstallerManifestUrl is neither an http(s) URL nor an existing file path. After ruling out the http prefix and File.Exists, the format is unrecognized. The exception is swallowed by the surrounding catch (PlayniteEnvironment.ThrowAllErrors off) and replaced with an empty AddonInstallerManifest plus a logged error.
Source
Thrown at source/Playnite/Manifests/AddonManifests.cs:241
{
try
{
if (InstallerManifestUrl.IsNullOrEmpty())
{
throw new Exception("No addon manifest installer url.");
}
if (InstallerManifestUrl.StartsWith("http", StringComparison.OrdinalIgnoreCase))
{
installerManifest = PlayniteApplication.Current.ServicesClient.GetAddonInstaller(AddonId);
}
else if (File.Exists(InstallerManifestUrl))
{
installerManifest = Serialization.FromYamlFile<AddonInstallerManifest>(InstallerManifestUrl);
}
else
{
throw new Exception($"Uknown installer manifest url format {InstallerManifestUrl}.");
}
}
catch (Exception exc) when (!PlayniteEnvironment.ThrowAllErrors)
{
logger.Error(exc, "Failed to get addon installer manifest data.");
installerManifest = new AddonInstallerManifest();
}
installerManifest.AddonType = Type;
}
}
}
View on GitHub (pinned to 5911f4e964)
Solutions
- Ensure InstallerManifestUrl is either an http(s) URL or a resolvable local file path.
- If using local paths, verify the file exists before triggering addon install.
- Expand any path variables/placeholders in the url before calling DownloadInstallerManifest.
Example fix
// before
else { throw new Exception($"Uknown installer manifest url format {InstallerManifestUrl}."); }
// after — explicit scheme handling with fallback
else {
logger.Error($"Installer manifest URL '{InstallerManifestUrl}' is neither http(s) nor an existing file.");
installerManifest = new AddonInstallerManifest();
} Defensive patterns
Strategy: try-catch
Validate before calling
// Classify the URL scheme/path before download.
if (!InstallerManifestUrl.StartsWith("http", StringComparison.OrdinalIgnoreCase) && !File.Exists(InstallerManifestUrl)) {
logger.Error($"Unrecognized installer URL: {InstallerManifestUrl}");
return;
} Type guard
static bool IsValidInstallerUrl(string url) =>
!url.IsNullOrEmpty() &&
(url.StartsWith("http", StringComparison.OrdinalIgnoreCase) || File.Exists(url)); Try / catch
try { manifest.DownloadInstallerManifest(token); }
catch (Exception ex) when (!PlayniteEnvironment.ThrowAllErrors) { logger.Error(ex, "Installer manifest download failed."); } Prevention
- Normalize InstallerManifestUrl to http(s) or an absolute file path.
- Expand any variables before calling DownloadInstallerManifest.
- Rely on the built-in catch that yields an empty manifest, but log details for diagnosis.
When it happens
Trigger: InstallerManifestUrl is a non-http string that is not a valid file path — e.g. an ftp URI, a malformed path, or a placeholder token that was never expanded.
Common situations: Manifest author put a placeholder or unsupported scheme in InstallerManifestUrl; path contains unexpanded variables; the file was moved/deleted between manifest parse and install.
Related errors
- No addon manifest installer url.
- Failed to download update manifest.
- Extension version string must be a real version!
- Extenstion/theme manifest not found.
- LOC.GeneralExtensionPackageError
AI-assisted analysis of JosefNemec/Playnite@5911f4e964 (2026-08-13).
Data as JSON: /api/errors/dd260067f0e2165b.
Report an issue: GitHub.