Asked for while working #499: the installer should say it installed successfully, and let people choose the install location.
Neither is possible with the current toolchain, so this is the decision rather than the change.
Where it stands today
The installer is built on Linux by wixl, and wixl builds no dialogs — GNOME/msitools#3, "Add UI support", still open. The tree already says so in two places, packaging/windows-msi.sh:
What that costs is the installer's user interface: wixl builds no dialogs, so msiexec shows a progress bar and takes its answers from the command line instead.
and packaging/meshbench.wxs, which sets ARPNOMODIFY for the same reason: a Modify button would open an installer with nothing in it.
So a double-clicked .msi shows a progress bar and closes. Nothing says it worked, which is its own small version of the #499 complaint — the thing runs and then there is silence.
Choosing a location already works, but only as a switch. INSTALLDIR is a real property and windows-msi.sh appends it to SecureCustomProperties so it survives elevation, which verify-msi.sh checks. docs/install.md documents all three:
msiexec /i meshbench-0.2.0-windows-x86_64.msi INSTALLDIR="D:\Tools\MeshBench"
msiexec /i meshbench-0.2.0-windows-x86_64.msi MSIINSTALLPERUSER=1
msiexec /i meshbench-0.2.0-windows-x86_64.msi ADDLOCAL=Complete,DesktopShortcut
A person who double-clicks the file never sees any of that, and typing an msiexec line is not what "choose where to install" means to them.
What getting both would take
WixUI_InstallDir is exactly this pair — a Browse dialog for INSTALLDIR, and the standard "Completed the MeshBench Setup Wizard" finish dialog — and it comes from WixToolset.UI.wixext, which means the real WiX toolset rather than wixl.
WiX v5/v6 ships as a .NET tool and does run on Linux, so the "no Windows runner" constraint in windows-msi.sh survives. What changes:
- a .NET SDK on
lab-2204, the self-hosted runner the windows job is pinned to, plus dotnet tool install --global wix and the UI extension
meshbench.wxs rewritten to the v4+ schema — different namespace, Product becomes Package, Feature/Component authoring shifts
wixl-heat replaced by WiX's own harvesting, which is what produces the Bundle ComponentGroup from the staged directory
verify-msi.sh revisited, since it reads tables with msiinfo and would now also want to assert the UI tables exist — the same shape as the Shortcut/INSTALLDIR checks it already makes
- the upgrade behaviour re-proved:
UpgradeCode, the derived ProductCode, and RemoveExistingProducts After="InstallValidate" are the parts of that file with real reasoning behind them and the parts a rewrite is most likely to quietly change
That last one is why this is worth doing deliberately rather than as a tail of a bug fix. An installer that puts a second copy beside the first is a worse outcome than one with no dialogs.
Smaller things worth deciding first
- Say it finished, without a UI. There is no completion dialog in the basic UI level and no way to add one without dialogs. The nearest honest thing is for the application to notice a first run after an install and say so, which is a different feature and probably not what was wanted.
ARPNOMODIFY can come off if there are ever dialogs, since a Modify button would then do something.
- Whether the per-user install (
MSIINSTALLPERUSER=1) should be the offered choice in that dialog too, since it is the one that needs no administrator.
I have not attempted any of it: there is no Windows MSI toolchain on the machine I verified #499 on, so a rewrite of the packaging path is not something I could build or test, and an untested installer is the one artefact where that matters most.
Asked for while working #499: the installer should say it installed successfully, and let people choose the install location.
Neither is possible with the current toolchain, so this is the decision rather than the change.
Where it stands today
The installer is built on Linux by
wixl, andwixlbuilds no dialogs — GNOME/msitools#3, "Add UI support", still open. The tree already says so in two places,packaging/windows-msi.sh:and
packaging/meshbench.wxs, which setsARPNOMODIFYfor the same reason: a Modify button would open an installer with nothing in it.So a double-clicked
.msishows a progress bar and closes. Nothing says it worked, which is its own small version of the #499 complaint — the thing runs and then there is silence.Choosing a location already works, but only as a switch.
INSTALLDIRis a real property andwindows-msi.shappends it toSecureCustomPropertiesso it survives elevation, whichverify-msi.shchecks.docs/install.mddocuments all three:A person who double-clicks the file never sees any of that, and typing an
msiexecline is not what "choose where to install" means to them.What getting both would take
WixUI_InstallDiris exactly this pair — a Browse dialog forINSTALLDIR, and the standard "Completed the MeshBench Setup Wizard" finish dialog — and it comes fromWixToolset.UI.wixext, which means the real WiX toolset rather thanwixl.WiX v5/v6 ships as a .NET tool and does run on Linux, so the "no Windows runner" constraint in
windows-msi.shsurvives. What changes:lab-2204, the self-hosted runner thewindowsjob is pinned to, plusdotnet tool install --global wixand the UI extensionmeshbench.wxsrewritten to the v4+ schema — different namespace,ProductbecomesPackage,Feature/Componentauthoring shiftswixl-heatreplaced by WiX's own harvesting, which is what produces theBundleComponentGroup from the staged directoryverify-msi.shrevisited, since it reads tables withmsiinfoand would now also want to assert the UI tables exist — the same shape as theShortcut/INSTALLDIRchecks it already makesUpgradeCode, the derivedProductCode, andRemoveExistingProducts After="InstallValidate"are the parts of that file with real reasoning behind them and the parts a rewrite is most likely to quietly changeThat last one is why this is worth doing deliberately rather than as a tail of a bug fix. An installer that puts a second copy beside the first is a worse outcome than one with no dialogs.
Smaller things worth deciding first
ARPNOMODIFYcan come off if there are ever dialogs, since a Modify button would then do something.MSIINSTALLPERUSER=1) should be the offered choice in that dialog too, since it is the one that needs no administrator.I have not attempted any of it: there is no Windows MSI toolchain on the machine I verified #499 on, so a rewrite of the packaging path is not something I could build or test, and an untested installer is the one artefact where that matters most.