docs/archives/118-desktop-auto-update-system/experience.md
项目: 桌面端应用发布与智能更新系统
技术栈: Electron + Vue 3 + electron-updater
app.getPath('userData')而非便携模式,确保更新兼容性click_by_text比CSS选择器更可靠app.getPath('userData')而非便携模式,确保更新兼容性click_by_text比CSS选择器更可靠这些经验总结为未来类似项目提供了宝贵的参考,特别是在进行复杂系统重构时,可以帮助避免常见陷阱,提高开发效率和代码质量。
问题: 开发环境显示"已是最新版本"同时显示"No stable version available" 根本原因: 前端只在catch块中处理开发环境,但主进程返回的是成功响应 解决方案: 在成功响应中也检查开发环境标识,避免状态覆盖 经验: 开发环境是正常的成功响应,只是没有版本信息,需要特殊处理
问题: 界面中出现重复的按钮和功能 根本原因: 在迭代开发中没有及时清理旧代码 解决方案: 建立UI组件清理检查清单,定期审查重复功能 经验: 快速迭代时要特别注意代码清理,避免功能重复
问题: 链接能正常打开但报错"Open URL failed: undefined" 根本原因: electron API返回格式在不同版本中不一致 解决方案: 只在确实失败时记录错误,兼容不同返回格式 经验: 跨版本兼容性需要考虑API返回格式的变化
问题: electron-updater版本与Electron版本不兼容 根本原因: 依赖版本管理不当,没有及时更新 解决方案: 建立依赖版本兼容性检查机制 经验: 主要依赖的版本更新需要同步检查相关依赖的兼容性
问题: 预览版切换逻辑复杂,用户体验不佳 根本原因: 试图在一个界面中处理多种模式 解决方案: 简化为双版本同时显示,让用户自主选择 经验: 复杂的模式切换不如直观的并列显示
问题: 版本比较逻辑在特殊情况下出错 根本原因: 没有考虑预发布版本的特殊格式 解决方案: 使用标准的semver库进行版本比较 经验: 版本比较看似简单,实际有很多边界情况需要考虑