描述
用Python写了一个本地服务编译成exe程序,在electron程序启动后,自动执行exe程序
实现
1. 使用node的child_process模块可以执行windows执行,通过指令调exe程序
// electron/index.js
var cp = require("child_process");
// 调后台服务 serivePath: exe所在的路径
serverProcss = cp.execFile(serivePath, [], function(err,stdout,stderr){
if(err){
console.error(err);
}
console.log("stdout:",stdout)
console.log("stderr:",stderr);
});
2. 路径问题
- 开发环境直接写前端目录下的路径,比如我的exe程序放到了service目录下,serivePath就可以设置为"service/xx.exe",
- 生产环境下,资源会放到resources目录下,所以serivePath设置为"resources/service/xx.exe", 开发环境路径生的service是因为我在package.json中配置了exe路径
// 根据环境使用不同的路径
let servicePath = 'resources/service/xx.exe'
if(process.env.NODE_ENV === 'development') {
servicePath = 'service/xx.exe'
}
//package.json
"extraResources": {
"from": "./service/",
"to": "service"
},
开发路径
安装后的路径
3. 增加:关闭electron程序结束exe服务
import { app, BrowserWindow, dialog , ipcMain } from 'electron'
app.on('quit', () => {
// 关闭应用程序,结束后台服务xx.exe
cp.exec('taskkill /fi "imagename eq xx.exe" /f', function(err, stdout, stderr) {
if(err) return console.log(err);
})
})