{"record":{"id":"fb7c107e84cac212","repo":"denoland/deno","slug":"cabinet-file-name-missing","errorCode":null,"errorMessage":"cabinet file {name} missing","messagePattern":"cabinet file (.+?) missing","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/tools/desktop.rs","lineNumber":5099,"sourceCode":"      folder.add_file(f.key.clone());\n    }\n  }\n\n  let cursor = std::io::Cursor::new(Vec::<u8>::new());\n  let mut writer = builder\n    .build(cursor)\n    .context(\"failed to start cabinet for .msi\")?;\n  // Files come back in the order they were added; read each one's bytes by its\n  // cab name (the MSI File key) to stay robust to ordering.\n  let by_key: std::collections::HashMap<&str, &MsiFile> =\n    files.iter().map(|f| (f.key.as_str(), f)).collect();\n  while let Some(mut file_writer) = writer\n    .next_file()\n    .context(\"failed to advance cabinet writer\")?\n  {\n    let name = file_writer.file_name().to_string();\n    let f = by_key.get(name.as_str()).ok_or_else(|| {\n      deno_core::anyhow::anyhow!(\"cabinet file {name} missing\")\n    })?;\n    let data = std::fs::read(&f.abs_path).with_context(|| {\n      format!(\"failed to read {} for .msi cabinet\", f.abs_path.display())\n    })?;\n    file_writer.write_all(&data)?;\n  }\n  let cursor = writer.finish().context(\"failed to finish cabinet\")?;\n  Ok(cursor.into_inner())\n}\n\n/// Recursively copy a directory tree, ensuring writable permissions on the\n/// destination. This is needed because source files from the Nix store are\n/// read-only.\n/// Strip unnecessary files from a CEF-based app bundle to reduce size.\n///\n/// Removes:\n/// - Non-English locale packs (~47MB)\n/// - SwiftShader software Vulkan renderer (~16MB, not needed on macOS with Metal)","sourceCodeStart":5081,"sourceCodeEnd":5117,"githubUrl":"https://github.com/denoland/deno/blob/89f33cbef296a2b287f323d42de54c871fa69c77/cli/tools/desktop.rs#L5081-L5117","documentation":"Error \"cabinet file {name} missing\" thrown in denoland/deno.","triggerScenarios":"Thrown at cli/tools/desktop.rs:5099 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"89f33cbef296a2b287f323d42de54c871fa69c77","analyzedAt":"2026-08-16T07:54:21.310Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}