Attention : Le contenu de ces pages n'a pas été mis à jour depuis longtemps. Il est probablement obsolète pour Firefox 4.0/Gecko 4.0 et supérieur. Pour du contenu plus récent, allez consulter developer.mozilla.org.

Fichiers _spéciaux

Récupérer les chemins de répertoires ou fichiers spéciaux

Le but de cet article est de vous apprendre à accéder aux fichiers spéciaux comme des fichiers du profil, de la racine de votre disque dur, des fichiers temporaires...

Voici le code vous permettant d'accéder au répertoire du profil

 var file = Components.classes["@mozilla.org/file/directory_service;1"]
                      .getService(Components.interfaces.nsIProperties)
                      .get("ProfD", Components.interfaces.nsIFile);
 var chemin = file.path;

file est un objet de type nsIFile.

ProfD peut être remplacé par les chaines de caractères suivantes :

chaîne Pour récupérer le chemin de constante C++
!DefProfRt répertoire racine contenant les profils de l'application (exemple, /root/.mozilla) NS_APP_USER_PROFILES_ROOT_DIR
DefProfLRt répertoire racine contenant le profil temporaire (?) NS_APP_USER_PROFILES_LOCAL_ROOT_DIR
PrefD %profile% NS_APP_PREFS_50_DIR
PrefF %profile%/prefs.js NS_APP_PREFS_50_FILE
PrefDL NS_APP_PREFS_DEFAULTS_DIR_LIST
ProfD %profile% (?) NS_APP_USER_PROFILE_50_DIR
ProfLD NS_APP_USER_PROFILE_LOCAL_50_DIR
UChrm %profile%/chrome NS_APP_USER_CHROME_DIR
!UsrSrchPlugns %profile%/searchplugins/ NS_APP_USER_SEARCH_DIR
!LclSt %profile%/localstore.rdf NS_APP_LOCALSTORE_50_FILE
UHist %profile%/history.dat NS_APP_HISTORY_50_FILE
UPnls %profile%/panels.rdf NS_APP_USER_PANELS_50_FILE
UMimTyp %profile%/mimeTypes.rdf NS_APP_USER_MIMETYPES_50_FILE
BMarks %profile%/bookmarks.html NS_APP_BOOKMARKS_50_FILE
SrchF %profile%/search.rdf NS_APP_SEARCH_50_FILE
MailD %profile%/Mail (thunderbird) NS_APP_MAIL_50_DIR
IMapMD %profile%/!ImapMail (thunderbird) NS_APP_IMAP_MAIL_50_DIR
NewsD %profile%/News (thunderbird) NS_APP_NEWS_50_DIR
MFCaD (thunderbird) NS_APP_MESSENGER_FOLDER_CACHE_50_DIR
CurProcD %installation%
AChrom %installation%/chrome NS_APP_CHROME_DIR
AChromDL NS_APP_CHROME_DIR_LIST
ComsD %installation%/components
!DefRt %installation%/defaults NS_APP_DEFAULTS_50_DIR
!PrfDef %installation%/defaults/pref NS_APP_PREF_DEFAULTS_50_DIR
!ProfDefNoLoc %installation%/defaults/profile NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR
profDef %installation%/defaults/profile/%lang%/ (ex defaults/profile/en/ ) NS_APP_PROFILE_DEFAULTS_50_DIR
APlugns %installation%/plugins (obsolete, utiliser APluginsDL) NS_APP_PLUGINS_DIR
APluginsDL NS_APP_PLUGINS_DIR_LIST
ARes %installation%/res NS_APP_RES_DIR
!SrchPlugns %installation%/searchplugins NS_APP_SEARCH_DIR
SrchPluginsDL NS_APP_SEARCH_DIR_LIST
Home répertoire système de l'utilisateur ( ex : /home/laurent)
TmpD répertoire système temporaire ( ex : /tmp)
AppRefF NS_APP_APPLICATION_REGISTRY_FILE
AppRegD NS_APP_APPLICATION_REGISTRY_DIR
cachePDir NS_APP_CACHE_PARENT_DIR
DLoads NS_APP_DOWNLOADS_50_FILE
XPIClnupD répertoire de xpicleanup.dat/.exe NS_APP_INSTALL_CLEANUP_DIR
UStor fichier sqlite de mozStorage NS_APP_STORAGE_50_FILE
resource:app %app% (xulrunner)
UAppData endor>/<application> (xulrunner) XRE_USER_APP_DATA_DIR
XREExtDL liste de tous les répertoires d'extensions (xulrunner) XRE_EXTENSIONS_DIR_LIST
XREExeF fichier executable qui a lancé l'appli xulrunner XRE_EXECUTABLE_FILE
ProfDS (xulrunner) NS_APP_PROFILE_DIR_STARTUP
ProfLDS (xulrunner) NS_APP_PROFILE_LOCAL_DIR_STARTUP
  • %installation% représente le répertoire d'installation de l'application Mozilla (Firefox, XulRunner, Thunderbird ou Seamonkey etc.)
  • %profile% est le répertoire du profil
  • %app% est le répertoire d'une application xulrunner

