How do I install multiple Firefox extensions into a fresh Firefox v11+ profile, with the least amount of user wasted motion (reduced mouse clicks and keyboard presses) other than the bare minimum for verifying security constraints (e.g., a single "scare" prompt)?
/bin
). Below are various things I've tried but that do not do exactly what is needed. The key constraint here is reducing the amount of wasted motion I spend when installing Firefox extensions.
I can get almost what I want via invoking Firefox with the fully-qualified paths to .xpi
files stored locally on my filesystem (tested only on Linux 64-bit machines; not on Windows yet but may work there too) via this type of command-line:
firefox some_extension1.xpi \
some_extension2.xpi \
some_extension3.xpi \
... \
some_extensionN.xpi
where some_extensionN.xpi
are fully-qualified paths to specific extensions I desire to be installed. But that is not workable because Firefox prompts multiple times, once per each extension to be installed, when only one security prompt is necessary. Multiple promptings are a show-stopper.
Massive Extender extension kept me mostly happy, but was rendered inoperable because of the dropping of support for the AddOn Collections extension. Waiting for someone to get around to supporting extensions in Firefox Sync is probably not an option: I believe that they will disallow syncing of extensions that are not registered through some official channel such as the one that shows up in searches from the Tools>Addons menu entry in Firefox. An example of a extremely useful extension that does not seem to be managed via the official channel is the keyconfig extension.
The FEBE extension comes close, but is not workable either because, well, it crashes Firefox when trying to restore from Box.net (as of 2014-04-05).
You should create a multi-item package. You basically ZIP up an install.rdf
file and several XPI files and rename the archive into something.xpi
. The install.rdf
file should look like this:
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>foobar@example.com</em:id>
<em:type>32</em:type>
<em:targetApplication>
<Description>
<!-- Firefox -->
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>10.0</em:minVersion>
<em:maxVersion>11.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
You probably want to choose some ID for your bundle that is different from foobar@example.com
and adjust the compatible Firefox versions. Then you can simply trigger the installation of this bundle and it will install all the extensions inside.
Important note: install.rdf
has to be located at the top level of the ZIP archive, not inside a subdirectory.