• electron+vue框架搭建桌面应用(三)


    我们再用户下载完我们的软件后不可能每次更新都要用户去指定网站进行下载

    所以,我们需要用到electron+vue 的自动更新功能

    配置文件 "package.json"

    "build" : {
        "publish": [
          {
            "provider": "generic",
            "url": "http://127.0.0.1:3000/newfile/" // 被更新文件存放位置
          }
        ],
    },
    "devDependencies": {
        "electron": "^2.0.4",
        "electron-updater": "3.0.0",
        "electron-builder": "^20.19.2"
    }

    安装依赖

    需要注意的是electron-vue中目前是使用electron 2.0.4的,所以最新版的electron-updater是不支持的,若手动升级electron版本的话,如果你使用了node-ffi等的话,是无法运行的,但是如果你只是使用node-ffi的话可以切换成node-ffi-napi然后对electron进行升级

    yarn add electron-updater@3.0.0 --dev(推荐)

    npm i electron-updater@3.0.0 -D

    cnpm i electron-updater@3.0.0 -D

    自动更新 "update.js"

    import { autoUpdater } from 'electron-updater'
    import { ipcMain } from 'electron'
    /**
     * -1 检查更新失败 0 正在检查更新 1 检测到新版本,准备下载 2 未检测到新版本 3 下载中 4 下载暂停 5 下载暂停恢复 6 下载完成 7 下载失败 8 取消下载
     * */
    class Update {
      mainWindow
      constructor (mainWindow) {
        this.mainWindow = mainWindow
        autoUpdater.setFeedURL('http://127.0.0.1:3000/newfile') // 更新地址与package.json中的build.publish.url相对应
        /**
        * 根据自身需求选择下方方法
        */
        this.error()
        this.start()
        this.allow()
        this.unallowed()
        this.listen()
        this.download()
      }
      Message (type, data) {
        this.mainWindow.webContents.send('message', type, data)
      }
      error () { // 当更新发生错误的时候触发。
        autoUpdater.on('error', (err) => {
          this.Message(-1, err)
          console.log(err)
        })
      }
      start () { // 当开始检查更新的时候触发
        autoUpdater.on('checking-for-update', (event, arg) => {
          this.Message(0)
        })
      }
      allow () { // 发现可更新数据时
        autoUpdater.on('update-available', (event, arg) => {
          this.Message(1)
        })
      }
      unallowed () { // 没有可更新数据时
        autoUpdater.on('update-not-available', (event, arg) => {
          this.Message(2)
        })
      }
      listen () { // 下载监听
        autoUpdater.on('download-progress', () => {
          this.Message('下载进行中')
        })
      }
      download () { // 下载完成
        autoUpdater.on('update-downloaded', () => {
          this.Message(6)
          setTimeout(m => {
            autoUpdater.quitAndInstall()
          }, 1000)
        })
      }
      load () { // 触发器
        autoUpdater.checkForUpdates()
      }
    }
    export default Update

    主进程 "index.js"

    import Update from './update'
      mainWindow = new BrowserWindow({
      height: 563,
      useContentSize: true,
       1000
    })
    let update = new Update(mainWindow)
  • 相关阅读:
    SQL SERVER 2008 如何查询含有某关键词的表
    Windows 8.1 & Windows 10 取消 Windows Update 自动更新硬件驱动
    删除Visual Studio Online 中团队项目
    fedora Server 21 安装 Opera 29.0.1795.47
    Fedora 手动删除系统中不再需要的包
    GitHub 操作流程示例
    搬家至个人独立博客virson.cn
    使用Eclipse PDT + Xampp搭建Php开发环境
    Office 2013 Excel 转换 Word
    Windows 8.1 Enterprise 下 安装 Eclipse 官方中文包后无法输入任何内容
  • 原文地址:https://www.cnblogs.com/zzkxjh/p/12825436.html
Copyright © 2020-2023  润新知