Appearance
electron 应用程序更新
bash
npm install electron-updater --savenpm install electron-updater --save在主进程 main.js 文件
js
import { app, dialog, BrowserWindow } from 'electron';
import { autoUpdater } from 'electron-updater';
let mainWindow;
const createWindow = () => {
mainWindow = new BrowserWindow({
width: 1080,
height: 720,
...
})
}
const checkAppVersionUpdate = () => {
// 应用退出后自动安装
autoUpdater.autoInstallOnAppQuit = true;
// 自动下载
autoUpdater.autoDownload = true;
// 检测是否有更新包并通知
autoUpdater.checkForUpdatesAndNotify().catch();
// 下载进度
autoUpdater.on('download-progress', (prog) => {
mainWindow.webContents.send('app-update-version', {
speed: Math.ceil(prog.bytesPerSecond / 1000), // 网速
percent: Math.ceil(prog.percent) // 百分比
})
})
// 安装最新版本
autoUpdater.on('update-downloaded', (info) => {
let dialogOpts = {
type: 'info',
buttons: ['重新启动', '取消'],
title: '应用程序更新',
message: '已下载新版本。重新启动应用程序以安装最新版本',
detail: info.releaseNotes
}
dialog.showMessageBox(dialogOpts).then(result => {
if(result.response == 0) autoUpdater.quitAndInstall();
})
})
}
app.whenReady().then(() => {
createWindow();
setTimeout(() => checkAppVersionUpdate(), 1000);
})import { app, dialog, BrowserWindow } from 'electron';
import { autoUpdater } from 'electron-updater';
let mainWindow;
const createWindow = () => {
mainWindow = new BrowserWindow({
width: 1080,
height: 720,
...
})
}
const checkAppVersionUpdate = () => {
// 应用退出后自动安装
autoUpdater.autoInstallOnAppQuit = true;
// 自动下载
autoUpdater.autoDownload = true;
// 检测是否有更新包并通知
autoUpdater.checkForUpdatesAndNotify().catch();
// 下载进度
autoUpdater.on('download-progress', (prog) => {
mainWindow.webContents.send('app-update-version', {
speed: Math.ceil(prog.bytesPerSecond / 1000), // 网速
percent: Math.ceil(prog.percent) // 百分比
})
})
// 安装最新版本
autoUpdater.on('update-downloaded', (info) => {
let dialogOpts = {
type: 'info',
buttons: ['重新启动', '取消'],
title: '应用程序更新',
message: '已下载新版本。重新启动应用程序以安装最新版本',
detail: info.releaseNotes
}
dialog.showMessageBox(dialogOpts).then(result => {
if(result.response == 0) autoUpdater.quitAndInstall();
})
})
}
app.whenReady().then(() => {
createWindow();
setTimeout(() => checkAppVersionUpdate(), 1000);
})
小洛的前端技术博客