2017-09-19 33 views
6

Mam przenośną aplikację elektronową (w zestawie z: elektronowym konstruktorem + asar, przenośną kompilacją) w systemie Windows. Próbuję pobrać ścieżkę aplikacji, ale zwraca ścieżkę w folderze user \ temp, a nie rzeczywisty plik ".exe".Jak uzyskać oryginalną ścieżkę przenośnej aplikacji Electron?

Czy istnieje sposób uzyskania oryginalnej ścieżki do programu app.exe?

Próbowałem następujące:

  • app.getAppPath()
  • __dirname
  • require.main.filename
  • app-root-path
  • a kilka modułów węzeł

Ścieżka, którą otrzymuję z moich testów:

C: \ Users \ xxx \ AppData \ Local \ Temp \ xxxxxx.tmp \ app

rzeczywistej ścieżki .exe (gdzie aplikacja uruchomiona z, i co muszę):

C: \ Users \ XXX \ Documents \ test \ dist

ja tylko zaczynając od elektronu.

+0

szukam tego, zbyt .. – Can

Odpowiedz

1

znalazłem rozwiązanie: użyć zmiennej środowiskowej (tworzone przez Electron-Builder)

process.env.PORTABLE_EXECUTABLE_DIR 

, aby wyświetlić prawdziwą ścieżkę do pliku App.exe. Prace pakowane tylko z elektron-Builder

+0

Jestem na Macu w tej chwili, gdzie jest pusta .. w trybie deweloperskim i po zbudowaniu:/ – Can

+0

na Windowsie wydaje się działać ... więc może to kombinować dla Windowsa i drugiej odpowiedzi (która nie działa jako oczekiwany w systemie Windows) dla Maca i być może Linuxa, który wciąż muszę zbadać , więc kto otrzymuje nagrodę? – Can

1

Z głównego procesu:

// If not already defined... 
const { app } = require ('electron'); 
const path = require ('path'); 

let execPath; 

execPath = path.dirname (app.getPath ('exe')); 
// or 
execPath = path.dirname (process.execPath); 

z procesu renderer:

// If not already defined... 
const { remote } = require ('electron'); 
const path = require ('path'); 

let execPath; 

execPath = path.dirname (remote.app.getPath ('exe')); 
// or 
execPath = path.dirname (remote.process.execPath); 
+0

na mac zwraca '../ build/MAC/APPName.app/Contents/MacOS' co nie jest to, czego potrzebujemy. .. moglibyśmy String.replace lub String.split, aby uzyskać tylko część '... builld/mac', byłoby mi miło programowo znać nazwy aplikacji każdej kompilacji, ponieważ Windows i Linux mają numery wersji (może po prostu skonstruuj go z pakietu.json) Sprawdzę, czy w systemach Windows i Linux jest taki sam :-) – Can

+0

Może połączenie twojego rozwiązania i LycaKnight ... ale kto zarobi nagrodę? – Can