vscode离线安装中文包失败的根本原因是1.85+版本启用扩展签名验证且引擎版本不匹配,需解压修改package.json中的"engines"字段为本地精确版本号并重打包为.vsix,再通过命令面板安装,最后配置locale.json为"zh-cn"并彻底重启进程。

VSCode离线安装中文包报“签名无效”或卡在“正在安装”
不是你下载的包有问题,而是 VS Code 1.85+ 默认启用扩展签名验证,离线环境下无法联网校验 .vsix 签名,会静默失败或卡住不动——尤其在银河麒麟、UOS 等国产系统上更常见。
常见现象包括:点击 Install 后进度条不动、命令面板无响应、扩展列表里找不到已选的包、ms-ceintl.vscode-language-pack-zh-hans 显示“Install failed”但无具体错误。
- 别尝试双击 .vsix 文件——VS Code 自 1.70 起已禁用该方式,不报错也不生效
- 别改系统时间或关防火墙——这些对签名验证无效,VS Code 验证的是包内 embedded certificate,非系统时间戳
- 确认你用的是官网下载的包:
MS-CEINTL.vscode-language-pack-zh-hans-*.vsix,发布者必须是MS-CEINTL,ID 必须含zh-hans
绕过签名验证的唯一安全方式:修改 package.json 引擎版本
VS Code 拒绝安装的本质是 package.json 中的 "engines": {"vscode": "^1.90.0"} 与你本地版本(如 1.96.3)不满足语义化匹配。这不是签名问题,是兼容性声明拦截。
实操步骤(Linux/macOS/Windows PowerShell 均适用):
- 用
7-Zip或unzip -l your.vsix查看根目录是否含extension/package.json - 解压该文件(不要用 Windows 资源管理器双击解压,会破坏 ZIP 结构)
- 编辑
extension/package.json,将"engines": {"vscode": "^1.90.0"}改为"engines": {"vscode": "1.96.3"}(填你本地code --version输出的完整版本号) - 重新打包为 ZIP,再把后缀改为
.vsix(注意:不是重命名,是改后缀;确保 ZIP 内结构不变)
改完后再次通过命令面板执行 Extensions: Install from VSIX,就能跳过引擎校验直接安装。
装完还是英文?检查 locale.json 是否写对且被读取
语言包装成功 ≠ 界面变中文。VS Code 必须同时加载语言资源 + 识别 locale 配置 + 重启干净进程。最容易漏的是 locale 值写错或路径不对。
- 必须写
"locale": "zh-cn"(小写、短横线、双引号包裹),zh_CN、zh-hans、Chinese全部无效 - 配置文件路径必须是用户级:
~/.config/Code/User/locale.json(Linux)、%APPDATA%\Code\User\locale.json(Windows)、~/Library/Application Support/Code/User/locale.json(macOS) - 文件编码必须是 UTF-8 无 BOM,用 VS Code 自己打开编辑并保存,别用记事本
- 改完后不能只点 “Developer: Reload Window”,必须彻底关闭所有 VS Code 进程(包括托盘里的
Code Helper),再重新启动
国产系统(麒麟/UOS)离线部署的三个隐藏雷区
在银河麒麟 V10 SP1、UOS 20 等系统上,即使按上述步骤操作仍失败,大概率掉进以下坑里:
- 预装 VS Code 被厂商深度定制过,扩展市场不可用只是表象,真实问题是 Electron 沙箱策略拦截了 VSIX 解压过程——此时
Install from VSIX会卡在“正在安装”,无日志、无提示 - 系统自带的 VS Code 版本太旧(如 1.72.x),而你下载的是 1.96.x 的语言包,
engines.vscode字段根本无法降级匹配,硬改也无效 - 必须确认当前 VS Code 版本 ≥ 1.85:旧版虽宽松但语言资源不全;新版需严格签名+引擎匹配,建议直接从官网下载最新 64 位 Stable 版覆盖安装
真正生效的链条只有三环:装对 ID 的包 → 写对 zh-cn → 杀净进程重启。任何一环松动,界面就卡在英文不动——这不是配置没保存,是 VS Code 根本没触发语言协商流程。











