denoland/deno · error

unsupported archive format: {name}

Error message

unsupported archive format: {name}

What it means

Thrown by the LAUFEY archive extractor when the archive filename ends in neither `.tar.gz` nor `.zip`, so no extraction branch applies. The name comes from the tool's own laufey_archive_name for the current platform/target, so seeing this error means the internal archive naming and the extractor disagree — normally a version skew or upstream release-layout change, not something the CLI flags control.

Source

Thrown at cli/tools/desktop.rs:2321

        std::fs::create_dir_all(parent)?;
      }
      let mut out = std::fs::File::create(&dest_path)?;
      std::io::copy(&mut entry, &mut out)?;
      #[cfg(unix)]
      {
        use std::os::unix::fs::PermissionsExt;
        // Mask to 0o755 / 0o644 — same policy as the tar branch.
        // setuid/setgid/sticky bits are dropped; world-writable bits too.
        let mode = entry.unix_mode().unwrap_or(0o644);
        let safe = if mode & 0o111 != 0 { 0o755 } else { 0o644 };
        let _ = std::fs::set_permissions(
          &dest_path,
          std::fs::Permissions::from_mode(safe),
        );
      }
    }
  } else {
    bail!("unsupported archive format: {name}");
  }
  Ok(())
}

/// Resolve the backend binary path inside an extracted archive directory.
fn locate_backend_binary(
  dir: &Path,
  backend: &str,
  target: &str,
) -> Option<PathBuf> {
  let is_windows = target.contains("windows");
  let is_macos = target.contains("apple-darwin");
  match backend {
    "cef" if is_macos => {
      let p = dir.join("laufey.app/Contents/MacOS/laufey");
      p.exists().then_some(p)
    }
    "webview" if is_macos => {

View on GitHub (pinned to f7822238ca)

Solutions

  1. Update to the latest Deno release where naming and extractor are kept in sync.
  2. If on a custom build, align the archive name with a supported extension (.tar.gz or .zip) or extend the extractor.
  3. Clear the LAUFEY cache so no stale/renamed files interfere, and report the mismatch to the deno maintainers if a released binary hits it.
Defensive patterns

Strategy: fallback

Try / catch

# Detect and fall back to a stable toolchain
set +e; OUT="$(deno desktop main.ts 2>&1)"; RC=$?; set -e
if grep -q "unsupported archive format" <<<"$OUT"; then
  echo "archive/extractor skew — switching to stable deno" >&2
  dvm use stable && deno desktop main.ts
else
  exit $RC
fi

Prevention

When it happens

Trigger: A Deno version whose laufey_archive_name emits a new extension (e.g. `.tar.xz` or `.tar.zst`) while this extractor only handles `.tar.gz`/`.zip`; a custom/patched build where the archive name constant was changed; a cache directory holding a renamed file that the locator then passes to the extractor.

Common situations: Using a bleeding-edge or locally built deno binary after the laufey release layout changed; mixing binaries/caches between Deno versions.

Related errors


AI-assisted analysis of denoland/deno@f7822238ca (2026-08-20). Data as JSON: /api/errors/ed45e5ceff3f3bc5. Report an issue: GitHub.