Я работаю над своим первым проектом WiX, и мне сложно получить некоторые записи в реестре для правильной работы.WiX Условные записи в реестре
Мои требования состоят в том, чтобы иметь возможность в настройке выбрать, будет ли программное обеспечение установлено на настольном компьютере или на самолете. Поскольку на самом деле нет способа обнаружить его автоматически, я создал дополнительный экран пользовательского интерфейса с некоторыми переключателями. (Это в отдельном файл)
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="AircraftDesktopDlg_Custom"
Width="370"
Height="270"
Title="!(loc.InstallDirDlg_Title)">
<Control Type="RadioButtonGroup"
Property="InstallType_Prop"
Id="InstallType"
Width="200"
Height="42"
X="20"
Y="110">
<RadioButtonGroup Property="InstallType_Prop">
<RadioButton Text="Aircraft"
Height="17"
Value="0"
Width="50"
X="0"
Y="0" />
<RadioButton Text="Desktop"
Height="17"
Value="1"
Width="200"
X="0"
Y="20" />
</RadioButtonGroup>
</Control>
</Dialog>
</UI>
</Fragment>
</Wix>
Листинг 1 - Радио Кнопка
Тогда, в моем главном файле Product.wxs, у меня есть следующий.
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product>
<Property Id="InstallType_Prop"
Value="0"/>
.
.
.
<DirectoryRef Id="TARGETDIR">
<Component Id="AircraftRegistryEntries"
Guid="E251C37B-2A4F-46D4-8E9F-24C66FB107E9">
<Condition>InstallType_Prop = 0</Condition>
<RegistryKey Root="HKLM"
Key="Software\Company\Product\v1.0"
Action="createAndRemoveOnUninstall">
<RegistryValue Type="integer"
Name="OfflineMode"
Value="0"/>
<RegistryValue Type="integer"
Name="Simulator"
Value="0"/>
</RegistryKey>
</Component>
<Component Id="DesktopRegistryEntries"
Guid="CACDBBB6-BCAA-4B71-92BE-C762325580A3">
<Condition>InstallType_Prop = 1</Condition>
<RegistryKey Root="HKLM"
Key="Software\Company\Product\v1.0"
Action="createAndRemoveOnUninstall">
<RegistryValue Type="integer"
Name="OfflineMode"
Value="1"/>
<RegistryValue Type="integer"
Name="Simulator"
Value="0"/>
</RegistryKey>
</Component>
</DirectoryRef>
.
.
.
<Feature Id='Complete'
Level='1'>
<ComponentRef Id='AircraftRegistryEntries'/>
<ComponentRef Id='DesktopRegistryEntries'/>
</Feature>
</Product>
</Wix>
Листинг 2 - Свойство и реестр запись
Так как вы можете видеть, кнопка радио привязана к InstallType_Prop.
То, что я пытаюсь выполнить, - это установить соответствующую запись в реестре, в зависимости от выбранного переключателя. Я вставил эти условия в компоненты реестра, но они, похоже, ничего не делают.
Мне даже не нужно так поступать - мне нужно, чтобы параметр OfflineMode был установлен в 1, если выбран рабочий стол, и установите значение 0, если выбрано Aircraft.
Я сейчас в недоумении, и я думаю, что решение находится где-то с пользовательским действием или с порядком, в котором условия оцениваются, но я не совсем уверен.
Любая помощь приветствуется.