Firefox global extensions

firefox icon
On the MacEnterprise list recently, there was a discussion about installing Firefox extensions.

Specifically, the originator of the thread wanted to install a PDF plugin for Firefox so all users of a machine could use it without having to manually install it.

I had looked at this issue a while back, and didn’t find a satisfactory solution.

Here were the options I saw:

  1. Just let users install it themselves. Since by default, Firefox extensions install in their Firefox profile in their home directory, this is possible. But the user has to know to look for the extension, download it and install it. Plus, as a policy, you may not want to encourage users to download and install software themselves.
  2. Follow the instructions in this mozillaZine article to install a global extension. This installs the extension inside the Firefox application bundle and makes it available to all users. But each time a new version of Firefox is released, you’ll have to do this again, which quickly becomes a pain. Additionally, in my testing, this method doesn’t actually make the extension directly available; instead, on the next launch the user is prompted to install it.

Neither option appealed to me, but since the first was no more work for me, I went with that. But in the MacEnterprise discussion this Mozilla link was brought up, which describes a new option for Firefox 3 and later.

Basically, you just need to copy the extension to


/Library/Application Support/Mozilla/Extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}

and it becomes available to all users of the machine. Since it’s not in the Firefox application bundle, it can survive updates to the Firefox application.

I found that instead of copying the .xpi file there, I got better results by first installing the extension into my user profile, then copying the installed extension to the directory above. The PDF plugin installs in a directory named “colesbury@gmail.com”, so the process looks something like this:


cd /Users/gneagle/Library/Application\ Support/Firefox/Profiles/cuak0rwz.default/extensions
cp -R colesbury@gmail.com /Library/Application\ Support/Mozilla/Extensions/\{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}/

The extension is now available to all users, and the users are NOT prompted to install it — it just works. Even better, you can package it up and deliver it to all your machines via radmind, ARD, Casper, etc.

Firefox global extensions

