.NET对软件安装的冲击

.net安装包 windows .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公司的文档:<<The Impact of .NET on Installations>>

更多的关于软件安装方面的信息,请访问
http://www.smiling.com.cn/search/groupinfo.ecgi?group_id=24326

采购订单定价策略 超详细 ‘需求’字段里填写的是一个例程编号(例程是一段判断程序),如果我们在需求中维护了例程编号,那只有这个例程条件被满足时,这个条件表才会被系统自动读取。一部分的条件表只有在凭证项目满足一定的条件时才会被读取。 ‘排斥的’字段如果别勾中的话,那表明如果这个条件表被系统成功读取到数据后,系统将停止这个存取顺序的执行,否则,系统将继续执行下去。 注意:a、如果我们给某个条件类型设定了有效期的话,那我们必须给这个条件类型分配一个存取顺序。 b、不能给一个抬头条件分配存取顺序。 是... 阅读详情

相关推荐

探索LLM世界:新手小白的学习路线图

通过系统的学习和实践,新手小白也能逐步掌握LLM的核心技术。掌握LLM不仅能提升个人技术水平,还能为职业发展带来广阔的前景。未来,随着技术的不断进步,LLM将在更多领域发挥重要作用,成为推动科技进步的重要力量。学习LLM是一条充满挑战但也充满机遇的道路。只要你坚持不懈、不断学习和实践,就一定能够在LLM领域取得突破。希望本文提供的学习路线图能为你指明方向,助你早日掌握LLM,开启AI学习的新篇章!

m0_62110645的博客 2360

【教程】 .Net环境和开发工具Visual Studio的安装

安装.NET环境和Visual Studio开发工具的教程

好学若饥,谦卑若愚。 2万+

服务器被攻击植入挖矿病毒,CPU占用高问题排查处理(.systemd-service.sh)

客户服务器遭攻击,部署的应用服务经常性被停止,服务器CPU占用居高不下,top查看如下: 可以看到第一个bash任务,占用cpu近400%,非正常的应用程序和脚本任务,多半是被植入了木马信息。 查看该进程的符号连接,发现已经是被删除的状态 /usr/bin/-bash (deleted),无法查看其启动程序的信息 查看定时任务:cat /etc/crontab,发现都是正常的应用程序定时脚本 又用 crontab -l 查看了一下,发现了异常定时任务如下,同top里的异常任务一致...

gottst0113的博客 2120

安装软件提示:必须首先安装.NET Framework

今天在安装软件的过程中提示“必须首先安装.NET Framework”        这说明我们的程序是需要.net framework环境的,但是对方的电脑上没有,所以安装一个.NET Framework就好啦。

李晓洁 廊坊师范学院信息技术提高班 12期 1万+

压电传感器信号放大难题?用运放设计电荷放大器的5个关键步骤

本文详细解析了压电传感器信号放大难题,并提供了用运放设计电荷放大器的5个关键步骤。从电压放大到电荷放大的范式转换,到运放选型、反馈网络设计、PCB布局及频响特性验证,帮助工程师解决工业自动化中的信号衰减问题,提升测量精度和稳定性。

weixin_27303545的博客 449

WPS文档编辑时空行问题解决方案

本文详细介绍了如何解决WPS文档编辑时空行的问题,从问题描述与分析、解决方案详解到操作示例与注意事项等多个方面进行了全面阐述。通过本文的介绍和指导,用户可以快速定位问题根源并采取有效措施进行解决,从而提升文档编辑效率和美观性。未来,随着WPS软件的不断升级和优化,相信会有更多便捷高效的功能被添加到软件中。同时,用户也需要不断学习和探索新的操作技巧和方法,以适应不断变化的办公需求。希望本文能够为广大WPS用户提供有益的参考和帮助,共同推动办公效率的提升和发展。

mmoo_python的博客 1244

若要运行此应用程序,您必须首先安装.NET Framework的以下版本之一

根据提示安装.net FrameWork即可

哎一入江湖岁月催的专栏 5万+

深度解构事务码 SQF:Support Query Framework 与 ABAP 静态分析实战

某制造企业在年度审计前,需要确认自定义发票过账程序 ZFI_INV* 系列是否存在硬编码公司代码与未捕获异常。技术团队在字段填入ZFI_INV*后,勾选与规则,执行扫描。SQF 生成的 ALV 报告列出 42 个警告,其中 17 条与抛出 CX_SY_NO_HANDLER 相关,8 条涉及动态 SQL 注入风险。结果导出至 Excel 供开发整改,并在 ATC 阶段验证修复。此过程较手工逐个执行 Code Inspector 节省超 80 % 时间。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 216

。NET在安装过程中的一个问题

我的。NET安装盘是2000版本的,一共四张,以往的顺序是先装CD4,在从CD1开始装,如果本机已有.NET,安装时会提醒你先卸载,昨天机子突然闪火,重启,发现。NET已经无法运行或新建任何项目,本来想卸载掉。NET重装,但是在“安装删除程序”中死活提示我少文件,无法卸载,我插入CD,想从里面找到文件,而此时安装删除程序的提示也变成了“插入Visual Studio.net CD1”我照做,但是不

渔喂面包 1058

社区版 ABAP MCP 能不能读取 SAP S/4HANA 公有云开发对象,我的判断是能试,但不能当成已被 SAP 背书的标准通道

