vscode离线安装.vsix后extensions目录无文件夹,说明校验阶段静默跳过而非安装失败;常见原因包括权限不足、路径不可写、cli未注册或lsp依赖未离线部署。

vsix安装后extensions目录没生成对应文件夹
这说明 VSCode 根本没完成写入,不是“装失败”,而是校验阶段就静默跳过了。常见触发点是权限锁死、路径不可写或后台进程残留。
- 先彻底退出 VSCode:Windows 用
code --status查进程,macOS/Linux 运行killall code;右下角托盘图标也要右键退出 - 检查目标目录是否可写:
ls -ld ~/.vscode/extensions/(Linux/macOS)或icacls "%USERPROFILE%\.vscode\extensions"(Windows),若提示Permission denied,需修复所有权 - 企业环境或 WSL 挂载 Windows 分区时,
.vscode/extensions可能被只读挂载——改用--extensions-dir指向用户主目录下的可写路径,例如code --extensions-dir ~/vscode-exts --install-extension python.vsix
code --install-extension 报 ENOENT 或 command not found
错误不在插件包,而在 CLI 工具根本没注册进当前 shell 环境。VSCode 官方安装包默认不自动配置 code 命令,尤其 macOS ZIP 版和 Linux .deb/.rpm 包。
- 先验证命令是否存在:
which code(macOS/Linux)或where code(PowerShell),无输出即未注册 - 在 VSCode 中按
Ctrl+Shift+P→ 输入Shell Command: Install 'code' command in PATH→ 回车执行,再重启终端 - 临时救急:用绝对路径运行,如 macOS 上
/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code --install-extension /path/to/xxx.vsix
手动解压 vsix 后插件仍不生效
直接解压到 extensions/ 目录绕过了签名校验,但容易漏掉关键结构——VSCode 要求文件夹名严格匹配 publishername.extensionname-version 格式,且必须包含 extension/package.json。
- 用
unzip -l plugin.vsix确认顶层有extension/package.json;若显示一堆零散 JS 文件,说明已被解压或损坏 - 解压后重命名文件夹为
ms-python.python-2024.6.0(不能是python或ms-python),再移入~/.vscode/extensions/ - 重启 VSCode 后按
Ctrl+Shift+P输入Developer: Show Running Extensions,状态应为Local,而非Remote或空白
Python/Vue 插件装上了但功能缺失
这不是插件没装好,而是语言服务器(LSP)没部署。VSCode 的 Python、Vue、Prettier 等插件安装只是注册入口,首次启用才下载 pyright-server、volar-server、prettier CLI 等二进制依赖,离线时全部卡住。
- 必须在有网机器上完整触发一次:打开一个
.py文件 → 等状态栏不再显示Downloading...→ 再去~/.vscode/extensions/ms-python.python-2024.6.0/整个文件夹拷出 - 不能只拷
.vsix,也不能只拷node_modules;native 二进制藏在子目录如out/client/或dist/下,漏一个就报spawn ENOENT - 离线机上粘贴后,必须彻底退出 VSCode(包括托盘进程),否则缓存不刷新,LSP 不加载











