最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue+electron 自動(dòng)更新的實(shí)現(xiàn)代碼

 更新時(shí)間:2024年02月27日 15:16:46   作者:擺爛程序魚(yú)  
這篇文章主要介紹了vue+electron 自動(dòng)更新的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

1. 配置 package.json或vue.config.js文件中的應(yīng)用更新服務(wù)器地址

module.exports = {
  pluginOptions: {
    electronBuilder: {
        ...
        publish: [
          {
            provider: 'generic',
            url: 'http://qc***/***'  // 服務(wù)器地址
          }
        ]
        ...
      }
    }
  }
}
 

2. 在主進(jìn)程寫(xiě)更新應(yīng)用邏輯

在 checkupdate.js 文件或 main.js 中寫(xiě)入

import { autoUpdater } from 'electron-updater'
const { build } = require("../../../package.json")
const { app, dialog } = require('electron');
const path = require("path");
import { ipcRenderer } from "electron";
const websocket = require('ws')
//跳過(guò)打包檢查  開(kāi)發(fā)環(huán)境使用  打包的時(shí)候注釋掉
// Object.defineProperty(app, 'isPackaged', {
// 	get() {
// 		return true;
// 	}
// });
/**
 * -1 檢查更新失敗 0 正在檢查更新 1 檢測(cè)到新版本,準(zhǔn)備下載 2 未檢測(cè)到新版本 3 下載中 4 下載完成
 **/
class Update {
    mainWindow
    constructor() {
        autoUpdater.setFeedURL(build.publish[0].url)
        // 當(dāng)更新發(fā)生錯(cuò)誤的時(shí)候觸發(fā)。
        autoUpdater.on('error', (err) => {
            if (err.message.includes('sha512 checksum mismatch')) {
                this.Message(this.mainWindow, -1, 'sha512校驗(yàn)失敗')
            } else {
                this.Message(this.mainWindow, -1, '錯(cuò)誤信息請(qǐng)看主進(jìn)程控制臺(tái)')
            }
        })
        // 當(dāng)開(kāi)始檢查更新的時(shí)候觸發(fā)
        autoUpdater.on('checking-for-update', (event, arg) => {
            this.timer(this.mainWindow, 0, "正在檢查更新...", 5000)
        })
        // 發(fā)現(xiàn)可更新數(shù)據(jù)時(shí)
        autoUpdater.on('update-available', (event, arg) => {
            this.timer(this.mainWindow, 1, "發(fā)現(xiàn)新版本", 10000)
            this.timer(this.mainWindow, 1, "檢測(cè)到新版本,正在下載安裝包...", 15000)
        })
        // 沒(méi)有可更新數(shù)據(jù)時(shí)
        autoUpdater.on('update-not-available', (event, arg) => {
            this.timer(this.mainWindow, 2, "暫未檢測(cè)到新版本,當(dāng)前版本為最新版本,無(wú)需更新", 15000)
        })
        // 下載監(jiān)聽(tīng)  
        autoUpdater.on('download-progress', (progressObj) => {
            // {
            //   total: 1145589126,
            //   delta: 71139212,
            //   transferred: 71139212,
            //   percent: 6.209836527376395,
            //   bytesPerSecond: 69881348
            // }
            let total = this.renderSize(progressObj.total); //總大小
            let percent = parseFloat(progressObj.percent.toFixed(2)); //下載進(jìn)度
            let bytesPerSecond = this.renderSize(progressObj.bytesPerSecond); //下載速度
            // let message = `總大?。?{total} 下載進(jìn)度:${percent}% 下載速度${bytesPerSecond}/S`
            let message = `總大小:${total} 下載進(jìn)度:${percent}%`
            // this.Message(this.mainWindow, 3, message)
        })
        // 下載完成
        autoUpdater.on('update-downloaded', () => {
            // console.log('done')
            this.Message(this.mainWindow, 4, "新版本已下載完成,五秒后自動(dòng)安裝并重啟...")
            setTimeout(() => {
                this.quitInstall();
            }, 5000)
        })
    }
    // 負(fù)責(zé)向渲染進(jìn)程發(fā)送信息
    Message(mainWindow, type, data) {
        const senddata = {
            state: type,
            msg: data || ''
        }
        let journalSocket = new websocket("ws://localhost:16478");
        // mainWindow.webContents.send('update-msg', senddata)
        journalSocket.on("open", function () {
            journalSocket.send(data);
        });
    }
    // 執(zhí)行自動(dòng)更新檢查
    checkUpdate(mainWindow) {
        this.mainWindow = mainWindow
        autoUpdater.updateConfigPath = path.resolve(__static, 'default-app-update.yml')
        // this.Message(this.mainWindow, 4, path.resolve(__static, 'default-app-update.yml'))
        // autoUpdater.currentVersion = "0.0.1";//調(diào)試使用 正式上線后注釋掉
        autoUpdater.checkForUpdates().catch(err => {
            console.log('網(wǎng)絡(luò)連接問(wèn)題', err)
        })
    }
    // 退出并安裝
    quitInstall() {
        autoUpdater.quitAndInstall()
    }
    // 處理文件大小格式化
    renderSize(value) {
        if (null == value || value == '') {
            return "0 Bytes";
        }
        var unitArr = new Array("Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB");
        var index = 0;
        var srcsize = parseFloat(value);
        index = Math.floor(Math.log(srcsize) / Math.log(1024));
        var size = srcsize / Math.pow(1024, index);
        size = size.toFixed(2);//保留的小數(shù)位數(shù)
        return size + unitArr[index];
    }
    // 定時(shí)器
    timer(mainWindow, number, message, time) {
        setTimeout(() => {
            this.Message(mainWindow, number, message)
        }, time)
    }
}
export default Update

