Как проверить значения в WiX?

У меня есть следующее в WiX:

Диалоговое окно предлагает два флажка для установки программного обеспечения для Excel 2007 и / или Excel 2010.

<Control Type="CheckBox" Id="Excel2007" Width="88" Height="17" X="22" Y="120" Text="Excel 2007" Property="INSTALLEXCEL2007_2010" CheckBoxValue="1" />

<Control Type="CheckBox" Id="Excel2010" Width="88" Height="17" X="22" Y="120" Text="Excel 2010" Property="INSTALLEXCEL2010" CheckBoxValue="1" />

Я хочу оценить, какой флажок был установлен пользователем, чтобы проверить, установлены ли PIA (инструменты для Excel 2007 / 2010). Если нет, установка должна быть приостановлена ​​с сообщением.

Текущая проблема:

Я не могу проверить эти два значения в качестве условия запуска, потому что я не знаю решение пользователя. Я думал, что я мог бы использовать условие в диалоге, где флажки, как это:

<Publish Dialog="ExcelConfigDlg" Control="ExcelConfigDlg_Proceed" Event="NewDialog" Value="InstallDirDlg"><![CDATA[INSTALLEXCEL2007>="1"]]></Publish>

Тем не менее, это не работает. При нажатии на кнопку, процедура установки продолжается.

Как я могу исправить эту проблему?

2 ответа

Решение

Я хотел проверить значение флажка и, в зависимости от этого, проверить еще несколько значений (полученных через RegistrySearch). До сих пор я получил следующее (которое работает до сих пор):

<Publish Dialog="ExcelChooserDlg" Control="ExcelChooser_Weiter" Event="NewDialog" Value="FileConfigDlg" Order="1"><![CDATA[INSTALLEXCEL2003="1" OR INSTALLEXCEL2007="1" OR INSTALLEXCEL2010="1"]]></Publish>
        <Publish Dialog="ExcelChooserDlg" Control="ExcelChooser_Weiter" Event="SpawnDialog" Value="CancelDlg" Order="2"><![CDATA[INSTALLEXCEL2003<>"1" AND INSTALLEXCEL2007<>"1" AND INSTALLEXCEL2010<>"1"]]></Publish>
        <Publish Dialog="ExcelChooserDlg" Control="ExcelChooser_Weiter" Event="SpawnDialog" Value="CancelDlg" Order="3"><![CDATA[INSTALLEXCEL2007="1" AND OFFICERUNTIME<"10.0.31007"]]></Publish>
        <Publish Dialog="ExcelChooserDlg" Control="ExcelChooser_Weiter" Event="SpawnDialog" Value="CancelDlg" Order="4"><![CDATA[INSTALLEXCEL2007="1" AND OFFICERUNTIME<"10.0.31007" AND OFFICE_2007_PIA<>"Microsoft Office 2007 Primary Interop Assemblies"]]></Publish>
        <Publish Dialog="ExcelChooserDlg" Control="ExcelChooser_Weiter" Event="SpawnDialog" Value="CancelDlg" Order="5"><![CDATA[INSTALLEXCEL2010="1" AND OFFICERUNTIME<"10.0.31007" AND OFFICE_2010_PIA<>"Microsoft Office 2010 Primary Interop Assemblies"]]></Publish>

Я не уверен, что это лучшее лучшее решение, но, как я уже сказал, оно работает для меня до сих пор.

Отвечая на ваш первый и второй вопрос:

<Publish Dialog="ExcelConfigDlg" Control="ExcelConfigDlg_Proceed" Event="NewDialog" Value="InstallDirDlg"><![CDATA[INSTALLEXCEL2007_2010="1"]]></Publish>

Я думаю, что вы хотите поднять, скажем, диалоговое окно с предупреждением, если пользователь не установит ни один из флажков. Это пример одного из моих предупреждений:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
 <UI>
  <Dialog Id="WarningDlg" Width="260" Height="85" Title="!(loc.Title)">
    <Control Id="Ok" Type="PushButton" X="112" Y="57" Width="56" Height="17" Default="yes" Cancel="yes" Text="Ok">
      <Publish Event="EndDialog" Value="Return">1</Publish>
    </Control>
    <Control Id="Text" Type="Text" X="48" Y="15" Width="194" Height="30" NoPrefix="yes" Text="!(loc.IntegerOnlyDlgDecription)" />
    <Control Id="Icon" Type="Icon" X="15" Y="15" Width="24" Height="24" FixedSize="yes" IconSize="32" Text="Exclamation" />
  </Dialog>
</UI>
</Fragment>

и используйте следующее:

<Publish Dialog="ExcelConfigDlg" Control="ExcelConfigDlg_Proceed" Event="SpawnDialog" Value="WarningDlg"><![CDATA[(INSTALLEXCEL2007_2010<>"1") AND (INSTALLEXCEL2010<>"1")]]></Publish>
Другие вопросы по тегам