The WixUI dialog library contains a series of built-in dialog sets that provide a familiar wizard-style setup user interface. Several types of dialog sets are supported -- you can use a UIRef element to add a user interface to your setup. The built-in WixUI dialog sets are also customizable, from the bitmaps shown in the UI to adding and removing custom dialogs. See Customizing the WixUI Dialog Sets for additional information.
WixUIExtension includes support for several common dialog sequences used in setup wizards.
WixUI_Mondo includes the full set of dialogs (hence "Mondo"): welcome, license agreement, setup type (typical, custom, and complete), feature customization, directory browse, and disk cost. Maintenance-mode dialogs are also included. Use WixUI_Mondo when you have some of your product's features aren't installed by default and there's a meaningful difference between typical and complete installs.
Note: WixUI_Mondo uses SetInstallLevel control events to set the install level when the user chooses Typical or Complete. For Typical, the install level is set to 3; for Complete, 1000. For details about feature levels and install levels, see INSTALLLEVEL Property.
WixUI_FeatureTree is a simpler version of WixUI_Mondo that omits the setup type dialog. Instead, the wizard proceeds directly from the license agreement dialog to the feature customization dialog. WixUI_FeatureTree is more appropriate than WixUI_Mondo when your product installs all features by default.
WixUI_InstallDir does not allow the user to choose what features to install, but it adds a dialog to let the user choose a directory where the product will be installed.
To use WixUI_InstallDir, you must set a property named WIXUI_INSTALLDIR with a value of the ID of the directory you want the user to be able to specify the location of. The directory ID must be all uppercase characters because it must be passed from the UI to the execute sequence to take effect. For example:
<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder" Name="PFiles"> <Directory Id="TESTFILEPRODUCTDIR" Name="Test File"> ... </Directory> </Directory> </Directory> ... <Property Id="WIXUI_INSTALLDIR" Value="TESTFILEPRODUCTDIR" /> <UIRef Id="WixUI_InstallDir" />
WixUI_Minimal is the simplest of the built-in WixUI dialog sets. Its sole dialog combines the welcome and license agreement dialogs and omits the feature customization dialog. WixUI_Minimal is appropriate when your product has no optional features and does not support changing the installation directory.
WixUI_Advanced provides the option of a one-click install like WixUI_Minimal, but it also allows directory and feature selection like other dialog sets if the user chooses to configure advanced options.
To use WixUI_Advanced, you must include the following information in your setup authoring:
<Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder" Name="PFiles"> <Directory Id="APPLICATIONFOLDER" Name="My Application Folder"> ... </Directory> </Directory> </Directory>
<Property Id="ApplicationFolderName" Value="My Application Folder" />
<Property Id="WixAppFolder" Value="WixPerMachineFolder" />
It is possible to suppress the install scope dialog in the WixUI_Advanced dialog set so the user will not be able to choose a per-machine or per-user installation. To do this, you must set the WixUISupportPerMachine or WixUISupportPerUser WiX variables to 0. The default value for each of these variables is 1, and you should not set both of these values to 0 in the same .msi. For example, to remove the install scope dialog and support only a per-machine installation, you can set the following:
<WixVariable Id="WixUISupportPerUser" Value="0" />
The install scope dialog will automatically set the ALLUSERS property for the installation session based on the user's selection. If you suppress the install scope dialog by setting either of these WiX variable values, you must manually set the ALLUSERS property to an appropriate value based on whether you want a per-machine or per-user installation.
Assuming you have an existing installer that is functional but is just lacking a user interface, here are the steps you need to follow to include a built-in WixUI dialog set:
<Product ...> <UIRef Id="WixUI_InstallDir" /> </Product>
light -ext WixUIExtension -cultures:en-us Product.wixobj -out Product.msi
Note - If you are using WiX in Visual Studio you can add the WixUIExtension using the Add Reference dialog and the necessary command lines will automatically be added when linking your .msi. To do this, use the following steps: