用于渐进式安装软件应用程序的系统和方法以及api的制作方法

文档序号:6475065阅读:222来源:国知局
专利名称:用于渐进式安装软件应用程序的系统和方法以及api的制作方法
技术领域
本发明涉及用于渐进式安装软件应用程序的系统和方法以及API。

背景技术
当前有两种主要的可用应用程序类型。第一类应用程序是客户机侧应用程序。客户机侧应用程序驻留于客户机计算机上,并在客户机计算机可操作的任何时候都可使用。通常,安装状态显示了在安装期间某些形式的诸如温度计的进程用户界面。在安装期间,客户机侧应用程序不可用。客户机侧应用程序可在用户可使用该应用程序之前必须被完全安装。
其它类型的应用程序通常被称为Web应用程序或Web app。Web app被存储在Web服务器上。通常Web app被配置为在因特网上可访问的多个Web网页。常规Web app包括表示基于标记文档的多个Web网页。Web app还可包括通过Web网页访问的脚本或其它资源。对于大多数Web app,多个Web网页和资源以Web app的“商业逻辑”在多个资源上分布的方法超链接在一起。每个页面负责整个商业逻辑的一部分,而且,通过逐页导航,用户可体验整个Web app。为了本文档,术语“导航”指的是使主环境检索与Web app相关联资源,诸如通过激活超链接。导航一资源通常涉及离开另一资源进行导航,其中要导航的资源是由主环境检索的。Web app不需要安装阶段,且一旦客户计算机从Web服务器上断开即不可用。
这些用于与软件应用程序交互的方法都具有优点和缺点,没有一种是理想的。


发明内容
本发明提供用于渐进地安装软件应用程序,从而用户可立即开始与应用程序交互的系统和方法。于是,当与该应用程序交互时,应用程序可渐进地安装在用户的计算机上,且如果需要,可在后来变得离线可用。渐进式安装包括三个状态起动状态、请求状态、和最终状态。没有一个状态需要一个在其中应用程序不可用的专用安装阶段。相反,本发明的渐进式安装以这样一种方式混合了两种形式的应用程序安装,使得Web app可作为常规Web app与之交互,并不影响用户与应用程序的交互而平稳地转换成客户机侧应用程序。
本发明提供一种用于渐进地安装应用程序的机制。渐进式安装经过三个阶段进行转换起动状态、请求状态、和安装状态。在起动状态期间,与应用程序相关联的组件子集被下载并存储于本地数据存储器中。该子集足以允许应用程序以类似于Web应用程序的方式执行。在请求状态期间,激活与应用程序相关联的Web网页上的超链接之后,下载与应用程序相关联的附加资源。有关请求资源的附加资源被存储在本地数据存储器中。作为在线资源的附加资源则被存储在瞬态高速缓存中。在已安装状态中,应用程序以类似于客户机侧应用程序的方式执行。从请求状态到已安装状态的转换不影响用户与应用程序的交互而发生。基于存储在本地数据存储器中附加资源的数量或在外部触发之后,该转换可自动发生。在转换期间,把先前未曾下载的附加资源下载到本地数据存储器中。另外,在请求状态期间导出的状态与应用程序一起存储,使得该应用程序能在离线执行时从同一状态恢复。



图1示出了可在本发明一示例性实施例中使用的示例性计算装置。
图2是可包括本发明k实现的分布式网络环境的功能框图概览。
图3是根据本发明一实现可由Web浏览软件显示的说明性屏幕显示,该Web浏览软件用于使能应用程序的渐进式下载。
图4是根据本发明一实现示出应用程序渐进式安装的各个状态的状态图。
图5是一般示出渐进式安装的起动状态期间一过程的逻辑流程图。
图6是一般示出渐进式安装的请求状态期间一过程的逻辑流程图。
图7是一般示出用于渐进式安装的请求状态和已安装状态之间转换的一过程的逻辑流程图。
图8-10是根据本发明一实现图形地示出在渐进式安装期间载入文件的一系列框图。

具体实施例方式 简言之,本发明提供了用于渐进地安装软件应用程序使用户可立即开始与应用程序交互的系统和方法。于是,当与应用程序交互时,可在用户的计算机上渐进地安装该应用程序,且如果需要,以这样的一种方式安装使该应用程序在后来离线可用。渐进式安装包括三个状态起动状态、请求状态、和最终状态。没有一个状态需要一个在其中应用程序不可用的专用安装阶段。相反,本发明的渐进式安装以这样一种方式混合了两种形式的应用程序安装,使得Web app可作为常规Web app与之交互,并不影响用户与应用程序的交互而平稳地转换成客户机侧应用程序。
示例性操作环境 图1示出了可在本发明一示例性实施例中使用的示例性计算装置。在非常基本的配置中,计算装置100通常包括至少一个处理单元102和系统存储器104。取决于计算装置的准确配置和类型,系统存储器104可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等等)、或两者的某些组合。系统存储器104通常包括操作系统105、一个或多个应用程序106,也可包括程序数据107。基本配置在图1中由虚线108内的那些组件示出。
计算装置100可具有附加特征或功能。例如,计算装置100还可包括诸如磁盘、光盘、或磁带的其它数据存储装置(可移动和/或不可移动)。这种其它存储器在图1用可移动存储器109和不可移动存储器110示出。计算机存储介质可包括以用来存储诸如计算机可读指令、数据结构、程序模块、或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。系统存储器104、可移动存储109和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括,但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化多功能光盘(DVD)或其它光学存储器、磁卡、磁带、磁盘存储器或其它磁性存储装置、或可用来存储所需信息并可由计算装置100访问的任何其它介质。任何这种计算机存储介质可以是装置100的一部分。计算装置100还可具有诸如键盘、鼠标、笔、语音输入装置、触摸输入装置等的输入装置112。还可包括诸如显示器、扬声器、打印机等等的输出装置114。这些装置在本领域中是众所周知的,无需在此赘述。
计算装置100还可包含使装置能与其它计算装置118诸如在网络上进行通信的通信连接116。通信连接116是通信介质的一个示例。通信介质通常包括计算机可读指令、数据结构、程序模块、或其它诸如载波或其它传输机制的已调制数据的信号,并包括任何信息传输介质。术语“已调制数据信号”意指具有以这种在信号中编码信息的方式来设置或改变的一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外和其它无线介质的无线介质。在此所用的术语计算机可读介质包括存储介质和通信介质。
示例性网络化环境 图2是可包括本发明实现的分布式网络环境的功能框图概览。如图2所示,诸如服务器202和客户计算机220的两个或多个计算机,在网络205上连接。服务器202和客户计算机220是诸如结合图1如上所述的计算装置。计算机可在公司环境中连接,其中网络205可以是局域网或广域网。类似地,计算机可在诸如因特网的广域网上任意连接。
服务器202是被配置用以使资源可为连接于网络205的其它计算装置使用的计算装置。服务器202可包括Web服务软件以提供因特网相关资源,诸如超文本标记语言(HTML)文档等等。服务器202包括服务器数据存储器210形式的本地存储。在服务器上,数据存储器210是服务器202在网络205上提供的至少某些资源。特别地,在服务器数据存储器210上存储使用清单212、以及应用程序包214、附加应用程序资源216,它们将结合图8-10在下面详述。服务器202还包括用于构建和维护使用清单212的其它应用程序以及其它相关文档和资源。在该实现中,服务器202使应用程序包214和附加应用程序资源216在网络205上可为其它计算装置所用。
客户计算机220是被配置用以执行本地运行应用程序,并经网络205连接到其它计算机的计算装置。客户计算机220还包括客户机数据存储器228形式的本地存储器。在客户机数据存储器228上存在应用程序存储器230和瞬态高速缓存232。在一实施例中,在客户计算机220上执行的每个应用程序都具有相关联的应用程序存储器230。客户计算机220还包括用于经网络与其它计算机交互的其它应用程序。一个这种应用程序是主软件222,诸如因特网浏览软件(此后称为浏览器222)。浏览器222与应用程序包处理器224和资源载入器226通信。登记应用程序包处理器224,从而当浏览器222遇到诸如应用程序包214的应用程序包时,浏览器知道要调用应用程序包处理器224。然后应用程序包处理器224处理应用程序包214。应用程序包214包含用以起动客户计算机220上相关联应用程序的执行的信息。应用程序包214的格式可以是可执行文件或其它封装类型格式。在一实施例中,应用程序包处理器224可被配置用以解码应用程序包的格式,以便获取相关信息。在客户计算机请求来自服务器202的附加资源(诸如附加应用程序资源216)时,浏览器222还与资源载入器226通信。由浏览器222、应用程序包处理器224、以及资源载入器226执行的处理将结合流程图5-7在下面详述。
简言之,客户计算机220的用户可以任何常规方式与服务器202相连。服务器202显示使驻留于服务器数据存储器210上的文件可用的Web网页或某些其它资源。响应于用户对链接等的选择,服务器202导航到使用清单212,它标识与被请求应用程序相关联的应用程序包214。如下将要详述的,应用程序包214包含起动应用程序所需的最少量代码。应用程序包214从服务器202下载到客户计算机220。
图3是根据本发明一实现可由Web浏览软件显示的说明性屏幕显示,该Web浏览软件用于使能远程应用程序的渐进式下载。短暂参见图3,浏览器222的示例显示300被示为包括如上所述由服务器202提供的Web网页310。Web网页310可以是与特定Web app相关联的资源,或者是用于使软件应用程序可被远程计算系统用于下载的资源。Web网页310包括指向如上所述使用清单212的超链接360。使用清单212指向应用程序包214,它至少包含起动应用程序所需的最少代码。Web网页310还包括指向如上所述使用清单212的超链接380。超链接380的选择指示用户现在对显式“安装”应用程序感兴趣。如下结合图7详述,在选择超链接380之后,用户可继续与应用程序交互,而无需等待下载应用程序或应用程序在计算机上安装。
可以理解,可在因特网、公司内联网、或任何其它网络可访问地点上提供Web网页310。激活超链接360使应用程序包214可从服务器上拖移下来。应理解Web网页310是用户可调用应用程序的唯一方式。例如,与应用程序包214的链接可在电子邮件消息等中提供。
说明性技术 图4是根据本发明一实现示出应用程序渐进式安装的各个状态的状态图400。渐进式安装包括调用状态402、起动状态404、请求状态406、以及已安装状态410。在调用状态402,用户调用应用程序。如果用户通过点击服务器202提供的链接,则渐进式安装继续到起动状态404。然而,如下详述,该应用程序可能已经安装在客户计算机上了。可通过诸如选择到本地应用程序的链接、选择开始菜单中本地应用程序的快捷键等等来调用本地安装的应用程序。当调用本地安装的应用程序时,从调用状态402到已安装状态410的转换可通过预订更新状态412进行。简言之,预订更新状态412确定在服务器202上是否有应用程序的更新可用。如果有任何更新,下载该应用程序的经更新组件。
现在,假设未在本地安装应用程序,渐进式安装继续到起动状态404。简言之,如结合图5详细所述,起动状态404下载应用程序在客户计算机上运行所需的最少代码。因为最少代码比全应用程序少得多,用户可立即开始与应用程序交互,类似于当今与常规Web app交互时的用户体验。从起动状态,渐进式安装继续到请求状态406。简言之,如结合图6详细所述,请求状态406按需下载资源。这使得用户在实施购买应用程序或形成与应用程序的持久关系之前能够尝试该应用程序。
从请求状态406,用户可继续到退出状态408,放弃应用程序的本地安装。这在用户关闭浏览器时发生。一旦用户从请求状态406转换到退出状态408,可删除应用程序的已下载组件。因此,客户计算机处于与用户调用该应用程序之前相同的状态。然后用户可稍后调用远程应用程序。渐进式安装将再次通过起动状态和请求状态继续。因而,用户无需实施安装应用程序就可再次使用应用程序。从请求状态406,渐进式安装可转换到已安装状态410。转换可基于购买决定、升级许可(例如信任升级)的请求由用户起动,或者诸如当在客户计算机上已安装了预定数量的资源时,转换可自动由操作系统执行。从请求状态到已安装状态的转换不影响用户与应用程序的交互。该转换结合图7如下所述。
因而,根据本发明渐进式安装使用户能在一调用应用程序时就可开始与其交互。应用程序的各个部分在用户与其交互时不影响用户而被下载。用户无需等待专用安装。
图5是根据本发明一实施例一般示出渐进式安装的起动阶段期间一过程的逻辑流程图。该过程在框501开始,其中诸如通过选择与应用程序相关的超链接来调用存在于网络上的应用程序。在继续图5之前,结合图8描述存在于网络上的应用程序的组件。
图8是对服务器202上存在于网络中的应用程序组件的图形描述。这些组件包括使用清单212、应用程序包214、以及附加应用程序资源216。应用程序包214包括应用程序清单802和代码804。应用程序清单802详细描述应用程序代码,包括每个组件、其版本和依赖性。这种特性的应用程序清单样本包括在“附录A-样本应用程序清单”中。尽管在作为特定文件的该文档中进行了描述,本发明的应用程序清单212应解释为想要以任意形式描述应用程序的组件,且它可存在于与在此所述不同的地方。在此所述的应用程序清单212仅用作说明。在一实施例中,代码804包括运行应用程序所需的最少代码。本领域技术人员将理解,在应用程序包214中可包括其它不必要的代码,而不背离本发明。然而,为了使对用户的延迟或影响更小,需要最少量的代码。附加应用程序资源216包括需求资源和在线资源,诸如标记A 810、附加代码812、标记B 814等等。尽管图8仅示出5个附加资源,本领域技术人员将理解,通常若干附加资源是Web app的组件。
回到图5,在框502,本发明一实施例中发生对使用清单212的导航。在一实施例中,使用清单存在于远程服务器上,并标识应用程序的接入点。使用清单样本包括在“附录B-样本使用清单”的文档中。
在框504,发生对接入点的导航。在一实施例中,接入点可以是包括应用程序清单和运行应用程序所需的最少量代码的应用程序包(例如图8所示的应用程序包214)。
在框506,起动主机。在一实施例中,主机是Web浏览器。在另一实施例中,其中在客户计算机上渐进地安装应用程序,主机可以是独立主机。以与如下所述相同的使用主机为Web浏览器的实施例的方式,独立主机发挥其作用。应用程序包处理器登记与应用程序包相关联的文件类型。因此,当浏览器接收应用程序包时,应用程序包处理器可根据本发明开始渐进式安装。在一实施例中,应用程序包处理器可以是登记了与应用程序包214相关联的文件类型的模拟处理器。
在框508,下载运行应用程序所需的最少量代码。对于使用应用程序包214的实施例,这包括下载应用程序包214。如上所述,浏览器可调用应用程序包处理器以处理应用程序包214。
在框510,资源载入器进行登记并与应用程序相关联。资源载入器负责按所需载入应用程序资源。在一实施例中,资源载入器是知道如何在应用程序“环境中”载入资源的可接插协议。
在框512,创建应用程序的应用程序领域。在框514,执行构成应用程序的用户代码。在一实施例中,应用程序的执行创建应用程序对象。定义类的应用程序包中的代码被执行以创建应用程序对象。应用程序对象是唯一的身份特征。另外,应用程序对象包括一状态。该状态将在请求状态期间持续得到更新。该状态包括有关用户与应用程序交互的信息。该状态信息将使应用程序能够平稳地从Web应用程序转换成客户机应用程序。
起动状态中的处理完成。然后渐进式安装将继续到请求状态。如图8所示,在起动完成之后,应用程序包214存储在客户计算机220上的应用程序存储器230中。用户可开始与应用程序交互。对于现有的Web app,Web app的资源被下载到瞬态高速库存232中而没有单应用程序存储器230的概念。如下所示,由于具有单应用程序存储器230,本发明可平稳地从Web app转换成客户机侧应用程序而不影响用户。
图6是一般示出渐进式安装的请求状态期间一过程的逻辑流程图。请求状态在框601开始,其中起动状态已完成,且用户正与应用程序在交互。过程600描述了在请求应用程序一部分的任何时候所进行的处理。这可包括对汇编载入(代码)、资源等等的请求。一般地,对足以和代码的请求将在请求状态期间被接收。每个这种请求将执行过程600。以下讨论描述了请求资源时的过程600。本领域技术人员将理解当请求汇编载入时,也可执行过程600。
在框602,收到一请求。通常,在用户选择与应用程序相关联Web网页之一上的超链接的任何时候,请求发生。处理继续到判定框604。
在判定框604,确定是否请求一资源。如果不请求资源,过程结束。另一方面,当请求资源时,过程继续到判定框606。
在判定框606,确定被请求资源是否本地可用。如果资源本地可用,则载入资源的本地副本用于使用,且过程结束。取决于资源的类型,本地副本可在应用程序存储器中或在瞬态高速缓存中。如果资源不是本地可用,处理在判定框610继续。
在判定框610,确定被请求资源是否是需求资源。如果被请求资源是需求资源,则处理继续到框612,其中通过http载入资源并将其缓存于本地应用程序存储器中。例如,在图9中,标记A 810和代码812被存储在应用程序存储器230中。过程结束。在判定框610,如果被请求资源不是需求资源,则处理继续到判定框620。
在判定框620,确定资源是否是在线资源。如果资源是在线资源,则处理继续到框622,其中通过http载入资源。在框624,在线资源被缓存于传输高速缓存232中。例如,在图9中,标记为在线资源的标记B 814,被存储在瞬态缓存中。然后处理完成。
在一实施例中,每个资源可属于以某些方式相关的一组资源。例如,通常一起使用的资源可包括在一组内。这样,在框612和622可检索包括主要资源的整组资源。该技术改进了后来需要的另一资源已本地存在的可能性。
因而,将注意到,在请求状态期间,附加资源被下载并填充于单应用程序存储器中。因为所下载的这些资源是离线运行该应用程序所需的相同资源,如下所述,应用程序存储器以及应用程序对象使本发明能平稳地从Web应用程序转换成客户机侧应用程序而不影响用户与应用程序的交互。因而,对于两个目的可使用一类应用程序,而不是具有两类不同的应用程序(即客户机侧应用程序和Web应用程序)。使用本发明,需要时一类应用程序可平稳地从一个目的转换成另一目的。
图7是一般示出用于在渐进式安装的请求状态和已安装状态之间转换的过程的逻辑流程图。处理在框701开始,其中已触发应安装应用程序的信号。触发可以是用户起动的,或可基于外部基准自动,诸如基于已经下载到单应用程序存储器的资源数量。处理在框702继续。
在框702,剩余的需求资源通过http下载。处理在框704继续。在框704,这些剩余的需求资源被存储在应用程序存储器中。这在用户仍与应用程序交互时发生。例如,图10示出了下载驻留于应用程序存储器中的标记C 816。处理在框706继续。
在框706,在线资源的副本被存储在应用程序存储器230中。因此,如果瞬态高速缓存中的副本被移除,在线资源的副本仍然存在。例如,参照图10,标记B 814如图所示储存于应用程序存储器中。处理在框708继续。
在框708,在操作系统中记录激活信息。例如,可在开始菜单中加入快捷方式。激活信息使应用程序在下次被本地调用时能使用常规机制来调用。处理在框710继续。
在框710,在操作系统中记录印象信息。该印象信息描述应用程序与诸如文件关联的操作系统交互的方式。另外,印象信息描述如何从程序条目中改变/移除应用程序。参照图10,激活信息832和印象信息834在客户计算机220上的操作系统信息830中示出。然后处理完成。
如上所述,此时应用程序离线可用。阅读了以上描述后就会注意到,用户不必等待应用程序的安装。在请求状态期间生成的信息被转换到已安装状态。因而,通过用户与应用程序交互时对所存储的应用程序身份和状态信息的使用,应用程序可平稳地转换到已安装状态。
说明性应用编程接口 在一特定示例中,可用一个或多个应用编程接口(API)来实现上述技术,这些API展现用于管理下载和安装、服务、信任和私密的建立、以及应用程序的最终执行的细节。这种API的一个示例如以下示例DeploymentManager类所述,该类用于处理每个这些功能。以下是该DeploymentManager的基本类型描述。
************************public class DeploymentManager{public DeploymentManager(string identity,stringcodebase){...}//The events for the async operations which can beinvoked.public event BindCompletedEventHandlerBindCompleted ;public eventDeterminePlatformRequirementsCompletedEventHandlerDeterminePlatformRequirementsCompleted;public eventDetermineAuthorizationCompletedEventHandlerDetermineAuthorizationCompleted;public event SynchronizeCompletedEventHandlerSynchronizeCompleted;public event ExecuteCompletedEventHandlerExecuteCompleted;//ProgressChanged event for all async operations.<!-- SIPO <DP n="10"> --><dp n="d10"/>public event DeploymentProgressChangedEventHandlerDeploymentProgressChanged;//BindAsyncpublic void BindAsync(object userToken){...}//DetermineRequirementsAsyncpublic voidDeterminePlatformRequirementsAsync(object userToken){...}//DetermineAuthorizationAsyncpublic void DetermineTrustAsync(object userToken){...}//SynchronizeAsyncpublic void SynchronizeAsync(object userToken){...}//ExecuteAsyncpublic void ExecuteAsync(object userToken){...}//AsyncCancelpublic void AsyncCancel(){...}}************************ 注意DeploymentManager展现了五种主要操作的方法(1)清单绑定,(2)平台要求的确定,(3)授权的确定,(4)同步,以及(5)执行。每一个这些功能将在此简述。
清单绑定 清单绑定是为了安装、服务以及激活而在开始时获取有关使用应用程序的必须清单元数据的过程。通常绑定从使用清单的codebase库开始,或者从使用应用程序身份开始,或可能从两者开始。绑定检索用于作出随后有关使用应用程序的决定的最少量清单信息。根据绑定的环境、应用程序存储器和要绑定应用程序的状态,清单绑定可能需要或可能不需要网络连接。如果已在机器上使用应用程序,则在无网络I/O的全离线方式中绑定成功。
平台要求的确定 一旦绑定完成,查询客户计算机的已安装状态以确定要运行应用程序的必须平台是否显现就变得可能了。平台可被标识为应用程序所依赖的任何软件,但它不能作为使用应用程序的一部分来安装。使用应用程序引用在其应用程序清单中的这些依赖性。例如,可提供对操作系统最小版本、运行时环境最小版本、以及GAC-常驻汇编的特定版本的支持。版本是否被视为最小可取决于该汇编是否被标记为平台或库。
如果满足了平台要求,应用程序安装继续。如果未满足平台要求,则返回失败以及有关未满足的平台依赖性的特定信息。然后应用程序安装过程不能继续,但在采取在机器上安装必须平台的动作之后可重做该过程。
授权的确定 一旦清单绑定完成,可作有关要符合应用程序的哪些信任、私密和许可证的判定,因为这些信息也可在使用和应用程序清单中存在。在一般授权类别下组合这些判定。例如如果通过应用程序不能在缺省沙箱中运行,则授权可能需要用户提示。成功的授权导致产生应用程序要在客户计算机上运行所必须的许可准许、私密政策保证、许可证密钥等等的集合。可缓存该信息从而在后来激活应用程序时不必重复该判定。如果授权失败,则不能进行应用程序安装。
同步 在成功完成平台和授权确定后,可开始安装应用程序有效组合的实际任务。该过程被称为同步。仅通过简单地确保使用应用程序的所需版本已在机器上显现,就可进行同步操作。或者,同步可包括远程使用应用程序的全部下载(也需要按需求的组件、语言包),或者仅仅起动应用程序必须的组件的最少所需子集(例如仅仅是所需组件)。当得以下载时,同步可进一步分成两个阶段(1)纯传输阶段,其中应用程序有效载荷被复制到盘上的临时存储单元,以及(2)实施操作,其中使用应用程序被执行以进行存储并可用于绑定。还可使用同步来下载现有已安装应用程序的可任选的或按需求的组件。
执行 一旦应用程序已成功完成了平台和授权判决,且其有效载荷已被成功同步及实施存储,就可执行(起动或运行)该应用程序。执行可在分开的独立过程中发生,或者可使用现有调用器的过程来运行。在两个情形中,执行主机为应用程序提供安全的执行环境,它可能利用由先前对授权的调用所导致的先前缓存判决来避免再次提示。
客户机侧实现 为了接收来自DeploymentManager方法调用的通知,诸如非同步完成结果,客户机提供了相关联完成事件处理器(例如BindCompleteEventHandler)的实现。这些由相关联完成事件变量(例如BindCompletedEventArgs)传递。为了接收这些操作的非同步过程结果,客户机提供DeploymentProgressChangedEventHandler的实现。这将由一变量(DeploymentProgressChangedEventArgs)传递。以下是这种事件处理器实现的基本示例 ************************//Bind event handler delegate and args.public delegate void BindCompletedEventHandler(objectsender,BindCompletedEventArgs e);public class BindCompletedEventArgsAsyncCompletedEventArgs{public BindCompletedEventArgs(Exception error,boolcancelled,object userToken)base(error,cancelled,userToken){...}<!-- SIPO <DP n="13"> --><dp n="d13"/>}//DeterminePlatformRequirements event handler delegateand args.public delegate voidDeterminePlatformRequirementsCompletedEventHandler(object sender,DeterminePlatformRequirementsCompletedEventArgs e);public classDeterminePlatformRequirementsCompletedEventArgsAs yncCompletedEventArgs{publicDeterminePlatformRequirementsCompletedEventArgs(Exception error,bool cancelled,object userToken)base(error,cancelled,userToken){...}}//DetermineAuthorization event handler delegate andargs.public delegate voidDetermineAuthori zationCompletedEventHandler(objectsender,DetermineAuthorizationCompletedEventArgs e);public class DetermineAuthorizationCompletedEventArgsAsyncCompletedEventArgs{publicDetermineAuthorizationCompletedEventArgs(Exceptionerror,bool cancelled,object userToken)base(error,cancelled,userToken){...}}<!-- SIPO <DP n="14"> --><dp n="d14"/>//Synchronize event handler delegate and args.public delegate voidSynchronizeCompletedEventHandler(object sender,SynchronizeCompletedEventArgs e);public class SynchronizeCompletedEventArqsAsyncCompletedEventArgs{public SynchronizeCompletedEventArgs(Exceptionerror,bool cancelled,object userToken)base(error,cancelled,userToken){...}}//Execute event handler delegate and args.public delegate void ExecuteCompletedEventHandler(objectsender,ExecuteCompletedEventArgs e);public class ExecuteCompletedEventArgsAsyncCompletedEventArgs{public ExecuteCompletedEventArgs(Exception error,bool cancelled,object userToken)base(error,cancelled,userToken){...}}//DeploymentProgressChanged event handler delegate andargs.public delegate voidDeploymentProgressChangedEventHandler(object sender,DeploymentProgressChangedEventArgs e);public class DeploymentProgressChangedEventArgsProgressChangedEventArgs<!-- SIPO <DP n="15"> --><dp n="d15"/>{public DeploymentProgressChangedEventArgs(objectuserToken,int progressPercentage)base(userToken,progressPercentage){...}}************************ 以下是调用所述机制的客户机的一实现的一般示例(例如一应用程序)。以下示例是基于实现上述DeploymentManager的类(客户机)的应用程序。
************************public class Client{public static void Main(){DeploymentManager dep=newDeploymentManager(″name=bar,version=1.0.0.0″,″http://www.foo.com/bar.deploy″);dep.DeploymentProgressChanged+=newDeploymentProgressChangedEventHandler(Client.ProgressChanged);dep.BindCompleted+=newBindCompletedEventHandler(Client.BindCompleted);dep.BindAsync(null);}public static void BindCompleted(object sender,BindCompletedEventArgs e){<!-- SIPO <DP n="16"> --><dp n="d16"/>System.Console.WriteLine(e.ToString(>);}public static void ProgressChanged(object sender,DeploymentProgressChangedEventArgs e){System.Console.WriteLine(e.Progress Percentage);}}************************ 以上说明书、示例以及数据提供了对本发明实现的结构和使用的完整描述。因为可作本发明的许多实施例而不背离本发明的精神和范围,本发明驻留于所附权利要求。
附录A.应用程序清单样本 <?xml version=″1.0″encoding=″utf-8″?><assembly xmlns=″urnschemas-microsoft-comasm.v1″manifestVersion=″1.0″xmlnsasmv2=″urnschemas-microsoft-comasm.v2″xmlnsxsi=″http://www.w3.org/2001/XMLSchema-instance″xsischemaLocation=″urnschemas-microsoft-comasm.v1assembly.adaptive.xsd″><assemblyIdentity name=″MyDocViewer″version=″1.0.0.0″processorArchitecture=″x86″asmv2culture=″en-us″publicKeyToken=″0000000000000000″/><entryPoint name=″main″xmlns=″urnschemas-microsoft-comasm.v2″dependencyName=″MyDocViewer″><commandLine file=″MyDocViewer.exe″parameters=″″/></entryPoint><TrustInfo xmlns=″urnschemas-microsoft-comasm.v2″xmlnstemp=″temporary″><Security><ApplicationRequestMinimum><PermissionSetclass=″System.Security.PermissionSet″ID=″FullTrust″version=″1″Unrestricted=″true″/><AssemblyRequestname=″MyDocViewer″PermissionSetReference=″FullTrust″/></ApplicationRequestMinimum></Security></TrustInfo><file name=″Sample4.xaml″hash=″75966580bf63a6f7d9818bcbf6c8c61343e61d9f″hashalg=″SHA1″asmv2size=″636″/><file name=″Sample5.xaml″hash=″9fe4e7312498c0b62ab455b289e27fc2fc8b3bb3″hashalg=″SHA1″asmv2size=″615″/><file name=″Sample6.xaml″hash=″760221281e78c621f45947b97b87e65a2bee6e14″hashalg=″SHA1″asmv2size=″2750″/><dependency asmv2name=″MyDocViewer″><dependentAssembly><!-- SIPO <DP n="18"> --><dp n="d18"/><assemblyIdentity name=″MyDocViewer″version=″0.0.0.0″publicKeyToken=″f745653e2b97409d″processorArchitecture=″x86″/></dependentAssembly><asmv2installFrom codebase=″MyDocViewer.exe″hash=″95f2246ac74b3f32938db0ebed313e38ee7b4b5b″hashalg=″SHA1″size=″12288″/></dependency></assembly> 附录B.使用清单样本 <?xml version=″1.0″encoding=″UTF-8″standalone=″yes″?><assembly xmlns=″urnschemas-microsoft-comasm.v1″mani festVersion=″1.0″xmlnsasmv2=″urnschemas-microsoft-comasm.v2″xmlnsxsi=″http://www.w3.org/2001/XMLSchema-instance″xsischemaLocation=″urnschemas-microsoft-comasm.v1assembly.adaptive.xsd″><assemblyIdentity name=″MyDocViewer.deploy″version=″1.0.0.0″processorArchitecture=″x86″asmv2culture=″en-us″publicKeyToken=″0000000000000000″/><description asmv2publisher=″MyCompany″asmv2product=″WCP Application of MyDocViewer″asmv2supportUrl=″http://www.mycompany.com/AppServer/MyDocViewer/support.asp″/><deployment xmlns=″urnschemas-microsoft-comasm.v2″isRequiredUpdate=″false″><install shellVisible=″true″/><subscription><update><beforeApplicationStartup/><periodic><minElapsedTimeAllowed time=″6″unit=″hours″/><maxElapsedTimeAllowed time=″1″unit=″weeks″/></periodic></update></subscription></deployment><dependency><dependentAssembly><assemblyIdentity name=″MyDocViewer″version=″1.0.0.0″processorArchitecture=″x86″asmv2culture=″en-us″publicKeyToken=″0000000000000000″/></dependentAssembly><asmv2installFrom codebase=″MyDocViewer.manifest″/></dependency></assembly>
权利要求
1.一种用于在本地计算系统上安装应用程序的软件体系结构,其特征在于,包括
一组件,为了在所述本地计算系统上安装所述应用程序,它被配置用以获取有关所述应用程序的清单元数据;以及
用以访问所述组件的一应用程序编程接口。
2.如权利要求1所述的软件体系结构,其特征在于,所述组件还被配置用以从所述清单中检索足以描述所述应用程序的信息集。
3.如权利要求1所述的软件体系结构,其特征在于,所述应用程序编程接口接收标识所述应用程序的一参数。
4.一种用于在本地计算系统上安装应用程序的软件体系结构,其特征在于,包括
一组件,其被配置用以查询所述本地计算系统,来确定所述应用程序所必须的平台是否在所述本地计算系统上存在;以及
用以访问所述组件的一应用程序编程接口。
5.如权利要求4所述的软件体系结构,其特征在于,所述平台包括所述应用程序所依赖的一个或多个软件模块,所述软件模块不是所述应用程序的一部分。
6.如权利要求5所述的软件体系结构,其特征在于,所述平台还包括不能作为所述应用程序安装一部分安装的一个或多个软件模块。
7.如权利要求4所述的软件体系结构,其特征在于,所述平台在与所述应用程序相关联的应用程序清单中被标识。
8.如权利要求4所述的软件体系结构,其特征在于,所述组件还被配置用以校验与所述平台相关联的版本。
9.如权利要求4所述的软件体系结构,其特征在于,所述组件还被配置用以在所述平台不存在时放弃所述应用程序的安装。
10.如权利要求9所述的软件体系结构,其特征在于,所述组件还被配置用以结合放弃所述应用程序的安装而返回出错信息。
11.如权利要求10所述的软件体系结构,其特征在于,所述出错信息包括有关哪个平台未在所述本地计算系统上存在的标识信息。
12.一种用于在本地计算系统上安装应用程序的软件体系结构,其特征在于,包括
一组件,其被配置用以确定所述应用程序是否被授权用于在所述本地计算系统上安装;以及
用以访问所述组件的一应用程序编程接口。
13.如权利要求12所述的软件体系结构,其特征在于,所述对授权的确定包括确定所述应用程序的安装是否超越了与所述应用程序的源相关联的信任程度。
14.如权利要求12所述的软件体系结构,其特征在于,所述对授权的确定包括确定所述应用程序的安装是否违反了与所述本地计算系统相关联的私密政策。
15.如权利要求12所述的软件体系结构,其特征在于,所述对授权的确定包括确定所述应用程序的安装是否违反了与所述应用程序相关联的许可证。
16.如权利要求12所述的软件体系结构,其特征在于,所述组件还被配置用以在所述应用程序获安装授权时产生所述应用程序的一组授权参数。
17.如权利要求16所述的软件体系结构,其特征在于,所述授权参数组包括至少许可准许、私密政策保证以及许可证密钥。
18.一种用于在本地计算系统上安装应用程序的软件体系结构,其特征在于,包括
一组件,其被配置用以确定所述应用程序的一版本是否已在所述本地计算系统上存在,并且如果不存在,则从远程地点下载与所述应用程序相关联的至少一个资源;以及
用以访问所述组件的一应用程序编程接口。
19.如权利要求18所述的软件体系结构,其特征在于,所述资源足以起动所述应用程序。
20.如权利要求18所述的软件体系结构,其特征在于,所述组件还被配置用以将所述应用程序复制到所述本地计算系统上的临时存储单元。
21.如权利要求18所述的软件体系结构,其特征在于,所述组件还被配置用以实施已下载的至少一个资源在所述本地计算系统上的存储,并可用于绑定。
22.一种用于在本地计算系统上安装应用程序的软件体系结构,其特征在于,包括
一组件,其被配置用以在成功确定所述应用程序必须的任何平台在所述本地计算系统上存在,以及足以起动所述应用程序的资源在所述本地计算系统上存在之后,执行所述本地计算系统上的所述应用程序,所述资源与所述应用程序相关联;以及
用以访问所述组件的一应用程序编程接口。
23.如权利要求22所述的软件体系结构,其特征在于,所述组件还被配置用以在所述应用程序未被授权在所述本地计算系统上执行时,放弃所述应用程序的执行。
24.如权利要求22所述的软件体系结构,其特征在于,执行在一安全执行环境中发生。
25.如权利要求22所述的软件体系结构,其特征在于,执行在与负责所述应用程序安装的调用实体相独立的一进程中发生。
26.如权利要求22所述的软件体系结构,其特征在于,执行在负责所述应用程序安装的调用实体的所述同一进程中发生。
全文摘要
本发明提供一种机制,它用于使象Web应用程序一样操作的应用程序能够不影响用户与应用程序的交互而转换成客户机侧应用程序。渐进式安装经过三个阶段进行转换起动状态、请求状态、和已安装状态。在起动状态期间,与应用程序相关联的组件子集被下载并存储于本地数据存储器中。该子集足以允许应用程序以类似于Web应用程序的方式执行。在请求状态期间,下载与应用程序相关联的附加资源。从请求状态到已安装状态的转换不影响用户与应用程序的交互而发生。基于存储在本地数据存储器中附加资源的数量或在外部触发之后,该转换可自动发生。
文档编号G06F9/46GK1961307SQ20048000124
公开日2007年5月9日 申请日期2004年7月21日 优先权日2003年10月23日
发明者M·A·阿尔卡扎, M·邓恩, A·W·坎特, V·R·P·塔玛纳 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1