当前位置:首页 > node > 正文内容

node 打开本地安装包

自由小鸟2年前 (2020-10-28)node1140

在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学习之路发布,如需转载请注明出处。

本文链接:https://webge.net/?id=99

返回列表

没有更早的文章了...

下一篇:node exec 打开本地安装包

“node 打开本地安装包” 的相关文章

node exec 打开本地安装包

const exec = require('child_process').exec // 任何你期望执行的cmd命令,ls都可以 let cmdStr = './你的可执行程序名称 -p 需要输入密码的话' // 执行cmd命令的目录,如果使用cd x...

node 从0开始学习

1,新建一个文件夹,2, 进入文件夹内部,执行 npm init 一路回车3,创建index.js4,安装express及重要插件先来用express这个框架, 终端分别输入npm install express –save (注:–save是保存到项目中的意思)npm install body...

node.js学习记录

1,安装nodejs开发环境简单实现的石头剪刀布 console.log(process) //这个是node自带的 var playAction = process.argv[process.argv.length - 1] console.log(playAction) var ra...