I am currently learning about the WiX tool to set up MSI packages for the software applications we have where I work.
One of the things I wanted to do as part of an installation is offer a choice of a particular file to be installed, and I was going to have a dialog with a list of radio buttons, to the allow the user to select the required option.
Here is the WXS file I am using
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'>
<Product Id='E22E3B45-CFA6-4F4E-9D37-AA95A3684522' Name='Test Install' Language='1033'
Version='1.0.0.0' Manufacturer='Microsoft Corporation' UpgradeCode='E22E3B45-CFA6-4F4E-9D37-AA95A3684522'>
<Package Description='Test Installer Package'
Comments='Install Test'
Manufacturer='Microsoft Corporation' InstallerVersion='200' Compressed='yes' />
<Media Id='1' Cabinet='testinstall.cab' EmbedCab='yes' />
<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='dir_temp' Name='Temp'>
<Component Id='component_dir_root1' Guid='A51094B8-552F-49C4-9E5C-36815D471913'>
<File Id='file_readme.txt' Name='readme.txt' DiskId='1' Source='root/readme.txt' />
</Component>
<Component Id='component_dir_root2' Guid='A51094B8-552F-49C4-9E5C-36815D471914'>
<File Id='file_readme2.txt' Name='readme2.txt' DiskId='1' Source='root/readme2.txt' />
</Component>
</Directory>
</Directory>
<Feature Id='feature_test' Title='Test Features' Level='1'>
<Feature Id='feature_dir_root1' Level='1'>
<ComponentRef Id='component_dir_root1' />
<Condition Level="0"><![CDATA[RootType <> "1"]]></Condition>
</Feature>
<Feature Id='feature_dir_root2' Level='1'>
<ComponentRef Id='component_dir_root2' />
<Condition Level="0"><![CDATA[RootType <> "2"]]></Condition>
</Feature>
</Feature>
<UI>
<Property Id="DefaultUIFont">DlgFont8</Property>
<Dialog Id="InstallDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
<Control Id="Buttons" Type="RadioButtonGroup" X="20" Y="187" Width="330" Height="40" Property="RootType" />
<Control Id="Install" Type="PushButton" X="304" Y="243" Width="56" Height="17" Default="yes" Text="Install">
<Publish Event="EndDialog" Value="Return" />
</Control>
</Dialog>
<RadioButtonGroup Property="RootType">
<RadioButton Text="{\DlgFont8}Root 1"
Value="1" X="5" Y="0" Width="250" Height="15" />
<RadioButton Text="{\DlgFont8}Root2"
Value="2" X="5" Y="20" Width="250" Height="15" />
</RadioButtonGroup>
<TextStyle Id="DlgFont8" FaceName="Tahoma" Size="8" />
<InstallUISequence>
<Show Dialog="InstallDlg" After="CostFinalize" />
</InstallUISequence>
</UI>
<Property Id="RootType">2</Property>
</Product>
</Wix>
So, there are two features present. Each corresponding to an individual component representing the files. The radio buttons link to a RootType property which I want to control which feature is installed.
The dialog is shown fine, and if I vary the default value of the RootType the correct radio button is always checked when the installation form is shown. However, if a different radio button is selected by the user during installation, it doesn't actually make any different to which file gets installed. The file that gets installed is always the one that is set as the initial value of the RootType property.
Is there something else that needs to be done to get the radio buttons to update the property before the features are installed?