综合应用WPF/WCF/WF/LINQ之十八:检测客户端是否安装有.NET 3.0
2008-01-11 20:52
495 查看
为了在运行XBAP程序之前,有一个检测客户端是否安装有.NET 3.0的机会,我们才不让用户直接访问Eallies.OA.UI.xbap文件,而是先访问一个Default.htm文件(当然,另外一个原因是网站的默认启动页面中包含这个文件名)。
Default.htm文件的内容如下,如果通过检测,则跳转到Eallies.OA.UI.xbap文件;否则弹出了一个警告对话框,当然,您也可以更改得更好,让程序自动去下载并安装.NET 3.0.
另外,如果客户端安装的是.NET 3.0测试版,则版本号有可能不是3.0.04506,您也可以对这个程序进行改造,让程序支持多个版本的.NET 3.0。
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml" >
3 <head>
4 <title>Eallies OA</title>
5 <script language="javascript" type="text/javascript">
6 <!--
7 var strRuntimeVersion = "3.0.04506";
8
9 function CheckVersion()
10 {
11 if (HasRuntimeVersion(strRuntimeVersion) == false)
12 {
13 alert("This machine does not have correct version of .NET Framework 3.0 Runtime.");
14
15 return false;
16 }
17
18 return true;
19 }
20
21 //
22 // Retrieve the version from the user agent string and compare
23 // with specified version.
24 //
25 function HasRuntimeVersion(version)
26 {
27 var userAgentString = navigator.userAgent.match(/.NET CLR [0-9.]+/g);
28
29 if (userAgentString != null)
30 {
31 for (var i = 0; i < userAgentString.length; ++i)
32 {
33 if (Compare(this.GetVersion(version), this.GetVersion(userAgentString[i])) <= 0) return true;
34 }
35 }
36
37 return false;
38 }
39
40 //
41 // Extract the numeric part of the version string.
42 //
43 function GetVersion(versionString)
44 {
45 var numericString = versionString.match(/([0-9]+)\.([0-9]+)\.([0-9]+)/i);
46
47 return numericString.slice(1);
48 }
49
50 //
51 // Compare the 2 version strings by converting them to numeric format.
52 //
53 function Compare(version1, version2)
54 {
55 for (var i = 0; i < version1.length; ++i)
56 {
57 var number1 = new Number(version1[i]);
58 var number2 = new Number(version2[i]);
59
60 if (number1 < number2) return -1;
61 if (number1 > number2) return 1;
62 }
63
64 return 0;
65 }
66 -->
67 </script>
68 </head>
69 <body>
70 <script language="javascript" type="text/javascript">
71
72 if (CheckVersion() == true)
73 {
74 document.location.href = "Eallies.OA.UI.xbap";
75 }
76
77 </script>
78 </body>
79 </html>
Default.htm文件的内容如下,如果通过检测,则跳转到Eallies.OA.UI.xbap文件;否则弹出了一个警告对话框,当然,您也可以更改得更好,让程序自动去下载并安装.NET 3.0.
另外,如果客户端安装的是.NET 3.0测试版,则版本号有可能不是3.0.04506,您也可以对这个程序进行改造,让程序支持多个版本的.NET 3.0。
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml" >
3 <head>
4 <title>Eallies OA</title>
5 <script language="javascript" type="text/javascript">
6 <!--
7 var strRuntimeVersion = "3.0.04506";
8
9 function CheckVersion()
10 {
11 if (HasRuntimeVersion(strRuntimeVersion) == false)
12 {
13 alert("This machine does not have correct version of .NET Framework 3.0 Runtime.");
14
15 return false;
16 }
17
18 return true;
19 }
20
21 //
22 // Retrieve the version from the user agent string and compare
23 // with specified version.
24 //
25 function HasRuntimeVersion(version)
26 {
27 var userAgentString = navigator.userAgent.match(/.NET CLR [0-9.]+/g);
28
29 if (userAgentString != null)
30 {
31 for (var i = 0; i < userAgentString.length; ++i)
32 {
33 if (Compare(this.GetVersion(version), this.GetVersion(userAgentString[i])) <= 0) return true;
34 }
35 }
36
37 return false;
38 }
39
40 //
41 // Extract the numeric part of the version string.
42 //
43 function GetVersion(versionString)
44 {
45 var numericString = versionString.match(/([0-9]+)\.([0-9]+)\.([0-9]+)/i);
46
47 return numericString.slice(1);
48 }
49
50 //
51 // Compare the 2 version strings by converting them to numeric format.
52 //
53 function Compare(version1, version2)
54 {
55 for (var i = 0; i < version1.length; ++i)
56 {
57 var number1 = new Number(version1[i]);
58 var number2 = new Number(version2[i]);
59
60 if (number1 < number2) return -1;
61 if (number1 > number2) return 1;
62 }
63
64 return 0;
65 }
66 -->
67 </script>
68 </head>
69 <body>
70 <script language="javascript" type="text/javascript">
71
72 if (CheckVersion() == true)
73 {
74 document.location.href = "Eallies.OA.UI.xbap";
75 }
76
77 </script>
78 </body>
79 </html>
相关文章推荐
- 如何检测是否安装了.NET 2.0和.NET 3.0 [ZT]
- 如何检测是否安装了.NET 2.0和.NET 3.0
- iOS 检测是否安装了第三方应用的方法--兼容iOS9之后的info.plist设置
- CentOS 7.0 x64下Zabbix 3.0 安装笔记 / linux运维之ZABBIX通过自带web检测功能检测网站是否正常
- 检测Android手机是否被安装了Carrier IQ监控的应用
- iOS 微信WXApi检测是否安装客户端不好用解决办法
- 一些tip,如何检测是否安装.net及其版本
- 用oralce连接.net客户端出现问题:“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,”的解决办法
- 从架构设计到系统实施-基于.NET 3.0的全新企业应用之设计基于WPF的客户端
- iOS应用中检测第三方app是否安装及跳转解决方案
- 检测客户端是否安装 Silverlight 插件和判断IE是否安装或支持Silverlight(限IE)
- 检测客户端是否安装 Silverlight 插件
- 友盟分享 检测是否安装微信/QQ客户端
- Javascript实现检测客户端是否安装了.NET FrameWork
- iOS应用中检测第三方app是否安装及跳转解决方案
- 检测系统中是否安装了Google map 应用
- 检测客户端是否安装 Silverlight 插件和判断IE是否安装或支持Silverlight(限IE)
- Andorid检测支付宝客户端是否安装
- Android检测手机是否安装某个应用
- js检测客户端浏览器是否安装flash插件