mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-17 18:25:42 +02:00
48 lines
1.8 KiB
PowerShell
48 lines
1.8 KiB
PowerShell
# Generates an electron-updater latest.yml for a Squirrel.Windows build.
|
|
#
|
|
# Squirrel's electron-builder target emits RELEASES + .nupkg + Setup.exe but NO
|
|
# latest.yml. Existing NSIS clients poll latest.yml, so without this file every
|
|
# already-installed NSIS user is silently stranded on the old build and never
|
|
# migrates. This writes the latest.yml that points those clients at the Squirrel
|
|
# Setup.exe (electron-updater runs it with `--updated /S --force-run`, which the
|
|
# migration proof confirmed installs Squirrel and triggers the firstrun cleanup).
|
|
param(
|
|
[Parameter(Mandatory = $true)][string]$SetupPath,
|
|
[Parameter(Mandatory = $true)][string]$Version,
|
|
[Parameter(Mandatory = $true)][string]$OutPath
|
|
)
|
|
$ErrorActionPreference = 'Stop'
|
|
|
|
if (-not (Test-Path $SetupPath)) { throw "Setup not found: $SetupPath" }
|
|
|
|
$fileName = Split-Path $SetupPath -Leaf
|
|
|
|
# electron-updater wants base64(sha512(file)), not hex. Stream it so a ~560MB
|
|
# installer doesn't get slurped whole into memory.
|
|
$sha = [System.Security.Cryptography.SHA512]::Create()
|
|
$fs = [System.IO.File]::OpenRead($SetupPath)
|
|
try { $hashBytes = $sha.ComputeHash($fs) } finally { $fs.Dispose(); $sha.Dispose() }
|
|
$sha512 = [System.Convert]::ToBase64String($hashBytes)
|
|
$size = (Get-Item $SetupPath).Length
|
|
$date = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ")
|
|
|
|
$yml = @"
|
|
version: $Version
|
|
files:
|
|
- url: $fileName
|
|
sha512: $sha512
|
|
size: $size
|
|
path: $fileName
|
|
sha512: $sha512
|
|
releaseDate: '$date'
|
|
"@
|
|
|
|
# electron-updater parses LF yaml; force LF + UTF-8 without BOM so the parser
|
|
# doesn't choke on a leading 0xEF 0xBB 0xBF.
|
|
$yml = $yml -replace "`r`n", "`n"
|
|
[System.IO.File]::WriteAllText($OutPath, $yml, (New-Object System.Text.UTF8Encoding($false)))
|
|
|
|
Write-Host "Wrote $OutPath"
|
|
Write-Host " version=$Version file=$fileName size=$size"
|
|
Write-Host " sha512=$($sha512.Substring(0,24))..."
|