优化重启逻辑

This commit is contained in:
2025-07-18 18:27:37 +08:00
parent 6fe479448c
commit f667c26650
42 changed files with 362 additions and 1370 deletions

View File

@@ -13,6 +13,62 @@ let tray = null
import {checkForUpdates} from "./utils/updateUtils"
// 安全重启应用函数
function safeRestartApp() {
return new Promise((resolve) => {
try {
logger.info('开始安全重启应用')
// 标记为正在重启,避免其他退出逻辑干扰
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)
resolve(true)
} catch (error) {
logger.error('重启应用失败,尝试强制退出:', error)
try {
app.quit()
} catch (quitError) {
logger.error('强制退出也失败:', quitError)
process.exit(0)
}
resolve(false)
}
}, 1000) // 增加延迟时间到1秒
} catch (error) {
logger.error('安全重启失败:', error)
try {
app.quit()
} catch (quitError) {
logger.error('强制退出失败:', quitError)
process.exit(0)
}
resolve(false)
}
})
}
export async function clearBrowserCache() {
try {
// 使用统一的缓存清理函数
@@ -100,31 +156,7 @@ export function createTray() {
}
},
{ type: 'separator' },
{
label: '清除缓存',
click: async () => {
await clearBrowserCache()
// 删除配置文件
try {
const userDataPath = app.getPath('userData')
const configPath = join(userDataPath, 'config.json')
if (fs.existsSync(configPath)) {
fs.unlinkSync(configPath)
logger.info('配置文件删除成功')
}
} catch (error) {
logger.error('删除配置文件失败:', error)
}
// 重新加载所有窗口
const windows = BrowserWindow.getAllWindows()
for (const window of windows) {
window.reload()
}
}
},
{ type: 'separator' },
{
label: '退出登录',