当安装的是可以使用.NET 4.0或4.5的应用程序,安装先决条件.NET框架时,什么是最好的做法呢? 你如何实现使用烧录在WiX的呢?
这是我所知道的选择和权衡:
选项1:安装.NET 4.0(你需要的东西)
- 优点:未知(除了Windows XP,其中这是唯一的选择)
选项2:安装.NET 4.5如果.NET 4.5不存在
- 优点:用户不必安装后对未来的应用.NET 4.5。 当用户以后不升级到.NET 4.5的应用程序将不会遇到一个.NET版本的变化。 应用得到立即的.NET 4.5的性能改进。
选项3:安装.NET 4.5仅当既不.NET 4.x的是本
- 优点:比选项2,如果.NET 4.0已安装更迅速地部署。 如果不是,那么选择2的优点适用。
据我所知,最好的做法是选择2如果性能改进是重要的,选项3,如果平均部署的速度是很重要的。 这听起来确实对吗? 我失去了任何优势,选择1? 最重要的是,如果选择3有一定道理,你怎么实现它使用从网络安装.NET时烧?
下面是我如何在我的包检测.NET。 注意使用DetectConditions和InstallConditions的。 该DetectCondition将检查是否安装了特定的软件包,而InstallCondition可用于覆盖DetectCondition指定时,应安装软件包。 例如,在XP中,你无法安装.NET 4.5,所以我InstallCondition防止安装在这种情况下。
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4FullVersion" />
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4x64FullVersion" Win64="yes" />
<!-- .NET 4.5 only installed if Vista or higher AND it's not already installed-->
<PackageGroup Id="Netfx45">
<ExePackage Id="Netfx45" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q"
SourceFile="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX45Full\dotnetfx45_full_x86_x64.exe"
DetectCondition="(Netfx4FullVersion="4.5.50709") AND (NOT VersionNT64 OR (Netfx4x64FullVersion="4.5.50709"))"
InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion="4.5.50709" OR Netfx4x64FullVersion="4.5.50709"))"/>
</PackageGroup>
<!-- .NET 4.0 only installed if XP AND it's not already installed -->
<PackageGroup Id="Netfx4Full">
<ExePackage Id="Netfx4Full" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q"
SourceFile="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40\dotNetFx40_Full_x86_x64.exe"
DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)"
InstallCondition="(VersionNT < v6.0 OR VersionNT64 < v6.0) AND (NOT (Netfx4FullVersion OR Netfx4x64FullVersion))"/>
</PackageGroup>
然后,如果你想安装的软件包之一,只是参考它在你的链条:
<Chain>
<PackageGroupRef Id='Netfx45'/>
</Chain>
至于你的具体问题,我会安装任何框架版本的应用程序对被测试。 如果对阵双方.NET 4.0和.NET 4.5测试我想这是一个主观判断,但是我会尽量简化安装体验尽可能。 所以,如果.NET 4.0已经安装和应用程序并不需要.NET 4.5,我不会安装它。
此外,还有选项2,如果你使用的是自定义托管引导器应用是不利的。 比方说,你有.NET 4.0安装并管理引导程序需要.NET 4.0(或更高版本)。 当您运行安装程序将安装.NET 4.5将取代.NET 4.0,迫使你的安装程序,因为它是使用.NET框架,同时它被更新,以重启一半。 再次,这是唯一的,如果你使用的是自己定制的管理引导程序的问题。