Пусть 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 <a href="$(var.NetFx40WebLink)">$(var.NetFx40WebLink)</a> 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 <a href="$(var.NetFx461WebLink)">$(var.NetFx461WebLink)</a>.">
<![CDATA[NETFRAMEWORK45 >= $(var.NetFx461MinRelease)]]>
</bal:Condition>