19

I have my own browser extension with some personal website customizations. Works fine in Chrome, but doesn't work in Firefox.

Unlike Chrome, it seems Firefox can't install unpacked extensions or add-ons. Only in debug mode I can do Load Temporary Add-on, select the folder with my extension, and that works OK. Except that's just temporary.

When I pack the extension by putting the files in a .zip (not within a subdirectory or anything, the archive just directly contains the files) and rename it to .xpi, and then choose Install Add-on from file and select my .xpi, it says:

The add-on downloaded from this site could not be installed because it appears to be corrupt.

While troubleshooting, I made a minimal dummy extension which doesn't do anything, consisting only of a manifest.json and dummy.js file. Then pack that from the command line using 7z a -tzip test.xpi in that directory, which creates my zip file called test.xpi containing the two files. Loading that extension in Firefox give the error above.

For your reference here is my manifest.json:

{
  "manifest_version": 2,
  "name": "Test Extension",
  "version": "1.0",
  "description": "Dummy Text Extension",
  "content_scripts": [
    {
      "matches": [ "*://*/" ],
      "js": ["dummy.js"]
    }
  ]
}

And the content of dummy.js is:

// this file is intentionally left blank

Again: works fine in Chrome, works fine in Firefox when loading as temporary add-on in debug mode (i.e. by loading the files, in the open dialog I select the manifest.json file). But loading the .xpi to install this extension permanently results in the "appears to be corrupt" error.

FYI: I'm using the latest versions of Chrome and Firefox on macOS 10.15.5.

For testing purposes, here is the exact test.xpi file I created, but packing it manually as decribed above will give the same result.

RocketNuts
  • 9,958
  • 11
  • 47
  • 88
  • `works fine in Firefox when loading as temporary add-on`... You mean it installs ok, but this addon does nothing, so you can't say that it `works fine`. – Deanie May 18 '21 at 15:11
  • @Deanie Obviously I meant the loading / installation works fine. – RocketNuts May 21 '21 at 09:04

3 Answers3

9

Ran into the exact same problem the other day..

To get my personal xpi to install permanently (under Firefox for Linux 77.0.1):

  • had to disable extension signing about:config, xpinstall.signatures.required = false (unfortunatelly this will need to stay, because signatures seems to be verified on every browser start)

  • add an explicit id to browser_specific_settings section in the manifest

For example:

"browser_specific_settings": {
  "gecko": {
    "id": "blahblah@blah"
  }
}

Hope this helps!

lukacs
  • 91
  • 3
  • Thanks, after adding an id it now complains about the xpi being unverified. Regarding the thread you linked on how to disable signature checking, which answer would that be, exactly? czerny's answer didn't work (I don't have nightly or developer build) and the 2nd answer by Makyen seems ridiculously complex. Is there a quick and easy way to (temporarily) disable signature checking by any chance? – RocketNuts Jun 10 '20 at 10:50
  • I meant: about:config -> xpinstall.signatures.required = false Just to clarify, Im using Firefox for Linux. The standard downloaded from Mozilla. Also, the addons seems to be verified every time they are loaded (browser restart), so unfortunatelly the verification will need to be disabled permanently. – lukacs Jun 11 '20 at 08:41
  • Ah OK, no unfortunately that doesn't work here in Firefox 77 on macOS. – RocketNuts Jun 11 '20 at 09:39
  • 6
    Meanwhile Firefox seems to silently ignore when the user changes that setting. But it still works in e.g. Firefox Developer, see [here](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox#w_what-are-my-options-if-i-want-to-use-an-unsigned-add-on-advanced-users). – Nils Lindemann Aug 07 '20 at 15:25
  • how to update addon after local change? You have to pack add on after every change? – Alexander Myravjev May 03 '21 at 23:32
  • I'm using Firefox Developer Edition with `xpinstall.signatures.required = false` and exactly the same file as OP, plus your addition to `manifest.json`. It still says that the extension is corrupt. I'm using 7z with DEFLATE in a `.zip` archive. then renaming it to `.xpi`, but I'm still getting the error. @lukacs – Mous Aug 03 '22 at 10:02
8

Did you try the web-ext tool and sign your add-on? You can use the Web-ext CLI tool to sign and install on your firefox.

Santosh
  • 2,093
  • 1
  • 15
  • 21
0

It is possible to just upload the addon to Mozilla Developer Hub, and they sign it officially. One has to run web-ext build from the addon folder, then upload the zip to the Hub. There is an automatic check, which completed in ~2 minutes for me, then I could just download the signed .xpi file.