|
| 1 | +import pkg from 'electron-updater' |
| 2 | +const { autoUpdater } = pkg |
1 | 3 | import { app, shell, BrowserWindow, ipcMain, Menu } from 'electron' |
2 | 4 | import { join } from 'path' |
3 | 5 | import { electronApp, optimizer, is } from '@electron-toolkit/utils' |
@@ -27,12 +29,32 @@ if (process.platform !== 'darwin') { |
27 | 29 | Menu.setApplicationMenu(null) |
28 | 30 | } |
29 | 31 |
|
| 32 | +let mainWindow: BrowserWindow |
| 33 | + |
| 34 | +export function initAutoUpdater(win: BrowserWindow): void { |
| 35 | + // 開発環境では動かさない |
| 36 | + if (!app.isPackaged) return |
| 37 | + |
| 38 | + autoUpdater.autoDownload = true |
| 39 | + autoUpdater.autoInstallOnAppQuit = true |
| 40 | + |
| 41 | + autoUpdater.on('update-downloaded', (info) => { |
| 42 | + win.webContents.send('update-downloaded', info) |
| 43 | + }) |
| 44 | + |
| 45 | + autoUpdater.on('error', (err) => { |
| 46 | + console.error('AutoUpdater error:', err) |
| 47 | + }) |
| 48 | + |
| 49 | + autoUpdater.checkForUpdates() |
| 50 | +} |
| 51 | + |
30 | 52 | let resizeTimeout: NodeJS.Timeout | null = null |
31 | 53 | let moveTimeout: NodeJS.Timeout | null = null |
32 | 54 |
|
33 | 55 | function createWindow(): void { |
34 | 56 | // Create the browser window. |
35 | | - const mainWindow = new BrowserWindow({ |
| 57 | + mainWindow = new BrowserWindow({ |
36 | 58 | width: store.get('windowWidth') || 800, |
37 | 59 | height: store.get('windowHeight') || 600, |
38 | 60 | x: store.get('windowX'), |
@@ -115,8 +137,14 @@ app.whenReady().then(() => { |
115 | 137 | store.set('themeName', data) |
116 | 138 | }) |
117 | 139 |
|
| 140 | + ipcMain.on('install-update', () => { |
| 141 | + autoUpdater.quitAndInstall() |
| 142 | + }) |
| 143 | + |
118 | 144 | createWindow() |
119 | 145 |
|
| 146 | + initAutoUpdater(mainWindow) |
| 147 | + |
120 | 148 | app.on('activate', function () { |
121 | 149 | // On macOS it's common to re-create a window in the app when the |
122 | 150 | // dock icon is clicked and there are no other windows open. |
|
0 commit comments