RocketNuts
RocketNuts

Reputation: 11160

Firefox add-ons: how to install my own local add-on (extension) permanently in Firefox?

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.

Upvotes: 31

Views: 41945

Answers (5)

TheUltimateOptimist
TheUltimateOptimist

Reputation: 1229

As of 2024:
Only option to install unsigned addons is to use one of the following firefox versions:
ESR (Extended Support Release), Developer Edition and Nightly You then also need to go to aboud:config and set xpinstall.signatures.required to false. Setting xpinstall.signatures.required to false does NOT allow you to install unsigned extensions in normal firefox version.

Upvotes: 3

Kim Dienelt
Kim Dienelt

Reputation: 5

When trying to upload the addon to Mozilla for verification, I encountered the error, that the manifest.json was missing. Turns out, the file has to be in the root of the zip.

.. 
  yourAddon.zip
      manifest.json
      OptionalFolder/
          yourScript.js
      anotherScript.js

I tried packing it like that and adding it without verifying it (read lukacs answer for more information) and it worked.

Upvotes: 0

Deadly Pointer
Deadly Pointer

Reputation: 322

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.

Upvotes: 2

Santosh
Santosh

Reputation: 2333

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.

Upvotes: 11

lukacs
lukacs

Reputation: 141

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!

Upvotes: 14

Related Questions