“extension is corrupt”多为校验失败而非真损坏,需用unzip -t(linux/macos)或expand-archive -whatif(windows)验证压缩完整性,再检查是否含extension/package.json且结构规范。

vsix 文件提示 “Extension is corrupt” 怎么验证真伪
这个错误八成不是文件真损坏,而是 VSCode 在校验环节被卡住——它不报具体哪错了,只甩一句“corrupt”。真正要查的,是文件结构、签名状态和压缩完整性。
先用系统命令快速验包:
- Linux/macOS:
unzip -t your-extension.vsix,输出OK才算完整;若报broken或missing,必须重下 - Windows PowerShell:
Expand-Archive your-extension.vsix -WhatIf,无报错才说明 ZIP 结构没坏 - 别信文件大小或图标:右键重命名改后缀(比如把
prettier.zip改成prettier.vsix)会破坏 ZIP 头,VSCode 一定拒收
再确认顶层结构:unzip -l your-extension.vsix 应该第一行就看到 extension/package.json。如果列出一堆零散 JS/CSS 文件,说明已被解压或被浏览器自动处理过,不能直接装。
code --install-extension 报 “not compatible with Code” 怎么定位版本冲突
VSCode 不会告诉你到底哪里不兼容,只抛个笼统错误。关键得手动比对三处版本:本地 VSCode、插件声明、运行架构。
- 运行
code --version,取前两位(如1.92.2→1.92) - 解压
your-extension.vsix,用unzip -p your-extension.vsix extension/package.json | grep engines查"vscode": "^1.85.0"这类字段 - 你本地版本必须 ≥ 插件要求的最低版本;差一个小版本(如
1.92vs^1.93.0)就会静默拒绝 - Help → About 里看架构(x64 / arm64),M 系列 Mac 装 x64 版本不会报错,但语言服务器跑不起来
别改 package.json 后重打包——绕过签名后插件可能被禁用,或首次激活时崩溃。
离线安装必须加 --allow-unverified 吗
必须加。VSCode 在离线环境下无法连接微软证书链做签名验证,INVALID_SIGNATURE 是默认行为,不是你下载错了。
- 正确命令:
code --install-extension /path/to/extension.vsix --allow-unverified - 路径必须是绝对路径:Linux/macOS 写
/home/user/ext/python.vsix,Windows 写C:/ext/python.vsix(推荐正斜杠,避免反斜杠转义问题) - 路径含中文或空格?加英文双引号:
code --install-extension "/mnt/内网共享/python.vsix" --allow-unverified - 不加这个参数,哪怕文件完全正确,也会卡在“假装安装成功”,
code --list-extensions里根本看不到
装上了但插件不工作,最常被忽略的点是什么
不是插件没装上,是语言服务器(LSP)根本没落地。像 ms-python.python、Vue Language Features (Volar) 这类插件,.vsix 只是外壳,首次打开 .py 或 .vue 文件时才会联网下载 pyright-server 或 volar-server。
- 离线环境里,它不会报错,只在状态栏显示 “Downloading…” 或直接跳过
- 正确做法:在有网机器上打开对应类型文件 → 等状态栏停止提示 → 去
~/.vscode/extensions/(或 Windows 的%USERPROFILE%\.vscode\extensions\)里整个拷贝对应文件夹(如ms-python.python-2024.6.0/) - 不能只拷
.vsix,也不能只拷node_modules;native 二进制藏在子目录里,漏一个就spawn ENOENT - 复制完必须彻底退出 VSCode(包括右下角托盘进程),否则缓存不刷新,新文件夹不会被识别
最后提醒一句:所有操作前先关掉所有 VSCode 实例,后台进程残留是静默失败最隐蔽的推手。











