From 9e6f5191ffec7d3dbd516ca2f54caa56254f0e02 Mon Sep 17 00:00:00 2001 From: tylerjenningsw Date: Fri, 9 Oct 2026 13:58:35 -0400 Subject: [PATCH] Packaging: the Windows installer asks where to install EffectCraft (#466) A fresh install opens on a destination page (Program Files by default; Change... browses, with Up and New folder), then a Ready page that shows the folder before anything is written. An upgrade goes straight to the Ready page with the installed copy's folder and can't move it; opening the MSI again offers Repair or Remove. Cancel, finish, files-in-use and error dialogs are authored too. Silent installs (/qn) show none of it. The dialogs (installer-ui.wxs) are original, built from Windows Installer's own controls and events, not the WixUI library, whose MS-RL licence is not on the allowed list. package.ps1 builds both .wxs files. --- packaging/windows/effectcraft.wxs | 4 +- packaging/windows/installer-ui.wxs | 198 +++++++++++++++++++++++++++++ packaging/windows/package.ps1 | 2 +- 3 files changed, 202 insertions(+), 2 deletions(-) create mode 100644 packaging/windows/installer-ui.wxs diff --git a/packaging/windows/effectcraft.wxs b/packaging/windows/effectcraft.wxs index ae1fd194..7e5cf556 100644 --- a/packaging/windows/effectcraft.wxs +++ b/packaging/windows/effectcraft.wxs @@ -2,7 +2,7 @@ + diff --git a/packaging/windows/installer-ui.wxs b/packaging/windows/installer-ui.wxs new file mode 100644 index 00000000..9fd1d689 --- /dev/null +++ b/packaging/windows/installer-ui.wxs @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/windows/package.ps1 b/packaging/windows/package.ps1 index 18551225..7f1320c8 100644 --- a/packaging/windows/package.ps1 +++ b/packaging/windows/package.ps1 @@ -93,7 +93,7 @@ Copy-Item (Join-Path $Bin 'effectcraft.exe'), (Join-Path $Bin 'effectcraft-cli.e # ---- MSI --------------------------------------------------------------------------------------- $Msi = Join-Path $Dist "effectcraft-$Version-windows-$Arch.msi" Invoke-Native 'wix build' { - wix build (Join-Path $PSScriptRoot 'effectcraft.wxs') -arch $Arch ` + wix build (Join-Path $PSScriptRoot 'effectcraft.wxs') (Join-Path $PSScriptRoot 'installer-ui.wxs') -arch $Arch ` -d "Version=$MsiVersion" -d "BinDir=$Stage" -d "IconPath=$(Join-Path $Root 'assets\app-icon\effectcraft.ico')" ` -o $Msi }