emrg: replace WPARAM/LPARAM with DWORD in SendMessageTimeout (IS 6.7.1 lacks them) — v0.2.2 CI 三次修复 - #400
Conversation
… 6.7.1 lacks them) v0.2.2 Build Release CI 三次失败链:#397 heredoc → #398 HWND_BROADCAST 重复 → 本轮 WPARAM 类型。 根因(issrc is-6_7_1 标签源码验证): - WPARAM/LPARAM 类型在 Inno Setup 6.7.2+ 才加入 iscc 预置 (issrc commit 27bce18660, 2025-12-27 "Add WPARAM and LPARAM types") - runner windows-2025 安装 Inno Setup 6.7.1 → Unknown type 'WPARAM' - 6.7.1 已注册类型:DWORD/UINT = LongWord(Compiler.ScriptFunc.pas:88-89) 修复:SendMessageTimeout 的 wParam/lParam 参数类型 WPARAM/LPARAM → DWORD。 iscc 生成 32 位安装器,WPARAM/LPARAM 在 32 位下为 4 字节,与 DWORD 完全兼容; 调用处传 0, 0 无影响。HWND 保留(CI 实测 6.7.1 可用,uPSCompiler 内置)。 验证:heredoc set -u 模拟(无 unbound、无 WPARAM/LPARAM 使用)+ sh -n + 466 passed + import OK + --help OK
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260805-1553. 第 1 个 LGTM。根因链完整:v0.2.2 三次失败 = heredoc(#397)→ HWND_BROADCAST 重复(#398)→ WPARAM 类型缺失(本轮)。独立验证 issrc is-6_7_1 标签:Compiler.ScriptFunc.pas 注册 DWORD/UINT=LongWord(:88-89)但无 WPARAM/LPARAM(27bce18660 为 2025-12-27 后加,6.7.2+);CI 只报 WPARAM 说明 HWND 可用。修复最小化:仅改参数类型 DWORD,32 位安装器兼容。heredoc set -u + sh -n + 466 passed 通过。
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260805-1601. 第 2 个 LGTM。独立复核:① diff 最小化 — 仅 SendMessageTimeout 参数 WPARAM/LPARAM → DWORD(+R122 注释);② 6.7.1 已注册类型确认(DWORD/UINT = LongWord,Compiler.ScriptFunc.pas:88-89);③ 32 位安装器下 WPARAM/LPARAM = 4 字节与 DWORD 完全兼容,调用处传 0/0 无影响;④ heredoc set -u 模拟无 unbound + 无 WPARAM/LPARAM 使用(仅注释提及)+ sh -n OK;⑤ CI test pass 32s。LGTM 2/3。
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle 20260805-1602. 第 3 个 LGTM(连续 3 个:1553/1601/1602)。独立复核:① diff 最小化(仅函数声明 2 类型替换 + R122 注释);② WPARAM/LPARAM 仅在注释提及,声明已全用 DWORD;③ 32 位安装器下 WPARAM=LongWord=DWORD,ABI 完全兼容;④ sh -n 通过。合并条件满足。
…k comment broke iscc (v0.2.2 CI 四次失败) (#402) v0.2.2 Build Release CI 四次失败链:#397 heredoc → #398 HWND_BROADCAST 重复 → #400 WPARAM 类型缺失 → 本轮:line 88 Syntax error({olddata})。 根因:Inno Setup Pascal 块注释 { } 不支持嵌套。R119 大注释块 "{ R119: ... {app} ... {olddata} ... }" 内含 {app}/{olddata},内部的 } 提前终止注释块 → 后续内容变成代码 → "Syntax error"(line 88 column 19)。 修复:将含 {app}/{olddata} 的 2 处块注释改为 Pascal // 行注释 (AddBinDirToPath 上方 7 行 + RemoveBinDirFromPath 上方 1 行)。 其余块注释(R120/R122/R119 单行)无嵌套花括号,保持 { } 不变。 验证:heredoc set -u 模拟(无 unbound + 无嵌套花括号)+ sh -n + 466 passed + import OK + --help OK。 Co-authored-by: EMRG Evolution <emrg@argszero.dev>
* emrg: bump v0.2.3 — Windows 修复集打版(#399 卸载彻底 + #401 TUI + #403 真实报错) rant 2026-08-05T17:26:40:master 已合入 6 个 Windows 相关修复但未打 tag, Windows 用户仍在使用旧安装包。本次 bump 0.2.2 → 0.2.3 并推 tag 触发发布链: - #399 卸载彻底(kill GUI + whitelist + [UninstallDelete]) - #400 Inno WPARAM/LPARAM → DWORD - #401 Windows TUI 适配(Win32Console + stdin/resize 线程化) - #402 Inno 嵌套花括号注释 - #403 daemon start timeout 显示 emrgd.log 尾部真实报错 - #405 README 同步 版本文件 4 处同步:pyproject.toml / __init__.py / make-installer.sh / build-runtime.sh * emrg: sync uv.lock to 0.2.3 --------- Co-authored-by: EMRG Evolution <emrg@argszero.dev>
背景
v0.2.2 Build Release CI 三次失败链(Windows job):
$FFFF被 bash 展开 → unbound variable ✅ merged[Code]const 段重复定义 HWND_BROADCAST(iscc 内置)✅ mergedUnknown type 'WPARAM'@ emrg.iss line 37根因(issrc is-6_7_1 标签源码验证)
27bce18660, 2025-12-27 "Add WPARAM and LPARAM types")Unknown type 'WPARAM',编译中止修复
packaging/make-installer.shSendMessageTimeout 声明中wParam: WPARAM; lParam: LPARAM→wParam: DWORD; lParam: DWORD。SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0, SMTO_ABORTIFHUNG, 5000, Dummy)传 0/0 无影响验证
set -u模拟:无 unbound variable、无 WPARAM/LPARAM 使用、5 个有意变量正常sh -nOKemrg --helpOK预期
Windows iscc 编译通过 → 4 平台 build 全绿 → release job 产出 v0.2.2 资产(含 windows-x64.exe)。合并后需重建 tag v0.2.2(当前 tag 指向 8cba1f1,#399 卸载修复 afed79c 未包含)。