В настоящее время я изучаю инструмент WiX для настройки пакетов MSI для программных приложений, которые у нас есть, где я работаю.
Одна из вещей, которые я хотел сделать в процессе установки, - это предложить выбрать конкретный файл для установки, и я собирался открыть диалоговое окно со списком переключателей, чтобы позволить пользователю выбрать требуемая опция.
Вот файл WXS, который я использую
<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>
Итак, есть две функции. Каждый соответствует отдельному компоненту, представляющему файлы. Переключатели ссылаются на свойство RootType , которым я хочу управлять, какая функция установлена.
Диалоговое окно отображается нормально, и если я изменяю значение по умолчанию RootType , правильная кнопка-переключатель всегда проверяется при отображении формы установки. Однако, если во время установки пользователь выберет другую радиокнопку, это фактически не повлияет на то, какой файл будет установлен. Установленный файл всегда тот, который установлен в качестве начального значения свойства RootType .
Есть ли что-то еще, что нужно сделать, чтобы переключатели обновляли свойство перед установкой функций?