| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- const fs = require('fs')
- const path = require('path')
- const yaml = require('js-yaml')
- const { app, BrowserWindow, Menu, dialog } = require('electron')
- const { autoUpdater } = require('electron-updater')
- const updateHandle = (win) => {
- if (app.isPackaged) {
- const fileContents = fs.readFileSync('resources/app-update.yml', 'utf-8')
- const data = yaml.load(fileContents)
- if (data.url) {
- autoUpdater.autoDownload = false
- autoUpdater.autoInstallOnAppQuit = false
- autoUpdater.setFeedURL({
- provider: data.provider,
- url: data.url
- })
- // 检查更新出错
- // autoUpdater.on('error', (err) => {
- // dialog.showMessageBox({
- // type: 'error',
- // title: '错误',
- // noLink: true,
- // message: '更新发生错误',
- // detail: err.message
- // })
- // })
- // 检测到有版本更新
- autoUpdater.on('update-available', (e) => {
- dialog.showMessageBox({
- type: 'info',
- title: '提示',
- noLink: true,
- message: e.version,
- detail: '发现新版本,是否现在下载?',
- buttons: ['取消', '下载']
- }).then((res) => {
- if (res.response === 1) {
- autoUpdater.downloadUpdate()
- }
- })
- })
- // 更新下载进度事件
- autoUpdater.on('download-progress', (progress) => {
- // https://www.electronjs.org/zh/docs/latest/tutorial/progress-bar
- win.setProgressBar(progress.percent / 100)
- })
- // 下载完成,询问用户是否更新
- autoUpdater.on('update-downloaded', (e) => {
- dialog.showMessageBox({
- type: 'info',
- title: '提示',
- noLink: true,
- message: e.version,
- detail: '已下载新版本,是否关闭应用更新?',
- buttons: ['取消', '安装']
- }).then((res) => {
- if (res.response === 1) {
- autoUpdater.quitAndInstall()
- } else {
- win.setProgressBar(-1)
- }
- })
- })
- autoUpdater.checkForUpdates()
- }
- }
- }
- const createWindow = () => {
- Menu.setApplicationMenu(null)
- const win = new BrowserWindow({
- show: false,
- center: true,
- width: 1280,
- height: 800,
- minWidth: 480,
- minHeight: 300,
- icon: path.resolve(__dirname, 'dist/favicon.ico')
- })
- win.loadFile(path.resolve(__dirname, 'dist/index.html'))
- win.maximize()
- win.once('ready-to-show', () => {
- win.show()
- updateHandle(win)
- })
- }
- // 阻止应用多开
- const gotTheLock = app.requestSingleInstanceLock()
- if (!gotTheLock) {
- app.quit()
- } else {
- app.whenReady().then(() => {
- createWindow()
- })
- }
|