Electron-updater自升级方案总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Electron-updater自升级方案总结相关的知识,希望对你有一定的参考价值。
参考技术A通过electron-updater方案进行 全量 自升级方案图如下:
一、配置
在package.json文件中配置publish字段,用来生成latest.yml文件,该文件是用来判断版本升级的,在打包过程中生成。
一旦修改了latest.yml文件,则需要重新打包生成,否则更新失败。
这里也可以不配置url字段,在main.js中手动配置,使用autoUpdater.setFeedURL
方法配置即可
其中,在主进程download-progress事件的监测中返回的消息中可以取到如下信息
优点:
缺点:
Electron autoUpdate 应用程序使用 electron-updater 和 github 私有 repo
【中文标题】Electron autoUpdate 应用程序使用 electron-updater 和 github 私有 repo【英文标题】:Electron autoUpdate app using electron-updater with github private repo 【发布时间】:2021-12-18 04:09:35 【问题描述】:我做了什么:我使用 electron-builder 打包了我的电子应用程序。我使用 electron forge typescript 和 webpack 模板来创建我的电子应用程序。
错误:在https://api.github.com/repos/OWNER/REPO/releases/assets/48643890"中找不到资产“app-setup-21.6.9.exe”
我认为问题可能与我在 github 上发布时构建文件的位置有关?
MAIN.JS
import app, BrowserWindow, ipcMain from 'electron';
import autoUpdater from "electron-updater";
const log = require('electron-log');
declare const MAIN_WINDOW_WEBPACK_ENTRY: string;
declare const MAIN_WINDOW_PRELOAD_WEBPACK_ENTRY: string;
const createWindow = (): void =>
// Create the browser window.
const mainWindow = new BrowserWindow(
height: 650,
width: 1200,
webPreferences:
preload: MAIN_WINDOW_PRELOAD_WEBPACK_ENTRY,
,
);
// and load the index.html of the app.
mainWindow.loadURL(MAIN_WINDOW_WEBPACK_ENTRY);
autoUpdater.logger = log;
log.info('App starting...');
mainWindow.once('ready-to-show', () =>
autoUpdater.checkForUpdatesAndNotify();
);
autoUpdater.on('update-available', () =>
log.info("update-available");
mainWindow.webContents.send('update_available');
);
autoUpdater.on('error', (ev, err) =>
mainWindow.webContents.send('error', err);
log.info(err);
);
autoUpdater.on('download-progress', (ev, progressObj) =>
mainWindow.webContents.send('download-progress', progressObj);
)
autoUpdater.on('update-downloaded', () =>
log.info("update_downloaded");
mainWindow.webContents.send('update_downloaded');
autoUpdater.quitAndInstall();
);
// returns repos current Version
ipcMain.on('app_version', (event) =>
log.info(app.getVersion());
mainWindow.webContents.send('app_version', version:
app.getVersion() );
);
;
Main.js 日志
[info] App starting...
[info] Checking for update
[info] Found version 21.6.9 (url: @cloudreign/app-setup-21.6.9.exe)
[info] update-available
[info] Downloading update from @cloudapp/app-setup-21.6.9.exe
[error] Error: Error: Cannot find asset "app-setup-21.6.9.exe" in: https://api.github.com/repos/<OWNER>/<REPO>/releases/assets/48643890"
【问题讨论】:
【参考方案1】:在我的情况下,我的 package.json
文件中有一个 productName
密钥,其名称与 github 存储库不同。当我将其更改为与 GitHub 存储库相同的名称时,它起作用了。
【讨论】:
【参考方案2】:autoUpdater.on('update-available', () =>
log.info("update-available");
autoUpdater.downloadUpdate() ;
);
您需要添加 autoUpdater.downloadUpdate() ;下载更新。
【讨论】:
以上是关于Electron-updater自升级方案总结的主要内容,如果未能解决你的问题,请参考以下文章
Electron autoUpdate 应用程序使用 electron-updater 和 github 私有 repo
electron-updater实现electron应用程序更新
使用electron-packager electron-builder electron-updater 打包vue项目,支持在线更新