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.

Opening Local Files from Firefox

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

The Switch Has Been Thrown

So I'm not waiting for the reimaging to complete after all.  I made another Firefox package with SetDefaultBrowser turned on and the desktop icon enabled, set it to push out, and turned off the IE desktop icon via group policy.  Every computer will switch to Firefox being the default browser the next time they're rebooted.  You're welcome internet.

I have to say using IE Tab Plus made me much more confident in this.  We do have at least one major IE-only site and having it Just Work for users automatically and transparently is a major plus.  I don't have to send out e-mail explaining how that one has to be visited differently and get the inevitable calls from the people who forget.  It Just Works.  Less hassle for them, less hassle for me.

Dealing With Those Pesky IE-Only Sites (IE Tab Plus vs. IE View)

Unfortunately IE-only sites seem to be unavoidable.  However, we can use extensions to help make this a manageable problem.  There are two we're going to be looking at which use slightly different approaches.  Both of them can be configured through user.js so you can use my script to manage the settings centrally, including the rules that determine which sites require IE.

The first is IE Tab Plus:
  • PRO: Provides a seamless user experience.  Flagged sites are loaded in Firefox.  It looks and (mostly) behaves like a regular Firefox tab, but the contents are actually rendered in IE.
  • PRO: Provides cookie syncing between the browsers, though I haven't tested this.
  • PRO: Uses regular expressions to flag sites, which are more powerful.
  • CON: A tab can become stuck in IE mode depending on how you browse.  If you go to an IE site and then click on a bookmark or type in an URL, you'll switch back to Firefox, but if you keep browsing by clicking links on the page, you'll stay in IE even after leaving the flagged site.
    UPDATE: Turns out you can use the "Switch Back to Firefox in New Page" option to fix this, but that prevented a login from working at an important IE-only site so I'm not going to trust this feature.
  • CON: Can't access IE settings while browsing in IE mode.  If you need to change the security zone you're out of luck.
  • CON: Minor unexpected behaviors.  If you right click on a link to try to bookmark it, it will go to IE's favorites instead.  If you use the star on the URL bar or the Bookmarks menu, it will work correctly.
  • CON: Uses regular expressions to flag sites, which could be confusing for people not familiar with them.
The other is IE View:
  • PRO: Flagged sites load in a separate IE window.  No confusion about how a site is being rendered or side effects from mixing browser UIs.
  • PRO: Can access all IE settings during IE browsing.
  • PRO: Sites are flagged by the beginning of the URL, which is more straightforward.
  • CON: Flagged sites launching a separate window with a completely different UI is a jarring user experience.  Users won't have access to Firefox bookmarks unless they go back to a Firefox window.
  • CON: The simpler rule system means you need a separate rule for URLs with "www" and without, for http and https, for each subdomain, and all combinations thereof.
I'm going with IE Tab Plus for the better user experience, though with some mild trepidation.  Fortunately it provides an icon on the status bar to let you know which engine it's using and to easily switch between the two, which will make troubleshooting easier.  I'm also a programmer so regular expressions don't faze me.

Whichever way you go, use this article to make the extension an MSI and this article to configure it via the login script.  I've updated the script so all configuration keys are at the beginning and added support specifically for these two extensions so configuring the rule lists is easier.


Configuring IE Tab Plus

IE Tab Plus requires three settings be defined in user.js to not pop up a configuration screen.  Add these three lines to firefoxSettings in the login script:
var firefoxSettings = new Array(
   "coral.ietab.mode", "classic",
   "coral.ietab.version", "99.99",
   "coral.ietab.is1209SelectionDone", true
   );
If mode isn't set it will pop up the configuration dialog.  The advanced mode supports cookie and AdBlock sync but I'm not getting into those.  If version isn't set or is lower than the extension version, it will open up a tab of the changelog the first time it starts.  Fortunately we can set it higher than the extension version with no ill effects so we don't have to worry about changing this with every update.  At some point they added a new price comparison feature and I guess they wanted to pop up again so old users can see it, so setting is1209SelectionDone makes it think they already have.

There's also a separate variable ieTabRules which is where you put the regular expressions.  The login script will convert them into a coral.ietab.rulelist setting for you.
var ieTabRules = new Array(
   "http://*update.microsoft.com/*",
   "http://www.windowsupdate.com/*"
   );
If you want to configure any other settings go to about:config in your browser, look at what's available under coral.ietab, and add what you want to firefoxSettings.


Configuring IE View

IE View doesn't require any settings be configured other than the rules, so you can just enter them in ieViewURLs and the login script will convert them into an ieview.forceielist setting for you.  Remember that you have to include all permutations of their beginnings.
var ieViewURLs = new Array(
   "http://www.somesite.com",
   "http://somesite.com",
   "https://www.somesite.com",
   "https://somesite.com"
   );
If you want to configure any other settings go to about:config in your browser, look at what's available under ieview, and add what you want to firefoxSettings.

Watching Mozilla's Progress

If you want to follow Mozilla's progress towards creating its own MSIs and supporting group policy, there's two pages you can follow:
As of this writing the MSI feature appears to be in active development.  Patches are being submitted and reviewed, so it looks like we'll get official Firefox MSIs at some point in the not too distant future.

The group policy feature, on the other hand, doesn't have much going on.  It looks like FrontMotion is the best we're going to get for now.