如何获得便携式Electron应用程序的原始路径?

Lyc*_*ght 12 portable-applications electron

我在Windows上有一个便携式电子应用程序(包含:电子生成器+ asar,便携式构建).我尝试获取应用程序路径,但它返回user\temp文件夹中的路径而不是实际的".exe"文件

有没有办法获得原始的app.exe路径?

我尝试过以下方法:

  • app.getAppPath()
  • __dirname
  • require.main.filename
  • 应用根路径
  • 和一些节点模块

我从测试中得到的路径:

C:\用户\ XXX \应用程序数据\本地的\ Temp\xxxxxx.tmp \应用

实际的.exe路径(应用程序从哪里启动,以及我需要的):

C:\用户\ XXX \文件\测试\ DIST

我刚刚开始使用Electron.

Lyc*_*ght 7

我找到了一个解决方案:使用环境变量(由Electron-Builder创建)

process.env.PORTABLE_EXECUTABLE_DIR
Run Code Online (Sandbox Code Playgroud)

以显示App.exe的真实路径。仅与Electron-Builder一起包装


小智 6

从主要过程来看:

// 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);
Run Code Online (Sandbox Code Playgroud)

从渲染器过程中:

// 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);
Run Code Online (Sandbox Code Playgroud)


Ant*_*REL 6

我在这方面遇到了很多麻烦,最后通过将 __dirname 替换为 '.' 解决了这个问题,请参阅下面的工作示例:

const path = require('path')
const myAppPath = path.resolve('.', 'myapp.exe');
Run Code Online (Sandbox Code Playgroud)

  • 我花了几个小时才找到这个解决方案。谢谢 (2认同)