This commit is contained in:
chenqiang 2025-09-09 21:58:00 +08:00
parent 7f90027647
commit 561ed85294
2 changed files with 147 additions and 179 deletions

View File

@ -40,7 +40,7 @@ if (isDev) {
dataDir = path.join(appDir, 'data'); dataDir = path.join(appDir, 'data');
} else { } else {
// 非便携模式数据存储在应用同级的data目录 // 非便携模式数据存储在应用同级的data目录
dataDir = path.join(appDir, 'data'); dataDir = path.join(path.dirname(appDir), 'data');
} }
// 确保数据目录存在 // 确保数据目录存在

View File

@ -41,40 +41,26 @@ protocol.registerSchemesAsPrivileged([
let mainWindow = null; let mainWindow = null;
async function createWindow() { async function createWindow() {
try {
// Create the browser window. // Create the browser window.
mainWindow = new BrowserWindow({ mainWindow = new BrowserWindow({
width: 800, width: 800, // 默认宽度(实际会被最大化覆盖)
height: 600, height: 600, // 默认高度(实际会被最大化覆盖)
show: true, // 直接显示窗口,避免隐藏后显示可能导致的问题 show: false, // 先隐藏窗口,避免闪烁
webPreferences: { webPreferences: {
// 修复preload路径使用更可靠的解析方式 // 改为使用绝对路径解析
preload: path.join(__dirname, '..', 'src', 'preload.js'), preload: require("path").join(process.cwd(), "src/preload.js"),
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
} },
}); });
// 设置隐藏菜单栏 // 设置隐藏菜单栏
mainWindow.setMenu(null); mainWindow.setMenu(null);
// 设置窗口最大化(放在窗口创建后,确保窗口已经初始化) // 在窗口显示前设置最大化
try {
mainWindow.maximize(); mainWindow.maximize();
} catch (error) { // 然后显示窗口
console.warn('窗口最大化失败:', error); mainWindow.show();
}
// 加载URL
if (process.env.WEBPACK_DEV_SERVER_URL) {
// Load the url of the dev server if in development mode
await mainWindow.loadURL(process.env.WEBPACK_DEV_SERVER_URL);
if (!process.env.IS_TEST) mainWindow.webContents.openDevTools();
} else {
createProtocol("app");
// Load the index.html when not in development
mainWindow.loadURL("app://./index.html");
}
// 添加窗口关闭事件监听 // 添加窗口关闭事件监听
mainWindow.on("close", (event) => { mainWindow.on("close", (event) => {
@ -118,20 +104,14 @@ async function createWindow() {
} }
}); });
// 添加错误监听 if (process.env.WEBPACK_DEV_SERVER_URL) {
mainWindow.webContents.on('did-fail-load', (event, errorCode, errorDescription) => { // Load the url of the dev server if in development mode
console.error(`页面加载失败: ${errorCode} - ${errorDescription}`); await mainWindow.loadURL(process.env.WEBPACK_DEV_SERVER_URL);
}); if (!process.env.IS_TEST) mainWindow.webContents.openDevTools();
} else {
// 添加崩溃监听 createProtocol("app");
mainWindow.webContents.on('crashed', (event, killed) => { // Load the index.html when not in development
console.error(`渲染进程崩溃: killed=${killed}`); mainWindow.loadURL("app://./index.html");
});
} catch (error) {
console.error('创建窗口时出错:', error);
// 如果创建窗口失败,显示错误对话框
dialog.showErrorBox('应用启动失败', `无法创建应用窗口: ${error.message}`);
} }
} }
@ -195,7 +175,6 @@ const sqlite3 = require("sqlite3").verbose();
// 在app.on('ready')事件中添加 // 在app.on('ready')事件中添加
app.on("ready", async () => { app.on("ready", async () => {
try {
// 禁用Vue DevTools扩展 // 禁用Vue DevTools扩展
/* /*
if (isDevelopment && !process.env.IS_TEST) { if (isDevelopment && !process.env.IS_TEST) {
@ -281,18 +260,7 @@ app.on("ready", async () => {
}); });
// 检测是否为便携模式运行 // 检测是否为便携模式运行
try {
const isInitialized = await checkDatabaseInitialized();
console.log(`应用启动 - 数据库状态: ${isInitialized ? '已初始化' : '未初始化'}`);
createWindow(); createWindow();
} catch (error) {
console.error('检查数据库状态时出错:', error);
createWindow();
}
} catch (error) {
console.error('应用初始化失败:', error);
dialog.showErrorBox('应用初始化失败', `无法初始化应用: ${error.message}`);
}
}); });
// Exit cleanly on request from parent process in development mode. // Exit cleanly on request from parent process in development mode.