feat(installer): add finish screen with launch-app checkbox to Windows MSI

Adds WixUI_Minimal UI to the WiX installer so users see a proper
Welcome → Progress → Finish wizard. The finish screen includes a
pre-ticked "Launch Open CAD Studio" checkbox; clicking Finish with
it checked starts the application immediately after the installer closes.

Also updates the light.exe invocation in release.yml to include
-ext WixUIExtension, which is required to link the WixUI dialogs.

https://claude.ai/code/session_01DFVSKgViFaxEjZD2KsTdtt
This commit is contained in:
Claude 2026-06-12 07:24:36 +00:00
commit 556989dbdb
No known key found for this signature in database
2 changed files with 32 additions and 2 deletions

View file

@ -138,7 +138,7 @@ jobs:
$wxsPath `
-out $wixObj
if ($LASTEXITCODE -ne 0) { throw "candle failed" }
& $light $wixObj -out $msiPath
& $light $wixObj -ext WixUIExtension -out $msiPath
if ($LASTEXITCODE -ne 0) { throw "light failed" }
- name: Sign MSI installer (Azure Trusted Signing)

View file

@ -6,7 +6,7 @@
candle.exe -arch x64 -dVersion=<x.y.z> -dSource=target\release\OpenCADStudio.exe \
-dIcon=packaging\windows\AppIcon.ico packaging\windows\main.wxs \
-out packaging\windows\main.wixobj
light.exe packaging\windows\main.wixobj -out OpenCADStudio.msi
light.exe packaging\windows\main.wixobj -ext WixUIExtension -out OpenCADStudio.msi
Provides:
* Per-machine install under Program Files\Open CAD Studio.
@ -122,5 +122,35 @@
<ComponentRef Id='ProgramMenuDirComp' />
</Feature>
<!--
Finish-screen "Launch Open CAD Studio" checkbox.
WIXUI_EXITDIALOGOPTIONALCHECKBOX=1 pre-ticks the checkbox; the Publish
below fires the launch action when the user clicks Finish with it checked.
WixUI_Minimal shows a minimal wizard (Welcome → Progress → Finish).
-->
<Property Id='WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT' Value='Launch Open CAD Studio' />
<Property Id='WIXUI_EXITDIALOGOPTIONALCHECKBOX' Value='1' />
<!--
Start the installed exe after the wizard closes.
asyncNoWait lets the installer exit cleanly while the app starts.
-->
<CustomAction
Id='LaunchApplication'
FileKey='OpenCADStudioEXE'
ExeCommand=''
Execute='immediate'
Return='asyncNoWait'
Impersonate='yes' />
<UI>
<UIRef Id='WixUI_Minimal' />
<Publish
Dialog='ExitDialog'
Control='Finish'
Event='DoAction'
Value='LaunchApplication'>WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 AND NOT Installed</Publish>
</UI>
</Product>
</Wix>