Skip to content

Windows installer with dialogs, built by WiX on a Windows runner - #796

Open
A13xB0 wants to merge 4 commits into
mainfrom
fix-508-msi-dialogs
Open

A13xB0 wants to merge 4 commits into
mainfrom
fix-508-msi-dialogs

Conversation

@A13xB0

@A13xB0 A13xB0 commented Oct 25, 2026

Copy link
Copy Markdown
Collaborator

Closes #508.

WiX can only write an MSI on Windows (it needs msi.dll), and wixl builds no dialogs. That is why the WiX installer from #534 was reverted in #578. This PR splits the job so each part runs where it can:

  1. windows (lab-2204, as now) builds and zips both trees. packaging/windows-msi.sh now only prepares: the icon (icotool), the dialog bitmaps (Pillow), the installer's note, and msi.env (MSI version, product and upgrade codes). It uploads both staged trees as msi-stage.
  2. windows-msi (windows-latest, free for this public repo) installs WiX 5.0.2 and the UI extension. packaging/windows-msi.ps1 runs wix build, puts ALLUSERS back to 2 through Windows Installer's own database API (WiX 4+ will not author it), and counts the harvested files.
  3. windows-msi-verify (lab-2204) reads both MSIs back with msitools via verify-msi.sh. Only what passes is uploaded as meshbench-windows-msi, and the release now downloads meshbench-* artifacts only.

meshbench.wxs, verify-msi.sh and the install docs go back to the #534 versions. Two fixes came out of the first runs:

  • verify-msi.sh looked for the WiX 3 upgrade property names; WiX 5 writes WIX_UPGRADE_DETECTED and WIX_DOWNGRADE_DETECTED.
  • The file count is now taken on the Windows side. The emulators' symlinks arrive there as files, so the Linux count came out short.

Dispatch runs on this branch (release: false): the last one, 40156447430, is green in every job. Both MSIs pass every check:

  • a Welcome, InstallDir, Browse, Exit and Maintenance dialog;
  • SetARPINSTALLLOCATION;
  • the install-dir registry row;
  • upgrade and downgrade rows;
  • ALLUSERS 2;
  • file count and Start menu entry.

Not done here: an interactive install on a real Windows machine. It's worth one double-click to see the pages before this goes into a release. The workflow is otherwise unchanged for tags.

WiX writes the MSI through Windows' msi.dll and builds nowhere else,
and wixl builds no dialogs. So the job splits: the Linux windows job
stages both trees and makes the icon, dialog bitmaps and product code
(windows-msi.sh); windows-msi builds both installers with WiX on
windows-latest and puts ALLUSERS back to 2 through Windows Installer's
own API (windows-msi.ps1); windows-msi-verify reads them back with
msitools on Linux, and only what passes is offered to the release.

meshbench.wxs and verify-msi.sh return to the WiX versions from #534.

For #508.
MajorUpgrade writes WIX_UPGRADE_DETECTED and WIX_DOWNGRADE_DETECTED;
the check looked only for the WiX 3 names, and the first MSI WiX built
in the pipeline failed it with both rows present.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The MSI has no dialogs, so it cannot say it finished or let anyone choose where it goes

1 participant