Electron+vue桌面端应用实现本地版本更新

因业务需求,需要将PC网页端转化成桌面端应用,但是发布新代码后,用户已经下载的无法使用最新版本,现用简单方法实现

1.新建vue版本号

可在项目目录新建一个版本管理文件,配置基本信息,需后台配置数据库版本表,用户登陆之后检查当前版本是否为最新版本,否之则提示用户进行更新

{
  "name": "electron",
  "version": "1.0.1",
  "description": "桌面端"
}
<script>
const version = require("../../../../public/version.json")
export default {
  name: 'RuoYiDoc',
  data() {
    return {
      update: "1.0.1",
      isNew: false,
      islaoding: false
    }
  },
  created() {
    this.checkVersion()
  },
  methods: {
    
    checkVersion() {
      if(version.version < this.update) {
        this.isNew = true
      }else{
        this.isNew = false
      }
    },

    updateClick() {
      console.log(version);
      if(this.isNew) {
        this.$confirm('当前有新版本,点击更新', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          if (window.ipcRenderer) {
            // 用过与Electron ipcRenderer通信 发送更新事件 分为客户端与进程端
            ipcRenderer.send('update',this.update)
            // 接收到updateStart事件,提示正在更新 laoding加载中
            ipcRenderer.on('updateStart', (event, data) => {
              if(data == 200) {
                this.islaoding = true
              }
            });
            // 下载完成接收到updateFinish事件,提示用户刷新页面,避免页面缓存 此时dist文件已经更换为最新包
            ipcRenderer.on('updateFinish', (event, data) => {
              console.log(data);
              if(data == 'finish') {
                this.islaoding = false
                this.$confirm('版本更新完成,点击确定刷新页面', '提示', {
                  confirmButtonText: '确定',
                  type: 'warning',
                  showClose: false,
                  showCancelButton: false
                }).then(() => {
                  window.location.reload()
                })
              }else if(data == 'error') {
                this.$confirm('版本更新发生错误,请联系管理员', '提示', {
                  confirmButtonText: '确定',
                  cancelButtonText: '取消',
                  type: 'warning',
                })
              }
            });
          }else{
            this.$modal.msgSuccess("当前不为客户端");
          }
        })
      }else{
        this.$modal.msgSuccess("当前为最新版本");
      }
    },

    loadingClick() {
      this.$modal.msgSuccess("正在更新中,请稍后");
    }
  }
}
</script>

2.Electron main.js更新操作

npm install compressing 安装依赖 解压文件 ,注意ipcMain.on 放在初始化createWindow里,这里可通过请求后端数据库表获取到最新下载地址

const { app, BrowserWindow,ipcMain,dialog } = require('electron')

const compressing = require('compressing');


// 监听到渲染端的更新请求,下载新文件,替换旧版本
  ipcMain.on("update", (event, data) => {
    var isloading = false
    console.log(data);
    https.get('https://mp-16ec6b41-0c2c-4640-89e3-db15e0.cdn.bspapp.com/dist.zip',async (res) => {
      console.log(res.statusCode);
      await event.reply('updateStart', res.statusCode);
      const file = await fs.createWriteStream(`dist.zip`);
      await res.pipe(file);
      await file.on('finish', () => {
        file.close();
        console.log(`File downloaded!`);
        // console.log(file);
        gunzip().then(res => {
          event.reply('updateFinish', 'finish');
        }).catch(err => {
          event.reply('updateFinish', 'error');
        })
      });
      res.on('data', (d) => {
        // console.log(d);
      });
    }).on('error', (error) => {
      console.error(error);
    });
  });

