Пользовательские действия перед LaunchConditions - PullRequest
0 голосов
/ 10 июня 2011

Мне нужно проверить версию Framework, версию ОС и привилегии администратора перед LaunchConditions. Моя версия ОС и условия администрирования работают как положено, но не в фреймворковой версии. NETFRAMEWORK35 не заполняется. Ниже мой код.

<PropertyRef Id="NETFRAMEWORK35" />
<UI>
  <UIRef Id='...'/>
  <Error Id="2001">Please uninstall older version of this product to continue.</Error>
  <Error Id="2002">This application is only supported on Windows Server 2008(64 bit) or Windows 2003(32 or 64 bit).</Error>
  <Error Id="2003">Microsoft .NET Framework Version 3.5 is missing. To download please visit $(var.FrameworkDownload)</Error>
  <Error Id="2004">You need to be an administrator to install this product.</Error>

</UI>

<CustomAction Id="CurrentVersionDetected" Error="2001"/>
<CustomAction Id="WrongOSVersionDetected" Error="2002" />
<CustomAction Id="FrameworkMissing" Property="NETFRAMEWORK35" Error="2003" />
<CustomAction Id="IsNotAdministrator" Error="2004" />

<InstallExecuteSequence>
  <Custom Action="IsNotAdministrator" After="FrameworkMissing">
    <![CDATA[NOT(Installed OR Privileged)]]>
  </Custom>
  <Custom Action="FrameworkMissing" After="WrongOSVersionDetected">
    **<![CDATA[NETFRAMEWORK35]]> //This is make sure it is getting fired, but not**
  </Custom>
  <Custom Action="WrongOSVersionDetected" After="FindRelatedProducts">
    <![CDATA[NOT(Installed OR VersionNT = 601 OR (VersionNT = 600 AND VersionNT64))]]>
  </Custom>
  <Custom Action="CurrentVersionDetected" After="AppSearch">SELFFOUND</Custom>
</InstallExecuteSequence>

<InstallUISequence>
  <Custom Action="IsNotAdministrator" After="FrameworkMissing">
    <![CDATA[NOT(Installed OR Privileged)]]>
  </Custom>
  <Custom Action="FrameworkMissing" After="WrongOSVersionDetected">
    **<![CDATA[NETFRAMEWORK35]]> //This is make sure it is getting fired, but not**
  </Custom>
  <Custom Action="WrongOSVersionDetected" After="FindRelatedProducts">
    <![CDATA[NOT(Installed OR VersionNT = 601 OR (VersionNT = 600 AND VersionNT64))]]>
  </Custom>
  <Custom Action="CurrentVersionDetected" After="AppSearch">SELFFOUND</Custom>
</InstallUISequence>


 But strangely same action work if i put it after InstallValidate

 <Custom Action="FrameworkMissing" After="InstallValidate">
    **<![CDATA[NETFRAMEWORK35]]> //This is fired**
 </Custom>

Ответы [ 2 ]

0 голосов
/ 13 июня 2011

Используйте этот код в product.wxs для проверки требуемых фреймворков.

<Condition Message=  
         'This setup requires the .NET Framework 2.0 or higher. Please install .NET Framework 2.0 or higher and run the setup again.'>
      <![CDATA[MsiNetAssemblySupport >= "2.0.50727"]]>
    </Condition>

Здесь я проверяю .net Framework 2.0. Аналогичным образом вы можете изменить условие для проверки других версий

0 голосов
/ 10 июня 2011

Если вы используете свойство WiX NetFx NETFRAMEWORK35, вам необходимо запланировать FrameworkMissing после AppSearch, который является стандартным действием, обрабатывающим RegistrySearch.

...