XULRunner: Questions Fréquemment Posées. [WIP]
Gestionnaire d'Extensions
Pour pouvoir installer des extensions, vous devez d'abord activer le Gestionnaire d'Extensions] dans application.ini. XULRunner 1.8.0 ne charge pas les extensions depuis le dossier de l'application; seul le dossier XULRunner et le dossier du profil de l'utilisateur sont vérifiés. Les préférences suivantes doivent être définies pour faire fonctionner le dialogue XPInstall, le gestionnaire d'extensions et le gestionnaire de thèmes:
pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/x...allConfirm.xul"); pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/...ul?type=themes"); pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/...ype=extensions"); pref("xpinstall.dialog.progress.type.skin", "Extension:Manager-themes"); pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager-extensions"); pref("extensions.update.enabled", true); pref("extensions.update.interval", 86400); pref("extensions.dss.enabled", false); pref("extensions.dss.switchPending", false); pref("extensions.ignoreMTimeChanges", false); pref("extensions.logging.enabled", false); pref("general.skins.selectedSkin", "classic/1.0"); // NB these point at AMO pref("extensions.update.url", "chrome://mozapps/locale/extensions/e...ons.properties"); pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/e...ons.properties"); pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/e...ons.properties");
URLs Chrome Utiles
La plupart requièrent le " branding"
Fenêtre | URL | Type de fenêtre |
---|---|---|
Gestionnaire d'Extensions | chrome://mozapps/content/extensions/...ype=extensions | Extension:Manager-extensions |
Gestionnaire de Thèmes | chrome://mozapps/content/extensions/...ul?type=themes | Extension:Manager-themes |
Console JavaScript | chrome://global/content/console.xul | global:console |
about:config | chrome://global/content/config.xul |
Extensions pour le Développeur
Venkman
- Requiert une version personnalisée ou une extension compatible
- Besoin de modifier la compatibilité dans install.rdf par rapport à l'id et aux versions dans application.ini
- Besoin d'une méthode pour démarrer Venkman (communément en faisant un overlaying du fichier XUL principal, similaire au code existant pour Firefox, Suite, etc.)
- La fonction toOpenWindowByType() doit être définie. Une ébauche de fonction efficiente est sur ce blog. Une meilleure suggestion?
- Venkman utilise "chrome://communicator/skin/" comme alias pour "chrome://global/skin/" et cet alias fut maintenu dans le toolkit XULRunner jusqu'à XULRunner 1.9. Avec XULRunner 1.9 ou supérieur, vous pouvez créer votre propre alias"
dans votre chrome manifest ajoutez une ligne "skin": skin communicator classic/1.0 skin/communicator/ ajoutez un dossier de skin "communicator" et une simple CSS nommée "communicator.css" avec ce contenu: @import url("chrome://global/skin/");
Inspecteur DOM
Idem que Venkman
L'Extension du Developpeur d'Extensions
Extension Developer's Extension est un outil utile, avec un Editeur XUL Live et un shell JavaScript.
Pour installer l'extension dans votre application, vous aurez besoin de modifier son install.rdf (voir ci-dessus). Vous voudrez aussi probablement créer des éléments de menu qui vous laisseront ouvrir le shell Js et les autres outils de cette extension.
Autre méthode
Une autre méthode pour faire fonctionner Venkman et EDE [en]sur ce blog
Branding
Branding est un packetage chrome qui contient des informations spécifiques au produit (ex: nom, créateur, logo).
Quelques composants XULRunner (en particulier le Gestionnaire d'Extensions) dépendent du branding car ils cherchent certaines chaines dans <tt>chrome://branding/locale/brand.dtd</tt> et <tt>chrome://branding/locale/brand.properties</tt>.
Pour satisfaire ces dépendances, vous pouvez copier depuis Firefox <tt>brand.dtd</tt>/<tt>brand.properties</tt> vers <tt>chrome/locale/branding</tt>, les modifier en conséquence, et enregistrer la localisation pour <tt>branding</tt> en ajoutant à votre manifest chrome:
locale branding fr-FR chrome/locale/branding/
La localisation que vous mettez dans les fichiers de branding n'importe pas du moment que c'est elle qui est présente dans le manifest.
En addition, un branding content package (traduction requise) doit être enregistré pour inclure le logo de l'application:
content branding chrome/branding
2 icônes doivent être fournies dans ce dossier: icon48.png and icon64.png. Voir Firefox pour avoir un exemple.
commentaire copié de la version anglaise: In ''~.mozconfig'': ac_add_options --enable-branding=« branding location »
[Windows] Faire apparaitre correctement le nom et l'icône
Par défaut, la barre de tâches de Windows grouppe les fenêtres appartenant au même processus dans un seul bouton pour gagner de la place. ce bouton est souvent appelé "xulrunner.exe" et a l'icône de XULRunner. Il y a deux méthodes pour afficher la bonne dénomination ( = branding) de votre application à la place:
-
Si vous compilez XULRunner vous-même: créez un fichier module.ver dans mozilla/xulrunner/app avec:
WIN32_MODULE_DESCRIPTION=MonApplication
MonApplication doit être remplacé par le titre voulu sur le bouton. Vous pouvez aussi remplacer xulrunner.ico dans le même répertoire par l'icône de votre application.
- Avec un XULRunner precompilé: utilisez xulrunner-stub.exe pour démarrer votre application mais renommez le en MonApplication.exe. Avec XULRunner 1.9, le nom choisi apparaitra dans la barre de tâches (pas avec XULRunner 1.8 cependant). Votre icône peut être ajoutée avec un logiciel comme Resource Hacker (très simple à prendre en main).
Lire les arguments en ligne de commande
Les arguments en ligne de commande sont gérés par nsICommandLineHandler.
commentaire copié depuis la version anglaise: = Can i have JavaScript errors / warnings directed to stdout instead of the jsconsole? = See #306263 This doesn't do anything (1.8.0.1): xulrunner -app application.ini -console This neither (1.8.0.1) in ''defaults/preferences/«application name».js'': pref("javascript.options.strict", true); pref("javascript.options.showInConsole", true); pref("browser.dom.window.dump.enabled", true);
Préférences requises pour les dialogues de téléchargement
Pour utiliser le unknown-content-type et le dialogue file-downloads depuis un élément <browser>
, vous devez ajouter les préférences suivantes:
pref("browser.download.useDownloadDir", true); pref("browser.download.folderList", 0); pref("browser.download.manager.showAlertOnComplete", true); pref("browser.download.manager.showAlertInterval", 2000); pref("browser.download.manager.retention", 2); pref("browser.download.manager.showWhenStarting", true); pref("browser.download.manager.useWindow", true); pref("browser.download.manager.closeWhenDone", true); pref("browser.download.manager.openDelay", 0); pref("browser.download.manager.focusWhenStarting", false); pref("browser.download.manager.flashCount", 2); // pref("alerts.slideIncrement", 1); pref("alerts.slideIncrementTime", 10); pref("alerts.totalOpenTime", 4000); pref("alerts.height", 50);
Si vous en oubliez, vous aurez l'erreur suivante:
Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getBoolPref] Error: dialog has no properties Source File: chrome://mozapps/content/downloads/u...ontentType.xul Line: 1
Activer le Gestionnaire de Mots de Passe
Ces préférences sont par défaut dans Firefox mais pas dans XULRunner. Sans elles, le gestionnaire de mots de passe ne retiendra pas les détails d'identification.
pref("signon.rememberSignons", true); pref("signon.expireMasterPassword", false); pref("signon.SignonFileName", "signons.txt");
Vous avez aussi besoin d'obtenir une instance du service login-manager, qui initialise le système en interne:
Components.classes["@mozilla.org/login-manager;1"].getService(Components.interfaces.nsILoginManager);
Utiliser Firefox 3 pour lancer des applications XULRunner
Firefox 3 contient le runtime XULRunner avec l'option <tt>-app</tt> en ligne de commandes pour lancer l'application XUL désirée au lieu de Firefox. Par exemple, sous Windows:
firefox.exe -app chemin\vers\application.ini
Sous Mac:
/Applications/Firefox.app/Contents/MacOS/firefox-bin -app /chemin/vers/application.ini
Notez que sous Mac, vous devez donner un chemin direct. Les chemins relatifs semblent ne pas marcher.
Résolution de problèmes
Titre de fenêtre manquant
Si le titre de votre <window>
XUL est vierge, même en spécifiant un attribut title vérifiez que votre fichier XUL est en <tt>.xul</tt> et non pas <tt>.xml</tt>.