About two years ago I did some work to customize the Mozilla Thunderbird product to work with the UVM IMAP servers out-of box:
This project made use of the so-called “ISP Hook” for Thunderbird, loosely documented here:
Unfortunately, it appeared that with the release of Thunderbird 3.0 the ISP Hook was being retired in favor of “autoconfig”:
Autoconfig is a promising project, but unfortunately, it lacks the ability to configure all of the settings previously available in the ISP Hook RDF file:
I had a long look at using the previous “autoconfig” (called “Mission Control Desktop”), and while this approach is powerful, it really requires too much external scripting to be effective as a deployment mechanism (MCD seems more ideally suited to management of systems in a lab environment):
So what is the solution? It involves:
- One expatriate Windows sys admin and reverse-engineering expert.
- A few line of additional shell scripting to our existing build system.
- The ability to distinguish capital and lowercase letters.
While explaining the ISP Hook problem to my colleague Ben Coddington, I noticed that the old Account Configuration dialogs (complete with the create “UVM Email Account” option) was still available under TB3, but that the dialog could no longer be activated following a new installation. Ben said “I’ll bet I can fix that”, and proceeded to unpack every “jar” file in the Thunderbird installation directory.
There is one other minor change… I also set the following additional default option in the global prefs.js file:
This defaults Windows Search integration to “on” in the new account setup dialog. It is a cool new feature that everyone should use (in my opinion).
REM Thunderbird customized build script for UVM. REM Updated December 2009 for Thunderbird 3.0 support. REM REQUIRES: 7z.exe, 7zr.exe and sed.exe in parallel "..\bin" directory REM Unmodified Thunderbird installer in .\source directory REM all required config files in .\config directory REM (including 7z control file, ISP Hook RDF file, and modified prefs.js) REM OUTPUT: Fully modified Thunderbird installer in .\Installer directory. @echo off Echo Cleaning up old builds... del .\Installer\*.exe rmdir /s /q .\build set /P tbver=Enter Thunderbird version number to build (i.e. "126.96.36.199"): Echo Extracting setup files from OEM Installer... mkdir .\build\temp ..\bin\7zr x .\source\*.exe -o.\build Echo Extracting messenger.jar contents... REM messenger.jar is a ZIP type archive... need full 7z executable to unpack. ..\bin\7z x .\build\nonlocalized\chrome\messenger.jar -o.\build\temp Echo modifying messenger functions... ..\bin\sed.exe --binary "s/NewMailAccount(msgWindow, okCallback);/MsgAccountWizard(okCallback);/" <.\build\temp\content\messenger\msgMail3PaneWindow.js > .\build\temp\content\messenger\msgMail3PaneWindow_new.js MOVE /Y .\build\temp\content\messenger\msgMail3PaneWindow_new.js .\build\temp\content\messenger\msgMail3PaneWindow.js Echo Repacking messenger.jar... REM again, we must use the full 7z executable. -mx=0 means archive with no compression. ..\bin\7z a -tzip -mx=0 .\build\temp\messenger.jar .\build\temp\* Echo Copying UVM Custom config files to source... copy /Y .\config\prefs.js .\build\nonlocalized\defaults\profile\prefs.js mkdir .\build\nonlocalized\isp\en-US copy /Y .\config\UVMMail.rdf .\build\nonlocalized\isp\en-US\UVMMail.rdf copy /Y .\build\temp\messenger.jar .\build\nonlocalized\chrome\messenger.jar Echo Deleting temporary files... rmdir /s /q .\build\temp Echo Repackaging Thunderbird installer... ..\bin\7zr a .\Installer\UVM_Thunderbird_setup_%tbver%.7z .\build\* copy /b ..\bin\7zS.sfx + .\config\config.txt + .\Installer\UVM_Thunderbird_setup_%tbver%.7z .\Installer\UVM_Thunderbird_setup_%tbver%.exe Echo Cleaning up installation source... REM rmdir /s /q .\build del /f /q .\Installer\UVM_Thunderbird_setup_%tbver%.7z