记录使用electron软件热更新

使用背景

使用vue打包的项目,放在electron生成的外壳中,当项目启动时检测软件有没有更新,如果有则从线上下载更新文件的压缩包,解压至本地,解压完之后删除安装包,然后项目重启

安装
因为是直接借用的外壳,还需要下载以下依赖
项目依赖:request , adm-zip
在此目录安装
在这里插入图片描述

JS
检测热更新的程序在主进程—main.js中

1.引入依赖

const fs = require('fs')
const request = require("request");
const adm_zip = require("adm-zip");

2.下载的文件保存路径

const baseUrl = "./resources/app/";

3.下载资源的路径 ( 这里需要为自己的资源外网)

const fileUrl = "http://xxx.xxx";

4.定时器轮询是否有新的安装包资源 (localVersion 为本地版本号,如果本地版本号和线上版本号不同则更新资源到本地)

const timer = setInterval(()=>{
    return new Promise((resolve, reject) => {
      request(
        {
          url: `${fileUrl}`,
        },
        (error, res, body) => {
          try {
            if (error || res.statusCode !== 200) {
              return false
            }
            clearInterval(timer)
            const localVersion = "1.1.6";
            if (app.getVersion() != localVersion) {
              dialog.showMessageBox({
                type: 'info',
                title: '发现新版本',
                message: '请点击按钮进行更新,期间请不要操作,更新后会自动重启',
                buttons: ['马上更新']
              },(index) => {
                if(index == 0){
                  downLoad()
                  .then(() => {
                    fs.readFile(`${baseUrl}package.json`, function (err, data) {
                      let newData = JSON.parse(data);
                      newData.version = localVersion;
                      fs.writeFile(`${baseUrl}package.json`, JSON.stringify(newData), function (err) {
                        if (err) {
                          return console.error(err);
                        }
                        // 重启
                        app.relaunch({
                          args: process.argv.slice(1)
                        });
                        app.exit(0);
                      });
                    });
                  })
                }
              })
              
            } else {
              console.log('no update')
            }
          } catch (err) {
            reject(err);
          }
        })
    })
  },5000)
  
const downLoad = () => {
  return new Promise((resolve, reject) => {
    const stream = fs.createWriteStream(`${baseUrl}dist.zip`);
    const url = 'http://ms.92td.cn/dist.zip';
    request(url).pipe(stream).on('close', () => {
      var adm_zip = require('adm-zip');
      const unzip = new adm_zip(`${baseUrl}dist.zip`); //下载压缩更新包
      unzip.extractAllTo(`${baseUrl}`, true); //解压替换本地文件
      resolve()
      fs.unlink(`${baseUrl}dist.zip`, (err) => {})
    });
  })
}

参考文章 electron热更新与windows下的安装包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值