24 thoughts on “Firefox global extensions

  1. DB says:

    Users still get asked if they want to install the addon. Hmmmm…..trying to figure out how to suppress this.

  2. DB says:

    Tried moving the colesbury@gmail.com folder to the /Library….. folder and no luck. Doesn’t recognize the addon. On my machine in the users profile the addon gets installed in extensions in a folder called staged-xpis. I tried moving it as well to the /Library/…..folder but no luck again. If I move the xpi to the folder Firefox notices the plugin but asks to install it.

    ——Update—–
    Ok something is messed up on my machine. Installing that plugin makes a folder called staged-xpis with the the colesbury@gmail.com folder under it and the only thing under the colesbury folder is the .xpi file.

    Just tried what you wrote on a lab machine and it worked fine. Nice!! Thanks for the write up!

  3. DB says:

    New issue I have is our students login and get a new home everytime and when you launch Firefox you still get a window saying that an addon has been installed. I don’t think this can be suppressed, but looking.

  4. If I create a new local account, login, and launch Firefox, the PDF plugin is installed and active, and I get no window/alert/whatever about the add-on — it just works.

  5. DB says:

    Hmmm…..I wish it was working that way here! Maybe because my clients have Firefox prefs already set in the User Template and its seeing a changed addon or something. I don’t know, but I did find a workaround.

    I had to add the following line to the users prefs.js file in the users firefox profile or to the Systems User Template in my case and this seems to have disabled that popup from showing on first launch:
    user_pref(“extensions.newAddons”, false);

  6. Nice tip… I just tried it and it works.
    Except when you visit the Add-ons window and click “Find Updates”
    Firefox (3.6) says “Update not supported (install location is not managed by Firefox)”
    This might be OK for you people that have push updating software like LanREV, ARD, Filewave, etc. because you can just push the add-on updates. No good for smaller places that have to update manually.

  7. Hi Guys.
    I’ve tried all folders you’ve mentioned – no success, and even more.
    I deal with FireFox 8 for Mac OS X.
    It creates folders and stores profiles data in ~/Application Support/Firefox.
    What do you think?

  8. Unfortunately nothing helps, FF still see no extensions after restarting (
    Besides, you’re telling that it’s better to unpack .xpi content right to /Library/Application Support/Mozilla/Extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
    But what will happen if we try to install one more extension with the same way? Correct me if I’m not right, but {ec8030f7-c20a-464f-9b0e-13a3a9e97384} – is the ID for particular build of FF? So I can’t imagine what will be the result of mixing up the contents of different .xpi in single folder.

  9. >> Besides, you’re telling that it’s better to unpack .xpi content right
    >> to /Library/Application Support/Mozilla/Extensions/
    >> {ec8030f7-c20a-464f-9b0e-13a3a9e97384}

    No, actually I’m saying it’s _necessary_.

    >> But what will happen if we try to install one more extension with
    >> the same way? Correct me if I’m not right, but
    >> {ec8030f7-c20a-464f-9b0e-13a3a9e97384} – is the ID for
    >> particular build of FF?

    No, it’s the ID for Firefox, all versions.

    >> So I can’t imagine what will be the result of mixing up the
    >> contents of different .xpi in single folder.

    You don’t do that. Each extension still is in a separate directory under the {ec8030f7-c20a-464f-9b0e-13a3a9e97384} directory, as described here:
    https://managingosx.wordpress.com/2010/10/06/firefox-global-extensions-again/

    ls /Library/Application\ Support/Mozilla/Extensions/\{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
    colesbury@gmail.com
    disneyanimation-cck@extensions.disneyanimation.com

  10. So, I have for example {6e47e7c0-4166-11df-9879-0800200c9a66}.xpi.
    What should be full path where to place the content of this extensions to make this extension global?

    1. I have no way of knowing what the directory name will be for that extension after it is expanded, so I can’t answer specifically. Quoting myself from the other post:

      …you must unarchive the extension, then copy it there. [To the global location]
      I find the easiest way to do this is just double-click it and let it install in your local user profile, then copy the unarchived extension from your user profile to the global extension location — something like:

      cd /Users/gneagle/Library/Application\ Support/Firefox/Profiles/cuak0rwz.default/extensions
      cp -R myorg-cck@extensions.myorg.com /Library/Application\ Support/Mozilla/Extensions/\{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}/

      So if, when you double-click the {6e47e7c0-4166-11df-9879-0800200c9a66}.xpi, it launches Firefox and offers to install the extension, let Firefox do so. It will install in for Firefox user profile, which is under ~/Library/Application\ Support/Firefox/Profiles/.

      The exact path beneath that varies. You’ll need to poke around a bit, though there may be only a single profile directory.

      Inside your user profile directory is an extensions directory. If you’ve installed other extensions, there my be more than one unarchive extension there; again you’ll have to determine which on is the one you want. You then copy it recursively to /Library/Application\ Support/Mozilla/Extensions/\{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}/

  11. I’ve got some progress.
    I have extension in form of single archive {6e47e7c0-4166-11df-9879-0800200c9a66}.xpi
    What have I done… I’ve unpacked the content of that archive and copied it to /Library/Application\ Support/Mozilla/Extensions/\{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}/{6e47e7c0-4166-11df-9879-0800200c9a66}
    But. I still get FireFox prompting me to confirm the installation of new extension after restart.

      1. it was mac os native unzipping tool.
        i’ve tried to install extension with FireFox but it does not unpack the content of if. It just keeps original .xpi file in ~/Library/Application\ Support/Firefox/Profiles/blzpsvv1.default/extensions instead.
        I’ve found there appear several mentions of this extension in different files within FF user profile folder e.g. ~/Library/Application\ Support/Firefox/Profiles/blzpsvv1.default/extensions.ini
        I’ll try to create distributive package that will create user profile initialized with all necessary extensions.

      2. It certainly is possible that some extensions won’t work properly when installed/distributed in this manner. The few I’ve needed have worked OK. What is this extension?

  12. I’m just experimenting with this issue, so I’ve taken first one that’s come into my mind. It’s Yandex bar. It displays in FF toolbar Google PR and Yandex tYC (yandex is russian search engine).

  13. Josh Malone says:

    Outside of modifying each user’s firefox profile, I can’t find any way to suppress the addon manager prompt when installing a firefox add-on in a managed fashion (i.e., with Munki into /Library/Application Support/).

    Has anybody figured out a way to actually install *and* activate an add-on via Munki/etc.?

    1. Josh Malone says:

      I may have been doing something wrong. I think I have a procedure for silently deploying CCK-built Firefox add-ons. I want to test a bit more before posting my complete solution.

Comments are closed.