解决 Chrome 下载 `.crx` 文件被自动删除及“无法安装扩展程序,因为它使用了不受支持的清单版本”问题

一、问题背景

在开发、测试或使用某些离线 Chrome 扩展时,用户常遇到两类典型问题:

  1. 下载 .crx 文件后几秒内被系统或浏览器自动删除
  2. 尝试通过"加载已解压的扩展程序"安装时,提示: "无法安装扩展程序,因为它使用了不受支持的清单版本。无法加载清单。"

二、问题一:.crx 文件下载后被自动删除

原因分析

  • 自 Chrome 33 起,Google 禁止直接安装非 Web Store 来源的 .crx 文件。
  • Windows Defender 或其他杀毒软件可能将 .crx 识别为潜在风险文件并自动隔离。
  • Chrome 的"安全浏览"功能会主动清理可疑下载项。

✅ 推荐解决方案:改后缀 + 解压加载(通用且安全)

  1. 开启下载确认提示

    进入 Chrome 设置 → 隐私和安全 → 下载内容 ,勾选 "下载前询问每个文件的保存位置"

  2. 手动重命名后缀

    下载 .crx 时,在保存对话框中将文件名从 xxx.crx 改为 xxx.zip,再点击"保存"。

  3. 解压并加载扩展

    • 解压 .zip 文件到任意文件夹;
    • 访问 chrome://extensions/
    • 开启右上角 【开发者模式】
    • 点击 【加载已解压的扩展程序】,选择解压目录。

💡 此方法绕过了 Chrome 对 .crx 的签名验证和来源限制,适用于所有现代 Chrome 版本。


三、问题二:"无法安装扩展程序,因为它使用了不受支持的清单版本"

核心原因

  • 扩展的 manifest.json 中声明了 "manifest_version": 2(即 Manifest V2);
  • 自 Chrome 112 起,Google 逐步弃用 MV2;
  • 自 Chrome 138(预计 2025 年中发布)起,MV2 扩展完全不可加载,无论通过何种方式。

📌 当前时间:2025年11月11日。主流 Chrome 稳定版已普遍 ≥ 138,MV2 已正式终结


四、针对 Manifest V2 兼容性的完整解决方案(按 Chrome 版本分类)

✅ 方案 A:使用 Chrome 实验性 Flag(仅限 Chrome 112 -- 137)

这是最简单的临时方案,适合仍在使用旧版 Chrome 的用户。

操作步骤:
  1. 在地址栏输入:

    复制代码
    chrome://flags/#allow-legacy-mv2-extensions
  2. 找到 "Allow legacy extension manifest versions" 选项;

  3. 将其设置为 Enabled

  4. 重启浏览器

  5. 再次尝试加载 MV2 扩展。

⚠️ 注意事项:

  • 此 flag 仅在 Chrome 112 至 137 版本中存在
  • Chrome 138+ 已彻底移除该 flag,访问链接将显示"未找到";
  • 即使启用,部分企业策略或安全组策略仍可能覆盖此设置。

✅ 方案 B:通过企业策略启用 MV2(Windows,仅限 ≤ Chrome 137)

适用于 IT 管理员或需批量部署的场景。

注册表配置(Windows):
  1. 打开注册表编辑器(regedit);

  2. 导航至:

    复制代码
    HKEY_LOCAL_MACHINE\SOFTWARE\Policies
  3. 依次创建项:GoogleChrome

  4. Chrome 下新建 DWORD (32-bit) 值 ,命名为:

    复制代码
    ExtensionManifestV2Availability
  5. 设置值为:

    • 1:允许用户控制(推荐);
    • 2:强制启用(管理员策略);
  6. 重启 Chrome,访问 chrome://policy/ 验证策略生效。

🔒 此方法在 Chrome 138+ 同样失效,Google 已硬编码禁用 MV2。


✅ 方案 C:升级扩展至 Manifest V3(长期唯一可靠方案)

若你拥有扩展源码或可修改权限,强烈建议迁移到 Manifest V3。

基本迁移步骤:
  1. 编辑 manifest.json

    json 复制代码
    {
      "manifest_version": 3,
      "name": "My Extension",
      "version": "1.0",
      "background": {
        "service_worker": "background.js"
      },
      "permissions": ["storage", "activeTab"]
    }
  2. 将原 background.scripts 替换为 service_worker

  3. 移除 web_accessible_resources 中的通配符写法;

  4. 使用 chrome.action 替代 chrome.browserAction

  5. 测试功能完整性。

📘 官方迁移指南:Migrate to Manifest V3


✅ 方案 D:改用 Firefox 浏览器(终极替代方案)

  • Firefox 仍全面支持 Manifest V2 ,且允许加载本地 .xpi 或解压扩展;
  • 对于 Dark Reader、SwitchyOmega、Tampermonkey 等经典插件,Firefox 版本通常维护良好;
  • 若工作流严重依赖 MV2 插件,可考虑将 Firefox 作为主力开发/测试浏览器。

五、总结与建议

场景 推荐方案
Chrome < 138,临时使用 MV2 插件 启用 chrome://flags/#allow-legacy-mv2-extensions
Chrome < 138,企业环境/批量部署 配置注册表策略 ExtensionManifestV2Availability
Chrome ≥ 138(当前主流版本) 必须升级到 Manifest V3改用 Firefox
避免 .crx 被删 下载时改 .crx.zip,解压后加载

❗重要提醒:

Google 已明确表示 Manifest V2 将不再回归。任何依赖 MV2 的业务系统、自动化工具或内部插件,都应尽快启动迁移计划。


六、附录:如何查看 Chrome 版本?

  1. 地址栏输入:chrome://version
  2. 查看第一行 "Google Chrome" 后的版本号(如 138.0.7200.100

若版本 ≥ 138,请直接采用 方案 C 或 D


参考文献

相关推荐
胖者是谁10 小时前
EasyPlayerPro的使用方法
前端·javascript·css
EndingCoder10 小时前
索引类型和 keyof 操作符
linux·运维·前端·javascript·ubuntu·typescript
liux352810 小时前
Web集群管理实战指南:从架构到运维
运维·前端·架构
沛沛老爹10 小时前
Web转AI架构篇 Agent Skills vs MCP:工具箱与标准接口的本质区别
java·开发语言·前端·人工智能·架构·企业开发
小光学长11 小时前
基于Web的长江游轮公共服务系统j225o57w(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库
Joe55612 小时前
vue2 + antDesign 下拉框限制只能选择2个
服务器·前端·javascript
ChangYan.12 小时前
monorepo 多包管理识别不到新增模块,解决办法
前端·chrome
Jinuss12 小时前
React元素创建介绍
前端·react.js
济61712 小时前
linux 系统移植(第六期)--Uboot移植(5)--bootcmd 和 bootargs 环境变量-- Ubuntu20.04
java·前端·javascript
m0_7482546613 小时前
AJAX 基础实例
前端·ajax·okhttp