Chcę dać użytkownikowi dowolną opcję, którą chce edytować plik, jak mogę otworzyć plik z domyślnym programem określonego typu pliku? Potrzebuję go do pracy z systemami Windows i Linux, ale opcja Mac też byłaby świetna.otwórz plik z domyślnym programem w węźle-webkit
Odpowiedz
jak powiedział PSkocik, pierwszy wykryj platformę i uzyskaj wiersz poleceń:
function getCommandLine() {
switch (process.platform) {
case 'darwin' : return 'open';
case 'win32' : return 'start';
case 'win64' : return 'start';
default : return 'xdg-open';
}
}
drugie wykonanie wiersza poleceń następnie ścieżką
var sys = require('sys');
var exec = require('child_process').exec;
exec(getCommandLine() + ' ' + filePath);
Czy możemy uzyskać zamknięty sygnał? Czy jest połączenie, w którym wiedziałbym, że aplikacja została zamknięta? – django
Detect platformę i zastosowanie:
- 'Start' w systemie Windows
- 'otwarty' na Mac
- 'xdg-open' na Linux
Dla pliku na dysku:
var nwGui = require('nw.gui');
nwGui.Shell.openItem("/path/to/my/file");
Dla zdalnych plików (np strony):
var nwGui = require('nw.gui');
nwGui.Shell.openExternal("http://google.com/");
nie jestem pewien, czy start był używany tak, jak w poprzednich wersjach systemu Windows, jednak w systemie Windows 10 nie działa tak, jak wskazano w odpowiedzi. Pierwszym argumentem jest tytuł okna.
Ponadto zachowanie między oknami i linuxem jest inne. Windows "start" uruchomi się i wyjdzie, pod linux, xdg-open będzie czekać.
Była to funkcja, która ostatecznie pracował dla mnie na obu platformach w podobny sposób:
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();
}
można powiedzieć coś więcej? twoje pytanie nie jest tak jasne – Khalid
Mam ścieżkę do pliku, chcę go otworzyć z domyślnym programem – InvisibleUn1corn