我有自己的浏览器扩展程序,其中包含一些个人网站自定义。在Chrome中工作正常,但在Firefox中不起作用。
与Chrome不同,Firefox似乎无法安装解压缩的扩展或附加组件。只有在调试模式下,我才能做Load Temporary Add-on
,选择带有我的扩展名的文件夹,并且可以正常工作。 除了这只是暂时的。
当我通过将文件放在.zip中(不在子目录或其他任何东西中,存档只是直接包含文件(并将其重命名为 .xpi,然后选择Install Add-on from file
并选择我的 .xpi 来打包扩展名时,它说:
无法安装从此站点下载的加载项,因为它似乎已损坏。
在故障排除时,我做了一个最小的虚拟扩展,它不做任何事情,只包含一个manifest.json
和dummy.js
文件。然后使用该目录中的7z a -tzip test.xpi
从命令行打包它,这将创建我的 zip 文件,名为test.xpi
包含这两个文件。在 Firefox 中加载该扩展会给出上述错误。
供您参考,这是我的清单.json:
{
"manifest_version": 2,
"name": "Test Extension",
"version": "1.0",
"description": "Dummy Text Extension",
"content_scripts": [
{
"matches": [ "*://*/" ],
"js": ["dummy.js"]
}
]
}
而假人.js的内容是:
// this file is intentionally left blank
再次:在 Chrome 中工作正常,在调试模式下作为临时插件加载时在 Firefox 中工作正常(即通过加载文件,在打开的对话框中我选择 manifest.json 文件(。但是加载 .xpi 以永久安装此扩展会导致"似乎已损坏"错误。
仅供参考:我在macOS 10.15.5上使用最新版本的Chrome和Firefox。
出于测试目的,这是我创建的确切test.xpi文件,但是如上所述手动打包它将给出相同的结果。
前几天遇到了完全相同的问题。
要永久安装我的个人 xpi(在 Firefox for Linux 77.0.1 下(:
不得不禁用扩展签名
about:config
,xpinstall.signatures.required = false
(不幸的是,这将需要保留,因为签名似乎在每次浏览器启动时都经过验证(将显式 ID 添加到清单browser_specific_settings部分
例如:
"browser_specific_settings": {
"gecko": {
"id": "blahblah@blah"
}
}
希望这有帮助!
您是否尝试过 web-ext 工具并为您的附加组件签名?您可以使用 Web-ext CLI 工具在火狐浏览器上签名并安装。
- 从这里安装网络扩展工具 -> https://github.com/mozilla/web-ext
- 运行
web-ext sign
,这将签署您的插件以进行安装
可以将插件上传到Mozilla开发人员中心,然后他们正式签名。必须从插件文件夹运行web-ext build
,然后将zip上传到Hub。有一个自动检查,对我来说在~2分钟内完成,然后我可以下载签名的.xpi
文件。