1- // @ts -ignore - electron-updater types will be available after pnpm install
2- import { autoUpdater } from 'electron-updater' ;
1+ import { autoUpdater , UpdateInfo as ElectronUpdateInfo } from 'electron-updater' ;
32import { BrowserWindow , ipcMain , app } from 'electron' ;
43
5- // 类型定义
6- interface UpdateInfo {
4+ // 简化的更新信息类型(用于 IPC 传输)
5+ interface SimpleUpdateInfo {
76 version : string ;
87 releaseNotes ?: string ;
98 releaseDate ?: string ;
@@ -16,6 +15,21 @@ interface ProgressInfo {
1615 transferred : number ;
1716}
1817
18+ // 从 electron-updater 的 UpdateInfo 转换为简化格式
19+ function toSimpleInfo ( info : ElectronUpdateInfo ) : SimpleUpdateInfo {
20+ let releaseNotes = '' ;
21+ if ( typeof info . releaseNotes === 'string' ) {
22+ releaseNotes = info . releaseNotes ;
23+ } else if ( Array . isArray ( info . releaseNotes ) ) {
24+ releaseNotes = info . releaseNotes . map ( n => n . note || '' ) . join ( '\n' ) ;
25+ }
26+ return {
27+ version : info . version ,
28+ releaseNotes,
29+ releaseDate : info . releaseDate ,
30+ } ;
31+ }
32+
1933// 禁用自动下载,让用户选择
2034autoUpdater . autoDownload = false ;
2135autoUpdater . autoInstallOnAppQuit = true ;
@@ -24,7 +38,7 @@ let mainWindow: BrowserWindow | null = null;
2438
2539export interface UpdateStatus {
2640 status : 'checking' | 'available' | 'not-available' | 'downloading' | 'downloaded' | 'error' ;
27- info ?: UpdateInfo ;
41+ info ?: SimpleUpdateInfo ;
2842 progress ?: ProgressInfo ;
2943 error ?: string ;
3044}
@@ -48,20 +62,20 @@ export function initUpdater(win: BrowserWindow) {
4862 } ) ;
4963
5064 // 有可用更新
51- autoUpdater . on ( 'update-available' , ( info : UpdateInfo ) => {
65+ autoUpdater . on ( 'update-available' , ( info ) => {
5266 console . info ( 'Update available:' , info . version ) ;
5367 sendStatusToWindow ( {
5468 status : 'available' ,
55- info,
69+ info : toSimpleInfo ( info ) ,
5670 } ) ;
5771 } ) ;
5872
5973 // 没有可用更新
60- autoUpdater . on ( 'update-not-available' , ( info : UpdateInfo ) => {
74+ autoUpdater . on ( 'update-not-available' , ( info ) => {
6175 console . info ( 'Update not available, current version is latest' ) ;
6276 sendStatusToWindow ( {
6377 status : 'not-available' ,
64- info,
78+ info : toSimpleInfo ( info ) ,
6579 } ) ;
6680 } ) ;
6781
@@ -75,11 +89,11 @@ export function initUpdater(win: BrowserWindow) {
7589 } ) ;
7690
7791 // 下载完成
78- autoUpdater . on ( 'update-downloaded' , ( info : UpdateInfo ) => {
92+ autoUpdater . on ( 'update-downloaded' , ( info ) => {
7993 console . info ( 'Update downloaded:' , info . version ) ;
8094 sendStatusToWindow ( {
8195 status : 'downloaded' ,
82- info,
96+ info : toSimpleInfo ( info ) ,
8397 } ) ;
8498 } ) ;
8599}
0 commit comments