One of the questions I get asked a lot is how to set default application handlers in Firefox (the Applications page in preferences). Most companies have resorted to creating a default mimeTypes.rdf file and loading this into their default profile. I finally took the time to understand how these handlers work and can give you some code to use.
In my previous post, I talked about the moving of some files for Firefox 21. Due to some major bugs related to partner builds, the distribution directory was moved back. So you no longer need to move distribution files into the browser directory. So here's a summary of what has changed:
- defaults/preferences -> browser/defaults/preferences
- defaults/profile -> browser/defaults/profile
- extensions -> browser/extensions
- searchplugins -> browser/searchplugins
- plugins -> browser/plugins
I've also been asked about the file override.ini - this file should now be placed in the browser subdirectory as well.
Remember, Firefox 21 is scheduled to be released tomorrow.
If any step in your process to customize and deploy Firefox involves unpacking and repacking omni.ja[r], you're probably doing it wrong. Any modifications you need to make to Firefox, whether it be changing the default profiles, changing the default preferences or even overriding specific files can be done WITHOUT repackaging omni.ja[r].
If you really think you have a use case for unpacking the omni.ja[r], let me know and I'll try to prove you wrong.
Now you know...
In a previous post, I talked about add-on scopes. One of the things that was most problematic about add-on scopes was where the
extensions.autoDisableScopes preference could be set. In my original testing, I thought I was unable to set it in an autoconfig file. I've retested everything in the ESR 17 as well as the current Firefox, and to my surprise, this value can be set fine in an autoconfig file (although not if it is remote).
In addition, for files in the defaults/preference directory, there were issues with JS files only working if the filename started with a letter less than f. That problem appears to not be there anymore either.
So to summarize, you can set extensions.autoDisableScopes via autoconfig (and you should) and it doesn't matter what your JS file in defaults/preferences is named.
There are some pretty major changes coming in Firefox 21 that you need to be aware of if you are going to deploy it. Here's the details.
In order to support the metro version of Firefox, most of the Firefox code was moved into a subdirectory called browser. This means that all configuration files except the autoconfig now go into the browser subdirectory:
So just about every blog post I've ever done on this stuff doesn't apply starting with Firefox 21. Also be aware that these changes will be in the ESR 24.
In addition, there is a new feature called Firefox Health Report that is on by default. You can see it by going to about:healthreport. This feature sends data about Firefox to Mozilla. You have two choices here. If you want to be able to see the data, and just not have it sent to Mozilla, set the preference "datareporting.healthreport.uploadEnabled" to false. If you want to turn it off completely, set the preference "datareporting.healthreport.service.enabled" to false.
It's hard to believe it's been 15 years. It seems like only yesterday that I was working with the Netscape for OS/2 team to make sure that all the back-end OS/2 changes made it into the source code release.
Being a contributor to Mozilla has allowed me to have some amazing experiences.
- Working with some incredible people in the partner engineering center at Netscape. I couldn't possibly name them all, but a lot of the Mozilla relationships I have now started in that building.
- Leading the team that ported Mozilla to OS/2 as the IBM Web Browser.
- Leading the team that ported Firefox to OS/2.
- Traveling around the world talking to people about OS/2 browsers.
- Getting to meet Sergey Brin in the early days of Google at Technical Advisory Group meetings with Mozilla, IBM, Google, Red Hat and others.
- Taking Blake Ross to meet Sam Palmisano, the CEO of IBM, to talk about Firefox.
- Working with IBM Israel and IBM Egypt to get bidirectional language support (Hebrew and Arabic) into Mozilla.
- Working on Operator and getting microformats support into Firefox
- Creating the CCK and enabling hundreds of enterprises to customize and deploy Firefox.
- Releasing a Firefox version of IE8 Activites before IE8 had it.
- Starting Kaply Consulting after leaving IBM which enabled me to continue to develop and advocate for Firefox.
Thanks, Mozilla, for 15 years. And thanks to all the people who have helped me get here.
I've got some updates to the CCK Wizard, but they've been taking a back seat to other work. I've finally got them together in this new beta. You can download it here.This one has the ability to remove the add-on discovery UI as well as support for modifying the default click to play list (thanks to Nils Sprenger and Tim Stecher).
I'm releasing this on Friday of this week, so if you have problems, please let me know.
There have been sporadic reports of bookmarks not working and certificates not installing. If that happens to you, I can't debug it without the XPI, so please send that to me if you have the problem.
I was recently asked if there was a way to silence the Firefox installer. There are actually a number of customizations you can make to the Firefox installer without rebuilding it, like silencing it, changing the install directory and more.
Rather than go into detail here, the best place to point you is an entry on the Mozilla Wiki - Installer:Command Line Arguments
I personally hate the fact that when you bring up the Add-on Manager, the URL bar goes away. If you're annoyed by that as well, I've created an add-on to solve that - Always Awesome Bar.
With this add-on installed, URLs that typically make the URL bar go away behave like normal URLs.
Recently I was asked if there was a way to allow only certain sites to install add-ons but block any other sites that try to install add-ons. While Firefox does not have a built in way to do this, I was able to figure something out.