Установщик Wix - Могу ли я выполнить условия запуска по частям? - PullRequest
0 голосов
/ 27 августа 2018

Я использую WiX 3.10. У меня есть особый сценарий, когда перед условиями запуска выполняются некоторые пользовательские действия, потому что во время условий запуска я оцениваю определенные свойства, которые устанавливаются во время этих пользовательских действий. Однако в условиях запуска я также должен проверить версию .Net Framework. Проблема заключается в том, что если у меня нет необходимого .Net Framework, настраиваемое действие выполняется до того, как оно достигает условия запуска, и сообщение не отображается для пользователя.

Могу ли я выполнить условия запуска в определенном порядке или мне нужно изменить пользовательское действие, чтобы выполнить ПОСЛЕ условий запуска? Мне нужна помощь. Не эксперт в WiX.

Код для справки:

<!--Need to execute this first-->
    <PropertyRef Id="NETFRAMEWORK35" />
      <PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" />
      <Condition Message="This application requires .NET Framework 4.6. Please install the .NET Framework then run this installer again.">
        <![CDATA[Installed OR (NETFRAMEWORK35 = "#1" AND WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED)]]>
      </Condition>

<!--Need to execute this second.  It is execute first through custom action-->
      <PropertyRef Id="SQLSERVERMISSINGREQUIREDSERVICES"/>
      <Condition Message="Please install the following SQL Server services for the SQL Server instance: [SQLSERVERMISSINGREQUIREDSERVICES]. Then run this installer again.">
        <![CDATA[Installed or NOT SQLSERVERMISSINGREQUIREDSERVICES]]>
      </Condition>

<!--Need to execute this third. It is execute second through custom action-->
      <PropertyRef Id="SQLSERVERMAJORVERSION"/>
      <PropertyRef Id="SQLSERVERMINORVERSION" />
      <Condition Message="The GSL server requires a 2008 R2, 2012, or 2014 instance named 'GSLSQL' to be installed on the local server.">
        <![CDATA[Installed OR (SQLSERVERMAJORVERSION = "#10" AND SQLSERVERMINORVERSION >= "#50") OR SQLSERVERMAJORVERSION = "#11" OR SQLSERVERMAJORVERSION = "#12"]]>
      </Condition>

1 Ответ

0 голосов
/ 27 августа 2018

Общий способ упорядочения условий этого типа состоит в замене условий запуска пользовательскими действиями типа 19, как предлагается в документации к LaunchCondition. Это используется с сообщением об ошибке в таблице ошибок, описывающей ошибку, а сам ЦС определяется значениями свойств.

...