From 0bc8e9d9d76bb93207dc609c19f01094c0e091f3 Mon Sep 17 00:00:00 2001 From: argszero Date: Wed, 5 Aug 2026 02:02:35 +0800 Subject: [PATCH] =?UTF-8?q?emrg:=20build-release=20=E5=8D=81=E4=BA=94?= =?UTF-8?q?=E6=AC=A1=E4=BF=AE=E5=A4=8D=20=E2=80=94=20Inno=20=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=20cygpath=20=E8=BD=AC=20Windows=EF=BC=88rant=20#13?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 第 15 次实跑:3/4 平台成功(Windows build-runtime + bundle-git-gh 已通过), 新失败在 Inno 编译:emrg.iss 第 16 行 The system cannot find the path specified。 根因:iscc 是 Windows 原生程序,读不懂 Git Bash POSIX 路径。 .iss 中 OutputDir=/artifacts、SetupIconFile=/.../icon.ico、 Source="/payload\*" 均为 /d/a/emrg/emrg/... POSIX 形式 → iscc 找不到路径 → 编译失败(常量关已过,路径关没过)。 修复:Windows 段用 cygpath -m 将 ROOT/DIST/STAGE 转 Windows 路径 (正斜杠形式 D:/a/emrg/emrg,iscc 可读);cygpath 仅 Git Bash 有, 无则兜底保持原样。STAGE 在转换前创建(顺序修正)。 验证: - bash -n OK - 转换逻辑分支验证(有/无 cygpath 双路径) - pytest 464 passed;import checks OK --- packaging/make-installer.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packaging/make-installer.sh b/packaging/make-installer.sh index a5b09789..45632167 100755 --- a/packaging/make-installer.sh +++ b/packaging/make-installer.sh @@ -132,6 +132,15 @@ EOF fi # 组装 Inno payload:runtime + GUI → staging(Inno 安装到 %USERPROFILE%\.emrg\install) STAGE="$(mktemp -d)" + # R98:iscc 是 Windows 原生程序,读不懂 Git Bash POSIX 路径(/d/a/emrg/...) + # → cygpath -m 转 Windows 路径(正斜杠,iscc 可读;cygpath 仅 Git Bash 有,兜底保持原样) + if command -v cygpath >/dev/null 2>&1; then + ROOT_WIN="$(cygpath -m "$ROOT")" + DIST_WIN="$(cygpath -m "$DIST")" + STAGE_WIN="$(cygpath -m "$STAGE")" + else + ROOT_WIN="$ROOT"; DIST_WIN="$DIST"; STAGE_WIN="$STAGE" + fi mkdir -p "$STAGE/payload" cp -R "$RUNTIME/." "$STAGE/payload/" mkdir -p "$STAGE/payload/emrg-gui" @@ -150,14 +159,14 @@ DefaultDirName={%USERPROFILE}\\.emrg\\install PrivilegesRequired=lowest PrivilegesRequiredOverridesAllowed=dialog DisableProgramGroupPage=yes -OutputDir=$DIST/artifacts +OutputDir=$DIST_WIN/artifacts OutputBaseFilename=EMRG-$VERSION-windows-x64 -SetupIconFile=$ROOT/packaging/assets/icon.ico +SetupIconFile=$ROOT_WIN/packaging/assets/icon.ico UninstallDisplayIcon={app}\\bin\\emrg.cmd Compression=lzma2 SolidCompression=yes [Files] -Source: "$STAGE/payload\\*"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs ignoreversion +Source: "$STAGE_WIN/payload\\*"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs ignoreversion [Icons] Name: "{userprograms}\\EMRG"; Filename: "{app}\\emrg-gui\\EMRG\\EMRG.exe"; IconFilename: "{app}\\emrg-gui\\EMRG\\EMRG.exe" Name: "{userdesktop}\\EMRG"; Filename: "{app}\\emrg-gui\\EMRG\\EMRG.exe"; IconFilename: "{app}\\emrg-gui\\EMRG\\EMRG.exe"; Tasks: desktopicon