如何Burn检测到安装了所需的.NET 4.5框架,如果在启动我的自定义UI之前没有通知用户安装需要运行.NET 4.5?
如果没有先决条件检查,我的自定义UI(BootStrapperApplication)将无法加载。
我不想只安装缺少的提示。
答案 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 <a href="$(var.NetFx461WebLink)">$(var.NetFx461WebLink)</a>.">
<![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 <a href="$(var.NetFx40WebLink)">$(var.NetFx40WebLink)</a> then re-run this installer.">NETFRAMEWORK40FULL</bal:Condition>
结果如下: