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 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.

Dealing With Those Pesky IE-Only Sites (IE Tab v2)

(This is updated instructions for using IE Tab v2.  For IE Tab Plus and IE View, go here.)

Unfortunately IE-only sites seem to be unavoidable.  However, we can use extensions to help make this a manageable problem.  Previously we compared IE Tab Plus and IE View.  Since upgrading to Firefox 9 I've switched to IE Tab v2.  Initially it was out of confusion over which of the IE Tab extensions was the newest one, but it works the same: IE is transparently used to render pages that match rules you specify in my script.  The configuration keys have changed so I've updated the script to generate the settings for both.

Configuring IE Tab v2

You should add these lines to firefoxSettings in the login script:
var firefoxSettings = new Array(
   "extensions.ietab2.filter", true,
   "extensions.ietab2.compatMode", "ie8mode",
   "extensions.ietab2.hasRun", true
The first setting makes sure it's enabled.  The second setting tells it to render pages in IE8 Standards Mode, since it uses IE7 by default and there's no reason you should be using that.  There's also an IE9 mode if you have that installed, but 8 is the highest version available for Windows XP.  The third setting prevents it from opening a welcome tab the first time it's used, but I'm not sure if it's still necessary after the edit below.

Before packaging this extension as a MSI, edit chrome\content\ietabOverlay.js and find and delete this line:
This prevents it from also opening a release notes tab the first time it runs.  With IE Tab Plus we could prevent this by setting coral.ietab.version to 99.99, but IE Tab v2 doesn't compare numerically.  If it's version doesn't exactly match the setting, the release notes open.  This is a problem because the settings are applied at log on but the extensions are installed when the computer starts so they can become out of sync.  Instead we'll just knock out the code that checks it.

There's also a separate variable ieTabRules which is where you put the regular expressions.  The login script will convert them into an extensions.ietab2.filterlist setting for you.  If you already set this up for IE Tab Plus, you don't have to change this variable, though you do need the updated version of my script.
var ieTabRules = new Array(
If you want to configure any other settings go to about:config in your browser, look at what's available under extensions.ietab2, and add what you want to firefoxSettings.