离线安装中文包报“extension is corrupt”或“failed to install extension”,90%是vsix文件损坏或本地残留冲突;需先用unzip -t(linux/macos)或expand-archive -whatif(windows powershell)校验完整性,确保vs code完全关闭后再用--force强制安装,并检查%appdata%\code\user\locale.json中{"locale": "zh-cn"}是否正确配置。

离线安装中文包报“Extension is corrupt”或“Failed to install extension”,90% 是 vsix 文件本身损坏或本地残留冲突,不是网络或权限问题。
先验证 vsix 文件是否真完整
vsix 本质是 ZIP 包,损坏常发生在下载中断或传输丢包。别看文件大小,要用命令校验结构:
- Linux/macOS:
unzip -t vscode-language-pack-zh-hans-1.90.2.vsix→ 输出OK才算完整 - Windows PowerShell:
Expand-Archive vscode-language-pack-zh-hans-1.90.2.vsix -WhatIf→ 不报错即结构可用 - 用资源管理器双击解压再重打包会破坏 ZIP 元数据,必须用
7-Zip或PowerShell的Compress-Archive
强制覆盖安装前必须关干净 VS Code
--force 不是万能钥匙,它只跳过版本比对和签名检查,但前提是 VS Code 进程没在读写扩展目录:
- Windows:任务管理器中杀掉所有
Code.exe和Code Helper.exe - macOS:活动监视器里查
Electron进程,全结束 - Linux:执行
pkill -f "code.*--no-sandbox"确保无残留 - 命令示例:
code --install-extension MS-CEINTL.vscode-language-pack-zh-hans-1.90.2.vsix --force
装上后还是英文?重点检查 locale.json 而不是 settings.json
VS Code 1.70+ 后只认 locale.json 里的 {"locale": "zh-cn"},其他地方写的都无效:
- 路径必须准确:
%APPDATA%\Code\User\locale.json(Windows)、~/Library/Application Support/Code/User/locale.json(macOS)、~/.config/Code/User/locale.json(Linux) - 内容必须是合法 JSON:双引号、
zh-cn全小写、短横线、不能有注释或单引号 - 如果该文件存在但值是
"en"或为空,说明被 Remote-SSH / WSL 工作区设置覆盖,临时关闭文件夹再运行Configure Display Language
常见“损坏”其实是版本硬不匹配
报 not compatible with Code 时,错误不在文件,而在 extension/package.json 里的 engines.vscode 字段:
- 打开 vsix(用 7-Zip 或
unzip -o解压),找到extension/package.json - 查
"engines": {"vscode": "^1.85.0"},对比你本地code --version输出(如1.90.2→ 取主版本1.90) - 若不满足语义化匹配(比如 vsix 要求
^1.85.0,而你是1.84.2),连--force都不会触发解压 - 修改字段为实际版本(如
"^1.90.0"),再用Compress-Archive或zip -r重新打包,后缀改回.vsix
真正难排查的是:vsix 结构完好、版本也匹配、locale.json 正确,但菜单栏仍是英文——这时大概率是远程开发场景下,locale.json 放错了位置,得去 ~/.vscode-server/data/Machine/xxx/locale.json 里配。











