mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-31 21:48:53 -06:00
Issue #399: Windows MSI: choose the install folder; upgrades keep it
The interactive installer now walks Welcome -> Destination Folder -> Ready -> progress -> Completed (from #79). Destination Folder is WiX's InstallDirDlg: Program Files\LightCraft by default, Change... browses, and WixUIValidatePath refuses a folder that can't be used. The chosen folder is written to HKLM\Software\LightCraft\InstallFolder and read back (into PREVIOUSINSTALLFOLDER, then INSTALLFOLDER after AppSearch unless given on the command line), so a major upgrade stays in the user's folder instead of moving back to Program Files. Silent and passive installs show no dialogs and take INSTALLFOLDER=.... packaging-lint fails if lightcraft.wxs loses the folder page, the remembered folder or the completion page's launch action. Tested with wix 5.0.2 (x64, arm64, x86 build) and msiexec /qn: upgrade from 0.4.0 stays in Program Files; a custom INSTALLFOLDER install, an upgrade without it (stays), an upgrade with another INSTALLFOLDER (moves there), and uninstall (files, folder and registry value removed). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -51,6 +51,11 @@ jobs:
|
||||
if grep -oE '<Icon Id="[^"]*"' packaging/windows/lightcraft.wxs | grep -vE '\.(ico|exe)"$'; then
|
||||
echo "::error::Icon Id must end in .ico or .exe"; exit 1
|
||||
fi
|
||||
# The interactive installer asks where to install and ends on a completion page (issues #18, #399).
|
||||
for want in '<UIRef Id="LightcraftUI" />' 'Value="InstallDirDlg"' '<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />' \
|
||||
'Key="Software\LightCraft" Name="InstallFolder"' 'Value="LaunchLightcraft"'; do
|
||||
grep -qF "$want" packaging/windows/lightcraft.wxs || { echo "::error::lightcraft.wxs lost: $want"; exit 1; }
|
||||
done
|
||||
desktop-file-validate packaging/linux/ai.storyteller.lightcraft.desktop
|
||||
sed -e 's/@VERSION@/0.0.0/' -e 's/@DATE@/2026-01-01/' packaging/linux/ai.storyteller.lightcraft.metainfo.xml.in >"$RUNNER_TEMP/ai.storyteller.lightcraft.metainfo.xml"
|
||||
appstreamcli validate --no-net --explain "$RUNNER_TEMP/ai.storyteller.lightcraft.metainfo.xml"
|
||||
|
||||
Reference in New Issue
Block a user