From e5e077c14c8d8c29d8bd5e10044df8c38b2b88c0 Mon Sep 17 00:00:00 2001 From: argszero Date: Wed, 5 Aug 2026 01:53:44 +0800 Subject: [PATCH] =?UTF-8?q?emrg:=20build-release=20=E5=8D=81=E5=9B=9B?= =?UTF-8?q?=E6=AC=A1=E4=BF=AE=E5=A4=8D=20=E2=80=94=20Inno=20{userhome}=20?= =?UTF-8?q?=E6=94=B9=20{%USERPROFILE}=EF=BC=88rant=20#13=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 第 14 次实跑:3/4 平台成功(Windows build-runtime + bundle-git-gh 已通过), 新失败在 make-installer.sh Inno Setup 编译: `emrg.iss 第 10 行: Unknown constant "userhome"` → Compile aborted exit 2。 根因:DefaultDirName={userhome} 需 Inno Setup 6.1+(2022 年引入), windows-2025 runner 的 iscc 版本较旧(5.x)不识 {userhome} 常量。 注释里写了 fallback {userdocs}\.. 但代码未实现。 修复:改用 {%USERPROFILE}——所有 Inno 版本支持的环境变量常量, 展开为安装用户主目录,且与 [Registry] 段的 %USERPROFILE%\.emrg\install 一致。 heredoc 中 {%USERPROFILE} 无 $,不会误展开。 验证: - bash -n OK - .iss 生成逻辑复核:{%USERPROFILE} 无转义问题,{userprograms}/{userdesktop}/{app} 均 Inno 5 标准常量 - pytest 464 passed;import checks OK --- packaging/make-installer.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packaging/make-installer.sh b/packaging/make-installer.sh index 206db4df..a5b09789 100755 --- a/packaging/make-installer.sh +++ b/packaging/make-installer.sh @@ -5,7 +5,7 @@ # (R104: runtime → ~/.emrg/install/ + GUI EMRG.app → ~/Applications/) # R67: postinstall $HOME 陷阱(提权时取控制台用户真实 HOME) # R105: root 复制后 chown 回用户 -# Windows: Inno Setup(R55 免 UAC;R87 {userhome} Inno 6.1+ fallback) +# Windows: Inno Setup(R55 免 UAC;R97 {%USERPROFILE} 替代 {userhome}——旧版 iscc 不识) # GUI win-unpacked → install/emrg-gui/(R97) # Linux: AppImage(自解压归 GUI main.js §5)+ tar.gz 兜底(R83d 冒烟用) # @@ -130,7 +130,7 @@ EOF echo "!! win-unpacked not found (run: cd emrg/gui && npm run dist first)" >&2 exit 1 fi - # 组装 Inno payload:runtime + GUI → staging(Inno 安装到 {userhome}\.emrg\install) + # 组装 Inno payload:runtime + GUI → staging(Inno 安装到 %USERPROFILE%\.emrg\install) STAGE="$(mktemp -d)" mkdir -p "$STAGE/payload" cp -R "$RUNTIME/." "$STAGE/payload/" @@ -138,7 +138,7 @@ EOF cp -R "$WIN_UNPACKED" "$STAGE/payload/emrg-gui/EMRG" cat > "$STAGE/emrg.iss" <