diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3b7aac55f..f661ca86a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -128,17 +128,24 @@ jobs:
# filename.
$exePath = (Resolve-Path target\release\OpenCADStudio.exe).Path
$iconPath = (Resolve-Path packaging\windows\AppIcon.ico).Path
- $wxsPath = (Resolve-Path packaging\windows\main.wxs).Path
- $wixObj = Join-Path $PWD "packaging\windows\main.wixobj"
+ # main.wxs holds the package/feature; ui.wxs holds the installer UI
+ # and finish-screen launch checkbox. Both compile together.
+ $mainWxs = (Resolve-Path packaging\windows\main.wxs).Path
+ $uiWxs = (Resolve-Path packaging\windows\ui.wxs).Path
+ # candle writes one .wixobj per source into this directory (the
+ # trailing slash tells it -out is a folder, not a single file).
+ $objDir = Join-Path $PWD "packaging\windows\"
$msiPath = Join-Path $PWD "OpenCADStudio.msi"
& $candle -arch x64 `
"-dVersion=$version" `
"-dSource=$exePath" `
"-dIcon=$iconPath" `
- $wxsPath `
- -out $wixObj
+ $mainWxs $uiWxs `
+ -out $objDir
if ($LASTEXITCODE -ne 0) { throw "candle failed" }
- & $light $wixObj -ext WixUIExtension -out $msiPath
+ $mainObj = Join-Path $objDir "main.wixobj"
+ $uiObj = Join-Path $objDir "ui.wixobj"
+ & $light $mainObj $uiObj -ext WixUIExtension -out $msiPath
if ($LASTEXITCODE -ne 0) { throw "light failed" }
- name: Sign MSI installer (Azure Trusted Signing)
diff --git a/packaging/windows/main.wxs b/packaging/windows/main.wxs
index 9e4e417e4..5487c2b7a 100644
--- a/packaging/windows/main.wxs
+++ b/packaging/windows/main.wxs
@@ -122,35 +122,8 @@
-
-
-
-
-
-
-
-
-
- WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 AND NOT Installed
-
+
+
diff --git a/packaging/windows/ui.wxs b/packaging/windows/ui.wxs
new file mode 100644
index 000000000..de89b4bc1
--- /dev/null
+++ b/packaging/windows/ui.wxs
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 AND NOT Installed
+
+
+