I upgraded to Firefox 3.6.3 the other day and at the same time, upgraded one of the add-ons I use (Xmarks).  I love Xmarks, but that’s for another time.  When Firefox upgrades an add-on, it displays the Add-ons list, which is a dialog box that lists all of the add-ons that are registered with Firefox.  You can use that dialog to enable or to disable an add-on or see if a newer version of an add-on is available. 

Firefox has two terms for add-ons.  They refer to them as either an add-on or an extension.  They mean pretty much the same thing with Firefox and I’m going with the term that appears in their own documentation, which is extension.

Something was changed in Firefox with the 3.6 release.  I saw a bunch of extensions that were not there before.  I was seeing multiple versions of something called the “Java Console”.

Add-ons with Java Console

This add-on is a Java development tool.  You can use it display error messages from Java applets running on a page.  I never use it and I didn’t want every old version in that list. If you search on “firefox java console multiple” with your favorite search site, you’ll get over 100,000 hits.  So I figured that it wasn’t me, it was Java causing the problem.  One the higher ranked hits for the search took me me to an article about Java in the Mozilla (people behind Firefox) knowledge base.

It appears that when the Java installer is upgrading from a previous version of Java, it’s smart enough to remove or overwrite the previous version of the Java runtime, but not smart enough to remove the previous version of the Java Console extension. The KB article about Java has a link for how to manually uninstall a add-on.  You can do it manually or from within Firefox.  I was unable to remove it through Firefox, so I decided to remove it manually with extreme prejudice.

You can register an extension with Firefox in multiple ways.  With Java, the extensions are stored in the following folder:  “%ProgramFiles%\Mozilla Firefox\extensions”.

On my XP machine, a listing of that folder displayed the following:

Volume in drive C is JOHNSONWAX     Serial number is 00a4:443c
Directory of  C:\Program Files\Mozilla Firefox\extensions\*
4/23/2010   9:42         

4/23/2010   9:42             ..
4/16/2010  10:57             {972ce4c6-7e08-4474-a285-3208198ce6fd}
11/18/2008  12:37             {CAFEEFAC-0016-0000-0010-ABCDEFFEDCBA}
2/18/2009  16:52             {CAFEEFAC-0016-0000-0011-ABCDEFFEDCBA}
5/28/2009  10:31             {CAFEEFAC-0016-0000-0013-ABCDEFFEDCBA}
8/10/2009  14:35             {CAFEEFAC-0016-0000-0015-ABCDEFFEDCBA}
11/23/2009  10:29             {CAFEEFAC-0016-0000-0017-ABCDEFFEDCBA}
3/31/2010  13:57             {CAFEEFAC-0016-0000-0019-ABCDEFFEDCBA}
4/22/2010  11:33             {CAFEEFAC-0016-0000-0020-ABCDEFFEDCBA}
10/09/2009  14:17              49  {E0B8C461-F8FB-49b4-8373-FE32E9252800}
             49 bytes in 1 file and 10 dirs    4,096 bytes allocated
20,867,198,976 bytes free

From this listing, the multiple Java Console entries jump out as because of the multiple folder names that start with “{CAFEEFAC-0016”.  The folder names are GUIDs, and it looks like Sun has embedded the version number in to the GUID name.

You typically will not see the name of the extension in the folder or in any of the file names in the extension folder.  You need to check the folder and read either the chrome.manifast or the install.rdf, files typically found in an extension folder.  When I opened the install.rdf (this file tells FireFox how to register the extension) in the {CAFEEFAC-0016-0000-0010-ABCDEFFEDCBA} folder, this is what I saw.

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    Java Console



The fourth line down lists the extension name as the value of the em:name element and two lines down, you’ll see the version number as the value of the em:version element. Since I could tell that the “{CAFEEFAC-0016” folders belong to the Java Console, all I had to was to delete all of the “{CAFEEFAC-0016” folders, except for the last one.  Once I did that, all I needed to do was to restart Firefox and the extra extensions were gone.

This appears to be a bug with the Java installer when you upgrade over an existing version.  If it’s smart enough to remove the previous runtime, it should be able to remove the previous version of the console.  It would not have been that hard, all they had to to was look at all the extension folders that started with “{CAFEEFAC-0016-0000” and remove the one that was not the current one.