环境配置
当我们启动一个插件要考虑它的运行环境路径,所以我们可以封装一个方法把这个问题设置一下即可
Nodejs 端
//启动指定的文件
function onOpenFile(exeFile = '', params = [], cwd = {}, isUnref, isElevate, callback = () => void 0) {
txtConsole.log(`启动 ${exeFile}`);
if (!exeFile) {
txtConsole.log(`启动文件未找到:${exeFile}`);
return;
}
const fileName = path.basename(exeFile);
const elevatePath = path.join(mainData.exePath, 'elevate.exe');
const child = execFile(
isElevate && fs.existsSync(elevatePath) ? elevatePath : `${exeFile}`,
isElevate && fs.existsSync(elevatePath) ? [`${exeFile}`, ...params] : params,
//配置运行时路径
{ cwd: path.dirname(exeFile), ...cwd },
);
child.stdout.on('data', (data) => {
if (fileName !== 'EPHONE.exe') {
const output = data.toString();
txtConsole.log(`${fileName}-输出: ${output}`);
callback?.('data', output);
}
});
// child.stderr.on('data', (data) => {
// const errorOutput = data.toString();
// txtConsole.log(`${fileName}-标准错误输出: ${errorOutput}`);
// });
child.on('error', (err) => {
txtConsole.log(`${fileName}-执行错误: ${err}`);
callback?.('error', false);
});
child.on('close', (code) => {
txtConsole.log(`${fileName}-子进程退出,退出码: ${code}`);
callback?.('close', code);
});
//是否脱离主进程
if (isUnref) child.unref();
}
//调用
onOpenFile(filePath, [], null, true, true);