fix(ci): 健壮化 Inno Setup 安装 + 部署仅保留最新安装包
- 新增 install-innosetup.ps1:校验下载大小、检查安装程序退出码、双 Program Files 目录定位 ISCC,修复原内联命令静默成功但没真正装上的问题 (SYSTEM 账户下 Invoke-WebRequest 无 -UseBasicParsing + 未检查退出码) - provision/compile-windows.sh 在两个 Program Files 目录查找 ISCC - deploy.sh 发布安装包到 /opt/jiu/downloads 前先清旧包,仅保留最新版本 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# install-innosetup.ps1 — robust silent install of Inno Setup 6 for the Windows runner.
|
||||
# Idempotent: exits 0 immediately if ISCC.exe is already present.
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
$candidates = @(
|
||||
"${env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe",
|
||||
"$env:ProgramFiles\Inno Setup 6\ISCC.exe"
|
||||
)
|
||||
foreach ($c in $candidates) {
|
||||
if (Test-Path $c) { Write-Output "ISCC already present: $c"; exit 0 }
|
||||
}
|
||||
|
||||
$url = 'https://jrsoftware.org/download.php/is.exe'
|
||||
$out = Join-Path $env:TEMP 'innosetup-installer.exe'
|
||||
|
||||
Write-Output "Downloading Inno Setup: $url"
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
# -UseBasicParsing avoids the IE-engine dependency that fails under the SYSTEM account.
|
||||
Invoke-WebRequest -Uri $url -OutFile $out -UseBasicParsing
|
||||
|
||||
$size = (Get-Item $out).Length
|
||||
Write-Output "Downloaded $size bytes"
|
||||
if ($size -lt 1000000) { throw "Downloaded file too small ($size bytes) - not a valid installer" }
|
||||
|
||||
Write-Output "Installing silently..."
|
||||
$p = Start-Process -FilePath $out -ArgumentList '/VERYSILENT','/SUPPRESSMSGBOXES','/NORESTART','/SP-','/NOICONS' -Wait -PassThru
|
||||
Write-Output "Installer exit code: $($p.ExitCode)"
|
||||
if ($p.ExitCode -ne 0) { throw "Inno Setup installer failed with exit code $($p.ExitCode)" }
|
||||
|
||||
foreach ($c in $candidates) {
|
||||
if (Test-Path $c) { Write-Output "ISCC installed: $c"; exit 0 }
|
||||
}
|
||||
throw "ISCC not found after install (looked in: $($candidates -join ', '))"
|
||||
Reference in New Issue
Block a user