gpt4 book ai didi

.net - 检测 .NET 4.5.1 和 future 的向后兼容版本

转载 作者:行者123 更新时间:2023-12-02 01:38:54 24 4
gpt4 key购买 nike

按照 MSDN 文章 How to: Determine Which .NET Framework Versions Are Installed 中列出的指导我编写了一个 WiX 安装程序来检查 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release 注册表项以确定 .NET 4.5.1 是否已安装,并使用该检测设置先决条件。

我现在遇到的问题是,当安装 .NET 4.5.2 时,同一 key 不再是 378675378758,而是现在 379893。 .NET 4.5.2 应该是“高度兼容的就地更新”,但推荐的版本检查算法并不向后兼容。

检查以前的版本没有这个问题,即使安装了更高版本,2.0、3.0 和 3.5 注册表项仍然存在。例如即使安装了 3.5,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Version 仍然存在。

以前,Microsoft 推荐的版本检测方法是向前兼容的,但 4.5/4.5.1/4.5.2 不再是这种情况。那么,我应该做什么呢?我不愿意将 379893 (.NET 4.5.2) 添加到我检查的一组注册表值中,因为当(如果).NET 4.5.3(或其他)时,这可能会失败发行了。也许我可以检查 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Version 是否>= 4.5.51641,但这不是推荐的方法,根据MSDN,如果他们发布了 4.6,但在某种程度上向后兼容,会发生什么?

最佳答案

To find .NET Framework versions by querying the registry in code (.NET Framework 4.5 and later)状态:

Check the value of the Release keyword to determine the installed version. To be forward-compatible, you can check for a value greater than or equal to the values listed in the table.

这略低于原始问题中 MSDN 链接所指向的位置(感谢您让我接近)。

在我的 .wxs 文件中,我的代码似乎可以工作,但在过低的 .Net 4.5 版本上失败并显示有效消息。

将以下属性引用和条件放入 中:

<!-- Must have at least .Net 4.5.2 which has release 379893 -->
<PropertyRef Id="NETFRAMEWORK45RELEASE"/>
<Condition Message="$(var.ProductName) requires .NET Framwork 4.5.2. Please install the .NET Framwork then run this installer again.">
Installed OR ( NETFRAMEWORK45RELEASE AND NETFRAMEWORK45RELEASE >= "#379893" )
</Condition>

在其他地方声明以下片段:

<Fragment>
<Property Id="NETFRAMEWORK45RELEASE">
<RegistrySearch Id="NetFramework452Release"
Root="HKLM"
Key="Software\Microsoft\NET Framework Setup\NDP\v4\Full"
Name="Release"
Type="raw" />
</Property>
</Fragment>

关于.net - 检测 .NET 4.5.1 和 future 的向后兼容版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com