2017-02-25 102 views
0

使用electron-boilerplate爲windows創建.exe文件時,需要運行.bat文件。然而,使用NPM啓動它的工作原理,但是當它被用NPM運行版本包裝,它不運行中的.bat使用electron-boilerplate爲windows創建一個.exe文件。它需要運行一個.bat文件。打包後,它不會運行

這是我已經檢查了兒童的過程

功能

const spawn = require('child_process').spawn; 
const bat = spawn('cmd.exe', ['/c', 'Install.bat']); 

bat.stdout.on('data', (data) => { 
    var str = String.fromCharCode.apply(null, data); 
    addLog(data); 
    console.info(str); 
}); 

bat.stderr.on('data', (data) => { 
    var str = String.fromCharCode.apply(null, data); 
    addLog(data,"error"); 
    console.error(str); 
}); 

bat.on('exit', (code) => { 
    console.log(`Exit ${code}`); 
}); 

代碼

+0

是'在同一目錄作爲您的電子應用cmd.exe'?這可能是一個路徑問題。 –

+0

這是否意味着我必須在Windows SYSTEM 32路徑中安裝電子樣板文件夾?我的文件夾位於C –

+0

已將cmd.exe添加到電子樣板文件夾,但仍然無法運行 –

回答

0

當您通過npm start運行電子時,它通常會將當前工作目錄設置爲應用程序的文件夾(包含您的package.json)。所以它會在該文件夾中尋找cmd.exe

生成應用程序並運行後,當前工作目錄可能位於其他位置,例如C:\\(在Windows上)。您可以通過process.cwd()找到當前的工作目錄。

要找到應用程序文件夾,無論應用程序如何運行,Electron都提供electron.app.getAppPath()

所以你可以使用它像這樣:

const path = require('path'); 
const cmdPath = path.join(electron.app.getAppPath(),'cmd.exe'); 
const bat = spawn(cmdPath, ['/c', 'Install.bat']); 
+0

好了,所以我編輯了我的代碼,但是當我做「npm run release」時,該文件不能運行,而.bat不運行 –

+0

const path = require('path'); const cmdPath = path.join(app.getAppPath(),'cmd.exe'); const spawn = require('child_process')。spawn; const bat = spawn(cmdPath,['/c','Install.bat']); –

相關問題