Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I customise the Wix Progress Dialog?

Tags:

wix

wix3.5

I'm trying to customise the standard WiX Progress Dialog (I want to make it show the ActionData). I've followed Neil's guide to customising dialogs but the trouble is, the original ProgressDlg is still being shown instead of mine.

I think I know why: if you look at the source to ProgressDlg you can see this block of code:

   <InstallUISequence>
    <Show Dialog="ProgressDlg" Before="ExecuteAction" />
  </InstallUISequence>

So rather than being published by another dialog, as most dialogs are, it is being triggered directly as part of the InstallUISequence. So how do I override this?

like image 566
Samuel Jack Avatar asked Aug 06 '10 10:08

Samuel Jack


People also ask

How do I add custom dialogues to WiX installers?

You can add custom dialogs to the UI sequence in a built-in WixUI dialog set. To do so, you must define a <UI/> element for your new dialog. Then, you must copy the contents of the <Fragment/> that includes the definition of the dialog set that you want to customize from the WiX source code to your project.

How do I install WiX editor?

There are two ways to install WiX. The first way is to use the Windows installer, and the second way is to use the MSI package. To install WiX using the Windows installer, simply download the installer from the WiX website. Once you have downloaded the installer, run it and follow the prompts.


2 Answers

It seems that the progress dialog must be the last thing in the InstallUISequence before ExecuteAction - otherwise, because Progress Dialogs are modeless, it is shown then hidden straight away.

My solution therefore is just to make sure that my custom progress dialog is shown after the existing one:

  <InstallUISequence>
    <Show Dialog="CustomProgressDlg" After="ProgressDlg" />
  </InstallUISequence>
like image 181
Samuel Jack Avatar answered Oct 17 '22 09:10

Samuel Jack


@Samuel, it is working as Bob said: "As long as you don't reference ProgressDlg" but this statement is not precise. You need to find all references to ProgressDlg, but find them in the WiX sources. Then you need to create your own version of any dialog which references the ProgressDlg and is included by your setup (direct or indirect use of it!), in order to make it also reference your customized dialog.

I have tried this to solve the same issue. For using eg. the FeatureTree UI Sequence you would have to create your own versions of the following dialogs in addition to the ProgressDlg:

  • MaintenanceWelcomeDlg
  • ResumeDlg
  • WelcomeDlg

This is because they define a Show element which is referencing ProgressDlg.

like image 28
Klaus Avatar answered Oct 17 '22 08:10

Klaus