// 下载的压缩包替换本地dist前端文件
function gunzip () {
  return new Promise((reslove,reject) => {
    compressing.zip.uncompress(path.join(__dirname, './dist.zip'), path.join(__dirname, './')).then(() => {
      reslove()
    }).catch(err => {
      reject()
      console.log(err);
    });
  })
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Electron是一个基于Chromium和Node.js构建的桌面应用程序开发框架,而Vue则是一个流行的JavaScript框架,用于构建用户界面。音乐助手的设计与实现,可以考虑以下步骤: 1. 确定需求:需要明确音乐助手的功能、界面设计、数据存储等需求。 2. 搭建开发环境:安装ElectronVue的相关依赖,并创建项目的基本框架。 3. 设计用户界面:使用Vue框架构建音乐助手的用户界面,包括主页面、歌曲列表、播放控制等。 4. 实现功能:使用ElectronVue的相关API实现音乐助手的各项功能,如音乐播放、搜索、添加、删除等。 5. 数据存储:使用Electron的本地存储API或者其他数据库技术,将用户的音乐信息进行存储和管理。 6. 测试和优化:对音乐助手进行测试和优化,确保其功能和用户体验达到预期效果。 通过以上步骤的设计与实现,就可以开发出基于ElectronVue的音乐助手。 ### 回答2: 基于ElectronVue的音乐助手的设计与实现主要涵盖以下几个方面。 首先,我们需要使用Vue来构建用户界面。Vue是一种流行的JavaScript框架,可以帮助我们更容易地构建动态和交互式的用户界面。通过Vue,我们能够实现简洁明了的音乐助手界面,提供良好的用户体验。 其次,Electron是一个用于创建跨平台桌面应用程序的框架,其中集成了Node.js和Chromium。我们可以利用Electron的强大功能来构建音乐助手应用程序,并使其能够在Windows、macOS和Linux等操作系统上运行。 在设计音乐助手的功能方面,我们可以考虑以下几点。首先是音乐播放功能,通过调用音乐播放器的API,我们能够实现音乐的播放、暂停、跳转等功能。其次是音乐搜索功能,我们可以利用一些音乐API来实现音乐搜索功能,用户可以通过输入关键词来搜索自己喜欢的音乐。另外,还可以实现音乐列表功能,用户可以将自己喜欢的音乐添加到播放列表中,并进行管理和编辑。 在实现过程中,我们可以使用Electron的主进程和渲染进程进行数据的交互。主进程主要负责底层的系统交互,如文件系统操作、与外部API的交互等。渲染进程则负责加载和渲染UI组件,并与主进程进行通信,实现数据的传递和交互。 总结起来,基于ElectronVue的音乐助手的设计与实现是一个综合应用前端和后的过程。通过使用Vue构建用户界面,结合Electron的功能,我们可以实现一个功能丰富且跨平台的音乐助手应用程序,为用户提供良好的音乐体验。 ### 回答3: 音乐助手是一个基于ElectronVue框架的应用程序,旨在提供用户友好的音乐管理和播放功能。它通过结合Electron的跨平台桌面开发能力和Vue的灵活性,实现了一种高效的音乐体验。 首先,我们需要使用Electron创建一个基本的桌面应用程序。使用Electron的主进程和渲染进程,我们可以实现与操作系统的交互、窗口管理和资源控制等功能。 然后,我们使用Vue框架构建用户界面。Vue的组件化开发方式能够方便地创建可复用的界面元素。我们可以设计一个音乐播放器组件,用于显示歌曲列表、播放控制等功能;另外,还可以创建一个搜索组件,用于检索并添加音乐到歌曲列表。 接下来,我们需要使用音乐API来获取音乐资源。例如,可以使用QQ音乐API来搜索歌曲、获取歌曲详情和歌词等。通过封装这些API接口,我们可以在应用中进行歌曲的搜索和播放。 在设计方面,我们可以将应用分为两个主要模块:音乐管理和音乐播放。在音乐管理模块中,用户可以搜索歌曲、添加歌曲到播放列表、编辑歌曲信息等。在音乐播放模块中,用户可以控制歌曲的播放、调整音量、显示歌曲进度和歌词等。 最后,为了增强用户体验,我们可以添加一些功能,如自动更新、歌曲推荐、歌曲分类等。使用Electron的自动更新模块,我们可以实现应用程序的自动更新,让用户获取到最新版本的功能和修复。 总之,基于ElectronVue的音乐助手应用程序利用了这两个框架的优势,结合音乐API和用户友好的设计,为用户提供了一种高效、便捷的音乐管理和播放体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值