尝试在 Firefox 中安装我的附加组件的 .xpi 文件时附加组件 "appears to be corrupt"
Add-on "appears to be corrupt" when trying to install my add-on's .xpi file in Firefox
我正在尝试在 Firefox 45 中安装扩展(Firefox 49 也是如此),但 Firefox 不允许我这样做,表明
This add-on could not be installed because it appears to be corrupt.
我尝试安装它的方法是 将我们团队开发的 .xpi 文件 拖到 Firefox window 中。此扩展基于 MozRepl,但有一些改进。
以前,我尝试安装它但我不能,因为它没有签名(从 43 开始的 Firefox 版本的扩展需要签名)。根据这个 post: Signing a XPI,我按照每个步骤来签名。我几乎可以肯定我可以正确签名,但现在 Firefox 显示的错误不同了:"This add-on could not be installed because it appears to be corrupt."
我似乎没有正确创建 .xpi 文件,但我不确定它应该具有的正确结构。我尝试了不同的文件夹结构,但没有成功。
此外,我检查了浏览器控制台以查看记录的错误,但我没有发现它真的有用。这是:
Here 是一个 link 到 .xpi 文件,以防你想检查它的内容。请注意,我尝试将文件 manifest.mf、zigbert.rsa 和 zigbert.sf 移到 META-INF 文件夹之外,但也没有用。
有没有人在尝试安装附加组件时遇到过这样的错误?对可能发生的事情有什么想法吗?
.xpi[=42=]文件必须仅"deflate"压缩或未压缩
Firefox 中的 zip 实现仅支持 uncompressed files or files compressed with the "Deflate" algorithm。您需要使用压缩方法 "Deflate" 而不是您当前使用的 "LZMA" 来创建 .zip 存档。如何执行此操作取决于您用来创建存档的工具。
就个人而言,我使用批处理 file/shell 脚本来创建 .xpi[=42=] 文件,正如我在对“Firefox extension .xpi file structure: description, contents, creation, and installation". The basics are that I use the zip
command line tool which defaults to "deflate" or uncompressed. I use the -1
option to provide the fastest compression. Firefox/Mozilla use .xpi files both to package the files, but to also increase file access speed. The important quality is not a high compression ratio, but that the files can be accessed quickly. Unless Firefox is not an WebExtension and explicitly told to unpack the add-on by the install.rdf option <em:unpack>true</em:unpack>
(WebExtensions没有 install.rdf 文件),附加组件将作为 .xpi[=42=] 文件安装,并且可以访问该附加组件-on 将作为 .xpi[=42=] 文件。
注意:鉴于您的扩展程序包含 .dll 文件,您可能需要使用 <em:unpack>true</em:unpack>
.
解压安装的附加组件
使用了错误的签名方法。它必须由 Mozilla 签名,而不是你自己签名。
虽然这不是您当前看到的错误,但一旦您解决了 .xpi[=42=] 格式的问题,您就会遇到您的扩展被签名的问题错误的签名。您使用自己的签名签署了扩展程序。它不是由 Mozilla 签名的。这是行不通的。它必须由 Mozilla 签名,而不是 yourself.You 提到您遵循了 MDN 页面 Signing an XPI. However, as is clearly stated at the top of that page, the directions on that page are outdated and no longer work. You should have followed the link in the note to the page Signing and distributing your add-on 中的说明。页面顶部的注释指出:
Note: These instructions are outdated. For an extension to work in Firefox it must be signed by Mozilla, not by yourself. See Signing and distributing your add-on. [Emphasis added]
Stack Overflow 上还有各种解决签名问题的问题。
如其他答案中所述,它发生在 unverified/unsigned 扩展名中。
但有时您可能需要使用 unverified/unsigned 扩展名进行测试。
作为 hack/workaround 安装 unverified/unsigned 扩展,以下在 Firefox 版本 45 上对我有用:
- 启动 Firefox 并点击 - about:config
- 搜索 'xpinstall.signatures.required'
- 双击该行或将值设置为 false 并关闭
现在重试安装扩展,它应该可以工作。
我认为有些地方没有明确记录,我想分享我的经验。
- 开发我的扩展并
zip
ped所有文件
- 为
How to Distribute this Version
步骤选择了 On your own
并上传 .zip
到 AMO
- 然后,在下一页上,我看到一个签名的
.xpi
文件可供下载。我下载了它并尝试通过 "about:addons -> Install Add-on from file" 安装
- 在这种情况下我得到
corrupt add-on
错误
- 收到来自
amo-editors@mozilla.org
的电子邮件后,我转到我的加载项页面并单击那里的 .xpi
文件 link,然后 它成功了!
当我压缩包含我的插件的文件夹而不是其中的文件时,我遇到了这个问题。
不要压缩清单的父文件夹
例如,在 Windows CTRL + 单击您的 清单和任何其他文件或子文件夹; 右键单击并 select Send to > Compressed Folder
你应该可以开始了。
注意:从浏览器控制台屏幕截图我们可以看出这不是本例的问题,但即便如此,这也是 This add-on could not be installed because it appears to be corrupt
错误的常见问题。
这是对当尝试安装任何 Thunderbird 附加组件时开始出现“无法安装从该站点下载的附加组件,因为它似乎已损坏”错误消息时出现的切线问题的答案。还有一些其他网站提出了这个切线问题,但页面已存档:
- https://www.reddit.com/r/firefox/comments/7942yu/the_addon_downloaded_from_this_site_could_not_be/(FF)
- https://support.mozilla.org/en-US/questions/1319105
- http://forums.mozillazine.org/viewtopic.php?f=39&t=2739869
因为这里的这个问题仍然允许回复,只是想补充一点,如果用户的本地 Thunderbird 配置文件以某种特定方式损坏,这偶尔会开始发生在所有附加组件上。
在这种情况下,我建议在“安全模式”下重启 Thunderbird,并通过“帮助”->“重启并禁用加载项...”禁用所有加载项,然后重新启动回到“常规模式”通过“帮助”->“启用加载项重新启动”模式。之后加载项的安装可能会再次工作。
虽然这不是这个特定问题的答案,但希望这个提示对遇到这个特定的切线但类似情况的人有所帮助。
消息because it appears to be currupt
可以指出各种问题。您可以在浏览器控制台中按 ctrl+shift+J 查看更详细的错误消息。
一旦您在 xpi 文件中编辑 anything 并尝试手动将其添加到浏览器,则需要在 manifest.json 中提供扩展 ID,如果还没有,applications.gecko.id
或 browser_specific_settings.gecko.id
。例如,更改 https://addons.mozilla.org/en-US/firefox/addon/quick-js-switcher/ 中的任何单个字符会在浏览器控制台中显示 Invalid XPI: Error: Cannot find id for addon
,因此您添加
"applications": {
"gecko": {
"id": "some@example.com",
"strict_min_version": "1.2.3"
}
}
也适用于 manifest.json 并且有效:但是 只有 且 about:config
的 xpinstall.signatures.required
设置为 false
在实际遵守此设置的 Firefox 版本上、which excludes the normal release one because apparently Mozilla hates its userbase. You need FF Nightly or the like, I'm using LibreWolf。
我在 firefox 52 上遇到了同样的问题,只需将插件降级到专为 firefox 52 或更低版本设计的较低版本即可解决此问题。
我正在尝试在 Firefox 45 中安装扩展(Firefox 49 也是如此),但 Firefox 不允许我这样做,表明
This add-on could not be installed because it appears to be corrupt.
我尝试安装它的方法是 将我们团队开发的 .xpi 文件 拖到 Firefox window 中。此扩展基于 MozRepl,但有一些改进。
以前,我尝试安装它但我不能,因为它没有签名(从 43 开始的 Firefox 版本的扩展需要签名)。根据这个 post: Signing a XPI,我按照每个步骤来签名。我几乎可以肯定我可以正确签名,但现在 Firefox 显示的错误不同了:"This add-on could not be installed because it appears to be corrupt."
我似乎没有正确创建 .xpi 文件,但我不确定它应该具有的正确结构。我尝试了不同的文件夹结构,但没有成功。
此外,我检查了浏览器控制台以查看记录的错误,但我没有发现它真的有用。这是:
Here 是一个 link 到 .xpi 文件,以防你想检查它的内容。请注意,我尝试将文件 manifest.mf、zigbert.rsa 和 zigbert.sf 移到 META-INF 文件夹之外,但也没有用。
有没有人在尝试安装附加组件时遇到过这样的错误?对可能发生的事情有什么想法吗?
.xpi[=42=]文件必须仅"deflate"压缩或未压缩
Firefox 中的 zip 实现仅支持 uncompressed files or files compressed with the "Deflate" algorithm。您需要使用压缩方法 "Deflate" 而不是您当前使用的 "LZMA" 来创建 .zip 存档。如何执行此操作取决于您用来创建存档的工具。
就个人而言,我使用批处理 file/shell 脚本来创建 .xpi[=42=] 文件,正如我在对“Firefox extension .xpi file structure: description, contents, creation, and installation". The basics are that I use the zip
command line tool which defaults to "deflate" or uncompressed. I use the -1
option to provide the fastest compression. Firefox/Mozilla use .xpi files both to package the files, but to also increase file access speed. The important quality is not a high compression ratio, but that the files can be accessed quickly. Unless Firefox is not an WebExtension and explicitly told to unpack the add-on by the install.rdf option <em:unpack>true</em:unpack>
(WebExtensions没有 install.rdf 文件),附加组件将作为 .xpi[=42=] 文件安装,并且可以访问该附加组件-on 将作为 .xpi[=42=] 文件。
注意:鉴于您的扩展程序包含 .dll 文件,您可能需要使用 <em:unpack>true</em:unpack>
.
使用了错误的签名方法。它必须由 Mozilla 签名,而不是你自己签名。
虽然这不是您当前看到的错误,但一旦您解决了 .xpi[=42=] 格式的问题,您就会遇到您的扩展被签名的问题错误的签名。您使用自己的签名签署了扩展程序。它不是由 Mozilla 签名的。这是行不通的。它必须由 Mozilla 签名,而不是 yourself.You 提到您遵循了 MDN 页面 Signing an XPI. However, as is clearly stated at the top of that page, the directions on that page are outdated and no longer work. You should have followed the link in the note to the page Signing and distributing your add-on 中的说明。页面顶部的注释指出:
Note: These instructions are outdated. For an extension to work in Firefox it must be signed by Mozilla, not by yourself. See Signing and distributing your add-on. [Emphasis added]
Stack Overflow 上还有各种解决签名问题的问题。
如其他答案中所述,它发生在 unverified/unsigned 扩展名中。
但有时您可能需要使用 unverified/unsigned 扩展名进行测试。 作为 hack/workaround 安装 unverified/unsigned 扩展,以下在 Firefox 版本 45 上对我有用:
- 启动 Firefox 并点击 - about:config
- 搜索 'xpinstall.signatures.required'
- 双击该行或将值设置为 false 并关闭
现在重试安装扩展,它应该可以工作。
我认为有些地方没有明确记录,我想分享我的经验。
- 开发我的扩展并
zip
ped所有文件 - 为
How to Distribute this Version
步骤选择了On your own
并上传.zip
到 AMO - 然后,在下一页上,我看到一个签名的
.xpi
文件可供下载。我下载了它并尝试通过 "about:addons -> Install Add-on from file" 安装- 在这种情况下我得到
corrupt add-on
错误
- 在这种情况下我得到
- 收到来自
amo-editors@mozilla.org
的电子邮件后,我转到我的加载项页面并单击那里的.xpi
文件 link,然后 它成功了!
当我压缩包含我的插件的文件夹而不是其中的文件时,我遇到了这个问题。
不要压缩清单的父文件夹
例如,在 Windows CTRL + 单击您的 清单和任何其他文件或子文件夹; 右键单击并 select Send to > Compressed Folder
你应该可以开始了。
注意:从浏览器控制台屏幕截图我们可以看出这不是本例的问题,但即便如此,这也是 This add-on could not be installed because it appears to be corrupt
错误的常见问题。
这是对当尝试安装任何 Thunderbird 附加组件时开始出现“无法安装从该站点下载的附加组件,因为它似乎已损坏”错误消息时出现的切线问题的答案。还有一些其他网站提出了这个切线问题,但页面已存档:
- https://www.reddit.com/r/firefox/comments/7942yu/the_addon_downloaded_from_this_site_could_not_be/(FF)
- https://support.mozilla.org/en-US/questions/1319105
- http://forums.mozillazine.org/viewtopic.php?f=39&t=2739869
因为这里的这个问题仍然允许回复,只是想补充一点,如果用户的本地 Thunderbird 配置文件以某种特定方式损坏,这偶尔会开始发生在所有附加组件上。
在这种情况下,我建议在“安全模式”下重启 Thunderbird,并通过“帮助”->“重启并禁用加载项...”禁用所有加载项,然后重新启动回到“常规模式”通过“帮助”->“启用加载项重新启动”模式。之后加载项的安装可能会再次工作。
虽然这不是这个特定问题的答案,但希望这个提示对遇到这个特定的切线但类似情况的人有所帮助。
消息because it appears to be currupt
可以指出各种问题。您可以在浏览器控制台中按 ctrl+shift+J 查看更详细的错误消息。
一旦您在 xpi 文件中编辑 anything 并尝试手动将其添加到浏览器,则需要在 manifest.json 中提供扩展 ID,如果还没有,applications.gecko.id
或 browser_specific_settings.gecko.id
。例如,更改 https://addons.mozilla.org/en-US/firefox/addon/quick-js-switcher/ 中的任何单个字符会在浏览器控制台中显示 Invalid XPI: Error: Cannot find id for addon
,因此您添加
"applications": {
"gecko": {
"id": "some@example.com",
"strict_min_version": "1.2.3"
}
}
也适用于 manifest.json 并且有效:但是 只有 且 about:config
的 xpinstall.signatures.required
设置为 false
在实际遵守此设置的 Firefox 版本上、which excludes the normal release one because apparently Mozilla hates its userbase. You need FF Nightly or the like, I'm using LibreWolf。
我在 firefox 52 上遇到了同样的问题,只需将插件降级到专为 firefox 52 或更低版本设计的较低版本即可解决此问题。