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 |
Voir la déclaration de ces constantes dans nsAppDirectoryServiceDefs.h et nsXULAppAPI.h.
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.