优化重启逻辑
This commit is contained in:
@@ -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: '退出登录',
|
||||
|
||||
Reference in New Issue
Block a user