Although this is technically a blog, it's primary content is a series of articles on how to get Firefox working in a corporate Windows environment. Later ones build on earlier ones, so you might want to use the Table of Contents on the right to read through it chronologically instead of reading straight down from here.

Upgrading to Firefox 48, Part 1

Hey, remember me?  I'm still around, but the instructions on this site have held up over the years so there was no need to update them.  That changes now with Firefox 48.  Starting with this version, extension signing is enforced with no way to turn it off in user.js (well, at least in the Firefox-branded release and beta channels anyway.)  Earlier versions would let you off with just a warning if you set xpinstall.signatures.required to false, but that option is ignored now.

I updated the extension to MSI instructions, and the only significant change was not to alter <maxversion> in install.rdf anymore.  Firefox now assumes extensions are compatible with future releases by default so there's no need to.  More importantly, changing install.rdf would probably invalidate the signature (I haven't tested it though) so we can't do that anymore.  Fortunately, repackaging the XPI as a MSI does not.  I've successfully installed both Flashblock and IE Tab v2 this way and Firefox still recognizes them as signed.

This is a Part 1 because I still have to work on instructions for getting an altered version of XMarks to work.  If it's possible, it will involve creating an unlisted extension at addons.mozilla.org so it can be signed.  Stay tuned.

Upgrading to Firefox 19

I'm still here, but I'm not going to post an update for every Firefox release.  I have been keeping up with them, but many don't require changes to the instructions on this blog so I'm only going to post when there's something you should be aware of.

Speaking of which, Firefox 19 introduced a built-in PDF viewer that's enabled by default.  If this works for you, great!  One less thing to manage and one less attack vector.  However, the people at my organization frequently use fillable PDF forms and so they need Adobe Reader proper.  I updated the Additional Useful Settings page with the line you need to add to my script to disable it.

Upgrading to Firefox 16

I forgot to make a post for this.  Know why?  Because nothing needs to be done at all if you were on 15Download, tweak, push out.  I took the opportunity to upgrade XMarks to 4.1.3 as well, and the instructions for editing that are exactly the same as the previous version.  Hopefully most future updates will be this easy.

Upgrading to Firefox 15

If you already upgraded to Firefox 14, upgrading to 15 is painless.  Download the new MSI, tweak it if you want, and push it out.  Thanks to the improved extension handling in recent versions nothing else needs to be done.

Firefox 15 introduces silent updates, though it's disabled in the MSIs because FrontMotion rightfully assumes that if you're doing it this way you want to handle pushing them out yourself.  You don't have to do anything to turn it off.

Using silent updates would mean you wouldn't have to worry about keeping up with each new version of Firefox, you can just install it on your image and it will take care of updating itself, like Chrome.  It's also beneficial in that new versions will be applied whenever Firefox restarts and not the entire computer.  However, you'd lose the ability to roll out updates in a controlled manner and to do compatibility testing beforehand.  I'm going to stick with the MSIs for now, but if I didn't have to rely on extensions for things like IE-specific sites I would consider this.

Firefox also has extended support releases if you'd prefer the upgrade treadmill not move so fast.  FrontMotion provides MSIs for them too.  I'm sticking with the standard releases for now because I wanted all the memory use improvements that have been landing in recent versions, and the improved extension handling has made upgrading less of a burden.  However, switching to ESR would mean you would only face a major upgrade once a year while still getting security fixes, so it might be an attractive option for some of you.

Upgrading to Firefox 14

I updated the site again for everything you need to do to push out Firefox 14.  Almost everything is exactly the same as it was for Firefox 9, so this is all you need to do:
  • Get a new MSI for Firefox 14.
  • Tweak it if you want.  The instructions are the same.
  • Get and edit XMarks 4.1.0.  I had problems using 4.0.5 with Firefox 14, but the instructions to edit 4.1.0 are the same.
  • Push them both out with Active Directory.  I found the PlainOldFavorites and IE Tab v2 plugins didn't need to be updated.
  • You're done.
The only other thing I added to the site was an explanation of how to push settings out per-user or per-machine.  I did this to turn off Firefox's new smooth scrolling feature on the remote desktop server.

Upgrading to Firefox 9

I've updated the site for everything you need to do to push out Firefox 9.  Here's a summary of the changes for those of you who have already followed these instructions for Firefox 4:
  • FrontMotion has stopped including Flash with their Firefox MSIs, so tweaking our custom version with Orca got simpler.
  • The XMarks extension needs to be updated to work with version 9, so I updated that post with the slight changes required for XMarks 4.0.5.
  • The PlainOldFavorites extension no longer works from C:\Program Files, it must be installed in the user profile folder.  I updated my login script to allow you to specify extensions where that's the case and it will copy them over to the profile for you.
  • I switched from IE Tab Plus to IE Tab v2, which requires slightly different settings but allows the rule variable to be the same.  The script was updated to support them both from the same ieTabRules variable.
  • New versions of Firefox ask users if they really want all the extensions that are installed, plus they treat extensions installed via the registry as suspicious and ask the user about those too.  Since that affects the extensions we're pushing out via MSI I documented what you need to do to disable it.
  • I documented a few other Firefox settings you may want just to prevent it from popping up some unnecessary notices.

