Пусть WiX/Burn определит требуемую версию.NET Framework

Как можно, чтобы Burn обнаружила, что установлена ​​необходимая платформа.NET 4.5, и, если не, уведомила пользователя перед запуском моего пользовательского интерфейса, что для установки требуется.NET 4.5 для запуска?

Без предварительной проверки мой пользовательский интерфейс (BootStrapperApplication) не сможет загрузиться.

Я не хочу устанавливать только подсказку, что его нет.

2 ответа

Решение

В вашем файле Bundle.wxs (или где у вас есть <Bundle> определено), добавьте это:

<bal:Condition Message="Add your message here">NETFRAMEWORK40FULL</bal:Condition>

Например, я использую следующее сообщение для предоставления интерактивной ссылки, которую пользователь может использовать для загрузки необходимого установщика:

<?define NetFx40WebLink = http://go.microsoft.com/fwlink/?linkid=182805 ?>
<bal:Condition Message="Microsoft .NET 4 Full Framework is required. Please download and install it from &lt;a href=&quot;$(var.NetFx40WebLink)&quot;&gt;$(var.NetFx40WebLink)&lt;/a&gt; then re-run this installer.">NETFRAMEWORK40FULL</bal:Condition>

И результат выглядит так:

скачать необходимый скриншот

Принятый в настоящее время ответ на самом деле не работает, так как свойства MSI не доступны в комплекте.

В этом примере проверяется наличие.NET Framework 4.6.1. Добавьте ссылки на NetFxExtension и UtilExtension в ваш тег Wix:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" 
 xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

Определите некоторые свойства, указывающие нужную вам версию.NET (я нашел ее, обойдя этот репозиторий):

<?define NetFx461MinRelease = 394254 ?>
<?define NetFx461WebLink = http://go.microsoft.com/fwlink/?LinkId=671728 ?>

Наконец, в вашем пакете сделайте ссылку на проверку реестра из расширения NetFx, а затем выполните проверку вручную.

<util:RegistrySearchRef Id="NETFRAMEWORK45"/>

<bal:Condition Message="This product requires .NET Framework 4.6.1, please install it from &lt;a href=&quot;$(var.NetFx461WebLink)&quot;&gt;$(var.NetFx461WebLink)&lt;/a&gt;.">
  <![CDATA[NETFRAMEWORK45 >= $(var.NetFx461MinRelease)]]>
</bal:Condition>
Другие вопросы по тегам