electron-vue实现远程更新程序

news/2024/11/24 0:35:02/

我的electron版本:^12.0.0; vue版本:^3.2.13。

我实现electron远程更新是通过electron-update插件实现,electron-update版本为:^5.3.0

核心代码分为三部分

第一部分:main.js中编写更新方法;对官方接口的重写(这个不是很重要,可以按需)

第二部分:在vue.config.js中配置打包路径,安装措施等(一键安装,是否创建桌面图标)

第三部分:vue页面写具体的展示

具体代码:

第一部分:

import { app, protocol, BrowserWindow, Menu, ipcMain } from "electron"; 
const { autoUpdater } = require("electron-updater");
const log = require("electron-log"); //----方法开始-------下列方法写在createWindow(){**这里**}里面
ipcMain.on("thisCheckForUpdates", () => {autoUpdater.checkForUpdates();//检查更新autoUpdater.on("checking-for-update", () => {log.info("正在检查更新...");});//没有可用更新autoUpdater.on("update-not-available", () => {log.info("没有可用更新.");win.webContents.send("thisUpdatenotavailable", {code: 102,msg: "没有可用更新",data: {},});});//有可用更新autoUpdater.on("update-available", (info) => {log.info("有可用更新." + info);log.info(info);// autoUpdater.downloadUpdate()win.webContents.send("thisUpdateavailable", {code: 200,msg: "有可用更新",data: info,});});// 更新出错autoUpdater.on("error", (err) => {log.info("更新出错. " + err);win.webContents.send("thisUpdateerror", {code: 200,msg: "更新出错",data: err,});});//更新下载完成autoUpdater.on("update-downloaded", (info) => {log.info("更新下载完成", info);log.info("开始安装...");autoUpdater.quitAndInstall();});// }});// 接收更新命令ipcMain.on("thisDownloadnow", () => {// 更新前,删除本地安装包 ↓// let updaterCacheDirName = app.getName() + '-updater';// const updatePendingPath = path.join(autoUpdater.app.baseCachePath, updaterCacheDirName, 'pending')// fs_extra.emptyDir(updatePendingPath)// 更新前,删除本地安装包 ↑//开始下载autoUpdater.downloadUpdate();});
//----方法结束----

第二部分:

//设置打包后信息pluginOptions: {electronBuilder: {builderOptions: {appId: "这里自定义",copyright: "Copyright © 2023-06-09",win: {icon: "./public/logo.png",},mac: {icon: "./public/logo.png",},productName: "自定义",publish: [{provider: "generic",url: 这里是发布地址,也即程序启动后,从哪里获取新版本。写到该文件所属文件夹就可,例如file文件夹下有latest.yml文件和exe文件(latest.yml和exe是更新必备,latest包含版本信息,exe是安装程序),那么地址可以写为:*****/flie },],},nodeIntegration: true,nsis: {oneClick: false, // 一键安装allowElevation: true, // 允许请求提升。 如果为false,则用户必须使用提升的权限重新启动安装程序。allowToChangeInstallationDirectory: true, // 允许修改安装目录installerIcon: "./public/logo.png", // 安装图标uninstallerIcon: "./public/logo.png", //卸载图标installerHeaderIcon: "./public/logo.png", // 安装时头部图标createDesktopShortcut: true, // 创建桌面图标createStartMenuShortcut: true, // 创建开始菜单图标//  include: "./resources/installer.nsh", //默认安装目录配置文件},},},

第三部分:

<template><div class="main" style="padding: 2vh"><el-card class="card" shadow="hover"><el-row class="rowContent"><el-col :span="24" @click="toUpdate()"><span style="float: left">&ensp;&ensp;软件版本:2023.06.09 Version 0.0.1&ensp;&ensp;</span><el-tagv-if="isUpdate"roundclass="ml-2"style="float: left; height: 4vh"type="warning">有新版本可用,点击获取</el-tag><el-tagv-if="!isUpdate"roundclass="ml-2"style="float: left; height: 4vh"type="success">最新版</el-tag><span style="float: right; color: darkgrey">>&ensp;&ensp;&ensp;</span></el-col><hr class="hrLine" /><el-col :span="24" @click="toInstruction"><span style="float: left">&ensp;&ensp;使用说明</span><span style="float: right; color: darkgrey">>&ensp;&ensp;&ensp;</span></el-col><hr class="hrLine" /><el-col :span="24" @click="toFeedback"><span style="float: left">&ensp;&ensp;意见反馈</span><span style="float: right; color: darkgrey">>&ensp;&ensp;&ensp;</span></el-col></el-row></el-card></div>
</template>
<script>
import { ElNotification } from "element-plus";
import { ipcRenderer } from "electron";
export default {name: "SystemSet",data() {return {isUpdate: false,};},created() {},mounted() {this.checkVersion();},methods: {toInstruction() {this.$router.push("/systemMain/instructions");},toFeedback() {this.$router.push("/systemMain/feedback");},toUpdate() {ElNotification({title: "系统通知",message: "正在系统版本升级,请稍后....",type: "success",});ipcRenderer.send("thisDownloadnow");},checkVersion() {//发送检测更新命令ipcRenderer.send("thisCheckForUpdates");//接收可以更新的命令ipcRenderer.on("thisUpdateavailable", (ev, res) => {this.isUpdate = true;});},},
};
</script>
<style scoped>
.rowContent {font-size: 2em;
}
.hrLine {width: 100%;
}
.card {padding: 10vh;border-radius: 2vh;
}.el-col:hover {cursor: pointer;
}
</style>

代码搞定;

升级,那就需要版本不同。

先打包一个高版本的(在package.json里面指定高版本)将高版本生成的latest.yml和exe文件放到服务器(在vue.config.js里面指定过);再打包一个低版本的安装到机器上。

妥当,可以尝试了~~~~~~


http://www.ppmy.cn/news/340915.html

相关文章

2023第八届少儿模特明星盛典 小超模刘子衿 担任全球赛代言人

2023第八届少儿模特明星盛典全球总决赛将在春城昆明举办&#xff0c;3月24日至28日&#xff0c;开展为期5天的春季时尚盛宴。赛程丰富多样&#xff0c;打造双主题个人赛、亲子/家庭赛、贺年大秀、荣耀师生赛、IPA全明星加冕仪式等多重赛制体验&#xff0c;为少儿模特们在2023年…

人身三流指什么_什么是三流明星

展开全部 三流明32313133353236313431303231363533e4b893e5b19e31333433636130星就是在电视剧和电影中经常做客串的明星&#xff0c;这种人总会让人觉得眼熟但就是叫不出名字。 客串一般都指一个比较知名的人物(可以是演员&#xff0c;也可以是其他行当的知名者&#xff0c;比如…

几位深受妇科病困扰的女明星

几位深受妇科病困扰的女明星 一个人不愿意其他人知道的事情&#xff0c;应该算做个人隐私吧&#xff1f; 我不是女人&#xff0c;不太了解女性的心理&#xff0c;可一个女人私处有病怎么着也应该算做个人隐私啊&#xff1f;可一到了女明星身上&#xff0c;就成了巴不得全国…

香港十大气质男明星

周润发&#xff1a;大气 此君出演的多数电影中&#xff0c;都实难挡其魅力&#xff0c;无论主演客串&#xff0c;都令众多演员望尘莫及。大将之风。 梁朝伟&#xff1a;灵气 不要被他油头粉面或落魄颓废的造型迷离忧郁的眼神所迷惑。实有让观众细细品味的风采,具有影帝风采。 周…

第五周明星识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f366; 参考文章&#xff1a;Pytorch实战 | 第P5周&#xff1a;运动鞋识别 &#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 import torch import torch.nn as nn import torchvisi…

黄渤《一出好戏》首日票房 1.5 亿,口碑碾压《爱情公寓》凭的是什么?

本人作为黄渤的粉丝&#xff0c;《一出好戏》当然是必看无疑呀。在今天正式观看之前&#xff0c;先来通过猫眼的影评来分析下网友对它的反馈。 爬取数据 这里通过去请求猫眼的 API 来抓取数据&#xff0c;借助的工具是 requests 。 这里简单说下猫眼影评的 API&#xff1a; h…

明星生日榜

1月 1月1日 言承旭 陈锦鸿 葛优 堂本光一&#xff08;日&#xff09;安成基&#xff08;韩&#xff09; 1月2日 竹野内丰&#xff08;日&#xff09; 1月3日 孙耀威 蔡一智 陈冲 黄伊汶 朴素美&#xff08;韩&#xff09; 梅尔-吉布森 1月4日 陈坤 1月5日 黄凤仪 戚美珍 姜文 1…

CAP三缺一:不能同时存在

1 CAP 分布式系统CAP理论(原则): 一致性(Consistency):同一时刻“看”到的数据完全相同。 可用性(Availability):客户端请求总是可以拿到正确的响应。 分区容错(Partition tolerance):部分节点间网络异常,系统仍可以正常运作。 2 为什么不能同时存在 定义决定了…