Voir la déclaration de ces constantes dans nsAppDirectoryServiceDefs.h et nsXULAppAPI.h.

Obtenir rapidement tous les répertoires

Voici un bout de code qui vous permettra de calculer depuis votre système l'ensemble des chaînes présentées dans le tableau précédent. Attention, ce code doit être lancé depuis une fenêtre enregistrée dans le chrome.

 <?xml version="1.0" encoding="iso-8859-1"?>
 <?xml-stylesheet href="[[chrome://global/skin/]]" type="text/css"?>
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        onload = "init();"
 >
 <script>
 <![CDATA[
 function init() {
 var spec = ['DefProfRt', 'DefProfLRt', 'PrefD', 'PrefF', 'PrefDL', 'ProfD', 'ProfLD', 'UChrm',
             'UsrSrchPlugns', 'LclSt', 'UHist', 'UPnls', 'UMimTyp', 'BMarks', 'SrchF', 'MailD',
             'IMapMD', 'NewsD', 'MFCaD', 'CurProcD', 'AChrom', 'AChromDL', 'ComsD', 'DefRt',
             'PrfDef', 'ProfDefNoLoc', 'profDef', 'APlugns', 'APluginsDL', 'ARes', 'SrchPlugns',
             'SrchPluginsDL', 'Home', 'TmpD', 'AppRefF', 'AppRegD', 'cachePDir', 'DLoads',
             'XPIClnupD', 'UStor', '[[resource:app']], 'UAppData', 'XREExtDL', 'XREExeF', 'ProfDS',
             'ProfLDS'];
 var resultat = [], res;
 for (var i=0; i<spec.length; i++) {
   try {
    var file = Components.classes["@mozilla.org/file/directory_service;1"]
                     .getService(Components.interfaces.nsIProperties)
                     .get(spec[i], Components.interfaces.nsIFile);
    res = file.path;
   } catch (e) {
    res = '';
   }
   resultat.push(res);
 }
 var liste = document.getElementById('liste');
 for(var i=0; i<spec.length; i++) {
   var item = document.createElement('listitem');
   var cell1 = document.createElement('listcell');
       cell1.setAttribute('label', spec[i]);
   var cell2 = document.createElement('listcell');
       cell2.setAttribute('label', resultat[i]);
   item.appendChild(cell1);
   item.appendChild(cell2);
   liste.appendChild(item);
  }
 }
 ]]>
 </script>
 <label value="Liste des répertoires particuliers :" />
 <listbox id="liste" flex="1">
   <listhead>
      <listheader label="Chaîne"/>
      <listheader label="Répertoire"/>
   </listhead>
   <listcols>
      <listcol flex="1"/>
      <listcol flex="5"/>
   </listcols>
 </listbox>
 </window>

Vous noterez que certaines valeurs restent vides car elles dépendent du type d'installation dont vous disposez.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.