I have an Portable Electron App (packed with: electron-builder + asar, portable build) on Windows. I try to get the application path but it returns a path within the user\\t
I found a solution: Use the Environment Variable (created by Electron-Builder)
process.env.PORTABLE_EXECUTABLE_DIR
to show the real Path of the App.exe. Works only packed with Electron-Builder
I had a lot of trouble with this and was finally able to solve the issue by replacing __dirname by '.', see working example below :
const path = require('path')
const myAppPath = path.resolve('.', 'myapp.exe');
None of the above answers worked for me on Windows 10.
process.env.PORTABLE_EXECUTABLE_DIR
returns the Temp directory path.
I got it to work using:
process.env.INIT_CWD
Seems like PORTABLE_EXECUTABLE_FILE
only works under certain Electron-Builder configurations; In particular, it won't work in apps deployed as a portable directory.
In such cases, the following will get you the application root path:
const path = require('path')
import { app } from 'electron'
let rootDir = app.getAppPath()
let last = path.basename(rootDir)
if (last == 'app.asar') {
rootDir = Path.dirname(app.getPath('exe'))
}
process.env.PORTABLE_EXECUTABLE_FILE
will give you the full path to the file.
From the main process:
// 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);
From a renderer process:
// 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);