Skip to content

更新:修复 junction 入口下的自更新和恢复 - #152

Open
jinghero wants to merge 1 commit into
ModAVD:mainfrom
jinghero:codex/issue-195-junction-20261113
Open

jinghero wants to merge 1 commit into
ModAVD:mainfrom
jinghero:codex/issue-195-junction-20261113

Conversation

@jinghero

Copy link
Copy Markdown
Collaborator

真实路径和 junction 两种入口交叉启动时,更新程序现在能认出自身,完成自占用检查、替换及中断后的恢复。目录符号链接和 8.3 短路径也覆盖双向入口。

Windows 路径解析复用现有句柄查询,支持文件和目录。扫描、根目录核验和 SDK 遍历使用最终 DOS 路径,已载入模块仍使用 NT 设备路径。SDK 映像锁原先也会在 junction 上卡住,一并接入解析;按文件身份锁定映像、拒绝 SDK 内重解析点、换包和恢复顺序均保留。其他平台沿用 EvalSymlinks。

验证环境为 Windows amd64、Go 1.26.5,全部使用隔离的文件和测试进程:

  • 原路径解析重放失败,再修复。真实运行的测试程序覆盖自占用豁免、替换、恢复完成和回滚,核对恢复后的 SDK 内容及结果状态。junction、目录符号链接、8.3 短路径均覆盖两个方向。
  • 原生进程扫描覆盖 CLI、GUI、当前及 previous SDK,核对 programs 开关和 bootwatch 根目录归属。另一个根目录的同名程序不会被认成自身,根内其他运行映像仍报忙。
  • junction 根目录完成安装;只读 DLL 经 junction 载入后,模块查询和占用探测均能识别,卸载后解除占用。
  • 重放原路径实现和七项定点破坏,均被断言检出,覆盖目录句柄、自占用豁免、替换、恢复、误豁免其他映像、SDK 解析和模块查询。
  • go test ./... -count=1、最终路径回归、gofmt -l .、Windows go vet ./...、darwin/arm64 和 linux/amd64 交叉 vet、build.ps1 及构建后 CLI version 通过。
  • CI 中的 Node 显示坐标、磁盘和创建取消测试,以及 Python 隐私扫描、仓库检查测试和 trim 测试通过。

未启动真实模拟器、游戏或生产实例,未做桌面手工验收。模块查询继续采用现有尽力检查,无法读取或检查后才出现的占用仍由换包错误和恢复处理。

Refs ModAVD/ModAVD#195

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