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

rfr*_*sia 3 wix burn

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

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

我不想只安装它丢失的提示.

小智 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">
Run Code Online (Sandbox Code Playgroud)

定义一些指示您需要的.NET版本的属性(我通过浏览此repo找到了该版本):

<?define NetFx461MinRelease = 394254 ?>
<?define NetFx461WebLink = http://go.microsoft.com/fwlink/?LinkId=671728 ?>
Run Code Online (Sandbox Code Playgroud)

最后,在bundle中引用来自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>
Run Code Online (Sandbox Code Playgroud)