Skip to content

WIP: Minimal UI support

Brendon Jones requested to merge brendonj/msitools:wixl-minimal-ui into master

Add support for a minimal set of UI dialogs, similar to the WixUI_Minimal dialog set. Probably about 80% done, but wanted to make sure it was on the right track before dealing with some of the remaining bits.

I built a minimal installer using the Wix tools, then compared the MSI tables to one from wixl using msidiff and added the missing tables. Currently it will prompt for the license agreement, allow installation if accepted, perform installation with progress bars, and present options to repair/uninstall.

Done:

  • Added MSI tables required to display dialogs and transition between them
  • Added XML elements required to represent the tables, controls, and transitions
  • Added command line option to wixl to enable extensions

Not done:

  • Translations
  • Dialog templates
  • Bitmaps

I've been testing using the dialog templates and images from Wix, which work with minimal changes (mostly hardcoding all the built in variables and text which normally comes from translations). I don't think the licensing of these files is compatible though, so I haven't included any of them here - new templates will need to be made, which will make the installer dialogs look different. I can send someone the modified templates and bitmaps I've been testing with if that would be helpful.

I'm also not sure I've made the best choices for how to include the extra files required for the UI extension. Currently the builder is responsible and does so during initialisation, but reuses some code to search the include directories similar to how the preprocessor works. The dialog files are expected to be installed alongside the other wixl data in /<datadir>/wix-<version>/include/UI/. Happy to take advice here about the best way to do this.

You can use the new extension by running wixl like:

wixl -o foo.msi foo.wxs --ext ui

though without the dialog templates it won't work. I think making some new dialog templates is probably my next step.

Merge request reports