CN1645322A - 确定对安装有效的最大依赖软件更新组 - Google Patents

确定对安装有效的最大依赖软件更新组 Download PDF

Info

Publication number
CN1645322A
CN1645322A CNA2004101020140A CN200410102014A CN1645322A CN 1645322 A CN1645322 A CN 1645322A CN A2004101020140 A CNA2004101020140 A CN A2004101020140A CN 200410102014 A CN200410102014 A CN 200410102014A CN 1645322 A CN1645322 A CN 1645322A
Authority
CN
China
Prior art keywords
bag
node
branch
file
equipment
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
Application number
CNA2004101020140A
Other languages
English (en)
Other versions
CN1645322B (zh
Inventor
J·格劳姆
M·马克利
S·谢尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1645322A publication Critical patent/CN1645322A/zh
Application granted granted Critical
Publication of CN1645322B publication Critical patent/CN1645322B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

所描述的是一种系统和方法,其中,审阅用于安装(如,到嵌入式计算设备上)的软件包集合的依赖关系,由此能够选择最大安装可能性组,以允许以最少的可能更新步骤对任一给定包的最高版本更新,同时遵从依赖性约束。更新确认过程组织并确认下载到设备的更新包,并为每一组构建图。处理包括更新之间的路径的图数据,以确认更新并确定当有一个以上路径可用于到达同一版本时,可用最小加权(成本)来应用到设备上的现有映象来产生期望更新的最小且最优包组。

Description

确定对安装有效的最大依赖软件更新组
相关申请的参照
本发明要求2003年12月16日提交的美国临时专利申请序列号60/530,126的优先权,该申请整体结合于此。
本申请涉及与其同时提交的以下美国专利申请,这些申请整体结合于此:
摘要号4271/307,649,“以故障保险方式向非易失存储应用自定义软件映象更新(Applying Custom Software Image Updates To Non-Volatile Storage in a FailsafeManner)”;
摘要号4291/307,651,“确保软件更新仅在特定的设备或设备类上安装或运行(Ensuring that a Software Update may be Installed or Run only on a Specific Deviceor Class of Devices)”;
摘要号4301/307,652,“自描述软件映象更新组件(Self-Describing SoftwareImage Update Components)”以及
摘要号4311/307,663,“以存储技术抽象方式在文件内创建文件系统(CreatingFile Systems Within a File In a Storage Technology-Abstracted Manner)”。
技术领域
本发明一般涉及诸如具有嵌入式操作系统的计算设备,尤其涉及更新计算设备的非易失存储。
背景技术
诸如个人数字助理、当代移动电话和手持式及袖珍计算机等移动计算设备正在变为重要且流行的用户工具。一般而言,它们变得足够小,使得它们极度方便,而消耗较少的电池功率,且在同时变得能够运行更强大的应用程序。
在制造这类设备的过程中,嵌入式操作系统映象通常被内建到每一设备的单块映象文件中,并储存在非易失存储中(如,NAND或NOR闪存、硬盘等等)。作为结果,更新这一设备有时是必需或期望的。
然而,单块操作系统具有众多缺点,包括为安装更新,需要大量的资源(如,临时存储和带宽)来替换整个单块映象。同时,安装操作系统的某些子集组件是一项困难的任务,因为设备上现有包安装状态是可变的,并且可存在任意数量的有版本的包排队等候安装。目前,没有一种已知的可查询设备上已安装的映象来找出要安装什么的智能映象更新服务器架构。然而,即使可开发这一服务器架构,会存在关于与服务器共享设备的安装状态信息的私密性问题。需要一种能够处理许多更新版本以及那些版本之间的冲突和依赖性的在设备侧处理设备更新的有效方法。
发明内容
简单而言,本发明针对一种系统和方法,通过该系统和方法可审阅用于安装(如,在嵌入式设备上)的包集合的依赖关系,由此能选择最大安装可能性组以允许以可能的最少更新步骤对任意给定包的最高版本更新,而遵从包依赖约束。这通过知道设备上的现有包安装状态以及被排队等候安装的有版本的包来实现。
首先确认要安装的任一包,这涉及一个过程,其中,审阅排队等候安装的包的完整性、确认内容、确定更新权限(根据签名机制)并确定依赖关系。在一个实现中,确认过程的结果包括两个列表:由于通过确认要求而可被安装的包列表、及由于无法满足确认要求的一个或多个而无法被安装的包列表。列表可被排序成安装顺序。
提供了一种更新确认器/确认过程,一般而言,它确认下载到设备上的一组更新包并基于要更新的目标包将它们组织成组。处理每一组以确定可应用到设备的现有映象来生成更新的最小且最优包组。为确定最小且最优包组,将包组织成具有从基节点(表示目标包)到每一叶节点的多个路径的图。该图方便了确定通过该包组的最优路径,由此,可以最低的成本(加权)更新将现有设备包更新到更新组内指定的每一包的可能的最高版本。为此,在构建了图之后,为各种确认目的步查(walk)这些图,同时试图找出当有一个以上路径可用于到达同一版本时,可用最少的权值(成本)将该设备更新到的最高版本。
在一个实现中,确认过程可作为例如由更新应用程序所调用的应用编程接口来访问。确认过程查找每一包的设备清单文件(设备清单文件描述该包),当找到时,将该包添加(如,作为该包的代表性节点)到包图。当处理了每一清单文件时,图处理查找证书信息,包括检查父节点的证书链,并在无效时从父节点延伸出的树中剪除任一对应的分支。当处理了图的分支和节点之后,包括签名核实,确定最低加权分支,并将该分支添加到要返回到调用实体的更新列表。
当结合附图阅读以下详细描述时,可以清楚其它优点,附图中:
附图说明
图1是一般表示可结合本发明的计算机系统的框图;
图2是依照本发明的一个方面用于获取包依赖信息的清单文件的表示;
图3A和3B包括依照本发明的一个方面用于执行更新确认过程,包括处理依赖信息的流程图;
图4所示是依照本发明的一个方面执行更新确认过程的各种机制的框图;
图5A和5B包括依照本发明的一个方面用于执行下令更新过程,包括处理依赖信息的流程图;
图6是依照本发明的一个方面用于构造图来评估包依赖性的流程图;
图7A和7B包括依照本发明的一个方面用于执行包更新图的遍历的流程图。
具体实施方式
示例性操作环境
图1示出了一个这样的手持式计算设备120的功能组件,包括处理器122、存储器124、显示屏126和键盘128(可以是物理或虚拟键盘,或表示两者)。可存在麦克风129以接收音频输入。存储器124一般包括易失存储器(如,RAM)和非易失存储器(如,ROM、PCMCIA卡等等)。操作系统130驻留在存储器124中,并在处理器122上执行,如微软公司的Windows操作系统或另一操作系统。
一个或多个应用程序132被加载到存储器124中,并在操作系统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的便携式设备等小型移动计算设备上的软件,这些设备包括在其中将初始软件或软件更新写入诸如闪存等嵌入式设备的非易失存储器的那些设备。尽管如此,本发明提供了在总体上计算的益处,并由此可应用到其它计算设备和其它类型的存储,包括各种类型的存储器和/或其它类型的存储媒质,如硬盘驱动器。为简化目的,术语“闪存”在后文参考设备的可更新存储来使用,尽管可以理解,任一存储机制都是等效的。此外,术语“映象”一般包括初始软件安装映象以及对该映象的随后的软件更新的概念,即使仅更新现有映象的一部分。
依照本发明的一个方面,以有效、智能(且故障保险)的方式向嵌入式设备的非易失存储应用自包含、安全实体形式的可用软件更新的一个适当的子集。可应用各种类型的软件更新,包括全替换更新以及仅包含对前一更新的改变的更新。这些软件更新可包含可执行代码和数据两者,在安装时刻将可执行代码定制到嵌入式设备的虚拟地址空间环境。
与单块更新不同,一旦在设备上安装了初始制造映象,可通过按本发明更新该映象的离散部分来执行对该映象的更新。在一个实现中,这些离散部分被封装成包,其中,包是映象文件(代码、数据、脚本等等)的自描述集合,并可包括被签署并被包装用于分发的组件的集合。在这一实现中,整个操作系统映象根据一个或多个包来构建,其每一个都被个别地或与其它包组合来更新,取决于每一包的要求。
包可以各种方式来配置,包括“规范”、“增量/差”和“超级”形式,其每一个都服务关于软件更新的各种目的。例如,规范包包含包内每一文件的完整副本,而增量/差包包含仅包含基于该文件的较早修订版本的二进制差的一个或多个文件。增量/差包应用到已安装的前一版本,由此,通常相对于其它包较小,并且在试图减少下载成本和下载时间时使用。超级包包含其它包,并在需要下载一个以上包时,如,更新互相依赖的包时用作一种方便。
规范包在构建过程中通过将操作系统特征和元数据(如,特定应用程序的可执行代码和关联的数据和配置信息)与包定义相关联来生成。增量/差包通过向两个规范包的内容应用二进制差算法,并依照本发明如后文所描述的捕捉增量/差包在基线规范包版本上具有的依赖关系,从规范包生成。
依照本发明的一个方面,提供了一种组织并确认被下载到设备的一组更新包的更新确认器/确认过程。该过程中的第一步基于要更新的目标包将包组织成一致的组。在包被组织成组之后,处理每一组以确定可应用到设备上的现有映象来产生更新的最小且最优包组。一致组的每一个包括以设备上同一现有包为目标的一组包。新包的每一个具有不同的基础版本,并可应用到不同的目标版本。
为确定最小且最优包组,将包组织成具有从基节点(表示目标包)到每一叶节点的多个路径的图。这方便了确定通过构成该图的包组的最优路径。处理每一组以确定要安装的组内的最优包组,由此,将现有设备包更新到更新组内所指定的每一包的最高可能版本。
各种因素影响这一处理的结果。例如,如果无法确认依赖性或签名,则从图中移除该更新的分支,并尝试不同的分支,如果有可用的分支的话。对于需要更新多少数据,一个分支可以比另一分支更有效;注意,规范包被认为具有无穷的权值,因为不使用规范包来获取更新的任一方式(即,通过至少某些增量,可能在多个包中)可能比将每一文件写(如,闪存)入规范包中更有效。可选地,规范包具有实际的权值也是可行的。
由此,对每一包构架一个图,无论该包是在NK(内核)分区还是在系统分区中,其中,分区本质上是不同的文件系统,它们可具有不同的属性,可在分区中储存包内容,如由上述名为“以存储技术抽象方式在文件内创建文件系统”的相关专利申请中所描述的。注意,具有到NK分区的内容的包是与其内容到IMGFS分区中的包是相同种类的包。然而,对于IMGFS分区的NK和系统更新,加载/启动操作系统的序列是不同的,因为NK分区被首先加载,并且NK分区中的驱动程序被用于定位并加载IMGFS分区文件。
向该包的对应图添加每一更新包的节点。然后使用包清单中清楚说明的版本依赖关系连接图中的节点,如包的版本二可升级包的版本一,版本三可升级版本二(但不是版本一),由此,在版本一和二之间以及版本二和三之间可存在边连接,但是在版本一和三之间不存在。应当理解,上述版本关系仅为示例,关系实际上依赖于构建更新的方式。例如,可构建从版本1包更新的版本3包。一般而言,每一更新包具有特定的源版本和特定的目标(最终)版本,并仅可从该源版本更新(不必要是目标版本减一)。注意,规范更新包可更新任一较早的版本。
在构建了图之后,为各种确认目的步查这些图,如,如下所述地检查签名。一般而言,图步查过程遍历每一图中的路径,试图找出当有一个以上路径可用于到达同一版本时,可以用最小的权值(成本)将设备更新到的最高版本。在步查时,如果节点未被确认,则本质上将该节点及其路径从该图中移除。
对于包清单,如上述名为“自描述软件映象更新组件”的相关专利申请中所描述的,每一包类型包含一完整地描述包内容以及通用包特征(包括依赖信息)的设备侧清单文件(如,具有.dsm扩展名)。图2表示了该清单文件的布局。
如下表中所见的,该设备清单头部包含唯一地涉及该特定包的直系的全局唯一标识符(GUID)以及涉及该特定包文件的版本:
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;
在设备清单头部中还可见到当前包所依赖的包的列表,其每一个由以下结构来描述:
typedef struct_DependentEntry{const DWORD size;const DWORD version;const GUID guid;}DependentEntry,*pDependentEntry;
可存在多个包,其每一个都由一GUID唯一地描述;包的所有版本共享同一GUID。包的依赖规则要求该包或该包所依赖的包为依赖列表中所标识的版本号或高于该版本号。如果这样一个版本已安装在设备上,或安装待决但其依赖性已满足(由此确保其安装),则包为指定的版本或高于此版本。
为提供对设备侧清单文件(在一个实现中为具有所有者格式的二进制文件)中的信息的访问,提供了一种公用包信息API(PackageInfoAPI)。本发明使用该包信息API来确定设备上的包以及排队等候可能安装的包的现有安装状态。该API作为构建系统API以及嵌入式设备API存在,并服务以有效地分析包文件的集合的设备清单文件。一般而言,包信息API提供枚举设备上预先存在的包、枚举特定包的阴影顺序信息(后文描述)、枚举特定包的依赖信息、以及枚举属于特定包的文件的文件名列表的能力。包信息API也提供打开作为设备侧清单储存在文件系统中的文件、从指定的包内打开设备侧清单文件、以及检索特定包的包信息(如,_PACKAGEINFO)的能力。包信息API也提供当给定到特定文件的路径时为该文件计算CRC32值、以及给定到特定包的路径时为该包计算CRC32值的接口。PackageInfoAPI组件包含下文描述的API的一个实现。
以下API组定义了对PackageInfoAPI的外部接口。数据类型描述如下:
·HPKGENUM-这是用于标识特定包枚举组的不透明数据类型。
·HPKG-这是用于表示唯一包的不透明数据类型。
·HRESULT-这是标准COM返回类型。
·REFGUID-这是到GUID结构的引用。
·LPTSTR-这是到TCHAR串的指针。
·HFILEENTRY-这是用于向调用程序传递FILEENTRY信息的不透明数据类型。
以下API找出第一个有效(有效==不是恶意的“模仿者”)包并提供检索包信息所需的句柄:
HRESULT Pkg_FindFirstPackage(
  /*[out]*/HPKGENUM*phPkgEnum,
  /*[out]*/HPKG*phPkg);
以下API找出下一个有效的包并提供检索包信息所需的句柄(S_FALSE指示枚举的结束):
HRESULT Pkg_FindNextPackage(
  /*[in]*/HPKGENUM hPkgEnum,
  /*[out]*/HPKG*phPkg);
以下API关闭包枚举器:
HRESULT Pkg_FindClose(/*[in]*/HPKGENUM hPkgEnum);
以下API将“打开”具有指定GUID的设备侧清单文件,提供检索包信息所需的句柄。这是FindFirstPackage/FindNextPackage API的替换使用:
HRESULT Pkg_OpenPackageByGUID(
  REFGUID guidPkg,
  /*[out]*/HPKG*phPkg);
以下API将“打开”具有指定名字的设备侧清单文件,提供检索包信息所需的句柄。这是FindFirstPackage/FindNextPackage API的替换使用:
  HRESULT Pkg_OpenPackageByName(
        <!-- SIPO <DP n="9"> -->
        <dp n="d9"/>
    LPCTSTR szFileName,

    /*[out]*/HPKG*phPkg);

  //“关闭”包(先前用Pkg_FindFirstPackage、Pkg_FindNextPackage

  //或Pkg_OpenPackageByGUID打开的包)

  HRESULT Pkg_Close(HPKG hPkg);

  //枚举附有阴影的包。S_FALSE指示枚举的结束

  HRESULT Pkg_GetNextShadowedPackage(HPKG hPkg,

  /*[out]*/GUID*pguidShadowedPkg);

  //开始指定包的GUID依赖性的枚举。

  HRESULT Pkg_GetFirstDependentPackage(

    HPKG hPkg,

    /*[out]*/GUID pguidDependentPkg,

    /*[out]*/DWORD*pdwDependentPackageVersion);

  //继续对给定包的GUID依赖性的枚举。S_FALSE指示枚举的结束。

  HRESULT Pkg_GetNextDependentPackage(HPKG hPkg,

  /*[out]*/GUID*pguidDependentPkg,/*[out]*/DWORD

  *pdwDependentPackageVersion);

  //开始包中列出的文件的枚举。如果缓冲器不够大(或为空),则将cbSize

  //设为需要的缓冲器大小,包括末端的NUL字符。

  HRESULT Pkg_GetFirstFile(

    HPKG hPkg,

    /*[out]*/LPTSTR pszFileName,

    /*[in/out]*/DWORD*cbSize);

  //枚举包中的文件。S_FALSE指示枚举的结束。

  HRESULT Pkg_GetNextFile(HPKG hPkg,/*[out]*/
        <!-- SIPO <DP n="10"> -->
        <dp n="d10"/>
  LPTSTR pszFilename,DOWRD cbSize);

  //获取包的单次出现的信息

  HRESULT Pkg_GetPkgInfo(HPKG hPkg,/*[out]*/

  PPACKAGEINFO pPackageInfo);

  //将指定的文件映射为DSM文件。如果它不是DSM,返回E_FAIL。

  HRESULT PkgInfo_OpenByName(LPCTSTR szFullName);

  //确定特定的文件是否包含在指定的包内。

  //如果命名的文件是包的一部分,则HFILEENTRY为非空。

  HRESULT Pkg_ContainsFile(

    HPKG hPkg,

    LPTSTR szFileName,

    /*[out]*/HFILEENTRY**pFileEntry);

  //确认指定包的头部。

  HRESULT Pkg_ValidateHeader(

    HPKG hPkg,

    DWORD DWFileSize);

  //将CERT(证书)数据从指定的包复制到传入的缓冲器中。

  //如果缓冲器不够大或者为空,则将pcbBufferSize设为需要的大小。

  HRESULT Pkg_GetCERTData(

    HPKG hPkg,

    LPVOID lpBuffer,

    DWORD*pcbBufferSize);

  //以及CRC计算API(这用于测试,例如,

  //对照储存在设备上的CRC进行核实
        <!-- SIPO <DP n="11"> -->
        <dp n="d11"/>
  HRESULT Pkg_CalculateFileCRC(

    LPCTSTR pszFilename,

    /*[out]*/DWORD*pdwCRC);

  HRESULT Pkg_CalculatePackageCRC(

    LPCTSTR pszPackageName,

    /*[out]*/DWORD*pdwCRC);

  //打开CAB,提取DSM并映射。

  //如果文件不存在或不是DSM,则返回E_FAIL。

  HRESULT PkgInfo_ExtractFrom(LPCTSTR szCABFile);

  //给定由CABAPI返回的HCAB,找出DSM、提取它并映射它。如果
文件

  //不存在或不是DSM,则返回E FAIL。

  HRESULT Pkg_Info_ExtractFromHCAB(HCAB hCab);
依照本发明的一个方面,首先确认要安装的任一包。包确认涉及审阅排队等候安装的包的完整性、确认其内容、确定更新权限(根据签名机制)以及确定依赖关系的过程。在一个实现中,确认过程的结果包括两个列表:由于通过确认要求可被安装的一个或多个包的列表、及由于无法满足一个或多个确认要求不能被安装的一个或多个包的列表,以及其每一个的失败原因。列表可被排序成安装顺序,除确保如果应用增量则所需的文件存在以外,它可依赖于大小考虑事项来减少碎片并确保有足够的空间来更新。图3A和3B包括描述总体确认过程的流程图。
在一个实现中,确认过程可作为调用的应用编程接口,例如由更新应用程序来访问。有两个函数,一个函数用更新的文件名来调用,以确认并返回其安装数据,在另一个函数中调用程序提供到可储存更新包的目录的路径。为简化的目的,一般在此将更新认为是在目录中。
在图3A和3B中,例如,当给定包含要安装的一个或多个包的目录时,执行若干测试来确定包是否可被安装。步骤300获得包目录,并测试以确定该目录是否存在(步骤302)以及该目录是否包含文件(步骤304)。如果不是,则通过步骤306返回错误消息,确认过程结束。
如果目录存在,且包含至少一个文件,则步骤308和322循环以重复通过每一文件,在每一个上执行测试。步骤310测试该文件是否为合适类型的包文件;如果是,则步骤312试图从该包中提取设备侧清单文件(DSM)。更具体地,在一个实现中,使用CABAPI来试图作为CAB文件打开文件。如果成功,则作出提取DSM的试图。如果文件无法作为CAB文件被加载,则将名字记录到坏包的列表中,用HRESULT错误代码指示指定的文件名不能作为CAB文件被加载。如果DSM不能被提取,则将该文件名记录到坏包的列表中,用HRESULT错误代码指示CAB中没有DSM。如果不是CAB文件或如果如在步骤314所评估的无法找到设备侧清单文件,则选择下一包文件并测试,直到没有文件剩余为止。
当找到设备侧文件时,通过步骤316将包添加(如,作为该包的代表性节点)到包图。如果在由步骤318测试时不成功,则确认过程结束(在步骤320),作为无法创建节点的结果。
当处理了每一文件之后,如果目录中至少一个文件是具有设备侧清单文件的包文件,则图应当不为空。如果图为空(步骤324),则没有一个文件是有效的包,过程在步骤326结束。否则,过程继续到图3B的步骤328。
图3B的步骤328(以及步骤348)表示用于处理图中的每一分支的循环,而步骤330(以及步骤344)表示用于处理当前被处理的分支中的每一节点的嵌套循环。一般而言,处理查找证书信息,包括通过步骤332和334检查父节点的证书链、当未找到时通过步骤336从父节点延伸出的树中剪除对应的分支。
如果找到,则通过步骤338和340核实签名。如果找到,则在步骤342将加权数据(用于在决定当一个以上包可用于提供同一结果时相对其它包使用哪一包时来评估效率)添加到基于该节点的分支,并且通过步骤344选择下一节点,直到没有剩余。当包被加载时计算加权信息,并且当构建路径时将加权信息添加到路径的权值。初始图构造排除了包有效的假定,由此,仅需要过程希望使用的包核实签名信息,而非在更新组中的每一包上执行核实,这有希望地减少了执行的签名检查次数。如果在步骤340签名无效,则在步骤346从当前节点剪除该分支。
在以这一方式处理了图的分支和节点之后,如由步骤350所示的步查该图,以找出最低权值的分支,并且将该分支添加到要返回的更新列表。
依照本发明的一个方面,确认过程提供能够确定对安装有效的最大依赖软件更新的版本依赖性计算要求。如由图4的框图所表示的,确认过程402与各种组件相关联(或可被认为是包括各种组件)来作出决定,包括下令更新组件404。下令更新组件404构造作为更新组408被下载到设备的包组的图406、从包清单410提取依赖信息并核实其它包412以正确的版本在设备上存在(或在排队等候安装的包414中)。另外,下令更新组件404负责分析现有和新的设备清单文件410和412,并基于依赖要求为包生成安装顺序。
图5A和5B包括描述确认过程的下令更新过程的流程图。一般而言,在某一初始化和确认检查(步骤500、502和504)之后,对于设备上对应于先前安装的包的每一现有的设备清单文件,由下令更新过程创建包图以表示该包,如由在设备上维护的包设备清单文件所定义的。注意,确认过程可使用包信息API来枚举现有的设备清单。在步骤506更新目录中的包被添加到该包的适当的基线图中;如果没有找到现有的图,则为新包创建图,但是将其标记为非基线图。节点包含基于清单和包的信息,并且当被添加时,查找图中的其它节点的版本信息以基于包可更新到哪一或哪些版本来确定连接到哪一或哪些节点。注意,在图中可存在能够更新被添加到图的包的孤立节点。图构造过程步查构成该图的节点,并且如果在图中有可更新新节点的现有节点,添加适当的链接。
一旦添加了要安装的包,步查每一图,包括为评估路径和执行文件确认的目的。注意,在节点被添加到图的实时构造通过图的路径。如后文参考图6所描述的,一旦加载了包,更新确认器步查每一图,查找对图可用的路径组中的最优路径。一旦为图选择了一个路径,则确认该路径中的节点的签名。如果不能确认特定节点的签名,则从失败节点开始剪除该路径,然后为该图重新运行路径选择过程。重复该过程,直到确定了路径中的节点具有有效签名,或者对给定的图没有更多的路径来处理。
如果在步骤514处理成功,则下令更新过程在图5B的步骤518继续,其中,对于每一所得的包路径,如果该包是NK分区的一部分,则通过步骤522将包信息添加到NK列表416(图4)。如果包不是NK分区的一部分,则将该包添加到另一列表418(图4)。一旦处理了所有的包图,则通过步骤532将其它列表418追加到NK列表416,如果如步骤534所评估的追加成功,则以追加的NK列表416和无效列表420返回NOERROR状态。
确认过程402的另一部分针对构造更新图,并由更新图组件422实现,它负责为包括设备上的更新的包构建图。设备上每一预先存在的包将被用于为独立的图创建基节点。在一个实现中,每一包由包节点对象表示;注意,在该实现中,每一节点对象包含在一个且仅一个包图对象中。
图构造过程在图6中表示。一般而言,更新图424(图4)包括两个数组,包括节点对象数组436和边对象数组428。边对象将节点彼此链接。当新包被添加到图时,为该包创建节点对象,并将其添加到节点数组426,如由步骤600所表示的。如果如由步骤602所评估的未创建节点,则过程失败。
步骤606和608试图找出对应于该包的现有图;如果没有找到,则该包为新包,并在步骤610为其创建图,(并通过步骤612确保它被正确地创建)。如果成功地创建,则在步骤616返回新图,否则返回失败。
如果节点创建成功,且为该包找到图,则步骤608分支到步骤618,其中,通过步骤618-630,对节点数组中的每一节点,如果新节点的基础版本与现有节点的版本号相匹配,则在更新图424(图4)中创建边对象并将其添加到数组428。在这一条件下,边对象将现有节点指定为源,而将新节点指定为宿。如果相反,现有节点的基础版本与新节点的版本号相匹配,则创建将新节点指定为源而将现有节点指定为宿的边对象。
注意,对于要添加的包,可能在添加时没有到任何现有节点的链接。这一条件可通过两个结果之一来矫正,即(a)没有可通过该包节点到达的节点,并且没有通过更新中的其它包节点到达该包节点的路径;在这一情况下,将节点标记为坏,并以无效更新列表结束,以及(b)稍后将要添加的包将连接到该节点。在这一情况下,在图步查阶段处理该节点,这在下文参考图7A和7B描述。
此外,注意,如果两个包具有同一目标版本,则比较这两个设备侧清单文件。如果它们不相等,则将两个节点都标记为无效,因为对于任一给定的包,特定版本的设备侧清单文件应当跨将该给定包更新到特定版本的所有包都是相同的。
作为确认过程的另一部分,更新图步查器组件430遍历每一包图,以基于通过该图的可能多个路径确定该包的最高最终版本号。在步查时,更新图步查器组件430确认图中的包上的数字签名。如果签名检查失败,则在该点上剪除该图,并移除连接到失败的节点的任何边。
一旦确定了最高版本号,确认对该节点的依赖性。这通过向更新图424查询匹配依赖GUID的包图来实现。如果新更新图尚未被确认,则更新图步查器在新包图上开始步查过程。如果无法满足依赖性,则放弃该分支并尝试新分支。移除连接分支中的节点的边。如果穷尽了所有可能的边并且仍无法满足依赖性要求,则将由图中的节点表示的图移至无效更新列表。
图7A和7B表示遍历过程的逻辑,从图的基节点开始。如由步骤702-706所示的,对于图中的每一边,确定该边是否具有该节点作为源(步骤704)。如果没有与该节点关联的边,则检测到终端节点,并由步骤708-718处理。一般而言,这些步骤将节点的版本号与图版本号相比较(步骤714),如果节点版本高于图版本,则在步骤716将图版本更新到节点版本,过程结束(不返回错误)。
如果相反,在步骤704,存在边,则过程分支到图7B的步骤724,检查该节点来看它是否具有CERT链。如果在步骤724没有CERT链,则从对应于该节点的设备侧清单文件获取CERT块。注意,如果在设备侧清单文件中没有CERT块,则在步骤730将该节点标记为坏,过程返回。
如果在步骤724或步骤728存在CERT数据,则过程前进到步骤734来解码该数据。如果解码失败,则在步骤730将该节点标记为坏,过程返回。
否则,在步骤738执行找出边的末端的宿节点的尝试,在步骤740作出关于是否不存在宿节点的测试;如果不是,则将图完整性错误记入日志,过程通过步骤742返回。
如果找到宿节点,则使用CERT数据来确认宿节点(步骤744)。如果宿节点通过签名确认,则递归地调用该函数,在步骤748传递宿节点,返回到图7A的步骤720。如果宿节点失败,则将该边标记为坏。
以这一方式,确定最大更新组,并返回排序的更新列表,以及任何无效更新的列表。这可对应于将设备包版本最大化的包的最小数量。
如可从上文的详细描述中所见到的,提供了一种在设备侧处理设备更新的机制。该机制处理许多更新版本以及那些版本之间的冲突和依赖性,以提供当应用时可将设备包版本最大化的最小数量的有效包。
尽管本发明易受各种修改和替换构造的影响,然而在附图中示出了某些说明的实施例并在上文详细描述了它们。然而应当理解,这并非将本发明限于所揭示的具体形式,而是相反,本发明覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效技术方案。

Claims (25)

1.在计算环境中,一种方法,其特征在于,它包括:
审阅准备安装到一设备上的一更新包集合,包括确定所述更新包之间的依赖关系、及与来自已安装在所述设备上的至少一个其它包的包数据的依赖关系;以及
对于要更新的包数据,确定一要安装的至少一个更新包的组,该组会导致所述包数据的最高版本被安装到所述设备。
2.如权利要求1所述的方法,其特征在于,审阅准备安装到所述设备的更新包集合还包括确定所述更新包与来自排队等候安装到所述设备上的至少一个其它包的包数据之间的依赖关系。
3.如权利要求1所述的方法,其特征在于,至少两个组将导致包的最高版本被安装,并且它还包括,基于安装的最低成本选择所述组的其中一个。
4.如权利要求1所述的方法,其特征在于,确定要安装的至少一个包的组包括构建具有表示所述包的节点的图、及分析所述节点之间的路径,其中,所述路径对应于所述包之间的依赖关系。
5.如权利要求1所述的方法,其特征在于,审阅更新包的集合包括确认每一包。
6.如权利要求5所述的方法,其特征在于,确认每一包包括确定一文件是否为合适类型的包文件。
7.如权利要求5所述的方法,其特征在于,确认每一包包括确认一文件是否具有描述所述包内容的相关联的清单文件。
8.如权利要求1所述的方法,其特征在于,它还包括向一包图添加每一包的节点。
9.如权利要求8所述的方法,其特征在于,向包图添加每一包的节点包括确定对应于该包的包图是否已存在,并且如果存在,将所述节点添加到所述存在的包图,如果不存在,创建一新包图并将所述节点添加到所述新包图。
10.如权利要求8所述的方法,其特征在于,它还包括处理所述包图中的每一分支并处理每一分支中的每一节点,以确定每一节点是否应当保留在所述包图中。
11.如权利要求10所述的方法,其特征在于,为确定一给定节点是否应当保留在所述包图中,处理每一节点包括确定是否有一证书链通过一父节点与所述给定节点相关联,如果不是,则通过从所述包图中剪除该节点的分支来移除所述节点。
12.如权利要求11所述的方法,其特征在于,一证书链与所述给定节点相关联,并且其中,为确定所述给定节点是否应当保留在所述包图中,处理每一节点包括核实对应于所述节点的包是否包含一有效签名,如果不是,通过从所述包图中剪除所述分支从所述给定节点开始的部分来移除所述节点。
13.如权利要求12所述的方法,其特征在于,所述签名对所述给定节点有效,并且它还包括基于该节点向所述分支添加加权数据。
14.如权利要求13所述的方法,其特征在于,它还包括,遍历所述包图以找出一最低加权分支,并将对应于该分支的信息添加到一更新列表。
15.如权利要求10所述的方法,其特征在于,至少一个节点保留在所述包图中,并且其中,至少一个保留的节点在具有关联的加权值的分支中,并且它还包括,遍历所述包图以找出最低加权分支,并将对应于该分支的信息添加到一更新列表。
16.如权利要求15所述的方法,其特征在于,它还包括向一更新图添加包,并且处理每一包包括确定对应于具有所述图中的代表性节点的每一包的分区,并通过基于该节点的所述对应分区将每一节点添加到一相应的列表来将每一节点排序成列表。
17.一个或多个具有计算机可执行指令的计算机可读媒质,当所述指令被执行时,执行权利要求1所述的方法。
18.在计算设备中,一种系统,其特征在于,它包括:
一确认组件,它提供关于包是否对安装有效的信息;以及
一下令更新组件,它被配置成:
输入对应于安装所请求的至少一个包的安装组的信息;
与所述确认组件进行通信,以从所述安装组中排除对安装无效的包;
确定与来自已安装在所述设备上的包的包数据和/或与排队等候安装到所述设备上的包的依赖关系;以及
基于所述依赖关系确定要安装的所述安装组中的至少一个更新包,该组会导致包数据的最高版本被安装到所述设备。
19.如权利要求1所述的系统,其特征在于,所述下令更新组件基于一最低安装成本确定一用于安装包的更新路径。
20.如权利要求19所述的系统,其特征在于,所述确认组件确认每一包包括通过确定对应于该包的文件是否为合适类型的包文件。
21.如权利要求19所述的系统,其特征在于,所述确认组件确认每一包包括通过确定一文件是否具有描述所述包内容的相关联的清单文件。
22.如权利要求19所述的系统,其特征在于,所述下令更新组件通过构建具有表示包版本的节点的图、并分析对应于所述包版本之间的依赖关系的所述节点之间的路径,来确定所述更新路径。
23.如权利要求19所述的系统,其特征在于,所述下令更新组件基于依赖信息构造所述节点之间的边。
24.如权利要求19所述的系统,其特征在于,所述下令更新组件通过确定对应于该包的包图是否已经存在向包图添加每一包的节点,并且如果是,将所述节点添加到所述存在的包图,如果不是,创建一新包图,并将所述节点添加到所述新包图。
25.如权利要求24所述的系统,其特征在于,所述下令更新组件遍历所述包图以找出最低加权分支,并将对应于该分支的信息添加到一更新列表。
CN2004101020140A 2003-12-16 2004-12-16 确定对安装有效的最大依赖软件更新组 Expired - Fee Related CN1645322B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US53013003P 2003-12-16 2003-12-16
US60/530,130 2003-12-16
US10/837,176 US7568195B2 (en) 2003-12-16 2004-05-01 Determining a maximal set of dependent software updates valid for installation
US10/837,176 2004-05-01

Publications (2)

Publication Number Publication Date
CN1645322A true CN1645322A (zh) 2005-07-27
CN1645322B CN1645322B (zh) 2013-06-12

Family

ID=34556578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004101020140A Expired - Fee Related CN1645322B (zh) 2003-12-16 2004-12-16 确定对安装有效的最大依赖软件更新组

Country Status (5)

Country Link
US (1) US7568195B2 (zh)
EP (1) EP1548586B1 (zh)
JP (1) JP5025901B2 (zh)
KR (1) KR101137146B1 (zh)
CN (1) CN1645322B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100426235C (zh) * 2005-11-03 2008-10-15 国际商业机器公司 在软件包管理系统将用户进程表示为软件包的系统和方法
CN101841620A (zh) * 2009-03-17 2010-09-22 株式会社理光 信息处理设备、信息处理方法及信息处理程序
CN101957763A (zh) * 2009-07-17 2011-01-26 株式会社理光 信息处理器、信息处理方法和计算机可读存储介质
CN104160375A (zh) * 2012-03-01 2014-11-19 日本电气株式会社 系统构建过程生成设备、系统构建过程生成方法及其程序
CN105446757A (zh) * 2014-08-21 2016-03-30 阿里巴巴集团控股有限公司 一种数据包的处理方法和设备
CN111178829A (zh) * 2019-12-19 2020-05-19 中国人民解放军国防科技大学 一种在软件项目管理中基于图算法的冲突消解方法
CN113495737A (zh) * 2020-04-01 2021-10-12 腾讯科技(深圳)有限公司 一种软件更新方法及相关设备
CN114356447A (zh) * 2021-12-28 2022-04-15 广东三维家信息科技有限公司 一种插件管理方法、装置、电子设备及存储介质

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080383B1 (en) * 1999-01-29 2006-07-18 Microsoft Corporation System and method for extending functionality of a class object
US8533702B2 (en) * 2002-06-27 2013-09-10 International Business Machines Corporation Dynamically resolving fix groups for managing multiple releases of multiple products on multiple systems
US7624393B2 (en) * 2003-09-18 2009-11-24 International Business Machines Corporation Computer application and methods for autonomic upgrade maintenance of computer hardware, operating systems and application software
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
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
US7549148B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US8688803B2 (en) * 2004-03-26 2014-04-01 Microsoft Corporation Method for efficient content distribution using a peer-to-peer networking infrastructure
US7472377B2 (en) * 2005-01-18 2008-12-30 International Business Machines Corporation Systems and methods for determining software package identity during a system build
US20060168572A1 (en) * 2005-01-24 2006-07-27 Niklas Backlund Generic software conversion engine
US8387037B2 (en) * 2005-01-28 2013-02-26 Ca, Inc. Updating software images associated with a distributed computing system
US7716661B2 (en) * 2005-03-16 2010-05-11 Microsoft Corporation Embedded device update service
US7743373B2 (en) * 2005-05-06 2010-06-22 International Business Machines Corporation Method and apparatus for managing software catalog and providing configuration for installation
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
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
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
US20060294515A1 (en) * 2005-06-23 2006-12-28 International Business Machines Corporation Common operating system install method
JP5395434B2 (ja) 2005-09-09 2014-01-22 セールスフォース ドット コム インコーポレイティッド マルチテナントデータベース環境において、オンデマンドアプリケーションをエクスポートし、公表し、ブラウズし、インストールするためのシステムおよび方法
US7831972B2 (en) * 2005-11-03 2010-11-09 International Business Machines Corporation Method and apparatus for scheduling jobs on a network
US8122446B2 (en) * 2005-11-03 2012-02-21 International Business Machines Corporation Method and apparatus for provisioning software on a network of computers
KR100746026B1 (ko) * 2006-01-04 2007-08-06 삼성전자주식회사 소프트웨어 설치 장치 및 방법
US7519711B2 (en) 2006-06-15 2009-04-14 International Business Machines Corporation Method for middleware assisted system integration in a federated environment
US7496893B2 (en) 2006-06-15 2009-02-24 International Business Machines Corporation Method for no-demand composition and teardown of service infrastructure
US20070294364A1 (en) 2006-06-15 2007-12-20 International Business Machines Corporation Management of composite software services
US7950007B2 (en) 2006-06-15 2011-05-24 International Business Machines Corporation Method and apparatus for policy-based change management in a service delivery environment
KR20070120447A (ko) * 2006-06-19 2007-12-24 삼성전자주식회사 시스템 프로그램 갱신 장치 및 방법
US7748000B2 (en) * 2006-07-27 2010-06-29 International Business Machines Corporation Filtering a list of available install items for an install program based on a consumer's install policy
DE102006040395A1 (de) * 2006-08-29 2007-03-15 Siemens Ag Verfahren zur Erzeugung eines größenoptimierten Delta-Files
US20130047145A1 (en) * 2006-08-29 2013-02-21 Quan-Jie Cui Match analysis for encoding optimized update packages
US7567984B1 (en) * 2006-08-31 2009-07-28 Symantec Operating Corporation Operating system and application deployment based on stored user state and organizational policy
US8112508B1 (en) * 2006-09-08 2012-02-07 Dell Products L.P. Delivering data from device management services to devices using bulletin system
JP5097130B2 (ja) * 2006-12-27 2012-12-12 パナソニック株式会社 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
US20080201705A1 (en) 2007-02-15 2008-08-21 Sun Microsystems, Inc. Apparatus and method for generating a software dependency map
US8307341B2 (en) * 2007-04-25 2012-11-06 International Business Machines Corporation Generating customized documentation for a software product
US7857222B2 (en) 2007-08-16 2010-12-28 Hand Held Products, Inc. Data collection system having EIR terminal interface node
US8775822B2 (en) * 2007-08-31 2014-07-08 Flexera Software, Llc Computer-implemented method and system for protecting a software installation after certification
US8146069B2 (en) * 2007-09-27 2012-03-27 Alcatel Lucent Method and apparatus for performing non service affecting software upgrades in place
US8141065B2 (en) * 2007-09-27 2012-03-20 Alcatel Lucent Method and apparatus for performing non service affecting software upgrades in place
US8291402B2 (en) * 2007-11-29 2012-10-16 Red Hat, Inc. Using system fingerprints to accelerate package dependency resolution
US8630981B1 (en) * 2007-12-21 2014-01-14 Symantec Corporation Techniques for differencing binary installation packages
US20090172637A1 (en) * 2007-12-28 2009-07-02 Microsoft Corporation Markup-based language for manifests
JP5136105B2 (ja) * 2008-02-13 2013-02-06 富士通株式会社 データ搭載装置、及びデータ搭載装置のアップグレード方法
US7860900B2 (en) * 2008-02-25 2010-12-28 Microsoft Corporation Consistently signaling state changes
EP2169545A1 (en) * 2008-09-26 2010-03-31 Moxa Inc. Embedded system that automatically updates its software and the method thereof
US8239856B2 (en) * 2008-10-27 2012-08-07 International Business Machines Corporation Sharing unresolved information between software components
US8473942B2 (en) * 2008-11-28 2013-06-25 Sap Ag Changable deployment conditions
US8108495B1 (en) * 2009-04-30 2012-01-31 Palo Alto Networks, Inc. Managing network devices
US8959481B2 (en) * 2009-04-30 2015-02-17 International Business Machines Corporation Determining system level dependencies
EP2460089A4 (en) 2009-07-31 2012-12-26 Hewlett Packard Development Co METHOD AND SYSTEM FOR DETECTION AND INVESTIGATION APPLICATIONS
WO2011041175A1 (en) * 2009-09-30 2011-04-07 Zynga Game Network Inc. Apparatuses, methods and systems for an api call abstractor
US8645936B2 (en) * 2009-09-30 2014-02-04 Zynga Inc. Apparatuses, methods and systems for an a API call abstractor
US9176898B2 (en) * 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US9122558B2 (en) 2009-11-09 2015-09-01 Bank Of America Corporation Software updates using delta patching
US9128799B2 (en) 2009-11-09 2015-09-08 Bank Of America Corporation Programmatic creation of task sequences from manifests
US9497092B2 (en) 2009-12-08 2016-11-15 Hand Held Products, Inc. Remote device management interface
US20110173601A1 (en) * 2010-01-12 2011-07-14 Google Inc. Operating system auto-update procedure
US8713525B2 (en) * 2010-03-25 2014-04-29 International Business Machines Corporation Software management system for network data processing systems
US8554797B2 (en) * 2010-12-17 2013-10-08 Sap Ag System and method for modular business applications
FR2972821B1 (fr) 2011-03-18 2013-04-26 Airbus Operations Sas Procede et dispositif d'installation/desinstallation de modules logiciels, avec resolution centralisee de contraintes, dans des equipements d'aeronef
US20120254859A1 (en) * 2011-03-31 2012-10-04 Sony Corporation Method and apparatus for downloading software updates to place user terminal into a desired configuration state
US8997084B2 (en) * 2011-04-20 2015-03-31 Hewlett-Packard Development Company, L.P. Method and apparatus for determining compatible versions of dependent entities in a computer system
CN102356394B (zh) * 2011-08-23 2013-09-11 华为技术有限公司 文档更新方法和装置
US20130055369A1 (en) * 2011-08-24 2013-02-28 Mcafee, Inc. System and method for day-zero authentication of activex controls
US9118686B2 (en) 2011-09-06 2015-08-25 Microsoft Technology Licensing, Llc Per process networking capabilities
US20130067459A1 (en) * 2011-09-09 2013-03-14 Microsoft Corporation Order-Independent Deployment Collections with Dependency Package Identifiers
US8990561B2 (en) 2011-09-09 2015-03-24 Microsoft Technology Licensing, Llc Pervasive package identifiers
US9773102B2 (en) 2011-09-09 2017-09-26 Microsoft Technology Licensing, Llc Selective file access for applications
US9800688B2 (en) 2011-09-12 2017-10-24 Microsoft Technology Licensing, Llc Platform-enabled proximity service
US8539123B2 (en) 2011-10-06 2013-09-17 Honeywell International, Inc. Device management using a dedicated management interface
US8621123B2 (en) 2011-10-06 2013-12-31 Honeywell International Inc. Device management using virtual interfaces
US8959504B2 (en) * 2011-10-18 2015-02-17 Microsoft Corporation Update scanning
EP2648092B1 (en) * 2012-04-04 2019-06-19 Harman Becker Automotive Systems GmbH Updating method and multi-domain embedded system
US8966467B2 (en) * 2012-04-30 2015-02-24 Dell Products, L.P. System and method for performing an in-service software upgrade in non-redundant systems
US9244673B2 (en) * 2012-06-08 2016-01-26 Apple Inc. System and method for updating application archive files
US10356204B2 (en) 2012-12-13 2019-07-16 Microsoft Technology Licensing, Llc Application based hardware identifiers
WO2014118791A1 (en) * 2013-01-29 2014-08-07 Hewlett-Packard Development Company, L. P Methods and systems for shared file storage
US20140259004A1 (en) * 2013-03-07 2014-09-11 Go Daddy Operating Company, LLC System for trusted application deployment
US20140259003A1 (en) * 2013-03-07 2014-09-11 Go Daddy Operating Company, LLC Method for trusted application deployment
FR3003366B1 (fr) * 2013-03-12 2015-04-10 Airbus Operations Sas Procede, dispositif et programme d'ordinateur pour l'installation ou la desinstallation automatique de modules logiciels dans des equipements embarques d'un aeronef
JP6102378B2 (ja) * 2013-03-15 2017-03-29 株式会社リコー サーバ、情報処理システムおよびプログラム
JP2013149271A (ja) * 2013-03-29 2013-08-01 Ricoh Co Ltd 情報処理装置、プログラム導入支援システム、表示制御方法、表示制御プログラム、及びそのプログラムを記録した記録媒体
US9858247B2 (en) 2013-05-20 2018-01-02 Microsoft Technology Licensing, Llc Runtime resolution of content references
US20140359593A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Maintaining known dependencies for updates
WO2015034490A1 (en) 2013-09-04 2015-03-12 Hewlett-Packard Development Company, L.P. Header section download of package
US9690564B2 (en) 2013-09-10 2017-06-27 International Business Machines Corporation Runtime detection of software configurations and upgrades
US9367299B2 (en) * 2013-12-31 2016-06-14 Google Inc. Preventing application downgrade in an application store
JP6379599B2 (ja) * 2014-04-02 2018-08-29 富士通株式会社 適用判定プログラム、適用判定方法、及び適用判定装置
GB2524798A (en) * 2014-04-03 2015-10-07 Ibm Method and test environment for automatic testing a software product comprising a plurality of software packages
US9383989B1 (en) * 2014-06-16 2016-07-05 Symantec Corporation Systems and methods for updating applications
US20160048383A1 (en) * 2014-08-13 2016-02-18 Microsoft Technology Licensing, Llc Isv update delivery
CN104462352B (zh) * 2014-12-04 2018-04-06 北京国双科技有限公司 数据打包方法及装置
US9684539B1 (en) * 2014-12-17 2017-06-20 VCE IP Holding Company LLC Methods, systems, and computer readable mediums for logically remediating infrastructure resource components
US10248403B2 (en) * 2015-03-13 2019-04-02 Kony, Inc. Providing updates for natively rendered mobile applications
US10402187B2 (en) * 2016-08-10 2019-09-03 Trilio Data Inc. Efficient workload deployment using containers and unikernels
US10409567B2 (en) * 2016-09-14 2019-09-10 Microsoft Technology Licensing, Llc Trimming unused dependencies using package graph and module graph
US10402229B2 (en) * 2017-01-31 2019-09-03 Sap Se Platform for orchestrating custom processes across system landscapes
US10831463B2 (en) * 2017-03-08 2020-11-10 International Business Machines Corporation Intelligent software deployment on an IaaS platform
US10977240B1 (en) * 2017-10-21 2021-04-13 Palantir Technologies Inc. Approaches for validating data
US10705817B2 (en) * 2018-03-19 2020-07-07 Toyota Jidosha Kabushiki Kaisha Conflict determination and mitigation for vehicular applications
CN111417927B (zh) * 2018-03-27 2021-12-03 华为技术有限公司 资源权限处理方法、装置、存储介质及芯片
US10698677B2 (en) * 2018-05-04 2020-06-30 EMC IP Holding Company LLC Method and system for lifecycle management optimization
US12020011B2 (en) * 2018-08-29 2024-06-25 VMware LLC Managing an upgrade of a virtualization infrastructure component
US11550593B2 (en) 2019-01-08 2023-01-10 Dell Products L.P. Information handling system quick boot
US11194589B2 (en) 2019-01-08 2021-12-07 Dell Products L.P. Information handling system adaptive component reset
US11010249B2 (en) 2019-01-08 2021-05-18 Dell Products L.P. Kernel reset to recover from operating system errors
US11126420B2 (en) 2019-01-08 2021-09-21 Dell Products L.P. Component firmware update from baseboard management controller
US11397570B2 (en) * 2019-01-10 2022-07-26 Hewlett Packard Enterprise Development Lp Abort installation of firmware bundles
US10817279B1 (en) * 2019-04-16 2020-10-27 EMC IP Holding Company LLC Providing different upgrade paths for upgrading a server
CN110531993B (zh) * 2019-08-21 2022-11-25 苏州浪潮智能科技有限公司 软件安装方法、装置、设备及介质
US11507541B2 (en) * 2020-01-21 2022-11-22 Microsoft Technology Licensing, Llc Method to model server-client sync conflicts using version trees
US11314496B2 (en) * 2020-06-25 2022-04-26 Paypal, Inc. Ultra-fast install and update of an operating system
US11200038B1 (en) 2020-06-25 2021-12-14 Paypal, Inc. Fast compiling source code without dependencies
US20240176609A1 (en) * 2022-11-30 2024-05-30 Microsoft Technology Licensing, Llc Method and system for implementing safe deployment of features

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002046914A2 (en) * 2000-12-07 2002-06-13 Aduva Inc. Improved method for resolving dependency conflicts among multiple operative entities within a computing environment
US20020144248A1 (en) * 1998-06-19 2002-10-03 Microsoft Corporation Software package management

Family Cites Families (70)

* Cited by examiner, † Cited by third party
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
US5214695A (en) * 1990-07-23 1993-05-25 International Business Machines Corporation Apparatus and method for loading a system reference diskette image from a system partition in a personal computer system
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5325532A (en) * 1992-09-25 1994-06-28 Compaq Computer Corporation Automatic development of operating system boot image
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
EP1025534B1 (en) * 1997-08-20 2011-03-16 Powerquest Corporation Computer partition manipulation during imaging
JP2000517088A (ja) * 1997-10-06 2000-12-19 パワークエスト・コーポレーション 一対多型ディスク・イメージング転送
JPH11134178A (ja) * 1997-10-27 1999-05-21 Nec Eng Ltd ロードモジュールの版数情報による相互関連チェック方式およびプログラム記録媒体
US6351850B1 (en) * 1997-11-14 2002-02-26 Frank Van Gilluwe Computer operating system installation
WO1999026123A1 (en) 1997-11-18 1999-05-27 Christopher Benjamin Wakely Improvements relating to software protection systems
US7503072B2 (en) 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6243468B1 (en) 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US6327652B1 (en) 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6330670B1 (en) 1998-10-26 2001-12-11 Microsoft Corporation 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
US6725205B1 (en) 1999-12-02 2004-04-20 Ulysses Esd, Inc. System and method for secure software installation
AU1405000A (en) 1999-12-15 2001-06-25 Sun Microsystems, Inc. Preparation of a software configuration using an xml type programming language
US6581159B1 (en) * 1999-12-23 2003-06-17 Intel Corporation Secure method of updating bios by using a simply authenticated external module to further validate new firmware code
US6591376B1 (en) * 2000-03-02 2003-07-08 Hewlett-Packard Development Company, L.P. Method and system for failsafe recovery and upgrade of an embedded operating system
US6871344B2 (en) 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
JP2001331327A (ja) 2000-05-24 2001-11-30 Matsushita Electric Ind Co Ltd 電子機器
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
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
US20040003266A1 (en) 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US6807665B2 (en) 2001-01-18 2004-10-19 Hewlett-Packard Development Company, L. P. Efficient data transfer during computing system manufacturing and installation
JP2003005859A (ja) 2001-04-16 2003-01-08 Yuichi Sumiya プログラムやデータの管理方法とコンピュータ
US20020157010A1 (en) * 2001-04-24 2002-10-24 International Business Machines Corporation Secure system and method for updating a protected partition of a hard drive
US6912591B2 (en) 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
US20040015958A1 (en) 2001-05-15 2004-01-22 Veil Leonard Scott Method and system for conditional installation and execution of services in a secure computing environment
US7155710B2 (en) * 2001-06-08 2006-12-26 Igt Method and apparatus for gaming device software configuration
FI114416B (fi) 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
US8200988B2 (en) 2001-08-03 2012-06-12 Intel Corporation Firmware security key upgrade algorithm
US20030046482A1 (en) 2001-08-28 2003-03-06 International Business Machines Corporation Data management in flash memory
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
US7237122B2 (en) 2001-10-19 2007-06-26 Mcafee, Inc. Method and apparatus to facilitate software installation using embedded user credentials
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US20030182563A1 (en) 2002-03-22 2003-09-25 Liu James C. Method and apparatus for software license verification
US7194738B2 (en) * 2002-04-09 2007-03-20 Synnex Technology International Corporation Method of creating image files and installing software bundles on target computers
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
US7007049B2 (en) 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7085957B2 (en) 2002-11-21 2006-08-01 Texas Instruments Incorporated Upgrading of firmware with tolerance to failures
US7478385B2 (en) 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US7228541B2 (en) * 2003-01-17 2007-06-05 National Instruments Corporation Creation of application system installer
US20060079254A1 (en) 2003-02-11 2006-04-13 Hogan Timothy J 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
US7644404B2 (en) 2003-06-04 2010-01-05 Hewlett-Packard Development Company, L.P. Network having customizable generators and electronic device having customizable updating software
JP2005044011A (ja) * 2003-07-24 2005-02-17 Hitachi Ltd ソフトウェアパッケージ管理方法
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
US7614051B2 (en) 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7549148B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020144248A1 (en) * 1998-06-19 2002-10-03 Microsoft Corporation Software package management
WO2002046914A2 (en) * 2000-12-07 2002-06-13 Aduva Inc. Improved method for resolving dependency conflicts among multiple operative entities within a computing environment

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100426235C (zh) * 2005-11-03 2008-10-15 国际商业机器公司 在软件包管理系统将用户进程表示为软件包的系统和方法
CN101841620A (zh) * 2009-03-17 2010-09-22 株式会社理光 信息处理设备、信息处理方法及信息处理程序
CN101841620B (zh) * 2009-03-17 2012-07-18 株式会社理光 信息处理设备和信息处理方法
CN101957763A (zh) * 2009-07-17 2011-01-26 株式会社理光 信息处理器、信息处理方法和计算机可读存储介质
CN104160375A (zh) * 2012-03-01 2014-11-19 日本电气株式会社 系统构建过程生成设备、系统构建过程生成方法及其程序
CN105446757A (zh) * 2014-08-21 2016-03-30 阿里巴巴集团控股有限公司 一种数据包的处理方法和设备
CN111178829A (zh) * 2019-12-19 2020-05-19 中国人民解放军国防科技大学 一种在软件项目管理中基于图算法的冲突消解方法
CN113495737A (zh) * 2020-04-01 2021-10-12 腾讯科技(深圳)有限公司 一种软件更新方法及相关设备
CN113495737B (zh) * 2020-04-01 2024-05-03 腾讯科技(深圳)有限公司 一种软件更新方法及相关设备
CN114356447A (zh) * 2021-12-28 2022-04-15 广东三维家信息科技有限公司 一种插件管理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
KR101137146B1 (ko) 2012-04-19
US20050132350A1 (en) 2005-06-16
EP1548586B1 (en) 2013-04-03
KR20050061376A (ko) 2005-06-22
JP2005182784A (ja) 2005-07-07
US7568195B2 (en) 2009-07-28
JP5025901B2 (ja) 2012-09-12
EP1548586A2 (en) 2005-06-29
EP1548586A3 (en) 2007-11-07
CN1645322B (zh) 2013-06-12

Similar Documents

Publication Publication Date Title
CN1645322A (zh) 确定对安装有效的最大依赖软件更新组
CN1641583A (zh) 自描述软件映象更新组件
JP4901095B2 (ja) 不揮発性ストレージにカスタム・ソフトウェア・イメージ・アップデートを適用するフェイルセーフな方法
US8667483B2 (en) Device dependent on-demand compiling and deployment of mobile applications
CN103530156B (zh) 动态加载和调用程序的方法及装置
CN1203404C (zh) 具有逐模块验证的完全迟缓链接
US6988163B2 (en) Executing binary images from non-linear storage systems
CN1959640A (zh) 在软件包管理系统将用户进程表示为软件包的系统和方法
US20050132123A1 (en) Creating file systems within a file in a storage technology-abstracted manner
CN1668010A (zh) 用来在更新分发系统中分发更新元数据的基于标记模式
US20060248524A1 (en) System and method for common file installation
CN103493011A (zh) 与库操作系统的应用兼容性
CN1577271A (zh) 数据的包内增量压缩的系统和方法
CN1744603A (zh) 通过远程协议的远程文件更新
CN1781075A (zh) 电子文件更新期间的设备存储器管理
CN1577322A (zh) 管理数据处理系统中的应用文件的方法和装置
WO2007117514A1 (en) Mobile device capable of multiple updates
CN107967135A (zh) 计算引擎实现方法、电子装置及存储介质
CN1710546A (zh) 用于构建磁盘映像的系统和方法
CN1886976A (zh) 用于使用动作列表及版本控制对一无线装置执行动作的方法、软件及设备
CN1661982A (zh) 自动配置访问控制的方法和系统
US11314603B2 (en) Recovery image downloads via data chunks
CN1904828A (zh) 动态开机系统及方法,与操作系统映像文件建构方法
CN102968589B (zh) 一种应用程序安全属性的识别方法和装置
CN1866867A (zh) 设备管理中计划任务的实现方法

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: 20130612

Termination date: 20131216