node 打开本地安装包
在electron开发中,需要做到升级更新的功能
遇到下载安装包后,需要调起安装包,用到了node的模块,记录一下
//关闭进程
ipcMain.on('appExit',()=>{
app.exit()
})
ipcMain.on('startUp', () => {
//创建exec方法byludan
const { spawn } = require('child_process')
let cp = ''
if (platform.win32) {
cp = spawn(dowloadfilePath,{
detached: true //这句很重要,关闭主进程时,保留子进程,弹出安装框不关闭
})
} else {
cp = spawn('open', [dowloadfilePath])
}
cp.stdout.on('data', (data) => {
let logs = data
.toString()
.split('\n')
.filter((x) => x)
logs.forEach((el) => {
message = `${el}`
})
})
cp.stderr.on('data', (data) => {
let logs = data
.toString()
.split('\n')
.filter((x) => x)
logs.forEach((el) => {
message = `${el}` //将返回值赋值给message
})
})
cp.on('error', (err) => {
console.log('Failed to start subprocess.')
})
setTimeout(() => {
rceWindow.webContents.send('version_quit', {
message: '启动完成',
})
}, 1500)
})
渲染进程
import pcWin from '../browserWindow';
export default {
props: ['versionStatus', 'versionData'],
data() {
return {
dowloadCompuled: false,
progresssum: 1,
progress: false,
};
},
methods: {
// 立即启动
startExE() {
console.log('立即安装');
RongDesktop.ipcRenderer.send('startUp');
RongDesktop.ipcRenderer.on('version_quit', (evt, objs) => {
console.log(objs);
if (objs.message === '启动完成') {
pcWin.close();
RongDesktop.ipcRenderer.send('appExit');
}
});
},
// 自定义进度条文字
setItemText(sum) {
if (sum > 0 || sum <= 100) {
return () => `下载中···${sum}%`;
}
},
handleClose(done) {
const context = this;
if (done === 'confirm') {
// 更新中
this.progress = true;
RongDesktop.ipcRenderer.on(
'version_file_progress',
(evt, args) => {
// console.log(Math.ceil((args.received / args.total) * 100));
// console.log(args);
if (
context.progresssum > 0
|| context.progresssum <= 100
) {
context.progresssum = Math.round(
(args.received / args.total) * 100,
);
}
},
);
RongDesktop.ipcRenderer.send(
'download_file',
`${context.versionData.src}`,
// 'http://download.ydstatic.com/notewebsite/downloads/YoudaoNote.dmg'
);
// 完成
RongDesktop.ipcRenderer.on('downloadComplted', (evt, objs) => {
if (objs.message === '下载完成') {
context.dowloadCompuled = true;
}
});
// initDownload(attach, 'https://www.baidu.com', context);
return false;
}
this.$emit('versionCallback', done);
},
},
};
版权声明:本文由Web学习之路发布,如需转载请注明出处。