Fixe Idee: Wie man die Firefox-Einstellungen per Gruppenrichtlinie verteilt

Christoph und ich hatten uns heute Mittag über die Erstellung von MSI-Paketen unterhalten – ich hatte vor einigen Tagen unsere Fonts per MSI und Active Directory deployt.
Nun kamen wir wieder einmal auf das Thema “Deployment von Firefox” und Setzen der Einstellungen.

Mein erster Gedanke war, ein eigenes XPCOM-Modul zu schreiben. XPCOM ist wie DCOM auch ein Komponentenmodell und wird von der Mozilla-Truppe voran getrieben. Die XPCOM-Module werden in C++ entwickelt und sind so plattformunabhängig.
Das fiktive XPCOM-Modul würde nun die Daten aus der Registry laden und dementsprechend alle Einstellungen des Firefoxes setzen.

So weit, so gut. Es geht aber auch einfacher: Nach einer kurzen Recherche habe ich heraus gefunden, dass Firefox ab der Version 1.5 das XPCOM-Interface nsIWindowRegKey bereitstellt. Unter http://developer.mozilla.org/en/docs/Accessing_the_Windows_Registry_Using_XPCOM findet sich dazu ein ausführlicher Artikel.

Über das Interface nsIPrefService lassen sich Einstellungen des Firefoxes lesen und schreiben, siehe dazu auch http://developer.mozilla.org/en/docs/nsIPrefService.

Das weitere Vorgehen ist eigentlich trivial. Anstatt eines in C++ geschriebenes XPCOM-Modul wird einfach eine Firefox-Extension in JavaScript geschrieben.
Diese lädt beim Start alle Einstellungen aus z.B. HKCUSoftwareMozillaFirefox, überprüft die Typen (DWORD, Boolean, String) und setzt über nsIPrefService die Einstellungen.

Damit die Einstellungen über das AD verteilt werden können, ist etwas Handarbeit nötig: eine neue .adm-Datei hält die definierten Einstellungen vor. Mit dieser Vorlage lassen sich alle Einstellungen ganz einfach per Active Directory verteilen.

Mal sehen, ob einer aus unserer Truppe dafür irgendwann mal Zeit hat.

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>