文章摘要:当前存在多个社区项目(如mcp-abap-adt、mcp-abap-abap-adt-api等)通过包装ABAP ADT能力为MCP Server,使AI开发工具能读取ABAP对象。这些项目技术上依赖ADT HTTP API或SAP官方ADT language server,但针对SAP S/4HANA Cloud Public Edition的完整适配仍存在挑战。SAP官方已通过VS Code扩展提供ADT MCP能力,而社区方案在云环境下需遵循ABAP Cloud的严格限制,仅能访问已授权的开

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 87

【Leetcode】269.火星词典(Hard)

应用拓扑排序

明朗晨光的专栏 771

微软.NET Framework 3.0冲击BPM市场

随着微软每年一度的技术盛会Tech. Ed展开,.NET Framework 3.0也将正式在台湾揭露,相较于.NET Framework 2.0,3.0并不是质变的结果,而是整体框架的延伸,并且新增了4个组件,其中 Workflow Foundation对市场所造成的影响,预计将会最快浮现。 台湾微软开发工具暨平台推广处产品经理胡德民表示,.NET Framework 3.0发布之后,不仅会

wstarx的专栏 1885

rk3568 Android12 默认授予预装app权限

默认授予预装应用权限可以避免用户在每次使用应用时都要重复同意权限请求。尽管在Android 12中,用户对权限的管理有了更高的控制权,但这也可能导致用户在频繁使用预装应用时感到繁琐和不必要的干扰。通过默认授权,减少了这种麻烦。一些厂商可能会根据其定制的Android系统(如Samsung的One UI、Xiaomi的MIUI)要求某些预装应用默认获得权限,以便应用能够提供厂商特定的功能。这也有助于设备厂商提供统一和稳定的服务,不至于因为权限问题导致某些功能无法使用。

weixin_35723192的博客 661

冲击波内幕点滴 (转)

冲击波内幕点滴 (转)[@more@]冲击波内幕点滴XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" /> 作者:幽谷听泉 ...

csd3176的博客 139

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

推荐项目:CircuitBreaker.Net——.NET环境下的电路断路器

推荐项目:CircuitBreaker.Net——.NET环境下的电路断路器 在追求高可用和强韧性的现代软件开发中,一个名为CircuitBreaker.Net的开源项目脱颖而出,为.NET开发者提供了一种优雅地处理服务依赖故障的方式。以下是对其深入浅出的解析,旨在帮助您了解并应用这一强大工具。 项目介绍 CircuitBreaker.Net 是针对 .NET 平台设计的电路断路器模式实现。该模式...

gitblog_00427的博客 974

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

揭示.NET Core和.NET Standard

作为.NET家族的最新成员,有很多关于.NET Core和.NET Standard的误解,以及它们于.NET Framework之间的区别。在这篇文章,我会准确的解释他们究竟是什么,并看看何时应选择哪一个。在详细介绍之前,首先查看.NET的结构图,它将帮助我们更好的理解.NET Core和.NET Standard所在的未知。当15年前,.NET 框架第一版发布时, 它有一个单一的. NET 堆

dotNET跨平台 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

揭示 NET Core和 NET Standard

揭示 NET Core和 NET Standard

qq_44952610的博客 231

.NET Framework3.0答疑

这份文件包含了关于 .NET Framework 3.0 更名常被问到的问题,对于部署额外的问题请参照 MSDN 上的 .NET Framework 3.0 deployment 文件。  问 1:什么是 .NET Framework 3.0(先前代号 WinFX)?   答:.NET Framewrok 3.0 是微软受管理程式码编写模型,它是 .NET Framework 2.0 的超集,以新

TonyWang的专栏 737

安装和部署

http://www.aspxboy.com/2/category.aspx  部署安装时写入SQL SERVER和Web.config在.NET平台下,部署 Web 解决方案是比较方便的。我们可以利用Visual Studio.NET 2003添加一个WEB安装项目,在部署的“文件系统编辑器”中添加项目的主输出和内容文件,非常简易地完成安装程序的制作。    [查看全文]

david286的专栏 830

快速体验 .NET9 提供的 HybridCache 混合缓存

HybridCache 是 .NET 9 的一大亮点,适用于需要高性能、低延迟和分布式能力的现代应用。通过简单配置即可获得 本地 + 分布式 的双重优势,是替代传统 IMemoryCache 和 IDistributedCache 的理想选择。

ChaITSimpleLove的博客 1859

是毁灭还是重生——从浏览器大战看未来软件发展

软件领域将向何处发展? 这个问题可能是所有IT人都在想的问题,谁掌握了这个问题的要点,谁能先知先觉,那么就能引领这个行业。但是很多情况下,我们无法预测未来,只能在埋头苦干的过程中迷失方向。 最常见的预测未来的方式,就是分析历史,以史为鉴,以史为尺来度量可能的未来。 软件领域也有一段不长也不短的历史。说她不长,是因为只有了了的几十年,说他不短,是因为在这短短的几十年,却似乎经理了漫

小木匠盖大厦 459

RocketMQ .NET

RocketMQ .NET Producer Cunsumer Broket

ooo 1008

.NET Framework 3.0 问答翻译

原文网址 :http://msdn.microsoft.com/winfx/learning/netfx3faq/default.aspx 在 2006 年 6 月,微软副总裁 S. Somasegar 宣布 WinFX 将更名为 .NET Framework 3.0,请知道更多详细资料请看它的 Blog。 这份文件包含了关于 .NET Framework 3.0 更名常被问...

aome1470的博客 165
上一篇: 组件重用需要专人负责
下一篇: Microsoft SOAP Toolkit 2.0介绍
optman
博客等级 码龄26年 64粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值