2015-04-27 26 views

risposta

9

come diceva PSkocik, prima rilevare la piattaforma e ottenere la riga di comando:

function getCommandLine() { 
    switch (process.platform) { 
     case 'darwin' : return 'open'; 
     case 'win32' : return 'start'; 
     case 'win64' : return 'start'; 
     default : return 'xdg-open'; 
    } 
} 

In secondo luogo, eseguire la riga di comando seguito dal percorso

var sys = require('sys'); 
var exec = require('child_process').exec; 

exec(getCommandLine() + ' ' + filePath); 
+0

Possiamo ottenere un segnale chiuso? C'è una chiamata dove saprei che l'applicazione è stata chiusa? – django

2

Rilevare la piattaforma ed impiego:

  • 'start' su Windows
  • 'aperto' su Mac
  • 'xdg-open' su Linux
5

Per file su un disco:

var nwGui = require('nw.gui'); 
nwGui.Shell.openItem("/path/to/my/file"); 

Per i file remoti (ad esempio, pagina web):

var nwGui = require('nw.gui'); 
nwGui.Shell.openExternal("http://google.com/"); 
0

io non sono certo se all'inizio si è abituati a lavorare come nelle precedenti versioni di Windows, tuttavia su Windows 10 non funziona come indicato nella risposta. Il primo argomento è il titolo della finestra.

Inoltre il comportamento tra Windows e Linux è diverso. Windows "start" eseguirà ed uscirà, sotto linux, xdg-open attenderà.

questa era la funzione che alla fine ha funzionato per me su entrambe le piattaforme in maniera simile:

function getCommandLine() { 
    switch(process.platform) { 
     case 'darwin' : 
     return 'open'; 
     default: 
     return 'xdg-open'; 
    } 
    } 

    function openFileWithDefaultApp(file) { 
     /^win/.test(process.platform) ? 
      require("child_process").exec('start "" "' + file + '"') : 
      require("child_process").spawn(getCommandLine(), [file], 
       {detached: true, stdio: 'ignore'}).unref(); 
    }