让WiX / Burn检测所需的.NET Framework版本

时间:2013-09-12 18:13:40

标签: wix burn

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

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

我不想只安装缺少的提示。

2 个答案:

答案 0 :(得分:5)

当前接受的答案实际上并不起作用,因为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版本的属性(我通过this repo拖网找到了该版本):

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

最后,在您的软件包中引用NetFx Extension中的注册表检查,然后手动执行检查。

<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>

答案 1 :(得分: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>

结果如下:

download required screenshot