3. 打包升級(jí)版的應(yīng)用(v1.1.0)

注意:

每次打包記得去package.json文件中修改version版本號(hào),這樣系統(tǒng)才會(huì)檢測(cè)到最新版本

打包后 dis有如下兩個(gè)文件:

新版本安裝包.exe
latest.yml

將上面兩個(gè)文件復(fù)制到 ‘更新服務(wù)器’ (http://qc***/***) 目錄下;

以后每次有更新就復(fù)制這兩個(gè)文件至 ‘更新服務(wù)器’,舊版本的應(yīng)用的執(zhí)行文件(.exe)可以刪除。

到此這篇關(guān)于vue+electron 自動(dòng)更新的文章就介紹到這了,更多相關(guān)vue electron 自動(dòng)更新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue條件渲染與列表渲染

    Vue條件渲染與列表渲染

    這篇文章主要介紹了Vue條件渲染與列表渲染,條件渲染包括v-if、v-show等內(nèi)容,文章對(duì)條件渲染及列表渲染介紹詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • element-plus 按鈕展開(kāi)/隱藏功能實(shí)現(xiàn)

    element-plus 按鈕展開(kāi)/隱藏功能實(shí)現(xiàn)

    本文給大家介紹element-plus 按鈕展開(kāi)/隱藏功能實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-06-06
  • vue使用el-select下拉框匹配不到值的問(wèn)題及解決

    vue使用el-select下拉框匹配不到值的問(wèn)題及解決

    這篇文章主要介紹了vue使用el-select下拉框匹配不到值的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 手把手教你Vue-cli項(xiàng)目的搭建

    手把手教你Vue-cli項(xiàng)目的搭建

    這篇文章主要為大家詳細(xì)介紹了Vue-cli項(xiàng)目的搭建方法,文中圖片介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • vue iview實(shí)現(xiàn)動(dòng)態(tài)新增和刪除

    vue iview實(shí)現(xiàn)動(dòng)態(tài)新增和刪除

    這篇文章主要為大家詳細(xì)介紹了vue iview實(shí)現(xiàn)動(dòng)態(tài)新增和刪除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • vue中的config目錄下index.js解讀

    vue中的config目錄下index.js解讀

    這篇文章主要介紹了vue中的config目錄下index.js解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue?mixins代碼復(fù)用的項(xiàng)目實(shí)踐

    vue?mixins代碼復(fù)用的項(xiàng)目實(shí)踐

    本文主要介紹了vue?mixins代碼復(fù)用的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • vue項(xiàng)目使用typescript創(chuàng)建抽象類及其使用方式

    vue項(xiàng)目使用typescript創(chuàng)建抽象類及其使用方式

    這篇文章主要介紹了vue項(xiàng)目使用typescript創(chuàng)建抽象類及其使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue中的errorHandler異常捕獲問(wèn)題

    Vue中的errorHandler異常捕獲問(wèn)題

    這篇文章主要介紹了Vue中的errorHandler異常捕獲問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue 里面使用axios 和封裝的示例代碼

    vue 里面使用axios 和封裝的示例代碼

    本篇文章主要介紹了vue 里面使用axios 和封裝的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

广德县| 含山县| 安达市| 博白县| 甘谷县| 乌拉特中旗| 绥化市| 黑水县| 永德县| 通辽市| 革吉县| 乌兰浩特市| 惠来县| 惠州市| 乐东| 扶绥县| 石景山区| 莱芜市| 游戏| 许昌市| 泸州市| 宽城| 仙居县| 泰安市| 镇沅| 宁陵县| 阳新县| 石棉县| 福海县| 辽中县| 印江| 资讯 | 长丰县| 东乌珠穆沁旗| 共和县| 同心县| 南安市| 准格尔旗| 凤冈县| 汉中市| 通化县|