Skip to content

fix(映射整理): 退出前还原隐藏项 + 启动恢复 + 隐藏属性不随文件外泄 - #10

Draft
GOXF wants to merge 1 commit into
feat/one-click-organizefrom
fix/mapped-hidden-restore
Draft

GOXF wants to merge 1 commit into
feat/one-click-organizefrom
fix/mapped-hidden-restore

Conversation

@GOXF

@GOXF GOXF commented Nov 8, 2026

Copy link
Copy Markdown
Owner

基于 #9(feat/one-click-organize)。

退出路径

  • 托盘退出 / 重启 / 应用内更新 / 开发版「更新并重启」:ShutdownApplicationAsync 第一步同步还原(在任何有超时的关闭步骤之前),关闭步骤里再执行一次(幂等)。
  • Windows 关机 / 重启 / 注销、安装器 Restart Manager:托盘窗口的 WM_QUERYENDSESSION / WM_ENDSESSION → FlushSettingsForEndSession 先还原;会话结束被其它程序取消(WM_ENDSESSION FALSE)则重新隐藏。
  • Environment.Exit:ProcessExit;后台线程崩溃:AppDomain.UnhandledException(尽力)。
  • 强制结束:无法拦截 → fork-dev-update.ps1 强杀后按记录还原;下次启动 mapped-organize-recovery 在恢复部件前全部还原并记日志,再按映射重新隐藏。

其它

  • 整理扫描把 DeskBox 隐藏的项(在记录里)当普通桌面项,不再「本次无法整理」。
  • 隐藏项离开桌面(移到别的文件夹、剪切粘贴、从映射格子拖出、删除到回收站):用隐藏时记下的 NTFS 文件 ID 找到新位置,清除隐藏属性并移出记录。未覆盖:复制、跨盘移动。
  • 研究记录(整图标层隐藏方案)写在 docs/architecture/mapped-organize.md。
  • 单元测试:ForkHiddenRestoreTests。

- 所有退出路径先同步还原:托盘退出/重启/更新(ShutdownApplicationAsync 第一步)、
  WM_QUERYENDSESSION/WM_ENDSESSION(关机、重启、注销、安装器 Restart Manager),
  会话结束被取消时重新隐藏;ProcessExit;后台线程崩溃(尽力)
- 启动恢复:恢复部件前先把记录里的隐藏项全部还原并记日志,之后再按映射隐藏
- 整理扫描把 DeskBox 隐藏的项当普通桌面项(不再「本次无法整理」)
- 隐藏项被移到别的文件夹/回收站:按 NTFS 文件 ID 找到新位置并清除隐藏属性
- fork-dev-update.ps1 强制结束后按记录还原
- 单元测试 ForkHiddenRestoreTests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant