尝试在Firefox中安装附件的.xpi文件时,附件“似乎已损坏”

nda*_*lat 12 javascript firefox xpi firefox-addon

我正在尝试在Firefox 45中安装扩展程序(与Firefox 49相同),但是Firefox不允许我这样做,这表明

This add-on could not be installed because it appears to be corrupt. 
Run Code Online (Sandbox Code Playgroud)

我尝试安装它的方法只是我们团队开发的.xpi文件拖到 Firefox窗口中。此扩展基于MozRepl,但进行了一些改进。

以前,我尝试安装它,但由于未签名而无法安装(Firefox版本43以后的扩展要求签名)。根据这篇文章,我按照每个步骤进行了签名:签名XPI。我几乎可以肯定我可以正确签名,但是现在Firefox显示的错误有所不同:“此附件似乎已损坏,因此无法安装。”

在此处输入图片说明

似乎我没有正确创建.xpi文件,但是我不确定它应该具有正确的结构。我尝试了不同的文件夹结构,但没有成功。

另外,我检查了浏览器控制台以查看登录了什么错误,但是我发现它并没有真正的帮助。这里是:

在此处输入图片说明

是指向.xpi文件的链接,以备您检查其内容时使用。请注意,我尝试将文件manifest.mf,zigbert.rsa和zigbert.sf移到META-INF文件夹之外,但也没有用。

尝试安装附加组件时,是否有人偶然发现这样的错误?对可能发生的事情有任何想法吗?

And*_*rew 8

当我压缩包含插件的文件夹而不是仅压缩其中的文件时,我遇到了这个问题。

不要压缩清单的父文件夹

截屏

例如,在 Windows 上,按住 CTRL 键并单击清单和任何其他文件或子文件夹;右键单击并选择Send to > Compressed Folder,您应该可以开始了。

注意:从浏览器控制台屏幕截图中我们可以看出这不是本例中的问题,但即便如此,这也是该This add-on could not be installed because it appears to be corrupt错误的常见问题。

  • 使用 7zip 和存储压缩级别执行此操作对我来说是这样 (3认同)
  • 在 `about:debugging#/runtime/this-firefox` 上执行此操作,*不是* `about:addons` 对我有用。 (3认同)

Mak*_*yen 7

的.xpi文件必须使用唯一的 “deflate”压缩或解压缩

Firefox中的zip实现仅支持未压缩的文件或使用“ Deflate”算法压缩的文件。您将需要使用压缩方法“ Deflate”而不是当前使用的“ LZMA” 来创建.zip存档。如何执行操作将取决于您用于创建档案的工具。

就个人而言,我使用批处理文件/ shell脚本来创建.xpi文件,正如我在“ Firefox扩展.xpi文件结构:描述,内容,创建和安装 ”的答案中所详细描述的那样。基础是我使用zip默认为“放气”或未压缩的命令行工具。我使用该-1选项来提供最快的压缩。Firefox / Mozilla使用.xpi文件既可以打包文件,又可以提高文件访问速度。重要的质量不是很高的压缩率,而是可以快速访问文件。除非Firefox不是WebExtension并通过install.rdf选项明确告知要解压缩附件<em:unpack>true</em:unpack>(WebExtensions没有install.rdf文件),该附加组件将作为.xpi文件安装,并且对该附加组件的所有访问权限都将作为.xpi文件。

注意:由于扩展名包含.dll文件,因此您可能需要使用来解压缩安装的附件<em:unpack>true</em:unpack>

使用了错误的签名方法。它必须由Mozilla而非您自己签名。

尽管这不是您当前看到的错误,但是一旦解决了.xpi格式的问题,就会遇到扩展名由错误签名签名的问题。您使用自己的签名对扩展名进行了签名。未由Mozilla签名。这是行不通的。它必须由Mozilla而非您自己来签名。您提到您遵循了MDN页面“ 签名XPI”中的指示。但是,正如该页面顶部明确指出的那样,该页面上的说明已过时,不再起作用。您应该已按照注释中的链接访问“ 签名和分发加载项 ”页面。页面顶部的注释指出:

注意:这些说明已过时。要使扩展在Firefox中工作,必须由Mozilla签名,而不是您自己签名。请参阅签名和分发附件。[增加重点]

关于堆栈溢出,这里还有各种各样的问题可以解决签名问题。


小智 7

就像其他答案中所述,它发生在未经验证/未签名的扩展中。

但有时为了测试,您可能想要使用未经验证/未签名的扩展名。作为安装未经验证/未签名的扩展的黑客/解决方法,以下在 Firefox 版本 45 上对我有用:

  1. 启动 Firefox 并点击 - about:config
  2. 搜索“xpinstall.signatures.required”
  3. 双击该行或将值设置为 false 并关闭

现在重试安装扩展,它应该可以工作。

  • 不幸的是,尽管该设置仍然存在,但这似乎不再起作用。 (2认同)

Mer*_*ran 5

我认为有些事情没有明确记录,我想分享我的经验。

  1. 开发我的扩展程序并处理zip所有文件
  2. 所选On your ownHow to Distribute this Version一步,并上传.zipAMO
  3. 然后,在下一页上,我看到一个.xpi可供下载的签名文件。我下载了它并尝试通过“about:addons -> Install Add-on from file”安装
    1. corrupt add-on在这种情况下我收到错误
  4. 收到来自 的电子邮件后amo-editors@mozilla.org,我转到我的附加组件页面并单击.xpi那里的文件链接,它起作用了!

在此处输入图片说明


phi*_*294 5

该消息because it appears to be currupt可能指出各种问题。您可以在浏览器控制台中按 ctrl+shift+J 查看更详细的错误消息。

一旦您编辑xpi 文件中的任何内容并尝试将其手动添加到浏览器,则需要在 manifest.json 中提供扩展 ID(如果尚未提供),使用applications.gecko.idbrowser_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"
    }
  }
Run Code Online (Sandbox Code Playgroud)

也添加到manifest.json并且它可以工作:但只有真正尊重此设置的Firefox版本上设置为about:config's' ,排除了正常版本,因为显然Mozilla讨厌它的用户群。你需要 FF Nightly 或类似的,我正在使用LibreWolfxpinstall.signatures.requiredfalse

来源