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 + + +