Getting started with firefox-addon – Installing add-ons for development

Add-ons can be installed as:

  1. Normal add-ons, which are installed until uninstalled
  2. Temporary Add-ons (extensions only): are only installed until Firefox is restarted, or can manually uninstalled earlier.
  3. Using jpm run (Add-on SDK only): Automatically runs Firefox using a temporary profile with your add-on loaded.
  4. Using web-ext run (WebExtensions only): Automatically runs Firefox using a temporary profile with your add-on loaded as a temporary add-on. By default, monitors your extension files for changes and automatically reloads your extension when files change.

Normal Add-ons

Installing packaged extensions (i.e. the .xpi file) can be a simple matter of dragging and dropping it onto a Firefox window running the profile in which you desire it installed. They can also be installed directly by downloading the extension from AMO. Depending on what your goal is (one profile, all profiles, all users, which OS, etc.), there are other options as to how to install extensions.

These other options include various directories outside the profile’s directory into which you can place the .xpi file to have it be installed for all users of a particular version of Firefox, or all profiles of a particular user. On Windows, you can also install an extension by adding a key to the Windows Registry. In general, these other directories are not ones into which you would install an add-on on which you are currently writing. However, they can be used to make sure you have add-ons you use to support your testing/development loaded in any Firefox profile or Firefox version which you use. For instance, by placing an .xpi file in <Firefox install directory>/browser/extensions you can have an extension available even in the temporary profile created by jpm run (used for testing Firefox Add-on SDK based extensions).

For development/testing, you can have the extension be in any directory on your local drive by using a Firefox extension proxy file (create a file named as the extension’s <em:id> (in install.rdf for Bootstrap/Restartless and Overlay/Legacy) in the profile’s extensions directory containing one line with the complete path to the directory containing the extension’s files). Extensions installed in this way will almost always be unsigned (see below). Thus, this method is not very useful if you want to install the extension into a Release or Beta version of Firefox.

Limitations on installing normal add-ons: Add-on Signing

In order to install an extension as a normal add-on into Release or Beta versions of Firefox greater than, or equal to, version 48, the extension must be signed by Mozilla. An extension is signed by submitting it to AMO. Once it is signed, the extension can be installed on any version of Firefox which it supports. For Firefox versions prior to version 43, extensions were not required to be signed by Mozilla. Types of add-ons other than extensions are not required to be signed by Mozilla.

You can install unsigned extensions as normal add-ons into other versions of Firefox (e.g. Firefox Developer Edition, Firefox Nightly, Unbranded Beta, or Unbranded Release) by setting xpinstall.signatures.required to false in about:config. Setting this option was also effective in Release and Beta Firefox versions 43–48. Setting this option is not effective in Release and Beta versions of Firefox from version 48 onward.

However, you can completely disable add-on signature checking in Firefox on all versions, including release. The answer to the Stack Overflow question How can I disable signature checking for Firefox add-ons? describes how to do so.

The need to be able to install unsigned add-ons for development purposes has been greatly reduced by the availability of installing extensions as Temporary Add-ons. Temporary Add-ons do not need to be signed, and can be loaded into any current version of Firefox. As the name implies, the primary drawback of Temporary Add-ons is that they are temporary. They must be re-installed any time Firefox is restarted. However, there are use cases where it is preferable to install an add-on as a normal, but unsigned, add-on instead of as a Temporary Add-on. An add-on should be installed as an unsigned add-on if there is need for the add-on to remain installed even after Firefox is restarted. This could be desirable for a variety of reasons, including: longer term use testing, or to test how the add-on functions when Firefox starts up.

Temporary Add-ons (extensions only)

WebExtensions, Firefox Add-on SDK based extensions, and Restartless/Bootstrap extensions can be installed as Temporary Add-ons from about:debugging. Extensions can be loaded as Temporary Add-ons in any current version of Firefox. Temporary Add-ons are not required to be signed and can be loaded from either unpacked (a directory with files), or packed (e.g. a .xpi file).

For detailed information on temporarily installing extensions, see Installing a Temporary add-on.

if you want to reproduce, please indicate the source:
Getting started with firefox-addon – Installing add-ons for development - CodeDay