þÿ<?XML version="1.0" standalone="yes" ?> <job id="xpiglobal"> <resource id="version">1.1.2</resource> <resource id="auteur">Philippe Gouaillier</resource> <runtime> <unnamed name="emplacement" helpstring = "Le nom d'un répertoire ou d'un fichier jar ou xpi." many="true" required="true" /> <named name="thunderbird" helpstring = "Pour installer une extension de Thunderbird." many="false" required="false" type="simple" /> <description> <![CDATA[ Description: Ce script permet d'installer des thèmes et des extensions pour qu'ils soient disponibles pour tout les utilisateurs (tout les profiles). ]]> </description> <example> <![CDATA[ Exemple: cscript "install-global-theme-xpi.wsf" "c:\downloads\thème et extensions\" c:\downloads\untheme.jar c:\downloads\uneextensions.xpi ]]> </example> </runtime> <script language="JScript"> <![CDATA[ // Vérifion de l'interpréteur if (WScript.FullName.search(/.*wscript.*/i) > -1){ WScript.Echo("Ce script ne peut être exécuté avec l'interpréteur wscript. Utilisez plutôt \ncscript. Vous pouvez faire de celui-ci votre interpréteur par défaut en \nutilisant l'option \"//H:CScript\".\n\n" + "Exemple: \n\ncscript install-global-theme-xpi.wsf [...]\n\nou\n\ncscript //H:CScript\ninstall-global-theme-xpi.wsf [...]"); WScript.Quit(1); } var out = WScript.StdOut // Ajout d'une méthode à la classe String pour répéter une chaîne de caractère. String.prototype.repeat = function(num){ var x = this; var y = ""; var i; for(i=0;i<num;i++){ y = y.concat(x); } return y; } // récupération des arguments. var argsUnnamed = WScript.Arguments.Unnamed; var argsNamed = WScript.Arguments.Named; // Le nom du logiciel à utiliser if (argsNamed.Exists("thunderbird")){ progName="Thunderbird"; } else { progName="Firefox"; } printTitle("Installation globale de thèmes et d'extensions pour " + progName + "\n" + "\u2500".repeat(60) +"\n\nVersion " + getResource("version")+"\nAuteur: " + getResource("auteur")); // Vérification de la présence d'argument (au moin un). // Sinon, on ne va pas plus loin. if (argsUnnamed.length < 1){ WScript.Echo("\nNombre d'arguments insuffisant\n"); WScript.Arguments.ShowUsage(); WScript.Quit(1); } // Le reste des déclaraions: var fso, f; var ForReading = 1, ForWriting = 2; // Création des objets. var fso = new ActiveXObject("Scripting.FileSystemObject"); var WshShell = new ActiveXObject("WScript.Shell"); var enumUnnamed = new Enumerator(argsUnnamed); //Vérification de la présence de Firefox en mémoire if (WshShell.AppActivate("Mozilla " + progName)){ WshShell.SendKeys("%{TAB}"); out.WriteLine("\n\nL'application " + progName + " est chargée. Vous devez quitter " + progName + " avant d'installer un thème ou une extension\n"); WshShell.Popup("\L'application " + progName + " est chargée. \nVous devez quitter " + progName + " avant d'installer \nun thème ou une extension",0,WScript.ScriptName + " - Erreur",16); WScript.Quit(1); } // Quel est le chemin des programmes selon le régistre. if (argsNamed.Exists("thunderbird")){ var ThunderbirdVersion=WshShell.RegRead("HKLM\\SOFTWARE\\Mozilla\\Mozilla Thunderbird\\CurrentVersion"); var prog=WshShell.RegRead("HKLM\\SOFTWARE\\Mozilla\\Mozilla Thunderbird\\" + ThunderbirdVersion + "\\Main\\PathToExe"); } else { var FireFoxVersion=WshShell.RegRead("HKLM\\SOFTWARE\\Mozilla\\Mozilla Firefox\\CurrentVersion"); var prog=WshShell.RegRead("HKLM\\SOFTWARE\\Mozilla\\Mozilla Firefox\\" + FireFoxVersion + "\\Main\\PathToExe"); } // Pour chaque arguments, installer. for (;!enumUnnamed.atEnd();enumUnnamed.moveNext()){ f = enumUnnamed.item(); if(fso.FileExists(f)){ fsoFile = fso.GetFile(f); fileBasedInstall(fsoFile); } if (fso.FolderExists(f)){ folderBasedInstall(f); } } // installation de tout les thèmes et extensions contenuent dans un dossier. function folderBasedInstall(folder){ var fs = fso.GetFolder(folder); var fc = new Enumerator(fs.files); for (; !fc.atEnd(); fc.moveNext()) { file = fc.item(); fileBasedInstall(file); } } // installation d'un thème ou d'une extension. function fileBasedInstall(file){ if (file.name.search(/\.xpi$/i) > 0){ out.Write("Installation de l'extension " + file.name + " (" + file.size + " octets) "); var oExec = WshShell.Exec(prog + " -install-global-extension \"" + file + "\""); while (oExec.Status == 0){ out.Write("."); WScript.Sleep(500); } out.Write(" Terminé!\n"); } if (file.name.search(/\.jar$/i) > 0){ out.Write("Installation du thème " + file.name + " (" + file.size + " octets) "); var oExec = WshShell.Exec(prog + " -install-global-theme \"" + file + "\""); while (oExec.Status == 0){ WScript.Sleep(500); out.Write("."); } out.Write(" Terminé!\n"); } } function printTitle(title){ var lignes=title.split("\n"); var longueur = 0; out.WriteBlankLines(1); for(element in lignes){ if (lignes[element].toString().length>longueur){ longueur = lignes[element].toString().length // out.Write(longueur + ", "); } } out.WriteLine("\u250C" + "\u2500".repeat(longueur+2) + "\u2510"); for(element in lignes){ out.WriteLine("\u2502 " + lignes[element] + " ".repeat(longueur - lignes[element].length) + " \u2502"); } out.WriteLine("\u2514" + "\u2500".repeat(longueur+2) + "\u2518"); out.WriteBlankLines(1); } ]]> </script> </job>