{"record":{"id":"721af73c2ed8275c","repo":"denoland/deno","slug":"no-msi-architecture-mapping-for-arch-other-su","errorCode":null,"errorMessage":"No MSI architecture mapping for arch '{other}'; supported: x86_64, aarch64","messagePattern":"No MSI architecture mapping for arch '(.+?)'; supported: x86_64, aarch64","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/tools/desktop.rs","lineNumber":4405,"sourceCode":"}\n\n/// Derive a deterministic GUID for a given role (e.g. \"product:1.0.0\",\n/// \"upgrade\", \"package\", \"component:c0\") of the named app.\nfn msi_derive_guid(identifier: &str, role: &str) -> String {\n  let name = format!(\"{identifier}\\0{role}\");\n  msi_guid(uuid::Uuid::new_v5(&MSI_GUID_NAMESPACE, name.as_bytes()))\n}\n\n/// Map a target triple (or the host arch) to the MSI summary-info architecture\n/// string used in the `Template` field. Both supported arches are 64-bit.\nfn msi_arch_for_target(target: Option<&str>) -> Result<&'static str, AnyError> {\n  let arch = target\n    .and_then(|t| t.split('-').next())\n    .unwrap_or(std::env::consts::ARCH);\n  match arch {\n    \"x86_64\" => Ok(\"x64\"),\n    \"aarch64\" => Ok(\"Arm64\"),\n    other => bail!(\n      \"No MSI architecture mapping for arch '{other}'; supported: x86_64, aarch64\"\n    ),\n  }\n}\n\n/// Lowercase base36 encoding of a counter, used to mint unique 8.3 short names.\nfn base36(mut n: u32) -> String {\n  if n == 0 {\n    return \"0\".to_string();\n  }\n  const DIGITS: &[u8; 36] = b\"0123456789abcdefghijklmnopqrstuvwxyz\";\n  let mut out = Vec::new();\n  while n > 0 {\n    out.push(DIGITS[(n % 36) as usize]);\n    n /= 36;\n  }\n  out.reverse();\n  String::from_utf8(out).unwrap()","sourceCodeStart":4387,"sourceCodeEnd":4423,"githubUrl":"https://github.com/denoland/deno/blob/f7822238cab635a3a19f99f493f675fa81a7f9d8/cli/tools/desktop.rs#L4387-L4423","documentation":"MSI packaging writes an architecture string into the summary-info Template field; both supported arches are 64-bit, mapping x86_64 -> \"x64\" and aarch64 -> \"Arm64\". No other mapping is vendored, so any other arch component from --target (or the host arch when omitted) bails.","triggerScenarios":"Building a Windows .msi with --target whose leading component isn't x86_64/aarch64 (e.g. i686-pc-windows-msvc), or no --target on a non-x86_64/aarch64 host.","commonSituations":"Attempting 32-bit Windows packages; uncommon-arch CI hosts building Windows artifacts cross-platform.","solutions":["Target `x86_64-pc-windows-msvc` (x64) or `aarch64-pc-windows-msvc` (Arm64) when producing an MSI.","Pass --target explicitly in cross-build pipelines instead of relying on the host arch default.","For 32-bit Windows, distribute a plain zip instead of an MSI."],"exampleFix":"# before\ndeno desktop --target i686-pc-windows-msi --msi\n\n# after\ndeno desktop --target x86_64-pc-windows-msvc --msi","handlingStrategy":"validation","validationCode":"case \"${TARGET%%-*}\" in\n  x86_64|aarch64) ;;\n  *) echo \"MSI packaging supports x64 and Arm64 only\"; exit 1 ;;\nesac","typeGuard":"function isSupportedMsiArch(target: string): boolean {\n  const a = target.split(\"-\")[0];\n  return a === \"x86_64\" || a === \"aarch64\";\n}","tryCatchPattern":null,"preventionTips":["Target x86_64-pc-windows-msvc or aarch64-pc-windows-msvc when an MSI is part of the release.","Don't attempt 32-bit Windows MSIs; use a zip for those."],"tags":["desktop","windows","msi","architecture","packaging"],"backgroundTag":"unsupported-target-arch","analyzedSha":"f7822238cab635a3a19f99f493f675fa81a7f9d8","analyzedAt":"2026-08-20T13:07:44.778Z","contentChangedAt":"2026-08-20T13:07:44.778Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}