2017-09-19 30 views
6

我在Windows上有一個便攜式電子應用程序(包裝:電子生成器+ asar,便攜式構建)。我嘗試獲取應用程序路徑,但它返回用戶\ temp文件夾內的路徑而不是實際的'.exe'文件如何獲得便攜式Electron應用程序的原始路徑?

有什麼方法可以獲取原始app.exe路徑嗎?

我已嘗試以下步驟:

  • app.getAppPath()
  • __dirname
  • require.main.filename
  • 應用根路徑
  • 和幾個節點模塊

我從測試中獲得的路徑:

C:\用戶\ XXX \應用程序數據\本地的\ Temp \ xxxxxx.tmp \應用

實際的.exe文件路徑(其中從推出的應用程序,我需要):

C:\用戶\ XXX \文檔\測試\ DIST

我剛開始用電子。

+0

我在找這個,太.. – Can

回答

1

我找到了解決方案: 使用環境變量(通過電子生成器創建的)

process.env.PORTABLE_EXECUTABLE_DIR 

顯示App.exe的真實路徑。 只能擠滿了電子 - 建造

+0

我現在在Mac上,這是空的..在開發模式和建立後:/ – Can

+0

它似乎工作..所以可能結合這個窗口和其他答案(這是不工作預計在Windows上)的Mac和可能的Linux,我仍然必須調查 所以誰收到賞金? – Can

1

從主過程:

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

從渲染器的過程:

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

在Mac上返回'../編譯/ MAC/APPName.app /內容/ MacOS' 這不是我們所需要的。 ..我們可以通過String.replace或者String.split來獲取'... builld/mac'部分,那麼通過編程就可以知道每個版本的應用名稱,這很好,因爲windows和linux有版本號(也許我只是從package.json構建它)我會檢查它是否在windows和linux上產生相同的結果:-) – Can

+0

也許是你的解決方案和LycaKnight中的一個組合。但是誰贏得獎金? – Can

相關問題