Déployer Firefox 5 sur un parc de Mac

how-to

UPDATE : Vous devriez probablement lire cet article si le sujet vous intéresse.

Ça peut sembler idiot, mais j'ai passé pas mal de temps à chercher une solution pour déployer Firefox convenablement sur un parc de Mac. Mes besoins sont pourtant simples :

  • Inclure certaines extensions pour tous les utilisateurs du poste,
  • Empêcher Firefox de proposer des mises à jour aux utilisateurs (puisqu'ils n'ont pas les droits pour les faire, de toute façon :P),
  • Que le tout soit simple à maintenir (c'est à dire, sans avoir à écrire un script shell et cie) et déployable facilement, via Apple Remote Desktop, par exemple.

Après avoir passé pas mal de temps à pester contre Firefox, testé en long, en large, et en travers, j'ai fini par trouver une solution pour chacun de ces problèmes.

Firefox

Pré-requis

Pour commencer, il faut bien entendu télécharger la dernière version de Firefox. À l'heure où j'écris ces lignes, la version 5 est toute fraîche du jour.

Il faut aussi récupérer les fichiers .xpi des extensions qui vous intéressent.

Dernière étape : on monte le fichier .dmg téléchargé en double-cliquant dessus et on récupère le fichier Firefox.app, en le copiant directement sur le bureau, par exemple.

Inclure des extensions

Le premier travail va consister à inclure des extensions dans notre package. Pour cela, il faut comprendre deux petites choses :

  • Une application pour Mac OS X est un fichier .app, qui contient en réalité tous les fichiers utiles à l'application,
  • Les extensions des produits Mozilla (donc Firefox) sont distribuées sous la forme de fichiers .xpi, qui sont en réalité des fichiers zip, avec l'extension .xpi.

Nous allons donc commencer par décompresser une extension. Pour cela, vous pouvez utiliser votre logiciel de décompression favori, ou utiliser la ligne de commande (un petit coup de unzip devrait suffire). Vous retrouvez donc normalement l'ensemble des fichiers qui composent l'extension.

Parmi ceux-ci se trouve normalement un fichier appelé install.rdf, que nous allons ouvrir (un simple éditeur de texte fait l'affaire). Nous allons repérer l'ID de l'extension. C'est une chaîne un peu bizarre, qui commence par une accolade ouvrante, suivie d'une suite de chiffres et de lettres, et qui se termine par une accolade fermante.

<?xml version="1.0"?>

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:em="http://www.mozilla.org/2004/em-rdf#">

<Description about="urn:mozilla:install-manifest">
    <em:id>sample@example.net</em:id>
    <em:version>1.0</em:version>
    <em:type>2</em:type>

    <!-- Target Application this extension can install into, 
         with minimum and maximum supported versions. --> 
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}<>/em:id>
        <em:minVersion>1.5</em:minVersion>
        <em:maxVersion>4.0.*</em:maxVersion>
      </Description>
    </em:targetApplication>

    <!-- Front End MetaData -->
    <em:name>sample</em:name>
    <em:description>A test extension</em:description>
    <em:creator>Your Name Here</em:creator>
    <em:homepageURL>http://www.example.com/</em:homepageURL>
  </Description>      
</RDF>

Copiez cet ID et fermez le fichier install.rdf.

Créez maintenant un nouveau dossier, donnez lui comme nom l'ID de l'extension et placez-y tous les fichiers qui composent l'extension (ceux que nous venons de dézipper).

Ouvrez le fichier Firefox.app (clic droit > Afficher le contenu du paquet) et naviguez dans Contents/MacOS/. Ici, créez un dossier appelé distribution et dans ce dossier, créez un dossier appelé bundles.

Enfin, copiez le dossier contenant l'extension (celui avec le nom bizarre) dans le dossier bundles que l'on vient de créer. C'est fini !

Empêcher les mises à jour

Cette astuce est valable pour toutes les autres options de Firefox, il faut simplement repérer celles qui vous intéressent dans about:config de Firefox.

Nous allons commencer par créer le fichier Firefox.app/Contents/MacOS/defaults/pref/local-settings.js contenant les lignes suivantes :

pref("general.config.obscure_value", 0);
pref("general.config.filename", "mozilla.cfg");

Ces directives permettent simplement à Firefox de charger le fichier de configuration appelé mozilla.cfg, auquel nous allons nous attaquer dès maintenant.

Créer le fichier Firefox.app/Contents/MacOS/mozilla.cfg et placez-y les lignes suivantes (par exemple) :

//
lockPref("browser.search.update", false);
lockPref("app.update.enabled", false);
lockPref("app.update.auto", false);

Attention, à priori, les deux slashes de la première ligne sont indispensables !

La directive lockPref permet de définir la valeur de la préférence et de la verrouiller. L'utilisateur ne pourra donc pas modifier sa valeur. L'option en question sera d'ailleurs grisée. Si vous désirez simplement définir cette option par défaut et laisser ensuite l'utilisateur la modifier, utilisez la directive pref à la place de lockPref.

Déploiement

Il suffit de copier le fichier Firefox.app customisé dans le dossier Applications des postes client. Personnellement, je fais ça via Apple Remote Desktop. Il faut bien entendu préciser qu'il faut remplacer l'ancienne version, et hériter des droits du dossier parent. Voilà, le tour est joué !