CN1641583A - 自描述软件映象更新组件 - Google Patents
自描述软件映象更新组件 Download PDFInfo
- Publication number
- CN1641583A CN1641583A CNA2004101022860A CN200410102286A CN1641583A CN 1641583 A CN1641583 A CN 1641583A CN A2004101022860 A CNA2004101022860 A CN A2004101022860A CN 200410102286 A CN200410102286 A CN 200410102286A CN 1641583 A CN1641583 A CN 1641583A
- Authority
- CN
- China
- Prior art keywords
- file
- bag
- zhong
- information
- zai
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Abstract
所描述的是一种系统和方法,其中,将包括更新的软件映象作为包来提供。该包是自描述的,由此方便了仅替换映象内的组件部分。一软件构建过程将操作系统特征(包括文件、元数据、配置信息等)映射到包,并且为重定位目的处理可执行代码。最终的包包括描述包并传递依赖信息和关于设置优先级的信息(阴影数据)的设备清单文件。
Description
相关申请的参照
本发明要求2003年12月16日提交的美国临时专利申请序列号60/530,129的优先权,该申请整体结合于此。
本申请涉及与其同时提交的以下美国专利申请,这些申请整体结合于此:
摘要号4271/307,649,“以故障保险方式向非易失存储应用自定义软件映象更新(Applying Custom Software Image Updates To Non-Volatile Storage in a FailsafeManner)”;
摘要号4281/307,650,“确定对安装有效的最大依赖软件更新组(Determing theMaximal Set of Dependent Software Updates Valid for Installation)”;
摘要号4291/307,651,“确保软件更新仅在特定的设备或设备类上安装或运行(Ensuring that a Software Update may be Installed or Run only on a Specific Deviceor Class of Devices)”;以及
摘要号4311/307,663,“以存储技术抽象方式在文件内创建文件系统(CreatingFile Systems Within a File In a Storage Technology-Abstracted Manner)”。
技术领域
本发明一般涉及计算设备,尤其涉及更新计算设备的非易失存储。
背景技术
诸如个人数字助理、当代移动电话和手持式及袖珍计算机等移动计算设备正在变为重要且流行的用户工具。一般而言,它们变得足够小,使得它们极度方便,而消耗较少的电池功率,且在同时变得能够运行更强大的应用程序。
在制造这类设备的过程中,嵌入式操作系统映象通常被内建到每一设备的单块映象文件中,并储存在非易失存储中(如,NAND或NOR闪存、硬盘等等)。作为结果,更新这一设备有时是必需或期望的。
然而,单块操作系统具有众多缺点,包括为安装更新,需要大量的资源(如,临时存储和带宽)来替换整个单块映象。同时,鉴于各种原因,安装操作系统的某些子集组件是一项困难的任务。需要一种方便操作系统映象的某一子集的更新的机制。
发明内容
简言之,本发明针对一种提供安装和更新包的系统和方法,其中,每一包包括为安装目的被同样处理的一组文件的封装,并且其中,包的格式是自描述的,由此方便了映象的仅组件部分的替换。为此,该系统和方法将操作系统特征(包括文件、元数据、配置信息等)映射到包中,作为软件构建过程的一部分。
在一个实现中,包逻辑处理特定文件和/或设置在相关的特征之间共享的情况,其中,用户进而选择来映射到不同的包。给定若干可能的较高级包映射请求,该逻辑一般确保个别文件/设置被映射到正确的包。此外,包可任选地传送依赖信息,并由此提供(通过特征级依赖性规范)了一种包获取依赖信息的机制。逻辑分解了特征级以下的冲突和依赖性。
在构建过程中,通过采用用于操作系统映象的二进制映象构造器文件和组件一包映射文件作为输入,创建一构建清单文件。该构建清单文件指定了用于特定包的文件内容。审阅这些文件内容,并且在插入到包之前处理任何可执行代码,以使可执行代码在安装时刻重新定位/修补到设备上。包生成过程基于构建清单和包定义文件中的信息创建设备清单。
操作系统映象的注册表被分解,并基于一类似的算法将其分配到包,并且可类似地分解XML文件,并将其分配到特定的包。结果是对每一要构造的包有若干文件,可能包括包定义文件、组件映射文件、组件关系文件、构建清单文件、注册表文件和XML设置文件。从这些文件,包生成过程通过从包创建包集合来构造最终的包文件,包括将每一包映射到包定义、读取该包的构建清单文件及从该数据生成包。
对于自描述的包,在包装过程中创建一设备清单文件,并将其储存在包本身之内。该设备清单文件在安装过程中使用。包依赖性和阴影(包设置优先级)数据也是包所附的数据的一部分,如通过将其写入设备清单文件中。
当结合附图阅读以下详细描述时,可以清楚其它优点,附图中:
附图说明
图1是一般表示可结合本发明的计算机系统的框图;
图2所示是依照本发明的一个方面用于构造自描述更新包的各种组件的框图;
图3所示是依照本发明的一个方面用于从二进制映象文件创建构建清单文件的逻辑的流程图;
图4所示是依照本发明的一个方面用于从注册表设置创建注册表设置相关文件的逻辑的流程图;
图5所示是依照本发明的一个方面用于处理将数据从其中写入包内的XML格式文件的逻辑的流程图;
图6所示是依照本发明的一个方面用于生成包的逻辑的流程图;
图7A和7B包括依照本发明的一个方面用于创建描述包的设备清单文件的逻辑的流程图;
图8所示是依照本发明的一个方面由工具(relmerge)执行以插入可执行文件的重定位信息的逻辑的流程图;
图9所示是依照本发明的一个方面描述包的设备清单文件的格式的框图;
图10A和10B包括依照本发明的一个方面用于构建描述包的设备清单文件的流程图;以及
图11所示是依照本发明的一个方面包的创建的流程图。
具体实施方式
示例性操作环境
图1示出了一个这样的手持式计算设备120的功能组件,包括处理器122、存储器124、显示屏126和键盘128(可以是物理或虚拟键盘,或表示两者)。可存在麦克风129以接收音频输入。存储器124一般包括易失存储器(如,RAM)和非易失存储器(如,ROM、PCMCIA卡等等)。操作系统130驻留在存储器124中,并在处理器122上执行,如微软公司的Windows操作系统或另一操作系统。
一个或多个应用程序132被加载到存储器124中(或在ROM中原地执行),并在操作系统130上运行。应用程序的示例包括电子邮件程序、调度程序、PIM(个人信息管理)程序、文字处理程序、电子表格程序、因特网浏览器程序等等。手持式个人计算机120也可包括加载到存储器124中的通知管理器134,它在处理器122上执行。通知管理器134处理如来自应用程序132的通知请求。同样,如下所述,手持式个人计算机120包括适用于将手持式个人计算机120连接到网络(包括作出电话呼叫)的网络软件136(如,硬件驱动程序等)和网络组件138(如,无线电和天线)。
手持式个人计算机120具有电源140,它被实现为一个或多个电池。电源140还可包括忽略内置电池或对其重新充电的外部电源,如AC适配器或加电对接托架。
图1所示的示例性手持式个人计算机120被示出为具有三种类型的外部通知机制:一个或多个发光二极管(LED)142和音频生成器144。这些设备可直接耦合至电源140,使得当被激活时,即使手持式个人计算机处理器122或其它组件被关闭以保存电池能量时,它们也保留一段由通知机制指示的持续时间。LED 142较佳地不限时间地持亮,直到用户采取行动。注意,音频生成器144的当代版本使用当今手持式个人计算机电池的太多能量,因此它被配置成当系统的剩余部分被关闭时,或者在激活后的一段确定持续时间之后被关闭。
注意,尽管示出了基本手持式个人计算机,然而,为实现本发明的目的,实际上能够以可由程序使用的某一方式接收数据通信和处理数据的任何设备都是等效的。
自描述软件映象更新组件
本发明一般针对安装和/或更新储存在基于微软WindowsCE.NET的便携式设备等小型移动计算设备上的软件,这些设备包括在其中将初始软件或软件更新写入诸如闪存等嵌入式设备的非易失存储器的那些设备。尽管如此,本发明提供了在总体上计算的益处,并由此可应用到其它计算设备和其它类型的存储,包括各种类型的存储器和/或其它类型的存储媒质,如硬盘驱动器。为简化目的,术语“闪存”在后文参考设备的可更新存储来使用,尽管可以理解,任一存储机制都是等效的。此外,术语“映象”一般包括初始软件安装映象以及对该映象的随后的软件更新的概念,即使仅更新该映象的一部分。
作为背景,诸如WindowsCE操作系统等当代操作系统是模块化的(组件化的)。然而,包含正确文件和设置的结果映象是单块操作系统映象。为此,在构建时,将特征变量映射到特定的文件和设置,以确定在结果单块操作系统映象中包含了什么内容。执行这一映射的能力利用两种类型的构建时配置文件:二进制映象构建器(.bib)和注册表(.reg)文件。.bib文件包含要包括在结果映象中的文件的列表,.reg文件包含要包括在映象中的注册表(设置)信息的列表。这些文件的内容按特征被组合成集合,并以可在构建时可任选地设置的条件变量包装。当在构建时设置条件特征变量时,.bib和.reg文件的关联内容被包括在该映象中,并且由此,系统用户能够在粒度特征级上选择结果映象应当包含什么内容。
也向条件变量的选择应用较高级逻辑,使得特征级依赖性是自满足的(self-satisfying)。换言之,选择一个特征也将促使所选择的特征所依赖的其它特征被选择。由此,构建系统确保自相容单块操作系统映象从用户的一部分对特征的任一随机选择中得到。然而,如上所述,单块操作系统映象具有关于在所包括的映象中映象的子部分可被个别地更新的缺点。
依照本发明的一个方面,映象包括从自包含的、安全实体构建的软件更新。基础更新基元被称为包,其中,一般而言,包是具有同一版本且可作为一个单元来更新的一组文件的封装。本发明提供了一种包格式,作为自描述的、在更新映象时具有显著的改进的格式,以及方便仅替换映象的组件部分的格式。
映象从包构建,并包含可应用到存储的可执行代码和数据两者。注意,可执行代码在安装时被定制到嵌入式设备的虚拟地址空间环境;例如,根据基本的闪存技术,某些设备允许可执行代码直接从闪存中运行(原地运行,这意味着代码无法以压缩格式储存),而其它设备需要代码被复制(包括在必要时解压代码)到RAM中来运行。依照本发明的一个方面,映象更新技术使用包将操作系统映象分解成可单独更新的可更新组件,而保留任何跨组件的依赖性。
依照本发明的一个方面,提供了一种将操作系统特征(包括文件、元数据、配置信息等等)映射到包作为软件构建过程的一部分的系统和方法。包可用于初始设备安装,也可用于更新。如后文所描述的,软件更新包可以是各种形式,例如,某些可仅包含对前一更新的改变(增量),而其它可包含完全替换其它文件的文件。一个其它类型的包可包含其它包。
本发明描述的包概念是更新过程的组件部分。用于将操作系统特征(一般是映射到具体的文件、元数据、配置信息等的抽象概念)映射到包的过程为用户(如,映象的提供商)提供了易于使用的优点,包括作为必须标识操作系统映象的最低级组件的替代,用户能够参考为操作系统映象的特定方面描述关联的文件、元数据、配置信息等的完整组的较高级句柄。注意,如本发明所使用的,属于“特征”和“组件”通常可互换使用。通过参考特征句柄,用户能够获得通过抽象管理包装复杂性方面的优点。例如,与具体地映射可执行模块、动态链接库(DLL)、资源/数据文件、注册表信息等来浏览组件软件(如,Internet Explorer)并将每一部分个别地映射到包中不同,本发明令用户能够用单个“Internet Explorer”句柄参考这一关联的信息,由此在特征级将其映射到包。
本发明也提供了处理特定文件/设置在相关的特征之间共享的情况的包装逻辑,其中,用户进而选择来映射到不同的包。给定若干可能的较高级包映射请求,各种算法(后文描述)中的逻辑一般确保个别文件/设置被映射到正确的包。在逻辑无法确定行动的正确过程的情况下,向用户提供消息以指示需要用户干预来解决的任何问题。
此外,包可任选地传递依赖信息。例如,当一个包的内容依赖于另一包的内容时,在构建过程中捕捉这一关系,并将其编码到包内,用于稍后在安装过程中的分析。本发明也提供了一种包用于获取依赖信息的机制(通过特征级依赖性规范)。
依照本发明的一个方面,特征选择可被映射到(一个或多个)包的数组,导致特定的文件和设置被映射到适当的包。为正确完成这一过程,逻辑分解了特征级之下的冲突和依赖性。例如,如果两个特征逻辑上涉及同一具体文件,并且这两个特征被映射到不同的包,则逻辑确定该共享的文件要被放入哪一包中。
在一个实现中,包文件在构建时由三个不同的文件定义:包定义文件(pkd)、组件映射文件(cpm)和组件关系文件(crf)。pkd文件定义包内容的全局属性。pkd文件是在构建过程中对照以下XSD来确认的XML文件:
<?xml version=″1.0″encoding=″utf-8″?><xs:schema targetNamespace=″http://tempuri.org/Packages.xsd″elementFormDefault=″qualified″xmlns=″http://tempuri.org/Packages.xsd″xmlns:mstns=″http://tempuri.org/Packages.xsd″xmlns:xs=″http://www.w3.org/2001/XMLSchema″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″><xs:element name=″PackageCollection″><xs:complexType><xs:sequence><xs:element name=″Package″minOccurs=″1″maxOccurs=″unbounded″><xs:complexType><xs:sequence><xs:element name=″Name″type=″xs:string″minOccurs=″1″maxOccurs=″1″></xs:element><xs:element name=″Guid″type=″xs:string″minOccurs=″1″maxOccurs=″1″></xs:element><xs:element name=″Version″type=″xs:string″minOccurs=″1″maxOccurs=″1″></xs:element><xs:element name=″LocBuddy″type=″xs:string″minOccurs=″1″maxOccurs=″1″></xs:element><xs:element name=″CertPaths″minOccurs=″0″maxOccurs=″unbounded″><xs:complexType><xs:sequence><xs:element name=″path″type=″xs:string″></xs:element></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema> |
.pkd文件的一个示例如下:
<?xml Version=″1.0″encoding=″utf-8″?><Package xmlns:xsd=″http://ww.w3.org/2001/XMLSchema″xmlns:xsi=″http://www.w3.org/2001/XMLSchema-instance″><Name>XSC1BD_OEM</Name><Guid>0b3bc94d-e4c4-4509-930c-8131dde185c8</Guid><Version>000000</Version><LocBuddy>00000000-0000-0000-0000-000000000000</LocBuddy></Package> |
注意该定义文件中全局唯一ID(GUID)和包名字的存在。GUID为包提供了可被引用以将包互相区分的唯一名字。包名字服务来提供当将操作系统特征/组件映射到包时所使用的句柄。
在一个示例实现中,cpm文件是包含组件-包映射信息的以逗号分隔值的文件。它是以下形式:
<组件变量>,<包名字>
或
<组件文件名>,<包名字>
以下提供了某些组件-包映射信息示例:
nk.exe,XSC1BD_OEMkd.dll,XSC1BD_OEMCE_MODULES_FILESYS,XSC1BD_OEMCE_MODULES_BINFS,XSC1BD_OEMCE_MODULES_FSDMGR,XSC1BD_OEMFILESYS_FSYSRAM,XSC1BD_OEMFILESYS_FSREG,XSC1BD_OEMfsdmgr.dll,XSC1BD_OEMimgfs.dll,XSC1BD_OEMCE_MODULES_STRATAD,XSC1BD_OEMCE_MODULES_MSPART,XSC1BD_OEMCE_MODULES_CEDDK,XSC1BD_OEM |
组件关系文件(crf)表示组件之间的依赖性和阴影关系(阴影指设置的优先顺序)。组件关系文件是以下形式:
<组件变量>DEPENDSON<组件变量>
或
<组件变量>SHADOWS<组件变量>
它的一个示例为:
APPS_MODULES_OMADMCLIENT SHADOWS APPS_MODULES_MMS
下表总结了本发明所描述的某些术语和文件类型的通用、非限制定义:
术语
术语 | 通用定义 |
模块 | 单个可执行文件(.EXE、.DLL等) |
设置 | 配置信息的集合,可包含注册表设置、文件系统初始化指令(.DAT文件)、数据库初始化和供应XML |
组件 | 组成特征单元的模块、文件(非模块文件,包括模板,字体等)和设置的集合。组件通常与系统生成MODULES标签相关联。 |
包 | 被签署且被包装用于分发的组件的集合 |
清单(包、构建和设备) | 描述包内容的文件。注意,在构建环境中,存在包含描述包中每一文件的名字的条目的的包清单文件(具有.BIB扩展名);不同的清单文件-设备侧清单文件(具有.DSM扩展名)是描述关于包的信息的完整组的二进制文件(后文参考图9描述)。如参考图3所描述的,构建清单文件从包清单文件创建,并由生成设备清单文件(以及包的剩余部分)的包生成过程使用。 |
阴影排序工具 | 处理组件关系文件并生成包阴影文件的构建工具。 |
文件类型
扩展名 | 文件类型 | 一般描述 |
.bib | 二进制映象构建器 | 包含应当包括在结果映象中的文件的列表 |
.reg | 注册表文件 | 包含要包括在映象中的注册表(设置)信息的列表的文件 |
.pkd.xml | 包定义文件 | 构建树中定义存在哪些包(包名字、GUID、版本、本地合伙者(loc buddy)的XML文件 |
.cpm.csv | 组件-包映射文件 | 构建树中将MODULES标签和文件映射到包的CSV文件 |
.crf.csv | 组件关系文件 | 构建树中定义MODULES标签之间的关系(阴影和依赖性)的文本文件 |
bsm.xml | 构建侧清单文件 | .bib(二进制映象构建器)文件的XML文件转换 |
.psf | 包阴影文件 | 构建环境中列出必须由命名的包作出阴影的包的中间文件(每一包中有一个,如<包名>.psf) |
.dsm | 设备侧清单文件 | 设备上描述包(包中的文件、名字、GUID、签名、阴影、依赖性、CRC、根证书等)的文件(每一包中一个) |
.pkg.cab | 规范包文件 | 包含包中所有文件的完整文件的包的完整版本 |
.pku.cab | 更新包文件 | 方便将设备从单个包的特定版本更新到同一包的 |
不同版本的文件。该文件可包含个别文件的二进制差或完整文件,它们的任何一个都将更新包的大小最小化。 | ||
.pks.cab | 超级包文件 | 包含更新包和/或规范包的集合的文件。 |
转向附图的图2,作为整体包生成过程的一部分,在构建过程中,通过采用用于操作系统映象的二进制映象构建器文件204(.bib文件,也称为包清单文件)和组件-包映射文件206作为输入,创建构建清单文件202。如上所述,构建清单文件202指定了用于特定包的文件内容。
图3一般示出了一个示例构建清单文件创建过程208,通过该过程,从二进制映象构建器文件204创建构建清单文件202。如从图3中可见到的,一般而言,分析二进制映象构建器文件204中的每一行;被分析为具有有效标签的.bib文件条目(在原地执行表中查找(步骤310和312))的行可如所需要地被压缩(步骤318),并被写入构建清单文件202中(步骤320)。
结果的构建清单文件202是用以下XSD确认的XML文件:
<?xml version=″1.0″encoding=″utf-8″?><xs:schema targetNamespace=″http://tempuri.org/ManifestCollection.xsd″elementFormDefault=″qualified″xmlns=″http://tempuri.org/ManifestCollection.xsd″xmlns:mstns=″http://tempuri.org/ManifestCollection.xsd″xmlns:xs=″http://www.w3.org/2001/XMLSchema″><xs:element name=″ManifestCollection″><xs:complexType><xs:sequence><xs:element name=″BibFileEntry″minOccurs=″1″maxOccurs=″unbounded″><xs:complexType><xs:sequence><xs:element name=″DeviceName″type=″xs:string″minOccurs=″1″maxOccurs=″1″/><xs:element name=″ReleaseName″type=″xs:string″minOccurs=″1″maxOccurs=″1″/><xs:element name=″Region″type=″xs:string″minOccurs=″1″maxOccurs=″1″/><xs:element name=″Section″type=″xs:string″minOccurs=″1″maxOccurs=″1″/><xs:element name=″Attribs″type=″xs:string″minOccurs=″0″maxOccurs=″1″/> |
</xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element></xs:schema> |
类似于创建构建清单文件202的方式,分解操作系统映象的注册表(分解成有时候被称为RGU文件的文件),并基于类似的算法将其分配到包。这一过程210(图2)的一个示例在图4中描述,其中,与有效标签(步骤414)相关联的注册表设置212(图2),在适当时包括其注册表键名,被写入包RGU文件中(步骤422)。注意,只要所处理的包改变,注册表键名就被写入该包的RGU文件中(步骤418和420)。
此外,可分解XML文件218(图2,如包含其它设置),并将其分配到特定的包。用于完成这一过程的一个示例过程200在图5中描述,其中,子节点的有效标签(在步骤508评估)被分配到包的节点(步骤514)。
包创建过程的这一中间步骤的结果是对要构造的每一包有多个文件,在图2中示出,包括:
包定义文件(pkd)224;组件映射文件(cpm)206;组件关系文件(crf)226可任选;构建清单文件202可任选;注册表文件(rgu)可任选;以及XML设置文件222可任选 |
从这些文件,(包括如通过XSD 203和XSD 225的确认)包生成过程230一般依照图6所示的流程图构造最终的包文件232。如图6中一般所表示的,在某些检查和确认(步骤600-610)之后,从包创建包集合(步骤612),包括将每一包映射到包定义、读取该包的构建清单文件208以及从该数据生成包(步骤618-622)。
将构建清单文件转化成最终包文件列表形式并用relmerge工具250(如后文参考图8所描述的将重定位信息插入到可执行文件中的工具)处理每一可执行文件的过程一般在图7A和7B中描述。如图7A和7B中通过步骤700-714一般描述的,创建一伪指令文件,并查找和分析构建清单文件,(假定不出现错误)。如果分析成功(步骤716),则在步骤720创建设备清单文件,并且过程继续到图7B的步骤726,这确保了设备清单对象被正确地创建。
通过步骤732和756,处理构建清单文件中列出的每一文件。为此,在步骤734,找到该文件,并在步骤738确定它是否可执行。如果不是,则照原样将该文件复制到一临时构建目录,否则,该文件需要由令可执行代码能够在安装时重新定位/修补到设备上(如果尚未被处理,如通过步骤740所测试的)的工具250(图2,如名为relmerge.exe)来处理。如果文件需要relmerge处理,如后文参考图8A和8B所描述的,则在步骤744调用该工具,并且如果它成功地执行,则将文件名添加到设备清单。
由此,如上文参考图7A和7B所描述的,在插入到包中以允许可执行代码在安装时能够重新定位/修补到设备上之前,审阅构建清单文件208中列出的包的文件内容,并处理任何可执行代码。为将构建清单文件转化成最终包文件列表形式,用relmerge工具250处理每一可执行文件,该工具压缩已在文件中的重定位信息,并可任选地(如果提供了.REL文件)提供允许操作系统将代码和数据段分隔成不连续的存储器区域的更详细的重定位信息。
relmerge工具操作一般在图8的流程图中描述。如步骤802所表示的,作出输入文件的副本,因为输入文件将通过运行该工具而被修改。由此,relmerge工具250作出该输入文件的副本,并从该副本工作,当程序退出时,该副本被删除。
在步骤804,移除签名,因为否则签名将导致处理的稍后部分(空格计算检查,后文描述)失败。注意,由于工具250将输出完全不同的文件,因此签名在任何情况下都与输出文件无关。注意,在可移植的可执行文件中,(.EXE和.DLL文件的文件格式),签名储存在文件中任何分段之外的文件末端,其中,每一分段对应于一单元,数据与该单元一起由加载器加载到存储器中。每一分段具有一头部,被称为O32头部,或用IMAGE_SECTION_HEADER结构来标识。如由步骤806一般表示的,为方便处理该文件,工具250将PE文件的PE文件头部及其分段解析成合适的内部数据结构。IMAGE_SECTION_HEADER结构表示映象分段头部格式(关于IMAGE_SECTION_HEADER的另外细节可在msdn.microsoft.com上找到):
typedef struct_IMAGE_SECTION_HEADER{BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; |
union{DWORD PhysicalAddresslDWORD VirtualSize;}Misc;DWORD VirtualAddress;DWORD SizeOfRawData;DWORD PointerToRawData;DWORD PointerToRelocations;DWORD PointerToLinenumberslWORD NumberOfRelocations;WORD NumberOfLinenumbers;DWORD Characteristics;}IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER; |
由于该文件将用新头部重新布局,并移除填充,因此执行空格计算检查(步骤808)来核实在文件中没有未包括在文件的分段中的信息。注意,存在数据储存在分段之外的.EXE或.DLL文件中的某些情况,包括文件签名和Codeveiw调试目录条目,(由工具250处理)。存在将数据储存在分段之外的其它应用程序,如将要提取的数据储存在.EXE本身之后的自提取可执行文件。压缩的数据不储存在分段中,否则加载器将试图将压缩的数据加载的存储器中,这并不是自提取可执行文件应当操作的。该工具不支持这些实例。
空格计算由CSpaceAccounting类的实例来实现,它维护SpackBlock(空格块)结构的数组,其每一个都占有文件中的数据块。为实现空格计算,文件中可被占有的区域作为个别的块被添加到空格计算中。这对文件头部(包括E32和O32头部)以及文件中的每一分段完成。为容纳CodeView调试条目,它们的每一个也作为单独的块添加。然后按照其在文件内的偏移对这些块排序。在新的顺序中相邻的块(如,块2在紧靠块1的最后一个字节之后的字节开始)被合并。在过程的最后,如果文件中的所有空格可被占用,则该列表应当包含一个且仅一个块,它在偏移0处开始,并且其长度等于整个文件的长度。如果该条件为真,则测试通过。如果不是,则报告错误,并且该工具退出。
如果空间计算检查通过,则工具250在指定输入文件的同一目录中搜索.REL文件,如由步骤810所表示的。如果存在,则它通过步骤812来处理,否则,通过步骤814来处理PE文件的重定位分段。更具体地,重定位分析工具可分析两种不同类型的重定位信息,即.REL文件中的重定位信息,它包含目标分段信息,以及PE文件的.reloc分段中的重定位信息,它不包含目标分段信息。为此,重定位分析具有对应于分析.REL文件或分析PE文件的内部重定位的两个进入点;在当前的实现中,调用一个或另一个是合法的,但不能同时调用两个。
为储存重定位,维护CRelocData类的二维数组,其中,该数组的两个维度是所述重定位的源分段和目标分段。重定位的源分段是重定位所定位的分段,其中,重定位是当文件被修补以在特定的地址上加载时更新文件中特定数据片段的指令;源分段标识了数据片段所出现的分段。源分段通过查找重定位的相对虚拟地址并将其与文件中的分段的相对虚拟地址范围相比较来推算。
重定位的目标分段标识包含重定位所指向的数据片段的分段。检查技术并不总能起作用,因为已知优化器以重定位看似指向其它分段的这样一种方式来优化代码,如,它优化出加和减,并将其放入引用而非代码中。为此,无法从数据中推算目标分段。两个重定位格式(.REL或.reloc)之间的差异是重定位的目标分段是否已知。.REF文件明确地标识了目标分段,而.reloc分段未标识。
结果,对于仅具有.reloc分段中的重定位信息的文件,需要将整个文件一起重定位。由于没有目标分段信息,无法将两个分段分离,并按不同的量来重定位它们。由此,该工具需要跟踪每一重定位的源分段和目标分段,并跟踪目标分段是否有效。
为达到这一目的,该过程维护CRelocData类的二维数组,并且每一CRelocData类构建其自己的重定位数据流。该数组在两个维度上都是固定的大小,这意味着该工具只能处理具有某些最大(如,16)分段的PE文件。采用这一限制,持久保持重定位的数据格式对源分段和目标分段的每一个储存8位,在数据格式内为256个分段留下了可能性。两个其它的函数(CalculateRelocSize(计算重定位大小)和WriteRelocationsToFile(将重定位写到文件))然后通过对具有至少一个重定位的源分段和目标分段的每一个组合写出块头部来组合这些个别的流。
重定位编码在CRelocData类中实现。该类采用重定位地址流(作为对CRelocData::AddReloc方法的个别调用),并创建表示对这些重定位进行编码所需的命令的字节流。该字节流可在稍后被检索。为实现这一过程,该类有效地留下一个命令,总是以“Single(单个)”命令开始,表示单个重定位。然后,当新的重定位到达时(到AddReloc方法),分析它们来看是否可使用前一命令和新的位置形成模式。如果前一命令是“Single”命令,则如果新的重定位地址是DWORD对齐的,仅可通过将其从“Single”命令转换成“Pattern(模式)”命令来扩展前一命令,并且前一命令处于模式命令的最大跳过范围内(3个DWORD)。如果前一命令是模式命令,则该模式已具有建立的形式,并且可推算出该模式中的下一元素。如果新地址恰巧与该模式中的下一元素相匹配,则将该模式扩展一个周期。否则,开始一个新的Single命令。
转向图8的整体流程,由于文件的分段在文件的头部之后线性地出现,因此需要重新布局整个文件以容纳新的头部格式并移除分段间的所有填充。为此,如由步骤818所示的,移除旧的.RELOC分段(如果存在的话),然后在末端添加新的.CRELOC分段,如果有任何重定位需要添加。使用步骤818完成的文件布局,最后在步骤820创建输出文件,将每一分段的头部以及数据写入输出文件。
在步骤822,relmerge.exe现在进行测试来看目标输出文件是否为nk.exe。如果输出文件是nk.exe,则relmerge工具250处理两个文件的内容,以写出pTOC信息和RomExt信息,(后文描述)。relmerge工具250考虑输出文件,因为nk.exe通过基于调试设置复制不同的文件来创建。所处理的第一个文件是config.bsm.xml。该文件由MakePkg.exe在映象更新处理过程中产生。它包含名字的文本表示以及对系统内核中的FIXUPVARS的期望值。分析该文件的内容,并将其储存用于稍后的使用。第二个文件是输入文件的映射文件。该文件由ProcessFixupVars处理。它采用源文件路径、复制它并用.map替换.exe,并试图打开映射文件(映射文件是包含关于PE文件中的函数和变量的物理和虚拟地址的大量信息的文本文件)。如果成功地打开了映射文件,则分析第一行以检索映射文件的时间戳。然后将时间戳与PI文件中的时间戳进行比较。如果它们不同,则生成警告,并且映射文件处理结束。如果时间戳匹配,则读取该文件的每一行,并使用正则表达式串来查找每一FIXUPVAR。如果找到匹配,则从映射文件中取出地址信息,并将其用于将新变量值(来自config.bsm.xml)在正确的位置写入源文件中。在同一时刻,ProcessFixupVars也查找pTOC(其中,TOC表示目录)和RomExt变量用于稍后的处理。当找到pTOC时,创建新的.creloc头部,将bSrcSection设为从映射文件检索的分段(从基于1调整到基于0),将bDstSection设为254,并将长度设为4。将该头部写入目标文件中,其后为4个字节的RVA+基础地址信息。对于RomExt,头部是相同的,除bSrcSection被设为253之外。
使用pTOC/RomExt分析操作,因为操作系统内核需要关于ROM中的文件的信息,它通过pTOC变量来提供。该变量需要由DiskImage工具和运行在设备上的更新应用程序来更新。关于该变量的信息只能通过在系统构建的编译和链接阶段创建的.MAP文件来检索。分析该文件以检索这一信息。
某些运行时工具需要访问内核数据结构内声明的变量。该变量被命名为RomExt。该变量需要由DiskImage工具和运行在设备上的更新应用程序来更新。关于该变量的信息只能通过在系统构建的编译和链接阶段创建的.MAP文件来检索,并且分析该文件以检索这一信息。
依照本发明的一个方面,对于自描述的包,在包装过程中创建设备清单文件260(图2,在图9中更具体地示出),并将其储存在包本身中。该设备清单文件260在安装过程中使用。包含在该设备清单文件中的格式和信息在图9中示出,并也用以下结构定义来描述:
typedef struct_DeviceManifestHeader{const DWORD dwStructSize;//用于指定版本的该结构的大小(以字节表示)const DWORD dwPackageVersion;//该包的版本const DWORD dwPrevPkgVersion;//该包所更新的包的版本,(0)代表规范const DWORD dwPackageFlags; //包专用标识符const DWORD dwProcessorID;//什么处理器(匹配winnt.h中的定义)const DWORD dwOSVersion; //构建到操作系统的哪一版本const DWORD dwPlatformID; //目标平台是什么const DWORD dwNameLength; //以字节表示的文件名长度const DWORD dwNameOffset; //对包的友好名的偏移const DWORD dwDependentCount; //依赖GUID列表中有多少条目const DWORD dwDependentOffset;//从文件的前端开始有多少字节是依赖//GUID结构 |
const DWORD dwShadowCount; //阴影GUID列表中有多少条目const DWORD dwShadowOffset; //从文件的前端开始有多少字节是附有//阴影包的GUID的数组const DWORD dwFileCount; //该清单中列出了多少文件const DWORD dwFileListOffset;//从文件的前端开始到第一个文件条目//有多少字节const DWORD cbCERTData; //数字证书数据的字节数const DWORD dwCERTDataOffset; //从文件的前端开始到证书数据//有多少字节const GUID guidPackage; //该包的GUID}DeviceManifestHeader*PDeviceManifestHeader;typedef struct_DependentEntry{const DWORD size;const DWORD version;const GUID guid;}DependentEntry,*PDependentEntry;typedef struct_FileEntry{const DWORD dwNameLength;const DWORD dwFlags;const DWORD dwOffset;const DWORD dwBase; //该文件最初与其链接的基地址const DWORD dwFileSize; //整个文件的大小,对更新包不准确。}FILEENTRY,*PFILEENTRY; |
在一个实现中,如上所述,设备清单文件的内容从pkd和经处理的crf文件(一旦被处理,称为psf文件280)信息,以及构建清单文件(如,对于文件列表和属性信息)导出。crf文件描述了组件级依赖性,并被处理成描述包级依赖性的形式。
此外,组件设置(配置信息)可彼此作出阴影(换言之,在系统上存在两个相关的设置,而只有一个会胜出的情况下,存在一种优先顺序)。组件级的依赖性和阴影信息通过阴影排序工具被转化成包级关系。
阴影排序工具依照组件关系文件226(图2)对为其它包作出阴影的每一包生成阴影文件(包名.psf)。包的.psf文件列出(每行一个)附有阴影的包的GUID。阴影排序工具的输入是合并的组件-包映射文件(.cpm)、合并的组件关系文件(.crf)和合并的包定义文件(.pkd)。输出文件是文本文件,包括以下形式的格式化的文本行:
<附有阴影的包的GUID>,<附有阴影的包名>,<规则>(其中,规则=SHADOWS或DEPENDSON)。
一个示例行如下:
273cd4bf-d4ef-4771-b2ce-6fe2fa2b2666,SMARTFON,SHADOWS
根据这一信息,包生成器创建设备清单文件,如图2中通过设备清单文件创建过程262所示的,并在图10A和10B中一般描述。为此,将.psf文件中的每一GUID添加到设备清单文件,如通过图10A的步骤1010一般表示的。注意,在一个实现中,这包括确定该GUID是依赖性GUID还是阴影GUID,以及在设备清单对象上调用适当的添加函数。当添加了GUID之后,设备清单对象将设备清单文件写到临时目录中,如通过10B的步骤1030一般表示的。
如图11所描述的,使用诸如CAB文件API(CABAPI)等包文件创建过程创建包文件232,包括伪指令文件中描述的已处理文件-rgu文件214、xml文件218和设备清单文件260,以及其它包内容282。CABAPI预期提供对机柜(Cabinet)文件的内容的访问,机柜文件作为映象更新过程的一部分用作映象更新中所涉及的文件的传输机制。
为创建包,PackageDefinition(包定义)类负责管理包的整体创建。作为创建过程的一部分,PackageDefinition对象在由“_FLATRELEASEDIR”环境变量指定的目录下创建一新的子目录。该目录名是包名,并向其添加串“_PACKAGE_FILES”,如,给定名为“LANG”的包,将创建名为“LANG_PACKAGE_FILES”的目录。当在对象上调用方法SetDirectoryBase(设置目录基础)时创建。当PackageDefinition对象创建包时,所得的包文件的名字是具有“.PKG”扩展名的包的友好名。包文件服从微软对CAB版本1.3的CAB文件规范。
PackageDefinition类提供了以下公用方法:
●PackageDefinition(XipPackage pkg)-基于XipPackage对象创建包的构造函数。
●SetDirectoryBase(string path)-在指定的目录下创建新的子目录。
●Validate()-确定包是否具有两个需要的字段,即名字和GUID。
●ReadManifest()-促使与该包关联的BuildManifest分析适当的构建清单文件。
●MakePackage()-为该包定义创建实际的包文件。
此外,当用各种文件工作以包括在包内时,应当注意,可在单独的文件中排列可执行代码和数据。其一个显著的优点是方便多语言系统,其中,特征的语言专用部分被放入对语言专用的单独的包中。这创建了一种系统,其中,包含系统的可执行代码的包与包含系统的语言专用组件的包相互分离。结果,对特征的可执行代码的补丁可被应用到任一设备,而与安装在该设备上的语言的任一组合无关。
更具体地,通过构造,当构建特征时,可执行代码(和语言不相关数据)被分离成一组文件,语言相关数据(和可能的代码)被分离成另一组文件。这些文件被标记为特征的一部分,但是语言相关数据文件被进一步标记为语言相关的。该系统然后将这些文件移至单独的包中(如,由pkd文件中的LocBuddy标签描述)。
作为示例,基于电话的特征可以在语言不相关的库(如,tpcutil.dll)中。对电话特征的语言相关资源被构建到另一资源dll中,如名为tapres.dll,它对每一语言被进一步本地化,例如,它可变成tapres.dll.0409.mui(对于美国英语)、tapres.dll.0407.mui(对于德语)等等。这些文件被标记为电话特征的一部分,但是语言专用文件用合适的文件名被进一步标记为语言专用的。例如,文件名可通过将合适的语言标签代入名字中基于位置的变量中来构造,如由tapres.dll.%LOCID%.mui所表示的。然后,对它所支持的每一语言处理该文件,并且生成多个LANGPHONE(locbudy)包,例如,LANGPHONE_0409(对于美国英语)、LANGPHONE_0407(对于德语)等等。结果,系统稍后可更新LANGPHONE区域(通过不同的LANGPHONE_xxxx包),如修补tpcutil.dll中的错误,而与上安装了哪一语言无关。
另外,系统的灵活性使得在需要的时候允许语言专用可执行代码。例如,不同的语言和场所具有用于捕捉该语言中的文本的不同的输入法编辑器(IME)。这些IME需要对每一语言特殊的代码,并由此被置于LANG区域之一之内。
最后,注意,可执行柜(cabinet)核实。柜核实模块从最终的包文件232(柜文件)中提取设备清单文件260,并对照设备清单文件260的内容核实柜文件。
如从以上详细描述可以见到的,提供了方便更新操作系统映象的某一子集的各种机制。提供了一种自描述包文件,包括令映象的更新明了且正确的依赖性、阴影和其它特征。
尽管本发明易受各种修改和替换构造的影响,然而在附图中示出了某些说明的实施例并在上文详细描述了它们。然而应当理解,这并非将本发明限于所揭示的具体形式,而是相反,本发明覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效技术方案。
Claims (32)
1.在计算环境中,一种方法,其特征在于,它包括:
构建一包,所述包对应于一操作系统映象的一部分、并包含文件和设置;以及
将描述所述包的内容的信息与所述包相关联,使得一安装机制可确定如何将所述包安装到一设备。
2.如权利要求1所述的方法,其特征在于,与所述包相关联的所述信息包括一设备清单文件,并且所述方法还包括向所述包添加所述设备清单文件。
3.如权利要求2所述的方法,其特征在于,它还包括将包括描述所述包的至少部分内容对另一实体的依赖性信息的数据写入所述清单文件中。
4.如权利要求3所述的方法,其特征在于,所述其它实体包括另一包,并且所述方法还包括从所述包提取所述设备清单文件,并从所述其它包提取另一设备清单文件。
5.如权利要求2所述的方法,其特征在于,它还包括将包括描述设置数据相对于其它设置数据的优先级的阴影信息的数据写入所述设备清单文件中。
6.如权利要求1所述的方法,其特征在于,构建包包括确定哪些文件是可执行文件以及在所述可执行文件上执行一重定位过程。
7.如权利要求1所述的方法,其特征在于,将描述所述包的内容的信息与所述包相关联包括:关联描述所述包的至少部分内容对另一实体的依赖性的依赖性信息。
8.如权利要求1所述的方法,其特征在于,将描述所述包的内容的信息与所述包相关联包括:关联描述设置数据相对于其它设置数据的优先级的阴影信息。
9.如权利要求1所述的方法,其特征在于,它还包括向所述包添加设置信息。
10.如权利要求1所述的方法,其特征在于,构建包包括:将包映射到该包的定义现有文件的定义上、读取一指定该包的文件内容的构建清单文件、以及基于所述包定义和所述构建清单文件生成所述包。
11.如权利要求10所述的方法,其特征在于,它还包括从所述操作系统映象的二进制映象构建器文件和一组件—包映射文件创建所述构建清单文件。
12.如权利要求11所述的方法,其特征在于,它还包括处理所述构建清单文件中标识的可执行代码,以使所述可执行代码能够在安装时重定位到一设备。
13.如权利要求1所述的方法,其特征在于,构建所述包包括:读取一二进制映象构建器文件,其包含在构建时要包括在所述包内的文件的列表。
14.如权利要求1所述的方法,其特征在于,构建所述包包括:创建一对应于所述二进制映象构建器文件的构建清单文件、以及读取所述构建清单文件。
15.如权利要求1所述的方法,其特征在于,构建所述包包括:读取一设置文件,其包含当构建时要包括在所述包内的设置信息的列表。
16.如权利要求1所述的方法,其特征在于,构建所述包包括:读取一组件映射文件,其将模块相关信息及文件映射到所述包。
17.如权利要求1所述的方法,其特征在于,构建所述包包括:读取一定义阴影关系的组件关系文件。
18.如权利要求17所述的方法,其特征在于,与所述包相关联的所述信息包括一设备清单文件,并且所述方法还包括:基于所述阴影关系将信息写入所述设备清单文件中、以及将所述设备清单文件添加到所述包。
19.如权利要求1所述的方法,其特征在于,构建所述包包括读取一定义依赖关系的组件关系文件。
20.如权利要求19所述的方法,其特征在于,与所述包相关联的所述信息包括一设备清单文件,并且所述方法还包括:基于所述依赖关系将信息写入所述设备清单文件中、以及将所述设备清单文件添加到所述包。
21.如权利要求1所述的方法,其特征在于,构建所述包包括读取一定义存在着什么包的包定义文件。
22.如权利要求2所述的方法,其特征在于,构建包包括使至少部分可执行代码文件与语言相关数据文件相分离,使得至少部分所述可执行代码不依赖于任一语言。
23.具有计算机可执行指令的至少一个计算机可读媒质,当所述指令被执行时,执行权利要求1所述的方法。
24.在计算环境中,一种方法,其特征在于,它包括:
一包生成过程,它构建包含文件和设置的包;以及
一包文件创建过程,它通过将描述所述包的内容的信息与所述包相关联从所述包创建一包文件,所述信息包括组件关系信息。
25.如权利要求24所述的系统,其特征在于,所述包文件创建过程通过将一设备清单文件和所述包添加到所述包文件,将所述信息与所述包相关联。
26.如权利要求24所述的系统,其特征在于,所述组件关系信息描述对另一实体的依赖性。
27.如权利要求26所述的系统,其特征在于,所述其它实体是另一包。
28.如权利要求24所述的系统,其特征在于,所述组件关系信息描述与另一实体的阴影关系。
29.如权利要求28所述的系统,其特征在于,所述其它实体是另一包。
30.如权利要求24所述的系统,其特征在于,所述包生成过程确定哪些文件是可执行文件,并在所述可执行文件上执行一重定位过程。
31.如权利要求24所述的系统,其特征在于,所述包生成过程确定哪些文件是可执行文件,并在所述可执行文件上执行一重定位过程。
32.如权利要求24所述的系统,其特征在于,所述包生成过程允许在至少某些可执行代码和数据之间的区别,使得所述可执行代码的至少某些独立于任一语言。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US53012903P | 2003-12-16 | 2003-12-16 | |
US60/530,129 | 2003-12-16 | ||
US10/837,024 | 2004-05-01 | ||
US10/837,024 US7549148B2 (en) | 2003-12-16 | 2004-05-01 | Self-describing software image update components |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1641583A true CN1641583A (zh) | 2005-07-20 |
CN1641583B CN1641583B (zh) | 2010-09-29 |
Family
ID=34556577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004101022860A Expired - Fee Related CN1641583B (zh) | 2003-12-16 | 2004-12-16 | 自描述软件映象更新组件 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7549148B2 (zh) |
EP (1) | EP1548587A3 (zh) |
JP (1) | JP5208350B2 (zh) |
KR (1) | KR101143027B1 (zh) |
CN (1) | CN1641583B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100426235C (zh) * | 2005-11-03 | 2008-10-15 | 国际商业机器公司 | 在软件包管理系统将用户进程表示为软件包的系统和方法 |
WO2011110097A1 (zh) * | 2010-03-10 | 2011-09-15 | 华为技术有限公司 | 一种软件下载方法和装置 |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7568195B2 (en) * | 2003-12-16 | 2009-07-28 | Microsoft Corporation | Determining a maximal set of dependent software updates valid for installation |
US7614051B2 (en) * | 2003-12-16 | 2009-11-03 | Microsoft Corporation | Creating file systems within a file in a storage technology-abstracted manner |
US20050132357A1 (en) * | 2003-12-16 | 2005-06-16 | Microsoft Corporation | Ensuring that a software update may be installed or run only on a specific device or class of devices |
US7549042B2 (en) * | 2003-12-16 | 2009-06-16 | Microsoft Corporation | Applying custom software image updates to non-volatile storage in a failsafe manner |
JP4479324B2 (ja) * | 2004-04-19 | 2010-06-09 | コニカミノルタビジネステクノロジーズ株式会社 | 情報処理装置 |
US7853742B2 (en) * | 2004-04-26 | 2010-12-14 | Intel Corporation | System and method to conditionally shrink an executable module |
US7661102B2 (en) * | 2004-08-20 | 2010-02-09 | Smith Micro Software, Inc. | Method for reducing binary image update package sizes |
US8255363B2 (en) * | 2005-06-08 | 2012-08-28 | rPath | Methods, systems, and computer program products for provisioning software using dynamic tags to identify and process files |
US8255362B2 (en) * | 2005-06-08 | 2012-08-28 | rPath | Methods, systems, and computer program products for provisioning software using local changesets that represent differences between software on a repository and a local system |
US20060288055A1 (en) * | 2005-06-08 | 2006-12-21 | Johnson Michael K | Methods, systems, and computer program products for provisioning software via a networked file repository in which a parent branch has a shadow associated therewith |
US8869142B2 (en) * | 2006-01-27 | 2014-10-21 | Microsoft Corporation | Secure content publishing and distribution |
KR100772399B1 (ko) * | 2006-02-28 | 2007-11-01 | 삼성전자주식회사 | 패치 파일 생성 방법 및 그 방법을 수행하는 프로그램을기록한 컴퓨터 판독 가능한 기록매체 |
US8452981B1 (en) * | 2006-03-01 | 2013-05-28 | Nvidia Corporation | Method for author verification and software authorization |
US8171482B1 (en) * | 2006-05-09 | 2012-05-01 | Vmware, Inc. | Application environment specifications for provisioning application specific runtime environments using subsets of resources required for execution |
US7779401B2 (en) * | 2006-06-26 | 2010-08-17 | Research In Motion Limited | Method and system for generating a reverse binary patch for undoing a software update |
US7567984B1 (en) * | 2006-08-31 | 2009-07-28 | Symantec Operating Corporation | Operating system and application deployment based on stored user state and organizational policy |
KR100810358B1 (ko) * | 2007-01-30 | 2008-03-04 | 삼성전자주식회사 | 컨테이너의 무결성을 확인하는 방법 및 그 dvb―h 단말 |
US11262996B2 (en) | 2007-05-09 | 2022-03-01 | Vmware, Inc. | Repository including exclusion list |
US8219987B1 (en) | 2007-08-24 | 2012-07-10 | Vmware, Inc. | Optimized virtual machine specification for provisioning application specific runtime environment |
US8347263B1 (en) * | 2007-05-09 | 2013-01-01 | Vmware, Inc. | Repository including installation metadata for executable applications |
US8577937B1 (en) | 2007-05-09 | 2013-11-05 | Vmware, Inc. | Repository including exclusion list |
US9015180B1 (en) | 2007-05-09 | 2015-04-21 | Vmware, Inc. | Repository including file identification |
US8146076B1 (en) * | 2007-09-17 | 2012-03-27 | Symantec Corporation | Systems and methods for customizing boot disk images using prioritization |
US20090106730A1 (en) * | 2007-10-23 | 2009-04-23 | Microsoft Corporation | Predictive cost based scheduling in a distributed software build |
US8335682B2 (en) * | 2007-10-30 | 2012-12-18 | Sercomm Corporation | Multi-language interfaces switch system and method therefor |
US8291402B2 (en) * | 2007-11-29 | 2012-10-16 | Red Hat, Inc. | Using system fingerprints to accelerate package dependency resolution |
US9424323B2 (en) * | 2008-01-31 | 2016-08-23 | Oracle International Corporation | Application tier data dictionary |
GB0820427D0 (en) * | 2008-11-07 | 2008-12-17 | Inq Entpr Ltd | Mobile communication device and method |
US8170706B2 (en) * | 2009-02-27 | 2012-05-01 | Xerox Corporation | Package generation system |
US20130167136A1 (en) * | 2009-03-18 | 2013-06-27 | Adobe Systems Incorporated | Component-based installation |
PT2460113T (pt) * | 2009-07-29 | 2017-10-13 | Reversinglabs Corp | Desempacotamento automático de ficheiros executáveis portáteis |
US9703550B1 (en) * | 2009-09-29 | 2017-07-11 | EMC IP Holding Company LLC | Techniques for building code entities |
US20110119570A1 (en) * | 2009-11-18 | 2011-05-19 | Xerox Corporation | Automated variable dimension digital document advisor |
US8533701B2 (en) * | 2010-03-15 | 2013-09-10 | Microsoft Corporation | Virtual machine image update service |
US8495614B2 (en) * | 2010-05-28 | 2013-07-23 | Red Hat, Inc. | Mechanism for dynamically generating spec files for software package managers |
US8732690B1 (en) * | 2011-10-27 | 2014-05-20 | Crimson Corporation | Computing device configured for installing an application |
US8984502B2 (en) * | 2011-10-28 | 2015-03-17 | Hewlett-Packard Development Company, L.P. | Systems and methods for composing or decomposing a composite image for firmware update images |
US8825722B2 (en) * | 2012-01-13 | 2014-09-02 | Microsoft Corporation | Calculation of properties of objects/shapes across versions of applications |
US8757479B2 (en) | 2012-07-31 | 2014-06-24 | Xerox Corporation | Method and system for creating personalized packaging |
US10613914B2 (en) | 2013-04-01 | 2020-04-07 | Oracle International Corporation | Orchestration service for a distributed computing system |
US9760659B2 (en) | 2014-01-30 | 2017-09-12 | Xerox Corporation | Package definition system with non-symmetric functional elements as a function of package edge property |
US9892212B2 (en) | 2014-05-19 | 2018-02-13 | Xerox Corporation | Creation of variable cut files for package design |
US9996339B2 (en) * | 2014-06-04 | 2018-06-12 | Microsoft Technology Licensing, Llc | Enhanced updating for digital content |
DE102014216464A1 (de) * | 2014-08-19 | 2016-02-25 | Continental Automotive Gmbh | Vorrichtung und Verfahren zur Computerprogramminstallation für ein Kraftfahrzeug |
US20160139909A1 (en) * | 2014-11-13 | 2016-05-19 | Martin Pospischil | Delta patch process |
CN104657184B (zh) * | 2015-03-11 | 2018-09-28 | 成都广达新网科技股份有限公司 | 一种文件对应多嵌入式设备的升级方法 |
US9916401B2 (en) | 2015-05-18 | 2018-03-13 | Xerox Corporation | Creation of cut files for personalized package design using multiple substrates |
US9916402B2 (en) | 2015-05-18 | 2018-03-13 | Xerox Corporation | Creation of cut files to fit a large package flat on one or more substrates |
EP3179688A1 (en) * | 2015-12-11 | 2017-06-14 | Koninklijke KPN N.V. | Updating part of a manifest file on the basis of patches |
US10503486B2 (en) * | 2016-12-09 | 2019-12-10 | Vmware, Inc. | Methods and apparatus to reduce application deployments sizes |
US10402192B2 (en) | 2017-07-25 | 2019-09-03 | Aurora Labs Ltd. | Constructing software delta updates for vehicle ECU software and abnormality detection based on toolchain |
CN107608710B (zh) * | 2017-08-31 | 2021-08-31 | 华为技术有限公司 | 基于Jenkins工具的软件项目构建任务配置方法及装置 |
US11269606B2 (en) | 2017-12-13 | 2022-03-08 | Absolute Software Corporation | Firmware publication of multiple binary images |
US10360017B1 (en) * | 2018-01-02 | 2019-07-23 | Microsoft Technology Licensing, Llc | Updating program packages at distribution endpoint |
US20190265959A1 (en) * | 2018-02-23 | 2019-08-29 | Microsoft Technology Licensing, Llc | Automatically synchronizing the install and build directories of a software application |
US20190384585A1 (en) * | 2018-06-14 | 2019-12-19 | Microsoft Technology Licensing, Llc | Modification package |
US20210349708A1 (en) * | 2020-05-05 | 2021-11-11 | Caterpillar Inc. | System and method involving multiple software targets packaged into one file |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4974149A (en) * | 1985-08-02 | 1990-11-27 | Wang Laboratories, Inc. | Data distribution apparatus and method having a data description including information for specifying a time that a data distribution is to occur |
US5303384A (en) | 1990-01-02 | 1994-04-12 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | High level language-based robotic control system |
US5421006A (en) | 1992-05-07 | 1995-05-30 | Compaq Computer Corp. | Method and apparatus for assessing integrity of computer system software |
US6157721A (en) | 1996-08-12 | 2000-12-05 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
US5625693A (en) | 1995-07-07 | 1997-04-29 | Thomson Consumer Electronics, Inc. | Apparatus and method for authenticating transmitting applications in an interactive TV system |
US5757914A (en) | 1995-10-26 | 1998-05-26 | Sun Microsystems, Inc. | System and method for protecting use of dynamically linked executable modules |
US5835777A (en) | 1996-03-20 | 1998-11-10 | Hewlett-Packard Company | Method of automatically generating a software installation package |
US5721824A (en) | 1996-04-19 | 1998-02-24 | Sun Microsystems, Inc. | Multiple-package installation with package dependencies |
WO1999026123A1 (en) | 1997-11-18 | 1999-05-27 | Christopher Benjamin Wakely | Improvements relating to software protection systems |
US6243468B1 (en) | 1998-04-29 | 2001-06-05 | Microsoft Corporation | Software anti-piracy system that adapts to hardware upgrades |
US7503072B2 (en) | 1998-04-29 | 2009-03-10 | Microsoft Corporation | Hardware ID to prevent software piracy |
US6381742B2 (en) * | 1998-06-19 | 2002-04-30 | Microsoft Corporation | Software package management |
US6330670B1 (en) | 1998-10-26 | 2001-12-11 | Microsoft Corporation | Digital rights management operating system |
US6327652B1 (en) | 1998-10-26 | 2001-12-04 | Microsoft Corporation | Loading and identifying a digital rights management operating system |
KR20000041146A (ko) * | 1998-12-21 | 2000-07-15 | 구자홍 | 네트워크 컴퓨터의 소프트웨어 업데이트 방법 |
US6802006B1 (en) | 1999-01-15 | 2004-10-05 | Macrovision Corporation | System and method of verifying the authenticity of dynamically connectable executable images |
US6697948B1 (en) | 1999-05-05 | 2004-02-24 | Michael O. Rabin | Methods and apparatus for protecting information |
JP3852538B2 (ja) | 1999-05-14 | 2006-11-29 | 富士通株式会社 | コンピュータシステム、コンピュータネットワークシステム、コンピュータ及び記録媒体 |
US6675382B1 (en) | 1999-06-14 | 2004-01-06 | Sun Microsystems, Inc. | Software packaging and distribution system |
US6324692B1 (en) | 1999-07-28 | 2001-11-27 | Data General Corporation | Upgrade of a program |
JP2001142683A (ja) * | 1999-11-16 | 2001-05-25 | Oki Electric Ind Co Ltd | プログラム更新媒体の作成方法及び更新プログラムのインストール方法 |
EP1238334A1 (en) | 1999-12-15 | 2002-09-11 | Sun Microsystems, Inc. | Preparation of a software configuration using an xml type programming language |
US6871344B2 (en) * | 2000-04-24 | 2005-03-22 | Microsoft Corporation | Configurations for binding software assemblies to application programs |
US7140013B2 (en) | 2000-06-01 | 2006-11-21 | Aduva, Inc. | Component upgrading with dependency conflict resolution, knowledge based and rules |
DE10028500A1 (de) | 2000-06-08 | 2002-01-03 | Deutsche Telekom Ag | Verfahren zur Installation von Software in einer Hardware |
EP1186317B1 (en) * | 2000-06-13 | 2009-12-02 | Microsoft Corporation | Multilingual user interface for an operating system |
US7000230B1 (en) * | 2000-06-21 | 2006-02-14 | Microsoft Corporation | Network-based software extensions |
US7117371B1 (en) | 2000-06-28 | 2006-10-03 | Microsoft Corporation | Shared names |
DE10037397A1 (de) | 2000-08-01 | 2002-02-14 | Daimler Chrysler Ag | Verfahren zum Laden von Software |
US6832373B2 (en) * | 2000-11-17 | 2004-12-14 | Bitfone Corporation | System and method for updating and distributing information |
US6912591B2 (en) | 2001-05-02 | 2005-06-28 | Science Application International Corporation | System and method for patch enabled data transmissions |
FI114416B (fi) | 2001-06-15 | 2004-10-15 | Nokia Corp | Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite |
US6947052B2 (en) * | 2001-07-13 | 2005-09-20 | Texas Instruments Incorporated | Visual program memory hierarchy optimization |
US8200988B2 (en) | 2001-08-03 | 2012-06-12 | Intel Corporation | Firmware security key upgrade algorithm |
US20030063896A1 (en) | 2001-09-28 | 2003-04-03 | Gonzalez Tovar Victor Manuel | System utility interface for software upgrades and system diagnostics in automotive or portable DVD players |
US20030217358A1 (en) | 2002-05-17 | 2003-11-20 | Sun Microsystems, Inc. | Method, system, and article of manufacture for firmware downloads |
US8549114B2 (en) | 2002-06-12 | 2013-10-01 | Bladelogic, Inc. | Method and system for model-based heterogeneous server configuration management |
US20040060035A1 (en) * | 2002-09-24 | 2004-03-25 | Eric Ustaris | Automated method and system for building, deploying and installing software resources across multiple computer systems |
US7085957B2 (en) | 2002-11-21 | 2006-08-01 | Texas Instruments Incorporated | Upgrading of firmware with tolerance to failures |
US7228541B2 (en) * | 2003-01-17 | 2007-06-05 | National Instruments Corporation | Creation of application system installer |
US7478385B2 (en) * | 2003-01-17 | 2009-01-13 | National Instruments Corporation | Installing software using programmatic component dependency analysis |
AU2003225439A1 (en) | 2003-02-11 | 2004-09-06 | Unisys Corporation | Method and apparatus for updating a control file |
US7072807B2 (en) * | 2003-03-06 | 2006-07-04 | Microsoft Corporation | Architecture for distributed computing system and automated design, deployment, and management of distributed applications |
US7117304B2 (en) | 2003-06-03 | 2006-10-03 | Sun Microsystems, Inc. | System and method for determining a file system layout |
EP1654640B1 (en) | 2003-06-04 | 2018-08-01 | Qualcomm Incorporated | Network having customizable generators of sofware updates and mobile electronic devices having customizable updating software |
US7478381B2 (en) * | 2003-12-15 | 2009-01-13 | Microsoft Corporation | Managing software updates and a software distribution service |
US7549042B2 (en) | 2003-12-16 | 2009-06-16 | Microsoft Corporation | Applying custom software image updates to non-volatile storage in a failsafe manner |
US7568195B2 (en) | 2003-12-16 | 2009-07-28 | Microsoft Corporation | Determining a maximal set of dependent software updates valid for installation |
US7614051B2 (en) | 2003-12-16 | 2009-11-03 | Microsoft Corporation | Creating file systems within a file in a storage technology-abstracted manner |
US7765592B2 (en) * | 2004-01-10 | 2010-07-27 | Microsoft Corporation | Changed file identification, software conflict resolution and unwanted file removal |
US7853609B2 (en) * | 2004-03-12 | 2010-12-14 | Microsoft Corporation | Update distribution system architecture and method for distributing software |
-
2004
- 2004-05-01 US US10/837,024 patent/US7549148B2/en not_active Expired - Fee Related
- 2004-12-10 JP JP2004358961A patent/JP5208350B2/ja not_active Expired - Fee Related
- 2004-12-14 EP EP04029579A patent/EP1548587A3/en not_active Ceased
- 2004-12-16 KR KR1020040107318A patent/KR101143027B1/ko not_active IP Right Cessation
- 2004-12-16 CN CN2004101022860A patent/CN1641583B/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100426235C (zh) * | 2005-11-03 | 2008-10-15 | 国际商业机器公司 | 在软件包管理系统将用户进程表示为软件包的系统和方法 |
WO2011110097A1 (zh) * | 2010-03-10 | 2011-09-15 | 华为技术有限公司 | 一种软件下载方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
JP5208350B2 (ja) | 2013-06-12 |
KR101143027B1 (ko) | 2012-05-24 |
JP2005182790A (ja) | 2005-07-07 |
EP1548587A2 (en) | 2005-06-29 |
US7549148B2 (en) | 2009-06-16 |
US20050132356A1 (en) | 2005-06-16 |
EP1548587A3 (en) | 2007-11-07 |
KR20050061380A (ko) | 2005-06-22 |
CN1641583B (zh) | 2010-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1641583A (zh) | 自描述软件映象更新组件 | |
JP5025901B2 (ja) | インストールするのに有効な依存ソフトウェア更新の最大の群の判定 | |
AU2010364976B2 (en) | Repairing corrupt software | |
US7614051B2 (en) | Creating file systems within a file in a storage technology-abstracted manner | |
JP4901095B2 (ja) | 不揮発性ストレージにカスタム・ソフトウェア・イメージ・アップデートを適用するフェイルセーフな方法 | |
CN1324467C (zh) | 基于标记的链接 | |
US20180260199A1 (en) | Method and apparatus for intermediate representation of applications | |
EP3267308B1 (en) | Application loading method and device | |
US20090007081A1 (en) | System and Method of Generating Applications for Mobile Devices | |
CN107967135A (zh) | 计算引擎实现方法、电子装置及存储介质 | |
WO2018040270A1 (zh) | 在Windows系统中加载Linux系统ELF文件的方法及装置 | |
CN102073525A (zh) | 基于Java平台的Web业务系统的动态升级方法及装置 | |
CN107797818A (zh) | 应用程序升级方法及装置 | |
CN106648569A (zh) | 目标序列化实现方法和装置 | |
CN102930005B (zh) | 在宿主文件中捆绑文件的方法及装置 | |
US20100199268A1 (en) | Application of platform dependent routines in virtual machines by embedding native code in class files | |
CN104239112A (zh) | 一种设备驱动程序安装方法及装置 | |
CN115291852B (zh) | 一种Sketch插件的开发方法、装置、设备及介质 | |
KR102310766B1 (ko) | 어플리케이션의 무결성 검사방법 | |
WO2021223544A1 (zh) | 一种启动应用的方法和相关装置 | |
CN115705289A (zh) | 测试方法、Mock框架、用户设备、服务设备和存储介质 | |
TWI291636B (en) | Basic input/output system information acquiring and editing method and system | |
US20110093573A1 (en) | Web publishing pipeline | |
CN113254888A (zh) | 获取硬件信息的方法、授权控制系统及计算设备 | |
WO2010086155A1 (en) | Application of platform dependent routines in virtual machines by embedding native code in class files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100929 Termination date: 20131216 |