我如何让Burn检测到安装了所需的 .NET 4.5 框架,如果没有在启动我的自定义 UI 之前通知用户安装需要 .NET 4.5 才能运行?
如果没有先决条件检查,我的自定义 UI (BootStrapperApplication) 将无法加载。
我不想安装只提示它丢失。
当前接受的答案实际上不起作用,因为捆绑包中没有 MSI 属性。
此示例检查 .NET Framework 4.6.1。在您的 Wix 标签中添加对 NetFxExtension 和 UtilExtension 的引用:
<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 版本(我通过浏览此 repo找到了该版本):
<?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>
In your Bundle.wxs file (or where ever you have the <Bundle>
defined), add this:
<bal:Condition Message="Add your message here">NETFRAMEWORK40FULL</bal:Condition>
For example, I use the following message to provide a clickable link the user can use to download the needed installer:
<?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>
And the result looks like this: