综合应用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,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
352 3
|
9月前
|
监控 Linux
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
396 13
yum install -y net-snmp-devel 安装不成功 zabbix项目安装,Errors during downloading metadata for repository ‘extras-common’:问题解决方案-优雅草卓伊凡
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
369 0
|
C# Windows 开发者
超越选择焦虑:深入解析WinForms、WPF与UWP——谁才是打造顶级.NET桌面应用的终极利器?从开发效率到视觉享受,全面解读三大框架优劣,助你精准匹配项目需求,构建完美桌面应用生态系统
【8月更文挑战第31天】.NET框架为开发者提供了多种桌面应用开发选项,包括WinForms、WPF和UWP。WinForms简单易用,适合快速开发基本应用;WPF提供强大的UI设计工具和丰富的视觉体验,支持XAML,易于实现复杂布局;UWP专为Windows 10设计,支持多设备,充分利用现代硬件特性。本文通过示例代码详细介绍这三种框架的特点,帮助读者根据项目需求做出明智选择。以下是各框架的简单示例代码,便于理解其基本用法。
972 0
|
C# 开发者 Windows
WPF在.NET9中的重大更新:Windows 11 主题
WPF在.NET9中的重大更新:Windows 11 主题
247 0
|
C# 开发者 Windows
WPF在.NET9中的重大更新:Windows 11 主题
这也是一个很好的学习WPF的项目,可以通过看源代码提升自己的WPF水平。 WPF Gallery演示如何在标记中指定 XAML 控件,因为每个控件页都显示用于创建每个示例的标记。它还将显示您的应用程序的所有可能的布局选项。 WPF Gallery应用还包含有关使用颜色、排版和图标开发特殊应用程序的设计指南。它还包括一个示例页,用于演示如何使用不同的控件在 WPF 应用程序中创建用户界面。 WPF在.NET 9中可以使用Win11主题的控件了,有助于WPF开发者们开发出更符合现在设计风格、更美观的界面。 希望WPF越来越好。
225 0
|
安全 程序员 Shell
老程序员分享:NSIS自定义界面,下载并安装Net.Framework4.8
老程序员分享:NSIS自定义界面,下载并安装Net.Framework4.8
|
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# 这是包含与用户界面相关逻辑的代码文件。通常,开发人员可
440 4
|
安全 C# 开发者
.NET开源的一键自动化下载、安装、激活Microsoft Office利器
.NET开源的一键自动化下载、安装、激活Microsoft Office利器
378 5
|
开发框架 缓存 前端开发
安装ASP.NET AJAX (一安装)
安装ASP.NET AJAX (一安装)
261 0