🐱‍🐉Electron 您所在的位置:网站首页 taro安装指定版本 🐱‍🐉Electron

🐱‍🐉Electron

#🐱‍🐉Electron| 来源: 网络整理| 查看: 265

准备 //引入electron-updater npm i electron-updater -D//好像是这个 复制代码 实现 主进程 实现文件

新建的updater.js文件

//#updater.js const { ipcMain, Notification } = require('electron') const { autoUpdater } = require('electron-updater') //const config = require('./config.js') // 初始化更新模块-监听 ipcMain.on("downLoadInit", (event) => { listenUpdater(event) }) // 开始检查更新-监听 接收到渲染进程来的讯息后检测更新 ipcMain.on("downloadSee", () => { autoUpdater.checkForUpdates() }) // 开始下载更新-监听 ipcMain.on("downLoadUpdate", () => { fnNotification('新版本下载中,请等待') autoUpdater.downloadUpdate()//开始下载,注意:下载后如果不更新,可能会导致下次打开异常,所有下载更新一体 }) /** * 初始化更新模块 * @param {*} event */ const listenUpdater = (event) => {//event 内部方法用作消息广播,也可用main调用,传递win过来(获取send方法) autoUpdater.autoDownload = false // 手动指定下载 //let url = config.UPDATE_URL let url = 'http://XXXX/app/'//更改为版本库地址,测试时可以在本地跑一个web服务 autoUpdater.setFeedURL(url) // 更新包的地址 //异常捕获回调 autoUpdater.on('error', function (error) { event.sender.send("checkUpdateError", JSON.stringify(error)) }) // 检查更新中 autoUpdater.on('checking-for-update', function () { //event.sender.send("msgUpdater", '检查更新中') }) // 检测到有新版本更新 autoUpdater.on('update-available', function (info) { event.sender.send("update-available", JSON.stringify(info)) }) // 暂无新版本可更新 autoUpdater.on('update-not-available', function (info) { event.sender.send("update-not-available", JSON.stringify(info)) }) // 更新下载进度事件 autoUpdater.on('download-progress', function (progressObj) { event.sender.send("download-progress", JSON.stringify(progressObj)) }) // 下载完成,退出且重新安装 autoUpdater.on('update-downloaded', function () { fnNotification('下载完成,正在重新安装') autoUpdater.quitAndInstall()//退出且重新安装 }) } //实现系统提示的方法(屏幕右下角弹窗提示) const fnNotification = (title) => { setTimeout(() => { let NOTIFICATION_BODY = new Date().toLocaleTimeString() let data = { title: title, body: NOTIFICATION_BODY } try { let thisNotification = new Notification(data) thisNotification.show() } catch (error) { console.log(error); } }, 1000) } 复制代码 main.js引入 //#main.js require('./updater.js') //如果是接收自渲染进程消息再初始化,可以只执行,也可以暴露初始化方法到main.js执行并传入win对象(获取send方法) 复制代码 渲染进程

下面是查询和更新分离的实现,具体页面逻辑根据实际情况实现

//#renew.ts import { ipcRenderer } from 'electron' //初始化 ipcRenderer.send("downLoadInit")//也可以直接在主进程初始化 //查询版本 export const onRenewSeeFn = () => { ipcRenderer.send("downloadSee") } //下载并更新 export const onRenewGoFn = () => { ipcRenderer.send("downLoadUpdate") } //--------------------------------------------------------------消息监听 //版本检测异常 ipcRenderer.on("checkUpdateError", (event, data) => { let msg = '版本检测异常' // ...... }) // 检测到有新版本更新 ipcRenderer.on("update-available", (event, data) => { data = JSON.parse(data) // ...... }) // 暂无新版本可更新 ipcRenderer.on("update-not-available", (event, data) => { data = JSON.parse(data) // ...... }) // 更新下载进度事件 ipcRenderer.on("download-progress", (event, data) => { data = JSON.parse(data) // ...... }) 复制代码 package.json配置

打包时将文件添加致版本库(我这里没起效果,所以是手动上传到服务器的)

"publish": [ { "provider": "generic", "url": "http://XXXX/app/" } ], 复制代码

附加build打包配置

"build": { "appId": "XXXapp", "productName": "XXXapp", "asar": false, "copyright": "Copyright © 2022 electron", "directories": { "output": "release/" }, "files": [ "_electron_/**/*", "dist/**/*" ], "mac": { "artifactName": "${productName}_${version}.${ext}", "target": [ "dmg" ] }, "win": { "icon": "/public/icon.png", "target": [ { "target": "nsis", "arch": [ "x64" ] } ], "artifactName": "${productName}_${version}.${ext}" }, "nsis": { "artifactName": "${productName}_${version}.${ext}", "uninstallDisplayName": "SC", "oneClick": false, "allowToChangeInstallationDirectory": true, "createDesktopShortcut": true, "createStartMenuShortcut": true, "runAfterFinish": true, "installerLanguages": [ "zh_CN" ] }, "electronDownload": { "mirror": "https://npm.taobao.org/mirrors/electron/", "cache": "E:/", "version": "23.2.0" }, "publish": [ { "provider": "generic", "url": "http://XXXX/app/" } ], "releaseInfo": { "releaseNotes": "" }, "extends": null } 复制代码 版本库文件

需要下面两个文件

//文件1 版本信息 latest.yml //文件2 版本文件(我这里是全量更新) XXXapp.exe可执行文件 复制代码


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有