3

我如何让Burn检测到安装了所需的 .NET 4.5 框架,如果没有在启动我的自定义 UI 之前通知用户安装需要 .NET 4.5 才能运行?

如果没有先决条件检查,我的自定义 UI (BootStrapperApplication) 将无法加载。

我不想安装只提示它丢失。

4

2 回答 2

7

当前接受的答案实际上不起作用,因为捆绑包中没有 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 &lt;a href=&quot;$(var.NetFx461WebLink)&quot;&gt;$(var.NetFx461WebLink)&lt;/a&gt;.">
  <![CDATA[NETFRAMEWORK45 >= $(var.NetFx461MinRelease)]]>
</bal:Condition>
于 2016-07-05T03:39:25.550 回答
2

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 &lt;a href=&quot;$(var.NetFx40WebLink)&quot;&gt;$(var.NetFx40WebLink)&lt;/a&gt; then re-run this installer.">NETFRAMEWORK40FULL</bal:Condition>

And the result looks like this:

download required screenshot

于 2013-09-20T03:51:05.337 回答