electron 启动exe 程序

来源:思否 分类: 文章浏览史 发布时间:2020-06-06 17:23:26 最后更新:2020-06-06 浏览:202
转载声明:
本文为摘录自“思否”,版权归原作者所有。
温馨提示:
为了更好的体验,请点击原文链接进行浏览
摘录时间:
2020-06-06 17:23:26

最近项目中,需要用 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()
})
php技术微信