mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-15 12:15:16 +00:00
## 现象
本机 HKCU\...\Run 里同时存在两条指向**同一个 exe** 的自启动项:
electron.app.HomeAgent = "E:\program\homeagent\...\homeagent-gui.exe"
electron.app.homeagent-gui = E:\program\homeagent\...\homeagent-gui.exe
表面看是两个自启动,实际是同一份程序的重复 ⇒ 开机启动两次。
## 根因
Electron 的 app.setLoginItemSettings() 用「electron.app.<exe 名>」作为
注册表项名。本产物改过名(HomeAgent.exe → homeagent-gui.exe),于是写入
新项,而旧项 Electron 不会清理 ⇒ 每改一次名就多留一条。
原 applyAutoLaunch 既不去重、也不清理历史项。
## 修法
新增 cleanupStaleLoginItems():
· 只删「指向当前 process.execPath」的 electron.app.* 项 —— 不误伤别的
Electron 应用(本机还有 electron.app.TencentDocs 同为该前缀)
· 保留当前 exe 名对应的那条(Electron 期望的名字)
· 在 app.whenReady() 里也跑一次:否则旧项要等用户手动开关自启才被清
## 实测(非静态检查)
人为再造一条 electron.app.HomeAgent 指向同一 exe,启动 GUI 后:
启动前 2 条 → 启动后 1 条
日志: [autolaunch] removed stale login item: electron.app.HomeAgent
判据未改动,npm test 131 条全绿。