12/11/07

rendre Prism portable sous Mac OS X

Prism

Pour commencer, Prism est un projet issu des labos de la fondation Mozilla. Prism, un moteur reposant sur les mécanismes de Firefox, permettra de faire fonctionner des services Web (Gmail, Facebook, Yahoo Mail, etc) non plus seulement au travers du navigateur mais comme des applications classiques.

Mais voilà, ces fameuses applications ne sont pas portables nativement, puisque le chemin vers Prism est renseigné en dur.

Admettons que vous vouliez une application Prism pour consulter votre webmail Gmail, le contenu de votre application, baptisée Gmail (lors de sa création automatisée via l'interface de Prism), devrait ressembler à ceci :

Gmail.app/Content/MacOS/Gmail

#!/bin/sh
exec /Applications/Prism.app/Contents/MacOS/xulrunner -webapp gmail@prism.app

On se rend compte, aisément, que vous ne pourrez pas emporter votre Prism et votre application Gmail.app sur une clef USB ; ni même déplacer Prism à votre guise sur votre disque sans que ça ne compromette le fonctionnement des applications (lanceurs) en dépendant… c'est un peu dommage.

Modifications

Or, Mac OS X peut savoir (assez) précisément où se trouvent les applications, notamment grâce à la clef CFBundleIdentifier, il s'avère que cette clef est absente du Info.plist de Prism, il faut donc commencer par l'y ajouter :

Prism.app/Contents/Info.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>CFBundleInfoDictionaryVersion</key>
  <string>6.0</string>
  <key>CFBundlePackageType</key>
  <string>APPL</string>
  <key>CFBundleExecutable</key>
  <string>xulrunner</string>
  <key>NSAppleScriptEnabled</key>
  <true/>
  <key>CFBundleGetInfoString</key>
  <string>Prism 0.8</string>
  <key>CFBundleName</key>
  <string>Prism</string>
  <key>CFBundleShortVersionString</key>
  <string>0.8</string>
  <key>CFBundleVersion</key>
  <string>0.8.20071010</string>
  <key>CFBundleIconFile</key>
  <string>webrunner</string>
  <key>CFBundleIdentifier</key>
  <string>com.apple.xulrunner.prism</string>

ensuite, nous revenons à notre application, Gmail.app (exemple), et nous la modifions comme suit :

Gmail.app/Content/MacOS/Gmail

#!/bin/sh
xulrunner=`echo | osascript -e "try
	tell application \"Finder\" to return POSIX path of (((application file id \"com.apple.xulrunner.prism\") as Unicode text) & \":Contents:MacOS:xulrunner\")
	on error m
		beep
		display dialog m with icon 0 with title \"Prism\" buttons {\"OK\"}
		return ""
	end try"`
 
if [ -n "$xulrunner" ]
then
  exec "$xulrunner" -webapp gmail@prism.app
fi
exit

L'application Gmail.app est devenue déplaçable (mais pas encore portable) et fonctionnera ; pour peu que Prism se trouve sur un volume connecté à la machine… pour la portabilité, il faudrait voir à embarquer le profil dans Prism, à l'étude pour voir si c'est possible.

commenter (0)