The example I gave you is what is working for me. Below is the entire UI script.
<?xml version="1.0" encoding="utf-8"?> <Include> <!--Define the dialog to get the Server and Database name information from the user--> <UI Id="Screen"> <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" /> <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" /> <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" /> <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" /> <Property Id="WixUI_Mode" Value="Mondo" /> <!-- define the install screen--> <Dialog Id="DialogDatabase" Width="370" Height="270" Title="[ProductName]"> <Control Id="BannerLine" Type="Line" X="0" Y="0" Width="370" Height="1" /> <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="1" Width="370" Height="43" TabSkip="no" Text="!(loc.InstallDirDlgBannerBitmap)" /> <Control Id="BottomLine" Type="Line" X="0" Y="44" Width="370" Height="1" /> <Control Id="Description" Type="Text" X="25" Y="60" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="{\WixUI_Font_Bigger}Preparing to Install Databases, version [INSTALLVERSION]"/> <Control Id="ServerNameLabel" Type="Text" X="32" Y="100" Width="290" Height="13" NoPrefix="yes" Text="SQL Server (Hostname\Instance:Port):" /> <Control Id="ServerNameEdit" Type="Edit" X="32" Y="110" Width="290" Height="18" Property="SERVERNAME" Text="[SERVERNAME]" /> <Control Id="ErrorList" Type ="Text" X="32" Y="130" Width="290" Height="100" Text="[ERRORMESSAGE]"/> <Control Id="BackDlg" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="Back" /> <Control Id="NextDlg" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="Next"> <Publish Event="DoAction" Value="VerifySQLServer">1</Publish> <Publish Event="DoAction" Value="VerifySQLServer.Get">1</Publish> <!-- if there is a server error redisplay the database screen else go to the verify screen --> <Publish Event="NewDialog" Value="DialogError"><![CDATA[SERVERERROR~="1"]]></Publish> <Publish Event="NewDialog" Value="DialogVerify"><![CDATA[SERVERERROR~="0"]]></Publish> </Control> <Control Id="CancelDlg" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel"> <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> </Control> </Dialog> <!--if there is an error then this screen gest displayed--> <Dialog Id="DialogError" Width="370" Height="270" Title="[ProductName]"> <Control Id="ErrBannerLine" Type="Line" X="0" Y="0" Width="370" Height="1" /> <Control Id="ErrBannerBitmap" Type="Bitmap" X="0" Y="1" Width="370" Height="43" TabSkip="no" Text="!(loc.InstallDirDlgBannerBitmap)" /> <Control Id="ErrBottomLine" Type="Line" X="0" Y="44" Width="370" Height="1" /> <Control Id="ErrDescription" Type="Text" X="25" Y="60" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="{\WixUI_Font_Bigger}Preparing to Install Databases, version [INSTALLVERSION]"/> <Control Id="ErrServerNameLabel" Type="Text" X="32" Y="100" Width="290" Height="13" NoPrefix="yes" Text="SQL Server (Hostname\Instance:Port):" /> <Control Id="ErrServerNameEdit" Type="Edit" X="32" Y="110" Width="290" Height="18" Property="SERVERNAME" Text="[SERVERNAME]" /> <Control Id="ErrErrorList" Type ="Text" X="32" Y="130" Width="290" Height="100" Text="[ERRORMESSAGE]"/> <Control Id="BackErr" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="Back" /> <Control Id="NextErr" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="Next"> <Publish Event="DoAction" Value="VerifySQLServer">1</Publish> <Publish Event="DoAction" Value="VerifySQLServer.Get">1</Publish> <!-- if there is a server error redisplay the database screen else go to the verify screen --> <Publish Event="NewDialog" Value="DialogDatabase"><![CDATA[SERVERERROR~="1"]]></Publish> <Publish Event="NewDialog" Value="DialogVerify"><![CDATA[SERVERERROR~="0"]]></Publish> </Control> <Control Id="CancelErr" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel"> <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> </Control> </Dialog> <!--if everything is ok then screen flow goes here--> <Dialog Id="DialogVerify" Width="370" Height="270" Title="[ProductName]"> <Control Id="VfyBannerLine" Type="Line" X="0" Y="0" Width="370" Height="1" /> <Control Id="VfyBannerBitmap" Type="Bitmap" X="0" Y="1" Width="370" Height="43" TabSkip="no" Text="!(loc.InstallDirDlgBannerBitmap)" /> <Control Id="VfyBottomLine" Type="Line" X="0" Y="44" Width="370" Height="1" /> <Control Id="VdyDescription" Type="Text" X="25" Y="60" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="{\WixUI_Font_Bigger}Preparing to Install Databases : [INSTALLPACKAGE]"/> <Control Id="VfyServerNameLabel" Type="Text" X="32" Y="80" Width="290" Height="13" NoPrefix="yes" Text="SQL Server (Hostname\Instance:Port): [SERVERNAME]" /> <Control Id="VfyDatabaseList" Type ="Text" X="64" Y="100" Width="150" Height="120" Text="[DBTOINSTALL]"/> <Control Id="BackRdy" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="Back" /> <Control Id="NextRdy" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="Next"> </Control> <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel"> <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> </Control> </Dialog> <DialogRef Id="ErrorDlg" /> <DialogRef Id="FatalError" /> <DialogRef Id="FilesInUse" /> <DialogRef Id="MsiRMFilesInUse" /> <DialogRef Id="PrepareDlg" /> <DialogRef Id="ProgressDlg" /> <DialogRef Id="ResumeDlg" /> <DialogRef Id="UserExit" /> <PropertyRef Id ="INSTALLPACKAGE"/> <PropertyRef Id ="INSTALLVERSION"/> <PropertyRef Id ="OPTIONSPATH"/> <PropertyRef Id ="ADVANCED"/> <PropertyRef Id ="OPTIONSEXIST"/> <PropertyRef Id ="DBTOINSTALL"/> <PropertyRef Id ="SERVERNAME"/> <PropertyRef Id ="SERVERERROR"/> <PropertyRef Id ="ERRORMESSAGE"/> <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish> <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="DialogDatabase">1</Publish> <Publish Dialog="DialogDatabase" Control="BackDlg" Event="NewDialog" Value="WelcomeDlg">1</Publish> <Publish Dialog="DialogError" Control="BackErr" Event="NewDialog" Value="WelcomeDlg">1</Publish> <Publish Dialog="DialogVerify" Control="BackRdy" Event="NewDialog" Value="DialogDatabase">1</Publish> <Publish Dialog="DialogVerify" Control="NextRdy" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="DialogDatabase">1</Publish> <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="DialogDatabase">1</Publish> </UI> <UIRef Id="WixUI_Common" /> </Include> -----Original Message----- From: Joel Dart [mailto:jd...@dyknow.com] Sent: Monday, March 10, 2014 11:45 AM To: General discussion about the WiX toolset. Subject: Re: [WiX-users] Require fields/disable InstallButton in bootstrapper Thanks Harold, I've been trying to get custom actions to work from the WixStandardBootstrapperApplication without much luck. When I look in the xsd, it doesn't have Control as an option for Page. Additionally, when just trying to sub in Control for Button, the built bootstrapper immediately crashes. Is the example you're using work on the bootstrapper or will it only work when customizing the msi? When looking around the source for the WixStandardBootstrapperApplication, it looks like the enable/disable is being handled explicitly in the code versus the _____State variable trick. My gut is telling me this cannot be done without implementing a custom bootstrapperapplication. ________________________________________ From: Harold Wood (H10 Capital) [v-wow...@microsoft.com] Sent: Friday, March 07, 2014 2:40 PM To: General discussion about the WiX toolset. Subject: Re: [WiX-users] Require fields/disable InstallButton in bootstrapper I use a custom action that gets fired when they click the next button, if there is an error it takes me to my error dialog, the next button on that loops me back to this dialog so the newly entered value can get validated again. <Control Id="NextDlg" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="Next"> <Publish Event="DoAction" Value="VerifySQLServer">1</Publish> <Publish Event="DoAction" Value="VerifySQLServer.Get">1</Publish> <!-- if there is a server error redisplay the database screen else go to the verify screen --> <Publish Event="NewDialog" Value="DialogError"><![CDATA[SERVERERROR~="1"]]></Publish> <Publish Event="NewDialog" Value="DialogVerify"><![CDATA[SERVERERROR~="0"]]></Publish> </Control> ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/13534_NeoTech _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/13534_NeoTech _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users