Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Ouvrir un script sh avec XUL

Envoyé par : Lgaut

Date : 21/02/2008 17:22

Bonjour à tous,

Je debute avec XUL et je souhaiterais ouvrir un script sh depuis un bouton.

J'ai testé ça mais rien ne se passe.

code

function executeFile() {
const path = "monfscript sh"
var file = Components.classes["@mozilla.org/file/local;1"]
  .createInstance(Components.interfaces.nsILocalFile)
file.initWithPath(path)
file.launch()
}

merci d'avance

# Re: Ouvrir un script sh avec XUL

Envoyé par : Paul Rouget

Date : 21/02/2008 17:53

Au lieu d'utiliser launch, utilise la méthode run de ce composant: http://www.xulplanet.com/references/xpco(..)

Attention, ton binaire c'est Bash, pas ton script.

# Re: Ouvrir un script sh avec XUL

Envoyé par : mymyoux

Date : 21/02/2008 22:35

Bonsoir, moi j'utilise ce petit bout de code pour lancer un bash :

var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(path);
file.QueryInterface(Components.interfaces.nsIFile);
if (!file.exists()) {
    //si le fichier n'existe pas
}else{
    var proc= Components.classes["@mozilla.org/process/ util;1"].createInstance(Components.interfaces.nsIProcess);
    proc.init(file);
    var args=[path.substring(0,path.lastIndexOf("/")+1)];
    //en général un programme reçoit son path en premier argument... moi j'avais des besoins particuliers
    proc.run(false,args,args.length); 
    //false indique un lancement asynchrone & true un lancement synchrone (gel de l'interface)
}

attention il faut que path soit indiqué avec le chemin absolu suivant ton système d'exploitation quelquechose genre :

Windows :
c:\monextension\monfichier.sh

Linux :
/home/monlogin/monextension/monfichier.sh

Si tu veux convertir ton addresse chrome en absolue moi j'utilise ça :

//this.id est l'id de ton extension
Components.classes["@mozilla.org/extensions/manager;1"]
.getService(Components.interfaces.nsIExtensionManager)
.getInstallLocation(this.id)
.getItemLocation(this.id).path

ce qui renvoit :

Windows :
c:\monextension

Linux :
/home/monlogin/monextension

après à toi de rajouter un / ou un \ en fonction de l'OS et la suite du chemin suivant comment est organisée ton extension

voilà

# Re: Ouvrir un script sh avec XUL

Envoyé par : Lgaut

Date : 22/02/2008 13:58

Merci beaucoup j'essaye ça et je vous dis quoi

# Re: Ouvrir un script sh avec XUL

Envoyé par : Lgaut

Date : 22/02/2008 16:52

J'ai essayé avec ce code :

code

function executeFile() {
var file =     Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("/home/utilisateur/Bureau/monfichier.sh");
file.QueryInterface(Components.interfaces.nsIFile);
if (!file.exists()) {
   //si le fichier n'existe pas
}else{
   var proc= Components.classes["@mozilla.org/process/ util;1"].createInstance(Components.interfaces.nsIProcess);
   proc.init(file);
   var args=[path.substring(0,path.lastIndexOf("/")+1)];
   //en général un programme reçoit son path en premier argument... moi j'avais des besoins particuliers
   proc.run(false,args,args.length); 
   //false indique un lancement asynchrone & true un lancement synchrone (gel de l'interface)
}
}

mais rien de se passe lors du clique sur mon bouton et j'ai du mal à comprendre.

merci

# Re: Ouvrir un script sh avec XUL

Envoyé par : Paul Rouget

Date : 22/02/2008 17:00

Tu n'as pas écouté ce que je t'ai dit:

function executeFile() {
try {
  var file =     Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
  file.initWithPath("/bin/bash");
  file.QueryInterface(Components.interfaces.nsIFile);
  if (!file.exists()) {
     //si le fichier n'existe pas
  }else{
    var proc= Components.classes["@mozilla.org/process/ util;1"].createInstance(Components.interfaces.nsIProcess);
    proc.init(file);
    var args=["/home/utilisateur/Bureau/monfichier.sh"];
    proc.run(false,args,args.length); 
 }
} catch(e) {alert("Une erreur:" + e);}
}

Ça fonctionnera probablement mieux.

# Re: Ouvrir un script sh avec XUL

Envoyé par : Lgaut

Date : 22/02/2008 18:05

merci de ta réponse.

J'ai une erreur : Permission refusée d'obtenir la propriété unamedClass.classes

# Re: Ouvrir un script sh avec XUL

Envoyé par : Lgaut

Date : 22/02/2008 18:19

aprés avoir rajouté la ligne

code

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

J'obtiens :

TypeError:components.classes"@mozilla.org/process/ util;1" has no properties

EDIT: Si je faisais plus attention ca serait mieux, un espace en trop !!!

Il n'est plus possible de poster des messages dans ce forum.


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.