Question

I want to have modified Customize dialog, so I created one. But I want to show this custom dialog after Welcome dialog in mondo UI.

If I do that:

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">1</Publish>
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">1</Publish>
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="CustomCustomizeDlg" Order="4">1</Publish>
<Publish Dialog="CustomCustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">1</Publish>
<Publish Dialog="CustomCustomizeDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="4">1</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomCustomizeDlg" Order="4">1</Publish>

then everything works fine... but if I make something like this:

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="CustomCustomizeDlg">1</Publish>
<Publish Dialog="CustomCustomizeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">1</Publish>
<Publish Dialog="CustomCustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">1</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomCustomizeDlg" Order="4">1</Publish>

Then none of Customize dialog is shown, instead of that, license dialog is shown after welcome...

I did not get it at all... this behavior is strange for me... Any ideas?

EDIT:

I just discover that in msi DB is registered control event on WelcomeDlg next for CustomCustomizeDlg but also for LicenseDialog and both with order 1... if I delete row for licenseDialog it is working ok, so now my question is how to delete that row without using orca...

Was it helpful?

Solution

You don't need to delete it, just add your control event with a greater order than 1 (try 10 or so to be sure) and it will take precedence.

When more than one NewDialog is a candidate to be opened, only the one with the greatest order number will be selected. You can find a similar question answered here or here.

Additionally you can read about the events ordering in the MSDN ControlEvent table documentation:

The exception to note is that each control can publish a most one NewDialog or one SpawnDialog event. If you need to author multiple NewDialog and SpawnDialog control events in this table, also include conditional statements in the Condition fields that ensure at most one event is published. If multiple NewDialog and SpawnDialog control events are selected for the same control, only the event with the largest value in the Ordering column gets published when the control is activated.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top