emrg: Windows 安装器 PATH 注册 [Code] 化加固 + 版本 fallback 同步 0.2.1 - #395
Conversation
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260805-1455. 自查确认:① NeedsPath 字面量永不匹配(重复安装 PATH 累积)与自定义目录 PATH 写死两大缺陷被 [Code] 方案正确修复;② ExpandConstant('{app}\bin') 真实路径 + 段边界去重幂等;③ SendMessageTimeoutW lpdwResult 已改 var 引用传递(初版值传递会写坏栈,已修正并 push);④ 版本 fallback 0.2.1 与 master 一致。sh -n + 466 pytest 通过。待 CI windows runner 实测 iscc 编译。
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260805-1459. 审查确认:① PathHasSegment 段边界匹配(';'+Upper+';' 包裹防 C:\Users 误判 c:\users);② PathRemoveSegment 大小写不敏感精确移除;③ AddBinDirToPath 用 ExpandConstant('{app}\bin') 展开真实安装目录(自定义目录正确)+ RegQueryStringValue 缺失时创建;④ 卸载 usPostUninstall 移除 + 广播;⑤ R118 ChangesEnvironment=yes 保留;⑥ 版本 fallback 0.2.1 两文件同步;⑦ 额外 commit 3187426 SendMessageTimeoutW var 传参修栈损坏;⑧ sh -n 双脚本语法通过。LGTM 2/3。
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260805-1457. 审查确认:① [Code] 化改造正确——PathHasSegment 段边界精确匹配(';'+seg+';' 防 C:\Users 与 c:\users 误判)、PathRemoveSegment 保留其余段相对顺序、AddBinDirToPath 用 ExpandConstant('{app}\bin') 展开真实安装目录(修复自定义目录 PATH 错误)+ RegQueryStringValue 缺失时创建(修复 {olddata} 依赖);② 卸载 usPostUninstall 移除 + 广播;③ R118 ChangesEnvironment=yes 保留;④ SendMessageTimeoutW var 传参修复合理;⑤ 版本 fallback 0.2.1 两文件同步;⑥ sh -n 双脚本语法通过。修复了 #394 review 指出的 3 个边缘情况。LGTM 2/3。
Co-authored-by: EMRG Evolution <emrg@argszero.dev>
v0.2.2 已发布(#399 卸载彻底 + #401 Windows TUI + #395 PATH 加固), README 中英双版补充: 1. Windows 安装行:PATH 自动注册 + 原生 TUI(cmd/PowerShell 直接 emrg) 2. 卸载说明:Windows 卸载彻底(kill GUI 防 daemon 复活 + 白名单全量清理 + [UninstallDelete] 兜底删 install/,~/.emrg 无残留) 验证:470 passed + import OK(仅文档改动)。 Co-authored-by: EMRG Evolution <emrg@argszero.dev>
背景
#394 修复了 Windows 安装后 emrg 不在 PATH 的根因(Inno 缺
ChangesEnvironment=yes不广播 WM_SETTINGCHANGE),v0.2.1 已发布。但 #394 review 时提出的边缘情况未处理,本 PR 落地:改动 1:PATH 注册 [Registry] → [Code](packaging/make-installer.sh,R119)
旧实现(R27)缺陷:
%USERPROFILE%\.emrg\install\bin与GetEnv('Path')(已展开为C:\Users\...)比较 → 恒 True → 重复安装 PATH 段累积%USERPROFILE%\...\bin,用户改安装目录后 PATH 指向错误位置新实现 [Code] 显式读写:
ExpandConstant('{app}\bin')展开真实安装目录(自定义目录也正确)ChangesEnvironment=yes(R118)改动 2:版本 fallback 同步 0.2.1
packaging/build-runtime.sh:103version.txt fallback 0.2.0 → 0.2.1packaging/make-installer.sh:27VERSION fallback 0.2.0 → 0.2.1否则 version.txt 生成失败时产出 0.2.0 安装包,与 v0.2.1 发布不一致(rant 验收项 4)。
验证
sh -n两脚本语法通过uv run pytest tests/466 passedemrg --help通过说明
Inno Pascal 无法在 macOS 本地编译,需在 CI windows runner(make-installer.sh windows 分支)实测验证。