NSIS:检测本机.Net Framework版本
来源:互联网 发布:淘宝肖像权侵权 编辑:程序博客网 时间:2024/06/08 09:23
为了实现检测本机.Net Framework版本并在线下载安装,我找到了这篇文章
http://my.oschina.net/chinesedragon/blog/317307
主要函数是GetNetFrameworkVersion。作用是获取本机.Net Framework最高版本号。
但是它忽略了.Net CLR版本的问题。先来看张图
图中显示CLR版本只有3个:1.1、2.0、4
参考微软官网说明其实还有一个1.0(https://msdn.microsoft.com/zh-cn/library/bb822049.aspx)
在实际使用中,需要根据程序依赖的CLR版本来安装对应的.Net Framework版本,而不是像文章开始提到的GetNetFrameworkVersion函数那样,检测到最高版本就完事了。
打个比方,我现在有个程序Hello.exe是通过.Net Framework 3.0来进行开发的,对应依赖CLR为2.0版本,那么我就应该安装基于CLR 2.0的.Net版本,而不能安装基于CLR 4的.Net版本。
而如果采用GetNetFrameworkVersion的检测办法,我可能获取到4.x版本,逻辑上大于2.0,就认为是安装了.Net Framework,但是程序运行时提示需要某个版本的错误。
所以,我们在检测时应该以CLR版本来检测
; 获取本机CLR 2.0的最高.Net版本Function GetNetCLR2Version nsVariables::Save ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Install" ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Version" StrCmp $0 1 KnowNetFrameworkVersion +1 ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "InstallSuccess" ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "Version" StrCmp $0 1 KnowNetFrameworkVersion +1 ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install" ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Version" StrCmp $0 1 KnowNetFrameworkVersion +1 StrCpy $1 "0" KnowNetFrameworkVersion: Push $1 nsVariables::LoadFunctionEnd; 获取本机CLR 4的最高.Net版本Function GetNetCLR4Version nsVariables::Save ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Install" ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Version" StrCmp $0 1 +2 +1 StrCpy $1 "0" Push $1 nsVariables::LoadFunctionEnd另外附上一个小工具,用来检测本机.Net Framework版本情况(http://www.asoft.be/prod_netver.html)
1 0
- NSIS:检测本机.Net Framework版本
- NSIS 检测.NET Framework版本(学习九)
- 查看本机.NET Framework版本
- .NET Framework CLR 版本检测
- C#读取本机安装的.net framework 版本
- 杂七杂八(1)——如何查看本机的.NET Framework版本
- 查看本机安装了哪些.Net Framework版本的方法
- 查看本机.net版本
- 检测本机Office(excel/word)版本
- 检测.net framework版本,判断是否安装了service pack
- 如何检测已安装的Microsoft.Net Framework的版本
- 如可检测.NET Framework是否安装及安装版本
- 检测 .NET Framework 3.5
- javascript检测 .net Framework
- 查看 .net Framework 版本
- .NET Framework版本解析
- .NET Framework版本解析
- .NET Framework的版本
- MongoDB c++ driver(三)
- 进程/线程同步机制
- 事件处理机制之AnsyncTask异步任务
- xargs和管道的区别
- Windows下使用Eclipse搭建C++开发环境
- NSIS:检测本机.Net Framework版本
- 收官之作:网上商城
- 吉他自学教程
- 通过页面去操作数据库并且在数据库里面去添加数据
- xss测试用例
- LeetCode - 191. Number of 1 Bits
- Python机器学习库大全
- CS50笔记
- 浅谈NAT服务