在.net开发客户端的时候,一定会遇到用户没有安装.net环境的问题,特别是现在win7,win8,win10多系统并用的时间段,很多开发者使用的是4.5的目标环境,用户却是使用win7的系统,这样势必会要安装环境包

可是如果win7的用户已经安装4.5的环境呢?那么用户是否需要连带着环境包一起下载呢?

我们前几天也遇见了这种困境,如果加上环境,安装包的体积太大,本身软件才几m,环境竟然高达70M,完全不合理嘛。

后来想到了一个折中的办法,

我们可以在项目中添加一个新的工程名为【PreLoad】,目标的环境选择win7最低的版本,framework 3.5

然后把主程序的入口设置成我们的PreLoad,在程序启动的时候PreLoad来判断用户的电脑安装的最高环境是否符合我们主程序的要求,如果符合,那么直接启动程序,如果不符合,我们在PreLoad中下载目标环境,自动安装。

这样,我们的程序体积就能大大减少。

至于为什么不用低版本的framework开发?

那是因为很多酷炫的功能只有高版本的才有,用户可挑剔了。一般客户端的得喜欢用c++,我水平不够顶多就要依赖framework开发wpf了

献上判断本机最高framework版本的代码

        public static bool IsOverVersion(){using (RegistryKey ndpKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "").OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\")){int releaseKey = Convert.ToInt32(ndpKey.GetValue("Release"));return CheckVersion(releaseKey);}}

private static string CheckFor45DotVersion(int releaseKey){if (releaseKey >= 394271)return "4.6.1 installed on all other Windows OS versions or later";if (releaseKey >= 394254)return "4.6.1 installed on Windows 10 or later";if (releaseKey >= 393297)return "4.6 installed on all other Windows OS versions or later";if (releaseKey >= 393295)return "4.6 installed with Windows 10 or later";if (releaseKey >= 379893)return "4.5.2 or later";if (releaseKey >= 378758)return "4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2 or later";if (releaseKey >= 378675)return "4.5.1 installed with Windows 8.1 or later";if (releaseKey >= 378389)return "4.5 or later";return "No 4.5 or later version detected";}

  

PS:很多人喜欢使用 Environment.Version     来判断系统的版本号,可是经过测试,这样的拿到的数据只是软件本身目标框架的版本,并不是本机的最高版本号,最高的版本号还是要在注册表里面查看。

在代码中已经标明了个个版本在注册表中拿到的版本号码。

另外很多同学会问如果我就是需要知道目标框架呢?

那我这里还有一份表格,由Environment.Version 拿到的数据可以通过这个来判断版本

Base 4.0

  • 4.0.30319.1 = .NET 4.0 RTM
  • 4.0.30319.269 = .NET 4.0 on Windows XP SP3, 7, 7 SP1
  • 4.0.30319.276 = .NET 4.0 on Windows XP SP3 (4.0.3 Runtime update)
  • 4.0.30319.296 = .NET 4.0 on Windows XP SP3, 7
  • 4.0.30319.544 = .NET 4.0 on Windows XP SP3, 7, 7 SP1
  • 4.0.30319.1008 = .NET 4.0 on Windows XP SP3, 7, 7 SP1 (with MS13-052 GDR security update)
  • 4.0.30319.1022 = .NET 4.0 on Windows XP SP3, 7, 7 SP1 (with MS14-009 GDR security update)
  • 4.0.30319.1026 = .NET 4.0 on Windows XP SP3, 7, 7 SP1 (with MS14-057 GDR security update)
  • 4.0.30319.2034 = .NET 4.0 on Windows XP SP3, 7, 7 SP1 (with MS14-009 LDR security update)

4.5

  • 4.0.30319.17626 = .NET 4.5 RC
  • 4.0.30319.17929 = .NET 4.5 RTM
  • 4.0.30319.18010 = .NET 4.5 on Windows 8
  • 4.0.30319.18052 = .NET 4.5 on Windows 7 SP1 64-bit
  • 4.0.30319.18063 = .NET 4.5 on Windows 7 SP1 64-bit (with MS14-009 security update)

4.5.1

  • 4.0.30319.18408 = .NET 4.5.1 on Windows 7 SP1 64-bit
  • 4.0.30319.18444 = .NET 4.5.1 on Windows 7 SP1 64-bit (with MS14-009 security update)
  • 4.0.30319.34014 = .NET 4.5.1 on Windows 8.1 64-bit

4.5.2

  • 4.0.30319.34209 = .NET 4.5.2 on Windows 7 SP1 64-bit
  • 4.0.30319.34209 = .NET 4.5.2 on Windows 8.1 64-bit

4.6

  • 4.0.30319.42000 = .NET 4.6 on Windows 8.1 64-bit

PSS:最后,感叹一下,离开大公司进入创业公司之后,面对的问题越来越多,解决问题的能力得到了质的飞跃,每一个项目都是公司的命脉,每个人的身上都肩负着重要的责任,不再是大公司的螺丝钉,而是建设的参与者,方向的影响者。

如有疑问欢迎提问,大家共同进步!

最后,创业公司招人,前端,PHP,c#,公司地址:广州,有意者欢迎留言私聊。

个人主页:WWW.bobdong.cn

转载于:https://www.cnblogs.com/Bobdong/p/5265837.html

解决c#,wpf程序带环境安装包体积太大问题相关推荐

  1. [转]英文版VS2010制作中文环境安装包

    本文转自:http://www.cnblogs.com/upupto/archive/2010/10/29/1864726.html 自从VS2010发布以来,一直在用英文版本,接下来就说明用英文版本 ...

  2. 英文版VS2010制作中文环境安装包

    英文版VS2010制作中文环境安装包 .NET資料庫 2010-11-26 16:52:20 阅读289 评论0  字号:大中小 订阅 自从VS2010发布以来,一直在用英文版本,接下来就说明用英文版 ...

  3. win7 32位php安装包下载地址,appserv官方下载|AppServ(php环境安装包)下载v8.6 64位/32位 支持win7/win8/win10_ IT猫扑网...

    AppServ(php环境安装包)是一个功能强大的PHP环境集成安装包,安装十分方便,按照提示操作即可,包括PHP.mysql.phpMyAdmin 等工具,需要的朋友就来IT猫扑下载吧! AppSe ...

  4. 游戏服务器环境部署说明文档,游戏服务器环境安装包

    游戏服务器环境安装包 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. expor ...

  5. 解决NVIDIA软件或驱动安装包出错

    解决NVIDIA软件或驱动安装包出错 当NVIDIA GeForce Experience软件或 NVIDIA 显卡驱动程序安装失败时,有时候并没有明确指出一般出错的原因,这些错误大多是在较差的电脑系 ...

  6. 如何解决 安装Vmware报msi安装包有问题

    如何解决 安装Vmware报msi安装包有问题 1.的确是这个安装包下载的问题. 解决办法:进入到C:\Users\For\AppData\Local\Temp\下删除这个vmware_1244515 ...

  7. java开发安装程序_创建java开发环境安装包

    一.安装SetupFactory7 解压setupfactorzxb_cp.rar运行安装程序 二.打开Setup Factory 7.0 创建新工程-->使用向导 选择源文件文件夹 选择安装时 ...

  8. apache+python+php+mysql集成环境安装包

    一款使用JS框架制作开源的环境集成,代码在test.js文件里 apache+python+php+mysql(mariadb)+phpmyadmin集成包 这里要用到xxjs 是基于原生js封装的一 ...

  9. Android 安装包体积优化

    实际开发应用时,包体积优化是必不可少的.毕竟手机内存有限,如果包体积过大很多用户会直接放弃(以前手机内存很小的时候,这个真的很重要),现在由于手机内存大了(512G已经挡不住了),现在的用户更关注流畅 ...

最新文章

  1. IDEA 真牛逼,900 行又臭又长的类重构,几分钟搞定?真香!
  2. morlet包络检波matlab,布里渊光纤传感系统中的信号处理的研究
  3. 武汉linux驱动培训转让,linux驱动培训靠谱吗
  4. [Cocoa]深入浅出Cocoa系列
  5. Preparation for International Women's Day
  6. Entity Framework 使用注意:Where查询条件中用到的关联实体不需要Include
  7. SAP CRM点了附件的超链接后报错的处理方式
  8. 彩虹云商城免授权版本6.7.5完整源码
  9. kill -9都杀不掉的进程
  10. 13.python中web框架概念的引入。
  11. Loadrunner乱码的解决办法
  12. 网吧系统快速设置工具
  13. UI设计师必备技能——点击进入的网页设计全攻略
  14. resin 配置java_Resin4配置
  15. java中word转pdf/word转图片/word转html/html转word等操作
  16. 网络编程之OSI七层模型,讲解tcp/ip五层涉及的网络协议,网络通信实现,结合协议来看网络通信流程...
  17. 创造力/创新思维的阻碍
  18. 中金环境携手海通安恒,启动SAP二期项目
  19. 受力分析软件_学了那么多力学,怎么还是不会做有限元分析?
  20. HIS Metrics

热门文章

  1. Python使用nmap进行端口扫描
  2. 搭建AD域环境时出现错误,未能为域创建GPO 出现扩展错误解决办法
  3. Hadoop学习笔记(一):零Linux基础安装hadoop过程笔记
  4. 使用JavaScript生成二维码教程-附qrcodejs中文文档
  5. 远离“数据呆” 对业务的理解和思考永远高于分析技术的选择
  6. 李洪强iOS之集成极光推送二iOS 证书 设置指南
  7. Linux下MySQL server和client安装
  8. Hibernate--Criteria Query and DetachedCriteria
  9. Android ActivityManager 检测Service与Activity运行状态
  10. Go语言Web框架gwk介绍 (四)