优化重启逻辑
This commit is contained in:
@@ -334,4 +334,50 @@ export function setupIPC() {
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
|
||||
// 重启软件
|
||||
ipcMain.handle('restartApp', async (event) => {
|
||||
logger.info("=============================重启软件");
|
||||
try {
|
||||
// 标记为正在重启,避免其他退出逻辑干扰
|
||||
app.isRestarting = true;
|
||||
|
||||
// 确保所有窗口都被正确关闭
|
||||
const windows = BrowserWindow.getAllWindows();
|
||||
logger.info(`准备关闭 ${windows.length} 个窗口`);
|
||||
|
||||
windows.forEach(window => {
|
||||
if (!window.isDestroyed()) {
|
||||
try {
|
||||
window.close();
|
||||
logger.info('窗口关闭成功');
|
||||
} catch (error) {
|
||||
logger.warn('关闭窗口时出错:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 延迟执行重启,确保窗口关闭完成
|
||||
setTimeout(() => {
|
||||
try {
|
||||
logger.info('执行应用重启');
|
||||
app.relaunch();
|
||||
app.exit(0);
|
||||
} catch (error) {
|
||||
logger.error('重启应用失败,尝试强制退出:', error);
|
||||
try {
|
||||
app.quit();
|
||||
} catch (quitError) {
|
||||
logger.error('强制退出也失败:', quitError);
|
||||
process.exit(0);
|
||||
}
|
||||
}
|
||||
}, 1000);
|
||||
|
||||
return { success: true };
|
||||
} catch (error) {
|
||||
logger.error(`重启软件失败: ${error.message}`);
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user