Additional Useful Firefox Settings

Preventing Custom Extensions from Being Disabled

Newer versions of Firefox are trying to clean up unwanted extensions.  Anything that tries to install itself automatically will cause Firefox to prompt the user to make sure they really want it.  Great for consumers, bad for us when we're pushing out extensions centrally.  We don't want our users to disable something important, nor do we want to hassle them with a prompt they may not know how to respond to.  Fortunately we're also pushing out configurations via my script so we can disable this.  These are the settings you need to add to firefoxSettings:
var firefoxSettings = new Array
    "extensions.shownSelectionUI", true,
    "extensions.autoDisableScopes", 0
    );
The first one prevents the "Select Your Add-Ons" window that pops up the first time you use a more recent version of Firefox.  That asks the user if they really want to keep everything that's already installed, so we make it go away by marking it as already having been shown.  The second setting prevents Firefox from viewing extensions installed via the registry as suspicious and prompting the user about them, which is what we want since this is what we use to add our MSI extensions to Firefox.  With both these settings Firefox should continue to work quietly.


Preventing Other Unnecessary Prompts

These aren't strictly necessary, but for all their good intentions we just rather not have Firefox hassling our users with prompts.
var firefoxSettings = new Array(
    "toolkit.telemetry.prompted", 2,
    "toolkit.telemtry.rejected", true,
    "browser.rights.3.shown", true
    );
The first two prevent the "improve Firefox by sending anonymous information about performance etc." banner and says no.  The third prevents the "know your rights" banner.  Nothing malicious about either of these, we just want Firefox to be quiet and Just Work in a corporate environment.  You can leave them enabled if you wish.


Opening Local Files

So you have an intranet which has links to files on a share drive using the file: protocol, like file:///G:/Company Policy.doc.  Internet Explorer opens these files fine, but Firefox does nothing.  You could add your intranet to IE Tab if you wanted to, but there should be a way to make Firefox do this right?  No need to switch out browser engines unnecessarily right?  There is:
If you're using my script, add these three lines to firefoxSettings:
var firefoxSettings = new Array(
    "capability.policy.policynames", "localfilelinks",
    "capability.policy.localfilelinks.sites", "http://intranet",
    "capability.policy.localfilelinks.checkloaduri.enabled", "allAccess"
    );
Change http://intranet to your own URL.  localfilelinks.sites is a space separated list so you can have more than one if you need them.


Disabling the Built-In PDF Viewer

Firefox comes with a built-in PDF viewer starting with version 19.  If that works for you, great!  One less plug-in to worry about and one less attack vector.  However, if you need the full functionality of Adobe Reader you can disable it with this setting:
var firefoxSettings = new Array(
    "pdfjs.disabled", true
    );


Disabling the New Version Home Page

The first time you open Firefox after an update it opens a special home page.  Sometimes it's an About Firefox type page which you may want to suppress just to not bother the user, and sometimes it tells you Firefox is out of date which isn't something the user can do anything about.  This is also an issue because the Firefox MSIs can lag behind the official releases, so the newest one available to you is still considered old by the system.  This setting disables the special home page:
var firefoxSettings = new Array(
    "browser.startup.homepage_override.mstone", "ignore"
    );


Per-User or Per-Computer Settings

Sometimes you need to push out a particular setting per-user or per-computer.  For example, I turn off Firefox's smooth scrolling feature on our remote desktop server as it would cause too many unnecessary screen updates.  You can do it by adding code like this under the firefoxSetting variable in the login script:
if (computerName == "rdservername")
    {  firefoxSettings.push("general.smoothScroll", false);  }
You can also put userName instead of computerName.  The script was updated in July 2012 to provide the computerName variable, so if you have an older version you can just add this line to the top:
var computerName = network.ComputerName.toLowerCase();


Combining Multiple Settings

I hope it's obvious, but just in case it's not, when you're combining multiple settings from this blog you're not assigning a new array to firefoxSettings every time, you're merging them into one.  So to apply both the custom extensions settings and the local files settings, it would look like this:
var firefoxSettings = new Array(
    "extensions.shownSelectionUI", true,
    "extensions.autoDisableScopes", 0,
    "capability.policy.policynames", "localfilelinks",
    "capability.policy.localfilelinks.sites", "http://intranet",
    "capability.policy.localfilelinks.checkloaduri.enabled", "allAccess"
    );
There's an extra comma added after 0 to continue the list and then it goes straight into the second set of values.  If you had multiple "firefoxSettings = new Array(" statements the later ones would simply overwrite the earlier ones.