通过 electron 启动其它exe 程序

13,269 阅读1分钟

最近项目中,需要用 electron 来启动后台服务,后台服务是一个 exe 程序,目录在 electron 打包后的目录上一层

首先通过 app 来获取程序的路径

import { app, BrowserWindow } from 'electron'
// 当前的可执行文件所在目录
let appPath = app.getPath('exe')
// 获取上一层的目录 app 是当前目录名称 需要给去掉
let path = appPath.replace(/\\app\\studio.exe/, '')

再通过 nodechild_process 来调用 cmd 执行

const exec = require('child_process').exec
// 本地需要启动的后台服务名称
let cmdStr = 'server'
let cmdPath = path
let workerProcess

function runExec () {
  // 执行命令行,如果命令不需要路径,或就是项目根目录,则不需要cwd参数:
  workerProcess = exec(cmdStr, {cwd: cmdPath})
  // 不受child_process默认的缓冲区大小的使用方法,没参数也要写上{}:workerProcess = exec(cmdStr, {})

  // 打印正常的后台可执行程序输出
  workerProcess.stdout.on('data', function (data) {
    console.log('stdout: ' + data)
  })

  // 打印错误的后台可执行程序输出
  workerProcess.stderr.on('data', function (data) {
    console.log('stderr: ' + data)
  })

  // 退出之后的输出
  workerProcess.on('close', function (code) {
    console.log('out code:' + code)
  })
}

需要在 electronready 生命周期中调用

app.on('ready', function(){
    runExec()
})

这样就可以了,是不是很简单呢