This commit is contained in:
2025-09-27 14:05:45 +08:00
parent 89f600fa11
commit fe3e24b945
23 changed files with 474 additions and 261 deletions

View File

@@ -1,4 +1,4 @@
import {app, BrowserWindow, ipcMain, Menu, screen} from 'electron';
import {app, BrowserWindow, ipcMain, Menu, screen, dialog} from 'electron';
import { existsSync, createWriteStream, promises as fs, statSync } from 'fs';
import {join, dirname} from 'path';
import {spawn, ChildProcessWithoutNullStreams} from 'child_process';
@@ -178,7 +178,7 @@ WshShell.Run Chr(34) & "${helperPath.replace(/\\/g, '\\\\')}" & Chr(34) & " " &
});
setTimeout(() => app.quit(), 1000);
} catch (error) {
} catch (error: unknown) {
console.error('[UPDATE] 更新失败:', error);
}
}
@@ -245,7 +245,7 @@ ipcMain.handle('download-update', async (event, downloadUrl: string) => {
isDownloading = false;
return { success: true, filePath: updateFilePath };
} catch (error) {
} catch (error: unknown) {
isDownloading = false;
downloadedFilePath = null;
@@ -304,7 +304,7 @@ WshShell.Run Chr(34) & "${helperPath.replace(/\\/g, '\\\\')}" & Chr(34) & " " &
}, 500);
return { success: true };
} catch (error) {
} catch (error: unknown) {
return { success: false, error: error instanceof Error ? error.message : '重启失败' };
}
});
@@ -321,6 +321,37 @@ ipcMain.handle('get-update-status', () => {
return { downloadedFilePath, isDownloading, downloadProgress, isPackaged: app.isPackaged, isDev };
});
// 添加文件保存对话框处理器
ipcMain.handle('show-save-dialog', async (event, options) => {
if (!mainWindow) {
return { canceled: true };
}
try {
const result = await dialog.showSaveDialog(mainWindow, options);
return result;
} catch (error) {
console.error('文件保存对话框错误:', error);
return { canceled: true, error: error instanceof Error ? error.message : '对话框打开失败' };
}
});
// 添加文件夹选择对话框处理器
ipcMain.handle('show-open-dialog', async (event, options) => {
if (!mainWindow) {
return { canceled: true };
}
try {
const result = await dialog.showOpenDialog(mainWindow, options);
return result;
} catch (error) {
console.error('文件夹选择对话框错误:', error);
return { canceled: true, error: error instanceof Error ? error.message : '对话框打开失败' };
}
});
async function downloadFile(url: string, filePath: string, onProgress: (progress: any) => void): Promise<void> {
return new Promise((resolve, reject) => {
const protocol = url.startsWith('https') ? https : http;