Astuces XULRunner

  • Raccourci de la révision : Astuces_XULRunner
  • Titre de la révision : Astuces XULRunner
  • ID de la révision : 165437
  • Créé :
  • Créateur : Fififox
  • Version actuelle ? Non
  • Commentaire Mise en Forme d'un titre

Contenu de la révision

XULRunner: Questions Fréquemment Posées. {{mediawiki.external('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/xpinstallConfirm.xul");
pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul?type=themes");
pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul?type=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/extensions.properties");
pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/extensions.properties");
pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/extensions.properties");

URLs Chrome Utiles

La plupart requièrent le " branding"

FenêtreURLType de fenêtre
Gestionnaire d'Extensions chrome://mozapps/content/extensions/extensions.xul?type=extensions Extension:Manager-extensions
Gestionnaire de Thèmes chrome://mozapps/content/extensions/extensions.xul?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

Traduction requise de ce message présent dans la version anglaise --Tlaurenzo 17:34, 17 March 2006 (PST)There is another way to go about this. See my blog post for a working method to get Venkman and the Extension Developer's Extension working in XULRunner apps.

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.

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 {{mediawiki.external('https://bugzilla.mozilla.org/show_bug.cgi?id=306263 #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/unknownContentType.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>.

{{ wiki.languages( { "en": "en/XULRunner_tips", "ja": "ja/XULRunner_tips" } ) }}

Source de la révision

<p>XULRunner: Questions Fréquemment Posées. {{mediawiki.external('WIP')}}
</p>
<h2 name="Gestionnaire_d.27Extensions">Gestionnaire d'Extensions</h2>
<p>Pour pouvoir installer des extensions, vous devez d'abord activer le Gestionnaire d'Extensions] dans <a href="fr/Empaqueter_une_application_XUL#em">application.ini</a>. 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:
</p>
<pre class="eval">pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul");
pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul?type=themes");
pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul?type=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/extensions.properties");
pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/extensions.properties");
pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/extensions.properties");
</pre>
<h2 name="URLs_Chrome_Utiles">URLs Chrome Utiles</h2>
<p>La plupart requièrent le "<a href="#Branding"> branding</a>"
</p>
<table class="standard-table">
<tbody><tr><th>Fenêtre</th><th>URL</th><th>Type de fenêtre
</th></tr><tr><td>Gestionnaire d'Extensions
</td><td>chrome://mozapps/content/extensions/extensions.xul?type=extensions
</td><td>Extension:Manager-extensions
</td></tr><tr><td>Gestionnaire de Thèmes
</td><td>chrome://mozapps/content/extensions/extensions.xul?type=themes
</td><td>Extension:Manager-themes
</td></tr><tr><td>Console JavaScript
</td><td>chrome://global/content/console.xul
</td><td>global:console
</td></tr><tr><td>about:config
</td><td>chrome://global/content/config.xul
</td><td>
</td></tr></tbody></table>
<h2 name="Extensions_pour_le_D.C3.A9veloppeur">Extensions pour le Développeur</h2>
<p><i>Traduction requise de ce message présent dans la version anglaise</i>
--<a href="User:Tlaurenzo">Tlaurenzo</a> 17:34, 17 March 2006 (PST)There is another way to go about this.  See my <a class="external" href="http://tjlaurenzo.blogspot.com/2006/03/getting-dev-tools-working-with.html">blog post</a> for a working method to get Venkman and the Extension Developer's Extension working in XULRunner apps.
</p>
<h3 name="Venkman"> <a href="fr/Venkman">Venkman</a> </h3>
<ul><li>Requiert une version personnalisée ou une extension compatible
</li><li>Besoin de modifier la compatibilité dans <i>install.rdf</i> par rapport à l\'<i>id</i> et aux versions dans <i>application.ini</i>
</li><li>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.)
</li><li>La fonction <i>toOpenWindowByType()</i> doit être définie. Une ébauche de fonction efficiente est <a class="external" href="http://tjlaurenzo.blogspot.com/2006/03/getting-dev-tools-working-with.html">sur ce blog</a>. <i>Une meilleure suggestion?</i>
</li><li>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"
</li></ul>
<pre>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/");
</pre>
<h3 name="Inspecteur_DOM"> <a href="fr/Inspecteur_DOM">Inspecteur DOM</a> </h3>
<p>Idem que Venkman
</p>
<h3 name="L.27Extension_du_Developpeur_d.27Extensions"> L'Extension du Developpeur d'Extensions </h3>
<p><a class="external" href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Extension Developer's Extension</a> est un outil utile, avec un Editeur XUL Live et un shell JavaScript.
</p><p>Pour installer l'extension dans votre application, vous aurez besoin de modifier son <i>install.rdf</i> (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.
</p>
<h2 name="Branding"> Branding  </h2>
<p>Branding est un <a href="fr/Enregistrement_chrome">packetage chrome</a> qui contient des informations spécifiques au produit (ex: nom, créateur, logo).
</p><p>Quelques composants XULRunner (en particulier le <a href="#Gestionnaire_d.27Extensions">Gestionnaire d'Extensions</a>) 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>.
</p><p>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 <a href="fr/Enregistrement_chrome#locale">enregistrer la localisation</a> pour <tt>branding</tt> en ajoutant à votre manifest chrome:
</p>
<pre class="eval">locale branding fr-FR chrome/locale/branding/
</pre>
<p><i>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.</i>
</p><p>En addition, un <i>branding content package (traduction requise)</i> <a href="fr/Chrome_Registration#content">doit être enregistré</a> pour inclure le logo de l'application:
</p>
<pre class="eval">content branding chrome/branding
</pre>
<p>2 icônes doivent être fournies dans ce dossier: <i>icon48.png</i> and <i>icon64.png</i>. Voir <a class="external" href="http://mxr.mozilla.org/mozilla/source/other-licenses/branding/firefox/content/">Firefox</a> pour avoir un exemple.
</p><p><span class="comment">commentaire copié de la version anglaise: In ''~.mozconfig'':  ac_add_options --enable-branding=« branding location »</span>
</p>
<h3 name=".5BWindows.5D_Faire_apparaitre_correctement_le_nom_et_l.27ic.C3.B4ne"> [Windows] Faire apparaitre correctement le nom et l'icône </h3>
<p>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 ( = <i>branding</i>) de votre application à la place:
</p>
<ul>
<li>
Si vous compilez XULRunner vous-même: créez un fichier module.ver dans <i>mozilla/xulrunner/app</i> avec:
<pre>WIN32_MODULE_DESCRIPTION=MonApplication</pre>
<p>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.
</p>
</li>
<li>
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 <a class="external" href="http://www.angusj.com/resourcehacker/">Resource Hacker</a> (très simple à prendre en main).
</li>
</ul>
<h2 name="Lire_les_arguments_en_ligne_de_commande"> Lire les arguments en ligne de commande </h2>
<p>Les arguments en ligne de commande sont gérés par <i>nsICommandLineHandler</i>.
</p><p><span class="comment">commentaire copié depuis la version anglaise: = Can i have JavaScript errors / warnings directed to stdout instead of the jsconsole? =  See {{mediawiki.external('https://bugzilla.mozilla.org/show_bug.cgi?id=306263 #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);</span>
</p><p><br>
</p>
<h2 name="Pr.C3.A9f.C3.A9rences_requises_pour_les_dialogues_de_t.C3.A9l.C3.A9chargement"> Préférences requises pour les dialogues de téléchargement </h2>
<p>Pour utiliser le <i>unknown-content-type</i> et le dialogue <i>file-downloads</i> depuis un élément <code>&lt;browser&gt;</code>, vous devez ajouter les préférences suivantes:
</p>
<pre class="eval">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);
</pre>
<p>Si vous en oubliez, vous aurez l'erreur suivante:
</p>
<pre class="eval">Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getBoolPref]

Error: dialog has no properties
Source File: chrome://mozapps/content/downloads/unknownContentType.xul
Line: 1
</pre>
<h2 name="Activer_le_Gestionnaire_de_Mots_de_Passe"> Activer le Gestionnaire de Mots de Passe </h2>
<p>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.
</p>
<pre class="eval">pref("signon.rememberSignons", true);
pref("signon.expireMasterPassword", false);
pref("signon.SignonFileName", "signons.txt");
</pre>
<p>Vous avez aussi besoin d'obtenir une instance du service <i>login-manager</i>, qui initialise le système en interne:
</p>
<pre class="eval">Components.classes["@mozilla.org/login-manager;1"].getService(Components.interfaces.nsILoginManager);
</pre>
<h2 name="Utiliser_Firefox_3_pour_lancer_des_applications_XULRunner"> Utiliser Firefox 3 pour lancer des applications XULRunner </h2>
<p>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:
</p>
<pre class="eval">  firefox.exe -app <i>chemin\vers\</i>application.ini
</pre>
<p>Sous Mac:
</p>
<pre class="eval">  /Applications/Firefox.app/Contents/MacOS/firefox-bin -app <i>/chemin/vers/</i>application.ini
</pre>
<p>Notez que sous Mac, vous devez donner un chemin direct. Les chemins relatifs semblent ne pas marcher.
</p>
<h2 name="R.C3.A9solution_de_probl.C3.A8mes"> Résolution de problèmes </h2>
<h3 name="Titre_de_fen.C3.AAtre_manquant"> Titre de fenêtre manquant </h3>
<p>Si le titre de votre <code>&lt;<a href="fr/XUL/window">window</a>&gt;</code> 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>.
</p>
<div class="noinclude">
</div>
{{ wiki.languages( { "en": "en/XULRunner_tips", "ja": "ja/XULRunner_tips" } ) }}
Revenir à cette révision