From 54321e6175e5c1d83d808e85b3327303eb7c309a Mon Sep 17 00:00:00 2001 From: notdezzi Date: Tue, 13 Oct 2026 16:15:46 +0200 Subject: [PATCH] Packaging: confirm a successful uninstall with the completion dialog (fixes #892) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The MSI never included WiX's ExitDialog: the Publish events point at it, but only a DialogRef pulls the UI extension's fragment (with its on-exit=success show) into the package, so every successful run ended silently. Reference it, and note that the shared completion page is the uninstall confirmation; packaging-lint now fails when the reference is lost again. 🤖 Generated with [ZCode](https://zcode.ai) Co-Authored-By: ZCode --- .github/workflows/packaging-lint.yml | 5 +++++ packaging/windows/lightcraft.wxs | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/packaging-lint.yml b/.github/workflows/packaging-lint.yml index f39de00b9..8953710ce 100644 --- a/.github/workflows/packaging-lint.yml +++ b/.github/workflows/packaging-lint.yml @@ -58,6 +58,11 @@ jobs: 'Key="Software\LightCraft" Name="InstallFolder"' 'Value="LaunchLightcraft"'; do grep -qF "$want" packaging/windows/lightcraft.wxs || { echo "::error::lightcraft.wxs lost: $want"; exit 1; } done + # The completion page the Publish events point at must actually exist: a Publish alone + # does not pull the dialog fragment into the MSI, and without the DialogRef the + # installer finishes silently (issues #790, #892). + grep -qF '' packaging/windows/lightcraft.wxs \ + || { echo "::error::ExitDialog is not referenced; installs and removes end without a completion dialog"; exit 1; } 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" diff --git a/packaging/windows/lightcraft.wxs b/packaging/windows/lightcraft.wxs index a20254098..38fe8f391 100644 --- a/packaging/windows/lightcraft.wxs +++ b/packaging/windows/lightcraft.wxs @@ -80,7 +80,9 @@ upgrade; Change... browses, and a folder that can't be used (InvalidDirDlg) is refused before anything is installed. Failure and cancellation end on WiX's standard FatalError / UserExit dialogs instead of the completion page. Maintenance (running the MSI again, Repair/Remove from - Apps) uses the standard maintenance dialogs. + Apps) uses the standard maintenance dialogs; every successful run — install, repair or + remove — then ends on the shared completion page, so a successful uninstall is confirmed + with a visible final dialog (issue #892; the page itself is issue #790's fix). This is WixUI_InstallDir without its licence-acceptance page: LightCraft is MIT OR Apache-2.0, which ask nothing of people who just install and run it, so a click-through EULA would only @@ -128,6 +130,11 @@ + +