.NET对软件安装的冲击

2016-01-29 12:55 0 1 收藏

.NET对软件安装的冲击,.NET对软件安装的冲击

【 tulaoshi.com - ASP.NET 】

.NET对软件安装的冲击
什么是.NET?

.NET是如何改变整个软件安装的?
.NET改变了我们进行软件安装的许多方式。最明显的,我们有了新的语言C#。还有,操作系统也发生了微妙的变化,以及它处理共享代码的方式。
关于元数据(Metadata)
首先,你必须了解什么是Managed Code?所有基于微软中间语言(MSIL)的代码都是以Managed Code运行的。比如.NET推出的新语言C#就完全是以Managed Code运行的。而其他Visual Studio .NET附带的语言,比如Visual C++,允许Managed Code 和None-managed Code 混合使用。
那么Managed Code 有什么特点呢?它与None-Managed Code 的最大区别就是包含了元数据(Metadata)。元数据描述了代码里的每一个元素,允许.NET的运行库对其进行管理,并使得代码可以自描述(Self-Describing)。.NET运行库通过使用元数据来提供诸如内存管理、跨语言集成、代码安全和对象生命周期自动控制等等服务。简单的说,Managed Code就是可以与.NET运行库以“契约合作”的方式运行的代码。
元数据可以包括assemblies、可装载文件、类型、方法等等。与制作安装关系最为密切的就是assembly manifest了。Assembly是一个程序的主要组成部分,包括了所有的功能、版本信息,并作为一个整体进行发布。每一个Assembly都要包括一个assembly manifest,并使得assembly 可以自描述。Manifest包括: 以文本表示的assembly 标识、版本等,如果要与别程序共享,还要包括数字签名。 描述包括的文件 指定assembly的类型和资源,并指明该assembly输出哪些。 列举所有依赖的assembly。 指明运行需要的许可权限
Manifest里也包括了以前是由自注册(Self-Registration)来完成的数据。比如所有的类型信息存放在Manifest里,这些Manifest数据又都放在.DLL或.EXE文件里。这样通过Manifest我们就可以很容易的知道Managed Code 的相互依赖关系,而不会漏掉任何信息。但是,如果是Managed Code 和None-Managed Code的混合情况,就不是那么容易做到了。

如果没有一种新的安装技术出现,开发者将面临一个大难题。

对自安装(Self-Installing)代码的误解
其中一个就是,使用Managed Code编写的软件不需要安装。因为一些安装的任务已经由元数据完成了,比如COM组件的注册。只要把程序的所有文件拷贝到一个目录下面,就可以直接运行了。很遗憾,这并不是软件安装的全部过程。
软件安装并不是简单的把文件从位置A拷贝到位置B。软件安装程序应该是给用户提供一个友好的、可靠的和统一的方式,把软件安装到用户的机器上面。首先,安装程序需要通过一个统一的熟悉的用户界面,让用户选择安装的选项,然后创建文件夹、快捷方式,进行升级、网络安装,还有许可证管理等等。在上面的例子里,你无法为用户完成所有这些事情,更不用说许可证管理了。
另外,Managed Code 和None-managed Code混合的应用程序也不能自安装。而且,要安装这样的程序比安装纯粹的None-managed Code 还要麻烦。我们不可能一下子全部丢掉以前的代码,全部转成Managed Code 。所以,我们不得不认真的考虑这个问题。
Isolated Applications and Side-by-Side Components
在Windows XP和.NET平台里,微软提供了一套机制来减少DLL Hell的发生。我们知道,应用程序一般都依赖于一些共享资源,所谓共享,就是说如果已经有一个资源安装在了系统上,应用程序就不再需要安装该资源了,直接使用就可以了。于是DLL Hell就这样发生了,如果一个应用程序需要一个比系统上现有的共享资源版本更高的资源,于是它以新的高版本的资源代替了老版本。而且有这样的可能,新版本的资源并不能与老版本的资源相兼容。而系统中只能存在该资源的一个版本,所以依赖于老版本资源的应用程序将崩溃!
为了解决这个问题,微软提供了两种方法:Isolated Applications 和Side-by-Side Components。
Isolated Application 就是让应用程序在发布的时候,附带了该程序所有组件的隔离版本(Isolated Version),这样就不会受其他安装程序影响了。但是这需要完全重写代码,代价太高。
Side-by-Side组件就是可以在新旧版本的共享资源一起共存的环境中运行。Windows XP中的许多共享资源就是以Side-by-Side的方式来编写的。开发者可以通过使用编写Application Manifest来达到Side-by-Side 的好处。Application Manifest描述了程序所依赖的组件的版本信息,所以操作系统可以根据这些信息来装载正确的共享资源。比如应用程序是在COMCTL32的V5上进行开发的,并在Application Manifest里指明了依赖于COMCTL32的V5版本。现在,即使系统上存在有别的版本的COMCTL32,操作系统也仍将为该程序装载V5版本的资源。
…..
以上文字摘自InstallShield公司的文档:<>
更多的关于软件安装方面的信息,请访问
http://www.smiling.com.cn/search/groupinfo.ecgi?group_id

来源:https://www.tulaoshi.com/n/20160129/1488134.html

延伸阅读
最近在用.NET做一个Java软件的接口,其中开发过程中涉及不少对Xml文档的操作,借助微软的MSDN和自己的使用经验,现简单介绍一下ASP.NET中对XML文档的操作。 一、 XML文档 我们大家都知道,XML是"Extensible Markup Language"的缩写,即可扩展标记语言。它是Internet环境中跨平台的、依赖于内容的技术,是这个时代中...
教家长如何搞定淘气孩子 现实生活中,有的孩子很乖,有的孩子很淘气,很多父母对淘气的孩子都没辙。那么,教家长如何搞定淘气孩子?请看下面详细介绍:   还记得那个外表凶悍、内心温柔却特别擅长搞定淘气孩子的英国超级保姆吗?对,就是那个有过16年保姆经验,并拍摄了享誉全球的电视真人秀 育儿 ...
标签: 手机
未知软体安装失败 这个其实在塞班手机的时候就有这个权限,这个也只要在手机安全设置里面设置就可以了。这也是运营商为了保证用户不过乱的安装非官方应用程序而造成手机系统紊乱的现象而添加的一个选项。 解决办法:设置安装权限即可(如图) 系统版本原因 硬件设施的原因。骑什么马,套什么鞍,破锅就配个破锅盖吧,这...
标签: windows系统
Windows8离线安装NET Framework 3.5   操作步骤 首先找到Windows8系统镜像(应该没删吧)。 然后选到它右键打开方式选择Windows资源管理器就会弹出个页面这就是你Win8镜像文件的里面我们将它关闭。 接着返回到计算机的主页面就会看到在有可移动存储的设备那里多了个DVD驱动器没错这就是你Win8镜像的虚拟光驱为什么...
标签: 电脑入门
对于电脑的应用软件如何安装,Windows系统的用户,肯定不会有任何的问题,因为在Windows系统上安装软件是非常容易的,只要点击安装,就可以一步一步接下去了。但是对于MAC系统用户来说,却不是这样的。很多新手用户并不知道该如何安装应用软件。 MAC安装应用软件的方法: 第一步:双击打开下载好的软件。 第二步:把软件添加到Applicat...

经验教程

327

收藏

76
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部