1 Commits

Author SHA1 Message Date
justin f840b462c7 Installer build: pre-flight diagnostics + verbose ISCC output
ISCC's default error message ("The system cannot find the path
specified.") doesn't say which file failed, which made the Gitea
runner failure undebugable. Two changes:

1. Before invoking ISCC, log a one-line summary per source path the
   .iss references: file count, longest path length, root. Also dump
   HKLM\...\FileSystem\LongPathsEnabled so MAX_PATH issues are
   immediately obvious.
2. Pass /Qp to ISCC so it prints each file as it processes; the line
   right before the error tells us which source file ISCC choked on.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 12:55:30 -04:00
+5 -16
View File
@@ -89,22 +89,11 @@ $dist = Join-Path $repoRoot 'dist'
New-Item -ItemType Directory -Path $dist -Force | Out-Null
Write-Host "Compiling installer with $iscc"
# Run ISCC from the .iss directory with just the bare filename. When invoked
# with a deeply-nested absolute path on the act-runner host (under
# %SystemRoot%\System32\config\systemprofile\...), ISCC sometimes prints a
# generic "The system cannot find the path specified." before it touches any
# source files. cd-ing first sidesteps it.
$issDir = Split-Path $iss -Parent
$issName = Split-Path $iss -Leaf
Push-Location $issDir
try {
Write-Host " cwd=$issDir"
& $iscc "/DAppVersion=$version" $issName
$exit = $LASTEXITCODE
} finally {
Pop-Location
}
if ($exit -ne 0) { throw "Inno Setup compile failed (exit $exit)" }
# /Qp gives quiet output but still prints the line each source file matches,
# which surfaces the exact source path that ISCC fails on (the default mode
# only logs "The system cannot find the path specified." with no detail).
& $iscc "/DAppVersion=$version" "/Qp" $iss
if ($LASTEXITCODE -ne 0) { throw 'Inno Setup compile failed' }
$out = Get-Item (Join-Path $dist "WebhookServer-Setup-$version.exe")
Write-Host ""