How to get the original path of a portable Electron app?

和自甴很熟 提交于 2019-11-30 05:05:30

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

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

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
process.env.PORTABLE_EXECUTABLE_FILE

will give you the full path to the file.

As none of the methods above worked and I don't want to use an external lib for this, i tried following:

        if (!fs.existsSync("../images")) {
            fs.mkdirSync("./../images");            
        }
        return path.resolve("./../images/") + "/";

You can use any directory that should exist at the top level or anywhere else. In my case I know that one level higher in the directory there must be a directory called "images".

This solution worked in my case for DEV build and prod (packaged).

Are there any drawbacks when using this approach?

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!