WiX wxs script installable on current or all user install
Have you checked out the WixUI_Advanced interface built into Wix3?
Here are the dialogues he has:
- AdvancedWelcomeEulaDlg
- BrowseDlg
- DiskCostDlg
- FeaturesDlg
- InstallDirDlg
- InstallScopeDlg (for user selection or for machine)
- InvalidDirDlg
a source to share
I also used WixUI_InstallDir, but copied it and modified it to suit my needs, adding the text "What to do next" at the end of the installer. I used this detailed walkthrough guide to access the Wix GUI and change a couple of screens for my own purposes. This requires you to grab the Wix source code, but only to get the unrelated versions of the actual Product.wxs file, which the Wix developers include to install the WixUI_InstallDir installer.
So basically I have something like this in a solution (using the Votive add-on for VS):
- MyWeb Project
- The Wix Project
- MyWeb.wxs is my product obviously
- Product.wxs - A Wix file that comes from a Wix source that defines the structure, flow and content of WixUI_InstallDir
- My_InstallDir.wxs - It's fun here. Essentially copied the source code of the Wix file, modified it to suit my needs, and then make sure in Product.wxs I have a link to my screen and not the original one.
Product.wxs
<UI>
<UIRef Id="My_InstallDir"/>
</UI>
<!-- Add the customized EULA -->
<WixVariable Id="WixUILicenseRtf" Value="$(var.SolutionDir)\doc\license.rtf" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
<UIRef Id="My_InstallDir" />
<!-- Add the customized banner logo -->
<WixVariable Id="WixUIBannerBmp" Value="$(var.SolutionDir)\doc\InstallerBanner.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="$(var.SolutionDir)\doc\InstallerSidebar.bmp" />
My_InstallDir.wxs hasn't changed completely, except for the line related to my exit dialog, where my notes "What to do next":
<Publish Dialog="MyExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
So the real change is in My_ExitDialog, where I am showing the text:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="MyExitDialog" Width="370" Height="270" Title="!(loc.ExitDialog_Title) test">
<Control Id="Finish" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Cancel="yes" Text="!(loc.WixUIFinish)" />
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUICancel)" />
<Control Id="Bitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="234" TabSkip="no" Text="!(loc.ExitDialogBitmap)" />
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Disabled="yes" Text="!(loc.WixUIBack)" />
<Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" />
<!--<Control Id="Description" Type="Text" X="135" Y="70" Width="220" Height="40" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogDescription)" />-->
<Control Id="Title" Type="Text" X="135" Y="20" Width="220" Height="60" Transparent="yes" NoPrefix="yes" Text="!(loc.ExitDialogTitle)" />
<Control Id="NextSteps" Type="ScrollableText" X="135" Y="70" Width="220" Height="140" Sunken="yes" TabSkip="no">
<Text SourceFile="$(var.SolutionDir)\doc\GemWebAfterInstall.rtf" />
</Control>
</Dialog>
<InstallUISequence>
<Show Dialog="MyExitDialog" OnExit="success" />
</InstallUISequence>
<AdminUISequence>
<Show Dialog="MyExitDialog" OnExit="success" />
</AdminUISequence>
</UI>
</Fragment>
I know you are looking for a solution, not pointers are required. However, using the article I'm using as a key starting point, I think you can find all the pieces you need either in the pre-made bits of WixUI, or swapping out little bits of “pre-made” stuff like mine. Good luck.
a source to share