Skip to content

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

Description

@A13xB0

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 dialogsGNOME/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.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestwindowsOnly reproduces on Windows, or needs a Windows machine to verify

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions