Mark Sidell
Mark Sidell

Reputation: 31

How to remove the FeaturesDlg from WixUI_Advanced

My application only has one "feature", so I'd like to omit the FeaturesDlg from WixUI_Advanced. I've made a copy of wixui_advanced.wxs and tweaked things to get it to work as is.

Just to see what would happen, I commented out this line:

<Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="FeaturesDlg" Order="4">WIXUIDONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>

But, as one might expect, my change caused the Next button on the InstallDirDlg to become a NOP. I'm guessing I want the InstallDirDlg Next button to "finish" everything and start the installation. How do I do that?

Upvotes: 2

Views: 877

Answers (2)

Syed Ali
Syed Ali

Reputation: 1897

Your Next is a NOP because you have not published anything for that control's events.

If you want your Next button to take you to a final installation dialog i.e. where the installer asks the user for confirmation before proceeding to installation then set the Value to "VerifyReadyDlg" instead of "FeaturesDlg". You will then have to set the Back button control for "VerfiyReadyDlg" such that it takes you back where you came from.

Otherwise if you don't want this then just put the "Install" button (as in Rob's answer) on the dialog which you think is your final dialog.

Upvotes: 0

Rob Mensching
Rob Mensching

Reputation: 35866

You basically want to copy the Install button from the FeaturesDlg. That looks something like:

<Control Id="Install" Type="PushButton" ElevationShield="yes" X="212" Y="243" Width="80" Height="17" Hidden="yes" Text="!(loc.FeaturesDlgInstall)">
    <Condition Action="show">NOT Installed AND ALLUSERS</Condition>
    <Condition Action="default">NOT Installed</Condition>
    <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1</Publish>
    <Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
    <Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
    <Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
    <Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
    <Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
</Control>
<Control Id="InstallNoShield" Type="PushButton" ElevationShield="no" X="212" Y="243" Width="80" Height="17" Hidden="yes" Text="!(loc.FeaturesDlgInstall)">
    <Condition Action="show">NOT Installed AND NOT ALLUSERS</Condition>
    <Condition Action="default">NOT Installed</Condition>
    <Publish Event="SpawnWaitDialog" Value="WaitForCostingDlg">!(wix.WixUICostingPopupOptOut) OR CostingComplete = 1</Publish>
    <Publish Event="EndDialog" Value="Return"><![CDATA[OutOfDiskSpace <> 1]]></Publish>
    <Publish Event="SpawnDialog" Value="OutOfRbDiskDlg">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST)</Publish>
    <Publish Event="EndDialog" Value="Return">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
    <Publish Event="EnableRollback" Value="False">OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D"</Publish>
    <Publish Event="SpawnDialog" Value="OutOfDiskDlg">(OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F")</Publish>
</Control>

Yes, there is a lot going on there because the Install button is where all the out of disk space checks are completed.

Upvotes: 2

Related Questions