Skip to content

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 03:58
· 29 commits to main since this release

WinTray 2.0 带来了全新的启动任务调度、窗口处理和控制台程序托盘托管能力,进一步提升复杂开机自启场景下的稳定性与可控性。

主要更新

错峰启动

  • 按受管程序列表顺序依次启动程序。
  • 默认启动间隔为 3 秒,可在全局设置中调整为 0–120 秒。
  • 已暂停、已运行、校验失败或启动失败的程序不会额外占用启动间隔。
  • 窗口检测、关闭延迟和外部自启等待均在后台并行执行,不会阻塞后续程序启动。
  • “立即启动”不受错峰启动间隔影响。
  • 仅对 WinTray 实际启动的程序进行错峰,不会修改 Windows 或其他程序已有的自启动配置。

外部自启动检测

  • 自动检测直接指向目标程序的 Windows Run 注册表自启项。
  • 支持检测 HKCU、HKLM 以及 32 位注册表项。
  • 尊重任务管理器中的自启动禁用状态。
  • 检测到程序由系统自启动时,WinTray 会等待现有实例,而不是再次启动,避免重复运行。
  • 等待超时后不会强制补启动,并会在日志中记录原因。

单程序关闭延迟

  • 每个受管程序可单独设置关闭延迟,范围为 0–600 秒。
  • 延迟从目标进程创建时开始计算。
  • 同时适用于 WinTray 启动的程序,以及程序自身开机自启动的实例。
  • 适合处理先显示登录窗口、启动窗口或更新窗口的程序。
  • 例如新版 QQ 可以等待登录完成后,再处理主面板,避免关闭登录窗口导致 QQ 退出。

控制台程序托盘托管

  • 自动识别控制台类型的 .exe 程序。
  • 对 syncthing.exe、frpc.exe 等没有原生托盘图标的程序,隐藏控制台窗口并由 WinTray 提供托盘图标。
  • 支持通过托盘菜单显示或隐藏程序窗口、结束托盘托管但保持程序运行,以及退出程序。
  • 所有托管图标由 WinTray 主进程统一管理。
  • 开启“任务完成后自动退出”时,只要仍有托管程序,WinTray 会隐藏设置窗口和自身图标并继续后台运行;最后一个托管结束后才退出。
  • 手动退出 WinTray 时,会先恢复被隐藏的程序窗口。

UI 与交互改进

  • 重构 Windows 原生 UI 布局。
  • 简化主窗口结构,优化程序列表和设置项排列。
  • 优化中文文案并统一功能术语。
  • 更新界面预览图和项目说明文档。
  • 自动退出模式下重新运行 WinTray,可打开已有实例的设置窗口,不会创建重复进程。

稳定性改进

  • 修复进程匹配、窗口匹配和启动恢复过程中的竞态条件。
  • 改进控制台窗口识别和托盘托管流程。
  • 修复托盘托管进程退出、窗口恢复及自动退出相关问题。
  • 改进日志文件的并发写入、文件锁和日志轮转处理。
  • 修复多进程同时写日志时可能出现的冲突。
  • 增强单实例、IPC 激活、启动队列和退出流程的可靠性。
  • 增加启动策略、窗口匹配、托盘托管、日志并发和恢复流程的测试覆盖。

配置兼容性

  • 旧版本配置可以继续使用。
  • 缺少 startupIntervalSeconds 的旧配置会自动使用默认值 3 秒。
  • 新增的关闭延迟默认关闭,不会改变已有程序的窗口处理行为。

版本对比

查看 v1.1.1 到 v2.0.0 的完整变更