Scripts/Windows/README.md
Step 8.1 of the Windows installers plan: a parameterized Inno Setup script that installs the same flat publish layout as the release zip, under a per-user directory, so the in-app upgrader can still overlay files via ZipExtractor.exe.
build.yml).ISCC.exe on PATH or in a default install location.From PowerShell, repo root or this folder:
.\Scripts\Windows\Build-WindowsInstaller.ps1 -Version 13.4.1 -Ui Avalonia -Architecture x64
Outputs:
bin\ (repo root)bin\Libation.13.4.1-windows-chardonnay-x64-setup.exe| UI | -Ui | -Architecture | Install folder | Output prefix |
|---|---|---|---|---|
| Chardonnay x64 | Avalonia | x64 | %LocalAppData%\Libation | Libation.* |
| Chardonnay arm64 | Avalonia | arm64 | %LocalAppData%\Libation | Libation.* |
| Classic x64 | WinForms | x64 (default) | %LocalAppData%\Libation-Classic | Libation-Classic.*-setup.exe |
Examples:
.\Scripts\Windows\Build-WindowsInstaller.ps1 -Version 13.4.1 -Ui WinForms
.\Scripts\Windows\Build-WindowsInstaller.ps1 -Version 13.4.1 -Ui Avalonia -Architecture arm64
.\Scripts\Windows\Build-WindowsInstaller.ps1 -Version 13.4.1 -Ui Avalonia -BinDir C:\path\to\bin -SkipPublish
BinDir must already match CI layout (including ZipExtractor.exe, without standalone WindowsConfigApp.exe).
After publish and cleanup (remove WindowsConfigApp.exe, WindowsConfigApp.runtimeconfig.json, WindowsConfigApp.deps.json from bin), from Scripts\Windows:
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" Libation.iss ^
/DMyVersion=13.4.1 ^
/DMyPrefix= ^
/DMyReleaseName=chardonnay ^
/DMyArchitecture=x64 ^
/DInstallFolderName=Libation ^
/DAppName=Libation ^
/DOutputBaseFilename=Libation.13.4.1-windows-chardonnay-x64-setup ^
/DSourceDir=C:\Dev\_rmcrackan\Libation\bin ^
/DOutputDir=C:\Dev\_rmcrackan\Libation\bin ^
/DArchitecturesAllowed=x64compatible
Classic x64: use MyReleaseName=classic and matching OutputBaseFilename (Libation-Classic.{version}-windows-classic-x64-setup). Install folder and display name are set in Libation.iss. GitHub zip assets use Libation-Classic.{version}-windows-classic-x64.zip; .releaseindex.json also accepts legacy Classic-Libation.* zips on older releases.
arm64: set MyArchitecture=arm64 and ArchitecturesAllowed=arm64.
PrivilegesRequired=lowest, default dir under {localappdata}).{app}\Libation.exe (required for upgrade path detection).appsettings.json or Libation Files; same as zip install.ZipExtractor.exe remains for in-app updates.Libation (Chardonnay) or Libation (Classic) with version in DisplayVersion (Inno at install; synced after in-app zip upgrades via WindowsUninstallRegistrySync); icon from SetupIconFile / UninstallDisplayIcon (Scripts/Windows/libation.ico and {app}\Libation.exe).Install via *-setup.exe, run the app, then verify an older release can upgrade in-app using the existing zip-based upgrader.
CI wiring (build-windows.yml) is step 8.3.
| File | Purpose |
|---|---|
Libation.iss | Parameterized Inno Setup script |
libation.ico | Setup/uninstaller icon (copied from Avalonia assets) |
Build-WindowsInstaller.ps1 | Local publish + ISCC helper |
README.md | This document |