综合应用WPF/WCF/WF/LINQ之十八:检测客户端是否安装有.NET 3.0

简介:
 为了在运行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 >




本文转自 Eallies 51CTO博客,原文链接:http://blog.51cto.com/eallies/79024,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
Linux Android开发 iOS开发
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
88 0
|
前端开发 Ubuntu Linux
【.NET6+Avalonia】开发支持跨平台的仿WPF应用程序以及基于ubuntu系统的演示
随着跨平台越来越流行,.net core支持跨平台至今也有好几年的光景了。但是目前基于.net的跨平台,大多数还是在使用B/S架构的跨平台上;至于C/S架构,大部分人可能会选择QT进行开发,或者很早之前还有一款Mono可以支持.NET开发者进行开发跨平台应用。
862 0
【.NET6+Avalonia】开发支持跨平台的仿WPF应用程序以及基于ubuntu系统的演示
|
监控 物联网 API
【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
MQTT广泛应用于工业物联网、智能家居、各类智能制造或各类自动化场景等。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信、机器与物联网通信等。好了,科普的废话不多说,下面直接通过.NET环境来实现一套MQTT通信demo,实现服务端与客户端的双边消息发布与订阅的功能和演示。
967 0
【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
|
8天前
|
JSON 编解码 Go
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第25天】Go语言`net/http`包提供HTTP客户端和服务器功能,简化高性能网络应用开发。本文探讨如何发起HTTP请求,常见问题及解决策略。示例展示GET和POST请求的实现。注意响应体关闭、错误处理、内容类型设置、超时管理和并发控制。最佳实践包括重用`http.Client`,使用`context.Context`,处理JSON以及记录错误日志。通过实践这些技巧,提升HTTP编程技能。
22 1
|
9天前
|
Go 开发者
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第24天】Go语言的`net/http`包在HTTP客户端编程中扮演重要角色,但使用时需注意几个常见问题:1) 检查HTTP状态码以确保请求成功;2) 记得关闭响应体以防止资源泄漏;3) 设置超时限制,避免长时间等待;4) 根据需求处理重定向。理解这些细节能提升HTTP客户端编程的效率和质量。
15 1
|
2月前
|
XML 数据可视化 C#
C# .NET面试系列五:WPF
<h2>WPF #### 1. WPF 由哪两部分组成? Windows Presentation Foundation (WPF) 由两个主要部分组成: 1、XAML (eXtensible Application Markup Language) ```c# 这是一种基于 XML 的标记语言,用于定义用户界面的结构和外观。XAML允许开发人员使用声明性语法来描述应用程序的用户界面元素,而不是使用传统的编程方式。XAML 被广泛用于定义 WPF 窗体、控件、布局和动画。 ``` 2、Code-behind 文件 ```c# 这是包含与用户界面相关逻辑的代码文件。通常,开发人员可
78 4
|
5月前
|
人工智能 机器人 C#
Windows编程课设(C#)——基于WPF和.net的即时通讯系统(仿微信)
一款参考QQ、微信的即时通讯软件。采用CS结构,客户端基于.Net与WPF开发,服务端使用Java开发。
|
5月前
云效静态代码检测可以检测.net吗?
云效静态代码检测可以检测.net吗?
30 1
|
6月前
|
缓存 NoSQL 大数据
4款.NET开源的Redis客户端驱动库
4款.NET开源的Redis客户端驱动库
|
6月前
|
C# 开发者
一款WPF开发的网易云音乐客户端 - DMSkin-CloudMusic
一款WPF开发的网易云音乐客户端 - DMSkin-CloudMusic
130 36

相关实验场景

更多