Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Astuces XULRunner

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êtreURLType 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>.

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : Fififox
 Dernière mise à jour par : Fififox,