web-dev-qa-db-fra.com

Comment obtenir le chemin d'origine d'une application portable Electron?

J'ai une application portable Electron (emballée avec: électron-builder + asar, version portable) sous Windows. J'essaie d'obtenir le chemin de l'application, mais il renvoie un chemin dans le dossier utilisateur\temp plutôt que dans le fichier '.exe'.

Est-il possible d'obtenir le chemin d'accès original app.exe?

J'ai essayé ce qui suit:

  • app.getAppPath ()
  • __dirname
  • require.main.filename
  • chemin-racine-app
  • et quelques modules de nœud

Le chemin que je tire de mes tests:

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

le chemin d'accès .exe actuel (d'où l'application a été lancée et ce dont j'ai besoin):

C:\Utilisateurs\XXX\Documents\test\dist

Je commence juste avec Electron.

10
LycaKnight

J'ai trouvé une solution: Utiliser la variable d'environnement (créée par Electron-Builder)

process.env.PORTABLE_EXECUTABLE_DIR

pour afficher le chemin réel de l'App.exe. Fonctionne uniquement avec Electron-Builder

4
LycaKnight

Du processus principal:

// 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);

A partir d'un processus de rendu:

// 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);
4
Mikaeru

Aucune des réponses ci-dessus n'a fonctionné pour moi sous Windows 10. 

process.env.PORTABLE_EXECUTABLE_DIR renvoie le chemin du répertoire Temp.

Je l'ai fait travailler en utilisant:

process.env.INIT_CWD
0
David J.