Skip to content

electron 应用程序更新

bash
npm install electron-updater --save
npm 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);
})

程序员小洛文档