应用文件的分发的制作方法

文档序号:6533655阅读:219来源:国知局
应用文件的分发的制作方法
【专利摘要】一种系统,包括:服务器系统接口,被布置为从多个客户端计算设备中的一个客户端计算设备的客户端应用接收对应于对于获得或更新软件应用的请求的通信;以及应用市场服务器系统,被编程为:响应于该通信,标识应用文件,该应用文件包括对应于软件应用的应用二进制文件和与软件应用相关联的一个或多个补充文件,并且响应于接收该通信向客户端应用发送与应用文件有关的信息,以及标识计算设备上的对应于应用文件的存储的文件,基于标识的存储的文件以及与从应用市场服务器系统发送的应用文件有关的信息来确定应用文件中的要下载的特定文件,以及发起下载。
【专利说明】应用文件的分发
[0001]相关申请的交叉引用
[0002]本申请要求于2012年3月2日提交的、名称为“DISTRIBUT1N OF APPLICAT1NFILES”的美国申请序列号13/411,048的优先权,其公开内容通过引入并入于此。

【技术领域】
[0003]本文献总体上涉及软件分发系统。

【背景技术】
[0004]软件应用可以使用各种模式被售卖和分发。应用市场模式是有时以移动设备和其他计算设备为目标分发应用(或app)的模式的一个示例。在这样的模式中,软件开发者可以提交其应用以在线上应用市场中发布,并且市场可以提供允许用户浏览、搜索和购买发布的应用的接口。
[0005]当用户标识他或她期望获得的应用时,应用市场通常可以有助于交易。例如,在免费应用的情况下,应用市场可以简单地向用户的设备中的一个或多个设备提供应用以用于下载。在付费应用的情况下,应用市场可以提供应用以用于下载,并且还可以提供与从用户收集付款并且补偿软件开发者有关的服务。应用市场通常可以由被软件开发者和用户二者信任的组织操作以适当地处理任何此类应用交易。


【发明内容】

[0006]本文献描述了允许软件开发者使用软件分发系统(例如,应用市场)来分发与应用相关联的多个应用文件的系统和技术。在某些实现方式中,软件开发者可以向软件分发系统上传针对特定应用的应用二进制,并且还可以上传与该应用相关联的一个或多个补充文件。补充文件可以例如包括图形、音频或与应用相关联的多媒体资产。补充文件还可以包括开发者期望与应用相关联的任意其他适当数据。在某些情况下,补充文件可以大于应用二进制本身。
[0007]当用户请求从软件分发系统下载软件应用(例如,针对应用的最初安装或者针对应用的更新)时,系统可以通过向用户的设备提供用于下载的应用二进制和补充文件来响应。在某些实例中,系统可以只向用户的设备提供用于下载的文件中的某些文件,例如,当系统确定所请求的文件中的一个或多个文件已经存在于设备上时。
[0008]根据这里所述的系统和技术,软件分发系统可以包括在用户的计算设备上执行的应用市场客户端以及远离计算设备操作的应用市场服务器系统。当用户请求从应用市场下载应用时,应用市场服务器系统可以标识与该应用相关联的应用文件(例如,应用二进制文件以及一个或多个补充文件两者),并且可以向应用市场客户端提供关于应用文件的信息。转而,应用市场客户端可以使用由应用市场服务器系统提供的信息来确定应用文件中的哪些文件(如果有的话)用于下载。例如,应用市场客户端可以确定是否有任何应用文件已经被存储在计算设备上,并且可以发起在设备上不存在或者已经被更新到比设备上存在的版本更新的版本的任何应用文件的下载。
[0009]在某些实例中,这里描述的系统和技术的各种实现方式可以提供一个或多个优势。例如,在某些软件分发系统中,应用二进制的大小可能受限,例如,由于关于下载速度和/或带宽的技术限制、功能考虑或者其他原因。在这种情况下,那些太大而不能通过软件分发系统分发的应用二进制可以被分成多个二进制(例如,小于分发系统的大小限制的核心应用二进制,以及可以比核心应用二进制大许多倍的补充二进制)以用于由系统分发。另夕卜,通过将应用二进制分成两个或更多个文件,应用的部分(例如,在应用二进制中提供的核心特征和其他功能)可以被上传而不需要重新分发应用的其他部分(例如,图形文件、声音文件、游戏应用的附加级别或其他内容等)。这里描述的系统和技术的另一优势在于用户可以能够侧向加载可能大小上较大的补充二进制文件而不是使用空中资源下载文件。例如,用户可以使用台式计算机上的高速网络连接来下载补充二进制,并且通过有线连接向设备传送补充二进制,由此潜在地节省时间和/或带宽。
[0010]在一个实现方式中,公开了一种用于从应用市场向计算设备分发应用文件的计算机实现的系统。该系统包括服务器系统接口,其被布置为从多个客户端计算设备中的一个客户端计算设备的客户端应用接收对应于对于获得或更新针对该一个客户端计算设备的软件应用的通信。该系统还包括应用市场服务器系统,其被编程为:(a)响应于该通信,标识应用文件,该应用文件包括对应于该软件应用的应用二进制文件和与该软件应用相关联的一个或多个补充文件,以及响应于接收该通信向该客户端应用发送与该应用文件有关的信息,以及(b)标识该计算设备上的对应于该应用文件的存储的文件,基于标识的该存储的文件以及与从该应用市场服务器系统发送的该应用文件有关的该信息来确定该应用文件中的要下载的特定应用文件,以及发起该应用文件中的该特定应用文件的下载。该客户端应用可以包括应用市场客户端,该应用市场客户端对应于该应用市场服务器系统并且被编程为从该应用市场服务器系统下载针对多个不同应用的文件。同样,与该应用文件有关的该信息可以包括针对该应用文件中的每个应用文件的版本信息,并且该应用市场客户端可以被编程为将该版本信息与该存储的文件的相应版本比较以确定是否下载该应用文件中的该特定应用文件。
[0011]在某些方面中,该应用市场客户端被编程为在下载该存储的文件的更加新的版本之后从该计算设备移除该存储的文件的先前版本。该应用市场服务器系统还可以被编程为将该应用二进制文件限制到定义的最大大小,并且其中该应用文件中的该特定应用文件的聚合大小超过该应用二进制文件的该最大大小。此外,该客户端应用可以被编程为通过分析在该计算设备上的对应于该软件应用的目录中存储的文件来标识该存储的文件。在其他方面中,该应用市场服务器系统被编程为基于分析该应用文件的部分来生成针对该应用文件的文件签名,并且其中该客户端应用被编程为在发起该应用文件的安装之前验证该文件签名。该服务器系统还可以被编程为向该客户端应用发送关于由该应用市场服务器系统分析的该应用文件的该部分的信息,并且该客户端应用被编程为通过基于分析由该应用市场服务器系统分析的该应用文件的该部分来生成针对该应用文件的验证签名、并且将该文件签名与该验证签名比较以验证该文件签名。
[0012]在其他方面中,与该软件应用相关联的该补充文件的特定版本以相应设备组为目标,并且其中该应用市场服务器系统被编程为基于该计算设备属于的特定设备组的确定来标识用于向该计算设备分发的该补充文件的该特定版本。此外,与该应用文件有关的该信息可以包括针对该应用文件中的特定应用文件的大小信息,并且其中该客户端应用被编程为显示该应用文件的该特定应用文件的该下载的进度的指示符,该指示符示出了下载的量与该应用文件中的该特定文件的聚合大小的比例。该客户端应用还可以被编程为在该应用文件中的该特定应用文件的该下载完成之后发起该应用文件的安装,并且该应用市场服务器系统可以被编程为响应于来自以下各项的验证的请求下载文件:(a)应用市场应用,其对应于该应用市场服务器系统并且被编程为从该应用市场服务器系统下载针对多个不同应用的文件;以及(b)特定应用,其请求该下载的文件以用于其自己使用。
[0013]在另一实现方式中,公开了一种用于确定用于向计算设备下载的应用文件的计算机实现的方法,并且包括:利用在计算设备上执行的应用市场客户端接收对于获得或更新与多个应用文件相关联并且被配置为在该计算设备上执行的软件应用的请求;以及利用该应用市场客户端并且从远离该计算设备操作的应用市场服务器系统接收与该应用文件有关的信息;标识该计算设备上的对应于该应用文件的存储的文件;基于标识的该存储的文件以及与该应用文件有关的接收的该信息来确定该应用文件中的将下载的特定应用文件;以及发起该应用文件中的确定的特定应用文件的下载。该方法还可以包括由该应用市场客户端标识故障以下载一个或多个文件,并且在该一个或多个文件被下载之后由被编程为使用该一个或多个文件的应用开始从该市场服务器系统下载该一个或多个文件。此外,与该应用文件有关的该信息可以包括针对该应用文件中的特定应用文件的版本信息,并且其中该方法进一步包括将该版本信息与该存储的文件的相应版本比较以确定是否下载该应用文件中的特定应用文件。该方法还可以涉及在下载该存储的文件的更加新的版本之后从该计算设备自动移除该存储的文件的先前版本。
[0014]在其他方面中,该方法进一步包括通过分析在该计算设备上的对应于该软件应用的目录中存储的文件来标识该存储的文件,或者还可以包括在发起该应用文件的安装之前,通过分析该应用文件的部分来验证由该应用市场服务器系统针对该应用文件生成的文件签名。此外,该方法可以包括从该应用市场服务器系统接收关于由该应用市场服务器系统分析的该应用文件的该部分的信息,以及通过基于分析由该应用市场服务器系统分析的该应用文件的该部分来生成针对该应用文件的验证签名、并且将该文件签名与该验证签名比较以验证该文件签名。
[0015]在又一实现方式中,公开了一种用于确定用于从应用市场向计算设备下载的应用的计算机实现的方法。该方法包括:从多个客户端计算设备中的一个客户端计算设备的应用市场客户端接收对应于对于获得或更新针对该一个客户端计算设备的软件应用的请求的通信;响应于该通信,标识应用文件,该应用文件包括对应于该软件应用的应用二进制文件和与该软件应用相关联的一个或多个补充文件,并且响应于接收该通信向该应用市场客户端发送与该应用文件有关的信息,以及响应于该计算设备上对应于该应用文件的存储文件的标识,以及响应于该计算设备上的对应于该应用文件的存储的文件的标识发起该应用文件中的特定应用文件的下载,以及基于标识的该存储的文件以及与从该应用市场服务器系统发送的该应用文件有关的该信息来确定该应用文件中的该特定应用文件。
[0016]在附图和下文描述中阐述一个或者多个实施方式的细节。其他特征和优点将从说明书和附图以及从权利要求书变得清楚明显。

【专利附图】

【附图说明】
[0017]图1是示出了用于发布和分发软件应用的环境的示例的概念图。
[0018]图2是用于向软件分发系统上传应用文件的示例用户界面的示图。
[0019]图3是用于分发与软件应用相关联的应用文件的软件分发系统的系统图。
[0020]图4是用于分发与软件应用相关联的应用文件的示例过程的泳道图。
[0021]图5是可以用于实现这里描述的系统和技术的计算机设备和移动计算机设备的示例。
[0022]各图中的相似参考符号指示相似元件。

【具体实施方式】
[0023]图1是示出了用于发布和分发软件应用的环境100的示例的概念图。在环境100中,使用计算设备102的软件发布者可以与发布者系统104交互(如由被标记为A的箭头所示)以上传和/或发布软件应用以用于由应用市场系统108分发。
[0024]软件发布者还可以使用发布者系统104向系统上传一个或多个补充文件,以及将补充文件与特定应用相关联,从而使得补充文件与应用一起被分发。例如,在某些情况下,软件发布者可能期望分别从应用二进制文件本身分发某些与应用有关的内容,并且可能期望使用应用市场系统108的分发能力而不是例如通过托管由软件发布者操作的单独文件服务器上的文件来分发应用市场系统108的情境以外的文件。
[0025]取决于软件发布者期望分别从应用二进制分发的数据和/或内容的类型,补充文件可以包括不同类型的内容。例如,软件发布者可以将图形、音频或多媒体数据包括在补充文件中,其中此类内容被设计用于由开发者正上传的应用访问。作为另一示例,软件发布者可以使用补充文件作为一种用于分发模板、文档或用于与应用一起使用的其他类型的文档的方式。在某些实现方式中,补充文件可以是任何适当的文件类型,例如包括:不透明二进制blob(opaque binary blob)、包括用于与应用一起使用的一个或多个压缩或未压缩文件的ZIP文件或者与特定实现方式兼容的任意其他文件类型。
[0026]通过将在补充文件中存储的信息从应用二进制分离,软件发布者可以能够更新应用数据的某些部分而不影响应用数据的其他部分。例如,软件发布者可以将应用功能分离成主要应用二进制和一个或多个补充文件,其中主要应用二进制包括应用的核心特征,而一个或多个补充文件包括由应用使用的图形和/或音频文件。在这样的示例中,软件发布者可以能够通过更新补充文件来发布图形和/或音频文件的更新,同时照原样保留应用二进制。相反地,软件发布者可以能够发布在应用二进制中包括的核心特征的更新,但图形和音频文件可以保持不变。在任一情况下,应用市场系统108均可以有助于如下文所述的向用户的客户端设备仅下载更新的文件。
[0027]在某些实现方式中,软件发布者还可以使用发布者系统104来定义与应用相关联的特定补充文件将作为目标的的特定设备、设备类型或设备分组。例如,软件发布者可以发布可以被配置为在多个不同设备或设备类型上执行的应用二进制,但是可以使用具体地以特定设备或设备类型为目标的不同补充文件。例如,应用的核心功能可以被包括在应用二进制文件中,其可以包括多个代码路径以允许在多个不同设备上的正确执行。在这样的示例中,软件发布者可以开发多个不同补充文件,其中每个补充文件具体地以特定设备、设备类型或设备分组为目标。例如,软件发布者可以利用以具有小屏幕大小和标准图形处理器的移动设备为目标的正常图形开发的一个补充文件,并且可以利用以具有更大屏幕大小和高级图形处理器的设备为目标的高级图形开发的另一补充文件。
[0028]在这样的情况下,发布者系统104可以提供如下用户接口,该用户接口允许软件发布者将补充文件的特定版本与特定相应设备分组相关联,从而使得当用户请求下载应用时,应用市场可以确定各种补充文件版本中的那个补充文件版本适于用户的特定设备。例如,软件发布者可以指定补充文件的一个版本待分发至具有小屏幕大小的智能电话,而补充文件的另一版本待分发至具有特大(相比之下)屏幕大小的平板计算机。在这样的示例中,特定补充文件可以向一个或多个其他补充文件包括类似的音频资产,但是在特定补充文件中包括的图形资产可以具体地以特定屏幕大小或图形处理器为目标。
[0029]设备分组可以使用各种设备属性和/或设备属性的组合在发布者系统104中被定义。例如,设备分组可以使用三个维度(dimens1ns)被定义,该三个维度包括安装的设备框架、显示器屏幕大小和图形处理能力。其他和/或附加维度也可以在系统中使用,例如包括:与OpenGL ES版本、计算设备的本地平台(例如,ARM EABI v7, INTEL等)、各种设备硬件或软件特征(例如,相机、蓝牙、W1-F1、电话等)、设备的携带者和/或其位置有关的维度。
[0030]软件发布者在利用发布者系统104定义特定设备分组时可以选择使用可用维度中的一个或多个维度。例如,在某些情况下,软件发布者可以具有均与不同设备框架有关的不同版本的补充文件(例如,针对OS版本1.6至1.8的第一版本,针对OS版本2.0至2.2的第二版本,以及针对OS版本3.0及以上的第三版本)。在此类情况下,软件发布者可以定义仅由设备框架维度区分的三个不同设备分组。在其他情况下,软件发布者可以选择使用附加和/或不同维度对设备分组进一步细化。应当理解,在各种实现方式中,发布者系统104可以被配置为提供与适合正被提供的特定实现方式一样多或一样少的维度。通过使用多个不同设备属性组合定义设备分组,软件发布者可以能够使用任何适当的粒度水平来指定其补充文件版本的分发。用于使应用的特定版本以特定设备模式或设备类型为目标的示例技术在2011年7月20日提交的名称为“Multiple Applicat1n Vers1ns”的共同未决美国申请序列号13/187,198中被描述。特别地,在该申请中描述的技术可以由在本申请中描述的技术通过允许开发者将应用的每个版本指定为由不同的文件分组(诸如核心二进制文件和基于所提供版本的不同补充文件)组成而被执行。向用户提供的正确版本继而可以被确定(例如,通过用户选择版本或者通过市场标识请求应用的设备的类型),并且继而可以参考开发者提供的设备分组定义,以便选择对应于标识的设备类型的定义中的文件。
[0031]在计算设备102与应用发布者系统104之间的通信可以通过任意适当网络(例如,因特网、LAN、WAN、无线宽带或其任意组合)出现。计算设备102被描绘为台式计算机,但其他类型的计算设备(例如,膝上型计算机、上网本、平板计算机、智能电话、机顶盒等)也可以与发布者系统104通信。类似地,发布者系统104被描绘为独立服务器,但发布者系统104可以表示服务器的集群、服务器场或者可以用于托管发布者系统104的功能的其他服务器分组。在某些实现方式中,发布者系统104可以由提供这里描述的发布服务的受信组织操作。
[0032]如由被标记为B的箭头所示,在从软件开发者接收用于发布应用(包括与该应用相关联的补充文件)的指令之后,发布者系统104可以将关于该应用的特定信息写入应用数据存储装置106的一个或多个数据结构。数据结构通常可以用于描述应用及其相关联的应用文件,其可以包括应用二进制文件和与该应用相关联的补充文件。作为一个示例,数据结构可以包括针对应用文件中的每个应用文件的以下数据,诸如版本信息、大小信息、下载位置信息等。在某些实现方式中,数据结构还可以包括与被文件中的一个或多个文件的特定版本当做目标的设备分组有关的信息。数据结构还可以用于存储与应用相关联的其他适当元数据(例如,定价信息、文本描述、屏幕截图、图标、用于从下载该应用的用户接收支付的账户等)。
[0033]在应用已经由发布者系统104发布之后,该应用可以经由应用市场系统108表现为用于下载的应用,该应用市场系统108可以被配置为读取在应用数据存储装置106中存储的数据结构。根据这里描述的技术,当具有相关联的补充文件的应用在应用市场系统108上被发布时,该系统可以用于标识与正被请求的特定应用相关联的应用文件,并且可以例如向在用户的计算设备上执行的市场客户端提供关于文件的信息。例如,应用市场系统108可以提供允许市场客户端确定文件中的哪些文件应当被下载到设备的信息,诸如与应用文件相关联的大小和版本信息。如果市场客户端确定特定应用文件中的一个或多个特定应用文件已经出现在客户端设备上,则市场客户端可以不下载这些特定应用文件。
[0034]在环境100中,如由被标记为C的箭头所示,用户可以使用多个不同客户端计算设备(例如,设备110)来访问应用市场系统108。移动客户端计算设备可以通过如所示的无线通信信道或者通过任意其他适当的通信信道与应用市场系统108通信。其他计算设备(未示出)也可以例如通过因特网或任意其他适当的通信信道与应用市场系统108通信。
[0035]如所示,设备110可以被配置为执行市场客户端120和一个或多个其他应用122。市场客户端120可以在客户端设备110上执行,并且可以有助于与应用市场系统108的通信。市场客户端120和其他应用122可以被存储在设备的存储器中向应用存储124提供的一部分中,而其他文件可以被存储在设备的存储器的分离的部分(诸如通用存储装置126)中。设备110可以包括任意数目的适当存储器部分,其中某些存储器部分可以比其他存储器部分更安全。例如,应用存储装置124可以至少某种程度上安全(例如,仅由设备框架可访问),而通用存储装置126可以更可访问(例如,由在设备上执行的应用)。在某些实现方式中,当应用被下载到设备110时,应用可以在被转移到更永久的存储位置(诸如应用存储装置124)之前首先被存储在高速缓存部分(未示出)中。在某些实现方式中,高速缓存部分可以在大小上受限(例如,50MB),并且可以充当对待下载到设备的应用二进制文件大小的功能限制。
[0036]设备110可以向应用市场系统108提交多个不同的应用有关的请求。在某些实现方式中,此类请求可以经由在设备I1上执行的市场客户端120被进行。例如,设备110的用户可以经由市场客户端120提交用以浏览在市场上可获得的各种应用的请求,或者可以提交使用关键字来找到在市场上的与录入关键字相关联的应用的搜索请求。作为另一示例,市场客户端120可以维护已经被下载到设备110的应用的列表,并且可以周期性地与应用市场系统108通信以确定更新是否可用于这些应用。在其他实现方式中,更新通知可以从应用市场系统108被推向设备110,而不是由设备请求。更新通知转而可以使得设备110随后请求下载设备110先前已经下载的应用的更新的版本。
[0037]当设备110向应用市场系统108提交请求(例如,用于获取或更新市场上的特定软件应用的请求)时,系统108可以查询应用数据存储装置106以标识关于响应于所述请求的应用的信息。关于应用的信息可以例如包括关于应用二进制和与该应用相关联的任意补充文件的信息。应用市场系统108继而可以响应于该请求将该信息提供回市场客户端120。
[0038]例如,响应于针对下载应用的请求,应用市场系统108可以标识响应于该请求的应用二进制文件,并且还可以标识与该应用相关联的任意补充文件。应用市场系统108继而可以向市场客户端120提供关于应用文件的特定元数据,诸如文件大小、版本信息和/或可以允许市场客户端120确定将向设备110下载应用文件中的哪些应用文件的其他信息。在一个示例中,应用市场系统108可以确定对设备110可用的特定应用的最近版本是版本2.1,其大小为7.2MB,并且该应用与补充文件的版本2.0相关联,其大小为46.3MB。
[0039]市场客户端120继而可以使用元数据信息来例如通过将版本和/或大小元数据与在设备110上存储的文件比较以确定应用文件中的任何应用文件是否已经出现在设备110上。如果应用文件中的任何应用文件被确定与已经在设备110上的文件匹配,则市场客户端120可以不下载那些特定应用文件,并且可以作为替代仅下载在设备上没有存储的应用文件。继续上文示例,市场客户端120可以例如通过针对文件扫描应用存储装置124来确定版本2.1应用二进制是否已经被存储在设备110上。如果该应用二进制文件存在,并且该文件的版本和大小匹配由应用市场系统108提供的版本和大小信息,则市场客户端120可以选择不下载该应用二进制文件。如果该应用二进制文件不存在,或者如果该应用二进制的更老版本存在,或者如果该应用二进制的大小不匹配从应用市场系统108接收的大小信息,则市场客户端120可以确定该应用二进制应当被下载,并且可以随后发起下载。
[0040]下载的二进制的真实性还可以被校验,诸如以确保其不包含恶意代码。例如,二进制可以已经由开发者签名,或者校验和可以已经被计算。市场客户端120可以被编程以在安装该二进制之前校验该签名、校验和或其他认证机制,以便维护针对这样的恶意软件的安全性。
[0041]类似地,市场客户端120还可以确定补充文件的版本2.0是否出现在设备110上。在某些实现方式中,针对特定应用的补充文件可以被存储在设备110的通用存储装置126的预定存储位置中,诸如在使用以下约定被命名的目录中,该约定将该目录标识为与应用相关联。如果补充文件的当前版本出现在预定目录中,并且该文件是适当的大小,则市场客户端120可以跳过补充文件的下载。另一方面,如果补充文件没有出现或者过期,或者如果补充文件的大小不同于由应用市场系统108指示的文件的大小,则市场客户端120可以发起补充文件的下载。取决于特定实现方式,多个应用文件(包括应用二进制文件和任意相关联的补充文件)的下载可以串行(例如,以预定顺序一个接着另一个)发生或者并行(例如,同时或者在重叠时间间隔期间)发生。
[0042]市场客户端120还可以在安装文件之前验证文件(主二进制或补充文件)的特定文件(或所有文件)的签名或校验和。例如,开发者可以被允许对其文件签名,并且市场客户端120可以按照各种熟悉的方式之一对签名进行验证。此类验证还在下文针对图3的签名生成器334和文件验证器328被描述。
[0043]在下载过程期间,市场客户端120可以显示反映正被下载的所有应用文件的下载状态的统一进度条。例如,如果应用文件中只有一个应用文件正被下载,则下载进度条可以将已经被下载的文件的部分示出为文件大小的百分比。如果设备正在下载多个应用文件,则下载进度条可以将已经被下载的部分示出为总下载大小的百分比。
[0044]在下载完成之后,市场客户端120可以有助于过时应用文件的移除或归档。例如,市场客户端120可以从设备110删除文件,或者可以按照可以允许用户稍后恢复文件的方式对文件归档。在其中补充文件被存储在设备上的预定目录中(例如,通用存储装置126中)的实现方式中,市场客户端120通过将过时文件移至与存储当前补充文件不同的目录来对这些过时文件归档。
[0045]市场客户端120还可以在下载完成之后发起下载的应用文件的安装。在某些实现方式中,市场客户端120可以在发起安装之前等待直到所有应用文件的所有下载完成。在其他实现方式中,市场客户端120可以交错下载并且在接收到应用文件时将其安装。例如,市场客户端120可以首先下载应用二进制并且发起应用二进制的安装。然后,在应用二进制的安装之后,市场客户端120可以发起补充文件的下载和安装。
[0046]在某些实现方式中,应用市场系统108可以对应用二进制的最大大小强加限制。这些大小限制可以出于多个不同原因被强制执行,诸如确保应用二进制可以如上文描述被下载到设备的高速缓存部分,或者限制系统的用户的带宽使用(例如,对针对带宽收费的通信,或者节流或者以其他方式限制带宽)。不考虑被强加的任何大小限制的原因,这里描述系统和技术可以允许软件开发者通过将应用内容各部分包括在分离的补充文件中来发布和分发超过应用二进制的最大大小的应用文件。继续上文示例,系统可以具有对应用二进制大小的50MB限制,但是软件开发者仍可以通过将应用分发在分离的文件中(例如,在大小为7.2MB的应用二进制和46.3MB的补充文件中)来分发大于50MB限制的应用。
[0047]这样的将应用分离成两个或更多个应用文件在某些实现方式中还可以提供其他益处。例如,将应用分离成多个文件可以允许软件开发者更新应用的部分(例如,在应用二进制本身中包括的部分)而不需要更新应用的其他部分(例如,在补充文件中包括的部分)。作为另一示例,应用的某些部分可以通过空气被下载,例如,使用无线宽带通信信道,而更大的补充文件可以例如通过经由高速网络连接将补充文件下载到台式计算机,并且使用本地有线或无线连接将文件传送到设备来被侧向加载至用户的设备上。这样的第一部分还可以由付费或限制带宽的第一类型的无线网络(例如,3G或4G网络)下载,并且补充文件可以经由不同类型的网络被下载,诸如家庭或商业WiFi网络,其连接至不对额外带宽付费或者按照可感知的方式以其他方式限制带宽的有线网络。客户端设备可以被编程为一旦设备上的组件识别该设备已经变成连接到这样的网络就触发补充下载,虽然该设备可以首先从设备的用户请求授权以开始补充下载,特别是如果组件标识当前网络之前没有被连接或者已经被用户标识为公共网络(例如,用户在机场并且无法连接网络足够长时间以成功完成补充下载)。
[0048]虽然应用发布者系统104、应用数据存储装置106和应用市场系统108出于例示的目的而被分离地示出,但应当理解由在环境100中示出的系统提供的功能可以由更少的设备或系统(例如,将多个设备或系统组合成单个设备或系统)提供,可以在附加设备或系统之间分发,或者可以由与所示设备或系统不同的设备或系统提供。
[0049]图2是用于向软件分发系统上传应用文件的示例用户界面202的示图。用户界面202可以充当用于发布系统(例如,发布者系统104)的前端界面的一部分,并且可以允许软件发布者与系统交互。用户界面202可以提供多个不同的控件和输入以允许软件发布者上传应用并且将应用与待与该应用一起分发的一个或多个补充文件相关联。虽然用户界面202被示出为包括文本框204,210,按钮206、208、216、218、222、224和226,以及下拉框212,214和220的具体配置,但是应当理解也可以提供其他配置和/或输入机制。
[0050]在示例用户界面202中,软件发布者可以指定用于文本框204中的上传的应用二进制的路径。应用二进制可以对应于软件发布者期望通过应用市场系统(诸如系统108)分发的软件应用的特定版本。如所示,用户界面202还可以包括浏览按钮206,该浏览按钮206允许软件发布者浏览本地计算设备或其他可访问计算设备的文件系统以指定去往应用二进制的路径。在录入了去往应用二进制的路径之后,软件发布者可以点击上传按钮208以向发布者系统上传该二进制。
[0051]用户界面202还可以包括文本框210,该文本框210允许软件发布者描述已经对应用进行了的最近改变。例如,在待上传的应用版本是先前应用版本的更新的情况下,软件发布者可以按照发行说明的形式录入文本,该发行说明可以在向用户呈现更新时向用户呈现。此类信息可以有助于用户决定是否在他或她的计算设备上安装更新,并且潜在地向用户警告自上次更新起可能已经向该应用添加的新的特征。
[0052]用户界面202还可以包括下拉框212,或者另一适当控件,其允许软件发布者在特定设备组上发布应用二进制和/或补充文件。特定设备组可以对应于应用版本和/或补充文件版本以其作为目标的一组设备或设备类型。例如,一个设备组可以与智能电话相关联,而另一设备组可以与平板计算机相关联,并且又一设备组可以与机顶盒计算设备相关联。作为另一示例,一个设备组可以以具有小或普通屏幕大小的智能电话为目标,而另一设备组可以以具有大或超大屏幕大小的智能电话为目标。如这里描述的设备组的使用可以允许软件开发者创建他们的对特定设备或设备组优化或者以其他方式定制的应用文件的不同版本,并且可以向软件发布者提供对如何向特定设备分发各种版本的增强的控制。
[0053]在某些实现方式中,机顶盒212可以提供建议的设备组,该建议的设备组已经例如基于已经从与应用二进制相关联的清单文件解析的信息从定义的设备组被预先选择。在这些情况下,软件发布者可以接受针对应用版本和相关联的补充文件的建议的设备组,或者可以被允许选择在下拉框中可获得的不同设备组。
[0054]用户界面202还可以包括下拉框214、220和其他适当的控件,其允许软件发布者将一个或多个补充文件与正被上传的应用相关联。下拉框214、220可以预先填充有补充文件,该补充文件先前已经被与应用二进制的当前或其他版本相关联地上传,并且是用户可能期望与正被上传的应用相关联的补充文件。另外,界面202可以提供允许用户在适当时浏览并上传附加补充文件的按钮216、218、222、224。
[0055]虽然在这一特定示例中提供了两个补充文件或附件,但是系统可以允许开发者提交任意长的补充文件列表,其中每个补充文件具有标签或文件名以标识文件。例如,开发者可能期望提供第一中心二进制,并且各种媒体文件分组作为用于该主二进制的补充文件(例如,当应用执行时用于与其一起显示的图片)。中心二进制可以针对其上执行应用的任意设备而言是相同的,但是不同媒体文件可以基于特定设备的屏幕分辨率被向用户设备提供。例如,如果存在开发者期望使用的四个有关屏幕分辨率和20个图形文件,则开发者可以在四个组中提供总共80个文件。
[0056]系统还可以为开发者提供机制以通过提供允许开发者在针对每个子级缩进的层级中“附加”新的文件的用户界面来组织此类组,以及定义不是文件本身(但可以是文件)但表示一个或多个子文件的组。例如,依赖于文件夹的用户界面范例可以被呈现,并且开发者可以在层级中具有不同分支,并且继而定义那些分支的子分支包括针对特定设备类型的文件。例如,开发者可以为应用提供示例背景图形,并且可以在“媒体”文件夹下并且进一步在“背景”子文件夹下放置图形。在子文件夹内可以是开发者将其与特定设备类型相关联的子文件夹,诸如文件夹“640 X 480”、“ 1024X 768”和“ 1280 X 1024”。在这些最终文件夹的每个文件夹内,可以以适当的对应分辨率存储针对背景图像的特定图形文件。当文件被提供用于下载时,继而层级可以被遍历,并且子文件夹的特定级(其涉及区分于不可应用于该设备的其他文件夹选择一个文件夹中的内容)可以基于先前已经在设备类型或特定设备特性与请求设备的能力之间进行的关联来使得其内容被跳过或选择用于下载。
[0057]开发者还可以基于其他类型的参数来对文件进行分组。例如,主二进制和补充文件的不同版本可以根据应用的不同版本被分组,并且针对中心二进制的特定版本的适当补充文件可以按照多种方式被从该中心二进制映射。例如,补充文件可以由开发者组织成中心二进制“下”的文件夹,或者文件可以按照非层级方式被存储用于文件的名称可以被存储在中心二进制下的层级中,并且可以使用组织被映射到二进制(从而使得单个文件可以由多个不同中心二进制引用)。在另一实现方式中,单个文件(例如,简单文本文件)可以与主二进制有关并且文件的内容可以定义将与该二进制相关联并且与其一起被下载的补充文件。文件的名称还可以信号通知它们将被关联到的二进制,诸如使得具有V2.2.0或V2.2.1名称部分或扩展的“媒体”文件对应于中心二进制编号V2.2。这样的将文件组织成组和子组(其中每个组和子组具有一个或多个文件)的能力可以使得开发者能够更容易地组织和编辑针对文件分组的文件结构,并且还可以使得用户能够更容易地看到可获得的文件并且选择其希望与主二进制一起获得的文件。
[0058]—旦软件发布者完成了输入关于正被上传的应用版本的信息,发布者就可以点击保存按钮226以完成上传过程。在某些实现方式中,软件发布者可以被允许例如通过点击保存按钮226而不需要选择特定设备组来完成上传过程。例如,软件发布者可以在上传时上传并非旨在于发布的一个或多个应用文件,并且因此软件发布者可以选择不选择将与应用相关联的设备组。在某些实现方式中,只有已经与一个或多个特定设备组相关联的应用版本被发布以用于由应用市场系统上的用户访问。
[0059]在所示的实现方式中,应用二进制可以与至多两个补充文件相关联,该两个补充文件可以采取各种形式并且提供各种功能。在某些实现方式中,补充文件可以由软件开发者用于将多个应用文件分组成单个、签名的文件。在某些移动设备平台和其他计算平台中,补充文件可以被安装成用于特定设备的文件系统。
[0060]如上所述,接口 202可以允许软件发布者上传补充文件,并且将补充文件与特定应用或应用的特定版本相关联。在应用的更新版本被上传至发布系统的情况下,软件发布者还可以将先前上传的补充文件与该应用的新版本相关联。在某些实现方式中,补充文件可以由版本代码标识,该版本代码在某些情况下可以匹配将与补充文件相关联的应用二进制的版本代码或与其有关。
[0061]在其他实现方式中,这样的补充文件可以具有其自己的版本管理,该版本管理与针对主二进制和/或针对其他补充文件(或补充文件组)的版本管理分离。例如,特定资源随时间可以具有多个版本,其中每个版本由市场存储。开发者继而可以在利用市场建立应用时,将针对应用的主二进制与补充文件中的特定补充文件相关联,其还可以包括选择那些补充文件中的哪些版本来与之相关联。例如,开发者可以建立定义并标识补充文件中的每个补充文件(单独或成组)的关联文件,包括按照应当与特定二进制文件一起被下载的版本。例如,开发者可以标识二进制XYZ应当与文件A V.15以及文件B V.17相关联。
[0062]作为版本管理的一个示例,软件发布者可以选择发布游戏,其中主应用二进制是版本100,并且是20MB。如上文所述,出于各种原因,软件发布者还可以选择发布500MB补充文件(例如,以包括针对该游戏的图形和/或音频资产)作为版本100。在该游戏已经在应用市场系统上被发布之后,用户可以选择下载该游戏。在最初下载之后,20MB应用二进制可以被存储在用户的设备的应用存储部分中,而500MB补充文件可以被存储在设备的通用存储装置(例如,SD卡)中。
[0063]软件发布者稍后可以决定向应用二进制发布更新(新版本101,其也是20MB),并且还可以发布补充文件(版本101,其是50MB)。用户的设备可以例如通过更新通知或其他适当的信号传输机制向用户通知对应用的更新。如果用户选择下载该更新,则在用户的设备上执行的市场客户端可以向应用市场系统请求下载信息,其可以返回指示应用的当前版本包括应用二进制(版本101,20MB)、第一补充文件(版本100,500MB)和第二补充文件(版本101,50MB)的信息。
[0064]响应于接收到关于应用的当前版本的信息,市场客户端可以分析在设备上存储的文件,并且可以确定第一补充文件(版本100,500MB)已经被呈现在设备上。在某些实现方式中,市场客户端可以执行进一步检验以确保该文件是正确的文件,诸如通过使用校验和或者通过将在设备上存储的第一补充文件的大小与在接收自应用市场系统的应用信息中被指示的第一补充文件的大小进行比较。如果市场客户端可以确定在设备上存储的第一补充文件匹配与应用的当前版本相关联的第一补充文件,则市场客户端可以仅发起更新的应用二进制(版本101,20MB)和第二补充文件(版本101,50MB)的下载。通过这一方式,市场客户端仅下载更新的文件(总共70MB),并且节约了与再次下载第一补充文件相关联的带宽(在这一示例中为500MB)和下载次数。
[0065]如果不同用户选择从应用市场系统下载相同游戏,则在不同用户的设备上执行的市场客户端可以确定没有当前应用文件被呈现在设备上,并且因此可以发起应用二进制(版本101,20MB)、第一补充文件(版本100,500MB)和第二补充文件(版本101,50MB)的下载,总共下载大小为570MB。
[0066]在某些实现方式中,当应用文件的更加新的版本被下载时,市场客户端可以删除或归档被替代的应用文件的更旧版本。例如,继续上文示例,如果软件发布者随后发布新的应用二进制(版本102,20MB)和新的第二补充文件(版本102,30MB),则应用市场系统可以向市场客户端指示应用文件的当前版本包括新的应用二进制、第一补充文件(版本100,500MB)和新的第二补充文件。当用户选择下载更新的应用文件时,市场客户端可以例如通过确定第一补充文件已经呈现在设备上而再次只下载更新的文件,并且可以移除或归档待被替代的应用文件的旧版本。例如,市场客户端可以将文件的旧版本移至设备上的不同存储位置,从而使得如果用户期望恢复先前版本则它们在设备上可获得。类似地,市场客户端可以将文件的旧版本留在相同存储位置中,但是可以重新命名文件以指示它们与应用的过时版本相关联。
[0067]在某些情况下,软件发布者可以发行游戏的不使用任何现有应用文件的新版本。在如上文描述的这种情况下,应用市场系统可以向在用户的设备上执行的市场客户端提供关于各种应用文件的信息,并且市场客户端可以在其确定没有应用文件呈现在设备上之后发起所有文件的下载。
[0068]虽然本申请总体上将补充文件描述为具有特定文件类型(诸如媒体文件),但是补充文件可以采取各种形式并且也可以是二进制或其他种类的文件。另外,虽然多个补充文件与之相关联的主或中心二进制文件已经被描述,但是主或中心文件可以采取其他形式,或者可以存在具有通过各种方式与主或中心文件有关的补充文件的多个主或中心文件。同样,如上所述,下载的各种文件可以被成组、分组或者通过各种方便的方式被布置以允许文件的分组、或组、可以被更新和改变的模块结构,诸如基于每文件(例如,用新文件置换出旧文件,而不影响其他文件)。代替这里描述的系统和技术可以用于通过应用市场系统来分发任何适当的文件或文件类型。
[0069]图3是用于分发与软件应用相关联的应用文件的软件分发系统300的系统图。通常,系统集中于开发者可以向其张贴用于分发的应用的应用市场,并且计算设备的用户可以使得此类应用被下载到其设备。系统300可以与针对图1描绘和描述的系统100类似地被实现,即便这里示出了关于系统的特定结构组件的附加细节。
[0070]在这一示例中,系统300包括三个主要组件:市场服务器系统330、市场客户端320和应用文件310。市场服务器系统330可以是通过因特网提供各种托管的服务的系统的一部分,并且特别地可以向公共呈现应用市场。这样的市场可以被表示为承载来自各种开发者的应用的店面,并且还收集针对通过该市场销售的应用的金钱(例如,通过对用户的标识的用户信用卡收费),以及向对应于购买的应用的开发者汇款此类支付的一部分。
[0071]服务器系统330中的应用管理器332可以负责控制以下方式,通过该方式来管理将下载到市场客户端320的应用。具体而言,应用管理器332可以追踪在应用二进制文件与同应用相关联并且待下载到下载该相关联的应用二进制的设备的对应补充文件之间的对应性。
[0072]签名生成器334基于分析应用文件的部分为特定应用文件提供签名。市场客户端320转而包括文件验证器328以在发起应用文件的安装之前验证文件签名。市场服务器系统330还可以向市场客户端320发送关于由市场服务器系统330分析的应用文件的部分的信息,并且市场客户端320转而可以通过基于分析由市场服务器系统330分析的应用文件的部分来为应用文件生成验证签名并且将文件签名与验证签名比较来验证该文件签名。响应于来自市场客户端320的应用请求,这样的应用文件信息和附加信息还可以从市场服务器系统330被提供给市场客户端320。
[0073]在市场客户端上的其他组件也可以用于帮助管理应用组件从市场服务器系统33向市场客户端320的下载。例如,用户界面322可以向用户呈现通用应用市场,从而使得用户可以按照熟悉的方式搜索和选择应用。在某些实例中,用户的设备的设备类型可以被获得或确定,从而使得市场仅示出与特定设备类型兼容的用户应用。
[0074]用户界面还可以为用户生成用于理解应用二进制和有关文件到由市场客户端320管理的客户端设备的下载的进度的信息。
[0075]应用管理器324可以充当对市场服务器系统330上的应用管理器332的配对物。特别地,两个管理器332可以通信和协调与特定应用有关的多个文件的下载,诸如一个或多个应用二进制和一个或多个补充文件。作为一个示例,用户界面322还可以示出进度条或其他进度指示符,从而使得设备的用户可以看到在下载针对应用的所有多个文件中已经进行的进度。例如,单个进度条可以示出针对特定应用的多个文件的下载的全部进度。该条可以在其行进中改变针对每个特定文件的颜色,并且邻近该条的文本可以指示当前正被下载的文件的描述。在其他实例中,主条可以在显示的第一行中被示出,并且针对特定组件的子条可以在主条以下被示出。例如,子条中的每个子条最初可以为空,并且可以逐一填充,同时主条也填充,但是没有示出完全满直到所有子条也满为止。
[0076]在某些示例中,用户界面322可以向用户提供警告以指示某些补充文件将不随对应的应用二进制被立即下载,诸如因为用户当前处于可能对被使用的额外带宽使用索要额外费用的蜂窝数据网络上。用户继而可以确认他们立即想要这些文件还是希望等到直到设备连接到更低成本网络,诸如其工作或家庭WiFi网络。
[0077]本地文件管理器326管理应用文件310的存储和更新,应用文件310可以被存储在客户端设备上的有形可记录介质上。此类文件可以包括应用二进制312,其为针对已经从应用市场向客户端设备下载的特定应用的核心二进制文件。文件还可以包括补充二进制313,其例如可以是可以由应用访问的内容(例如,图像、视频文件、模板等),但是其可以与对应的应用二进制312分离地被下载,并且在与应用二进制312的下载不同的时间。补丁二进制314可以对应于在应用推出之后由开发者发行的补丁,并且例如可以被实现以校正推出的代码中的漏洞或错误。
[0078]本地文件管理器326可以负责保存、维护和组织应用文件310。例如,本地文件管理器326可以从服务器系统330接收应用文件310,并且使得其与特定应用相关联并且被存储在特定位置中。例如,更新文件可以与现有文件一前一后地被存储,直到更新以被完成,并且然后现有文件可以被删除。另外,本地文件管理器326可以在应用文件中的特定应用文件的下载完成之后发起应用文件310的安装。另外,本地文件管理器326可以将版本信息与所存储文件的相应版本比较以确定是否下载应用文件中的特定应用文件,并且可以响应来自服务器系统330的请求以便使得存储的文件的先前版本在下载存储的文件的更加新的版本之后被删除。为了确定设备上的文件,本地文件管理器326可以通过分析在计算设备上的对应于特定软件应用的目录中存储的文件来标识存储的文件。
[0079]通过这一方式,系统300继而提供足够的结构组件(其可以通过软件和硬件的组合被实现)以支持与应用有关的文件的部分下载,其中主二进制被首先下载以提供基本功能,并且补充文件被稍后下载以提供完整(但可选)功能。同样,更新和其他应用管理技术可以利用这样的系统被实现,诸如按照上文和下文所述的方式。
[0080]开发者还可以建立其用于下载的应用的表现,从而使得用户被给予下载某些文件而不是其他文件的选项(其中开发者可以预先标识哪些文件是可选的以及需要哪些文件以便用户实现该应用,以及需要哪些文件以实现特定功能部分)
[0081]此外,在某些实例中,应用可以自身与市场服务器系统直接交互(而不通过专用市场客户端)以经由由市场操作者发布的应用编程接口(API)获得必要的补充文件。如上文在某些示例中所描述的那样,市场客户端可以告知市场服务器系统下载什么并且可以确定其将被放置的位置。然而,在某些实例中,市场客户端可以尝试下载,并且如果下载失败,则应用本身可以尝试发起并管理该下载。虽然开发者将不得不支持在这样的情况下的客户端侧操作,但是至少将能够避免不得不支持服务器侧操作。这样的交互(包括应用询问市场处理应用的用户或设备是否为该应用的正当处理者的能力,从而使得应用可以禁用其自身功能)在2011年5月19日递交的、名称为“Electronic License Management”的共同未决美国申请序列号13/111,877中被更完整地说明。作为一个示例,应用在首次被推出时可以访问API以获得去往市场确定需要的有关补充文件的URL或其他指针(并且市场可以向开发者提供可以被容易地集成到应用中以提供这一功能的简单代码)。市场服务器可以根据预定API托管那些文件,当有关应用使得它们在其上运行的计算设备提供用于获得所述文件的适当证书时,所述服务器继而可以提供所述文件。
[0082]在又一或附加特征中,发布者还可以提供某些或所有补充文件以用于从与市场服务器系统不同的位置下载。例如,市场客户端可以向应用提供API以便向应用提供一个或多个补充文件名以及针对文件的位置作为安装过程的一部分,并且应用可以使用这样的指针信息以发起那些补充文件本身的下载。在这样的实现方式中,某些或所有文件可以被市场服务器托管和服务,并且某些文件可以被从另一位置托管和服务。例如,开发者可以依赖市场服务大但相对静态的文件,但是可以本身服务频繁变化的较小文件。
[0083]在某些实例中,如果应用没有正确地认证自身(例如,如果应用不是从适当市场下载或者是下载的应用的副本),则可以阻止拷贝应用以获得补充文件(为自身)的能力。例如,被向市场客户端或向应用提供并且指向资源的URL可以是非可重用的或者可以具有短到期日期。针对应用的戳和签名被下载,其中签名可以被包括在设备向市场服务器提供的URL中,并且签名的出现可以由市场服务器用作用于确定文件应当被下载至有关计算设备的机制。签名可以包括用户ID、设备ID和应用ID的任何单个ID或组合的哈希版本(或者可以提供相同安全性和标识的其他类似信息)从而使得原始数据无法被不诚实用户反向工程和重用。继而,通过这些方式,附加安全性可以被提供给开发者以防止剽窃,同时仍针对应用市场为用户维护相对容易的体验。
[0084]图4是用于分发与软件应用相关联的应用文件的示例过程400的泳道图。过程400可以例如由在图1的应用市场系统108和设备110上操作的市场客户端120实现。为了呈现的清楚,以下描述使用这些系统作为描述过程400的基础。然而,其他系统或系统的组合也可以或者备选地用于执行所述过程。
[0085]过程400在市场客户端接收针对软件应用的请求时开始(402)。该请求可以与软件应用的新的下载或者与对已经存在于计算设备上的软件应用的更新相关联。作为新的下载的示例,用户可以通过使用在用户的设备上执行的市场客户端浏览或搜索通通过应用市场系统可获得的应用,并且可以请求下载用户感兴趣的特定应用。作为更新请求的示例,应用的发布者可以向应用发布更新,并且市场客户端可以提供此类更新的通知以用于在设备上显示。用户继而可以请求下载更新的应用文件以用于在设备上安装。转而,市场客户端可以向应用市场系统发送与该请求相关联的通信(404)。
[0086]在接收到通信之后,应用市场系统可以标识响应于通信的应用文件,包括应用二进制和任意补充文件的适当版本(406)。例如,应用市场系统可以标识响应于通信的应用文件中的每个应用文件的最近版本。作为另一示例,某些应用文件可以与特定请求设备或请求设备的特定类型相关联。在此类情况下,应用市场系统可以标识针对提交针对应用的请求的特定设备或设备类型的应用文件的适当版本。
[0087]除了标识应用文件的适当版本之外,应用市场系统还可以确定与应用文件相关联的某些信息。例如,应用市场系统可以确定某些元数据,诸如文件大小、版本信息和/或可以允许市场客户端确定下载哪个应用文件的其他信息。在收集此类信息之后,应用市场系统可以向市场客户端发送该信息(408)。
[0088]市场客户端继而可以使用该信息来确定任何应用文件是否已经被存储在计算设备上(410)。例如,市场客户端可以将名称、版本和/或大小元数据信息与同已经被存储在设备上的某些应用文件相关联的信息比较以看该信息是否匹配。此类比较继而可以用于确定下载哪个应用文件(412)。例如,如果市场客户端确定一个或多个应用文件已经被存储在计算设备上,则市场客户端可以不下载那些特定应用文件。另一方面,如果任何应用文件没有存在于设备上,或者如果存在文件的更旧版本,或者如果文件的大小不匹配从应用市场系统接收的大小信息,则市场客户端可以确定应用文件应当被下载,并且可以随后发起下载(414)ο
[0089]图5示出了可以用来实施在此描述的技术的计算设备500和移动计算设备550的示例。计算设备500旨在于代表各种形式的数字计算机,比如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其它适当计算机。移动计算设备450旨在于代表各种形式的移动设备,比如个人数字助理、蜂窝电话、智能电话和其它相似计算设备。这里所示的组件、它们的连接和关系及其功能意味着仅为示例行而并非意味着限制在本文献中描述和/或要求保护的实现方式。
[0090]计算设备500包括处理器502、存储器504、存储设备506、连接到存储器504和高速扩展端口 510的高速接口 508以及连接到低速总线514和存储设备506的低速接口 512。使用各种总线来互连并且可以在共同母板上或者以如适当的其它方式装配组件502、504、506,508,510和512中的每个组件。处理器502可以处理用于在计算设备500内执行的指令,这些指令包括在存储器504中或者存储设备506上存储的用于在外部输入/输出设备(比如耦合到高速接口 508的显示器516)上显示用于⑶I的图形信息的指令。在其它实现方式中,多个处理器和/或多个总线可以如适当的那样与多个存储器和存储器类型一起使用。也可以连接多个计算设备,其中每个设备提供必需操作的部分(例如,作为服务器组、一组刀片服务器或者多处理器系统)。
[0091]存储器504存储计算设备500内的信息。在一个实现方式中,存储器504是一个或者多个易失性存储器单元。在另一实现方式中,存储器504是一个或者多个非易失性存储器单元。存储器504也可以是另一形式的计算机可读介质,比如磁盘或者光盘。
[0092]存储设备506能够提供用于计算设备500的海量存储。在一个实现方式中,存储设备506可以是或者包含计算机可读介质,比如软盘设备、硬盘设备、光盘设备或者带设备、闪存或者其它相似固态存储器设备或者如下设备的阵列,这些设备包括存储区域网络或者其它配置中的设备。可以在信息载体中有形地体现计算机程序产品。计算机程序产品也可以包括指令,指令被执行时执行一种或者多种方法,比如以上描述的方法。信息载体是计算机或者机器可读介质,比如存储器504、存储设备506或者在处理器502上的存储器。
[0093]高速控制器508管理用于计算设备500的带宽密集操作,而低速控制器512管理更低带宽密集操作。这样的功能分配仅为示例性。在一个实现方式中,高速控制器508耦合到存储器504、显示器516 (例如,通过图形处理器或者加速器)和耦合到可以接受各种扩展卡(未示出)的高速扩展端口 510。在该实现方式中,低速控制器512耦合到存储设备506和低速扩展端口 514。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口可以例如通过网络适配器耦合到一个或者多个输入/输出设备(比如键盘、指点设备、扫描仪)或者联网设备(比如交换机或者路由器)。
[0094]如该图中所示可以用多个不同形式实施计算设备500。例如,可以实施它为标准服务器520或者多次实施于一组这样的服务器中。也可以实施它为架式服务器系统524的部分。此外,可以在个人计算机(比如膝上型计算机522)中实施它。备选地,来自计算设备500的组件可以与在移动设备(未示出)(比如设备550)中的其它组件组合。这样的设备中的每个设备可以包含计算设备500、550中的一个或者多个计算设备,并且整个系统可以由相互通信的多个计算设备500、550组成。
[0095]计算设备550包括处理器552、存储器564、输入/输出设备(比如显示器554)、通信接口 566和收发器568以及其它组件。设备550也可以具有用于提供附加存储的存储设备(比如微驱动或者其它设备)。使用各种总线来互连组件550、552、564、554、566和568中的每个组件,并且可以在共同母板上或者以如适当的其它方式装配组件中的若干组件。
[0096]处理器552可以执行在移动计算设备550内的指令,这些指令包括在存储器564中存储的指令。可以实施处理器为包括分离的以及多个模拟和数字处理器的芯片的芯片集。处理器可以例如提供设备550的其它组件的协调,比如控制用户界面、由设备550运行的应用和设备550的无线通信。
[0097]处理器552可以通过控制接口 558和耦合到显示器554的显示接口 556与用户通信。显示器554可以例如是TFT IXD (薄膜晶体管液晶显示器)或者OLED (有机发光二极管)显示器或者其它适当显示器技术。显示器接口 556可以包括用于驱动显示器554以向用户呈现图形和其它信息的适当电路。控制接口 558可以从用户接收命令并且转换它们以用于向处理器552提交。此外,外部接口 562可以被提供在与处理器552的通信中,以便支持设备550与其它设备的近区域通信。外部接口 562可以例如在一些实现方式中提供有线通信或者在其它实现方式中提供无线通信,并且也可以使用多个接口。
[0098]存储器564存储移动计算设备550内的信息。可以实施存储器564为一个或者多个计算机可读介质、一个或者多个易失性存储器单元或者一个或者多个非易失性存储器单元中的一项或者多项。也可以提供扩展存储器574并且该扩展存储器574可以通过可以例如包括SIMM(单列直插存储器模块)卡接口的扩展接口 572连接到设备550。这样的扩展存储器574可以提供用于设备550的额外存储空间或者也可以存储用于设备550的应用或者其它信息。具体而言,扩展存储器574可以包括用于实现或者补充以上描述的过程的指令,并且也可以包括安全信息。因此,例如,可以提供扩展存储器574作为用于移动计算设备550的安全模块,并且可以用允许安全使用设备550的指令对扩展存储器574编程。此夕卜,可以经由SIMM卡将安全应用与附加信息一起提供,比如以不可黑客方式将标识信息放置于SMM卡上。
[0099]如以下讨论的那样,存储器可以例如包括闪存和/或NVRAM存储器。在一个实现方式中,在信息载体中有形地体现计算机程序产品。计算机程序产品包含指令,这些指令在被执行时执行一种或者多种方法,比如以上描述的方法。信息载体是一个或者多个计算机或者机器可读介质,比如存储器564、扩展存储器574或者在处理器552上的存储器。
[0100]设备550可以通过可以在必要时包括数字信号处理电路的通信接口 566无线地通信。通信接口 566可以在各种模式或者协议(比如GSM语音呼叫、SMS、EMS或者丽S消息接发、CDMA、TDMA, PDC、WCDMA, CDMA2000或者GPRS以及其它模式或者协议之下提供通信。可以例如通过射频收发器568出现这样的通信。此外,可以比如使用Bluetooth、WiFi或者其它这样的收发器(未示出)出现短程通信。此外,GPS(全球定位系统)接收器模块570可以向设备550提供附加的与导航和位置有关的无线数据,该数据可以如适当的那样由在设备550上运行的应用使用。
[0101]设备550也可以使用音频编码解码器560来可听地通信,该编码解码器560可以从用户接收口述信息并且将它转换成可用数字信息。音频编码解码器560可以类似地比如通过例如在设备550的头戴式受话器中的扬声器生成用于用户的可听声音。这样的声音可以包括来自语音电话呼叫的声音、可以包括记录的声音(例如,语音消息、音乐文件等)并且也可以包括由在设备550上操作的应用所生成的声音。
[0102]如在该图中所示,可以用多个不同形式实施计算设备550。例如,可以实施它为蜂窝电话580。也可以实施它为智能电话582、个人数字助理或者其它相似移动设备的部分。
[0103]附加地,计算设备500或550可以包括通用串行总线(USB)闪存驱动。USB闪存驱动可以存储操作系统和其他应用。USB闪存驱动可以包括输入/输出组件,比如可以被插入另一计算设备的USB端口的无线收发器或USB连接器。
[0104]可以在数字电子电路、集成电路、特殊地设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现这里描述的系统和技术的各种实现方式。这些各种实现方式可以包括在可编程系统上可执行和/或可解译的一个或者多个计算机程序中的实现方式,该可编程系统包括可以是特殊或者通用的至少一个可编程处理器、至少一个输入设备和至少一个输出设备,该至少一个可编程处理器被耦合用于从存储系统接收数据和指令以及向存储系统传输数据和指令。
[0105]这些计算机程序(也被称为程序、软件、软件应用或者代码)包括用于可编程处理器的机器指令并且可以用高级过程和/或面向对象的编程语言和/或用汇编/机器语言来实施。如这里所用,术语机器可读介质和计算机可读介质指代用来向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD))。
[0106]为了提供与用户的交互,可以在计算机上实施这里描述的系统和技术,该计算机具有用于向用户显示信息的显示设备(例如,CRT (阴极射线管)或者LCD (液晶显示器)监视器)以及用户可以用来向计算机提供输入的键盘和指点设备(例如,鼠标或者跟踪球)。其它种类的设备也可以用来提供与用户交互;例如,向用户提供的反馈可以是任何形式的感官反馈(例如,视觉反馈、听觉反馈或者触觉反馈);以及可以用包括声音、话音或者触觉输入的任何形式接收来自用户的输入。
[0107]可以在计算系统中实施这里描述的系统和技术,该计算系统包括后端组件(例如,作为数据服务器)或者包括中间件组件(例如,应用服务器)或者包括前端组件(例如,具有如下图形用户界面或者Web浏览器的客户端计算机,用户可以通过该图形用户界面或者Web浏览器与这里描述的系统和技术的实现方式交互)或者这样的后端、中间件或者前端组件的任何组合。系统的组件可以由任何数字数据通信形式或者介质(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)和因特网。
[0108]计算系统可以包括客户端和服务器。客户端和服务器一般相互远离并且通常通过通信网络交互。借助在相应计算机上运行并且相互具有客户端-服务器关系的计算机程序产生客户端和服务器关系。
[0109]虽然以上已经具体描述了数个实现方式,但是其它修改也有可能。另外,也可以使用用于执行在本文献中描述的系统和方法的其他机制。此外,在各图中描绘的逻辑流程可以无需所示特定顺序或者依次顺序以实现希望的结果。可以提供其它步骤,或者可以从描述的流程消除步骤,并且可以向描述的系统添加或者从描述的系统去除其它组件。因此,其他实现方式也在以下权利要求的范围内。
【权利要求】
1.一种用于从应用市场向计算设备分发应用文件的计算机实现的系统,所述系统包括: 服务器系统接口,被布置为从多个客户端计算设备中的一个客户端计算设备的客户端应用接收对应于对于获得或更新针对所述一个客户端计算设备的软件应用的请求的通信;以及 应用市场服务器系统,被编程为: 响应于所述通信,标识应用文件,所述应用文件包括对应于所述软件应用的应用二进制文件和与所述软件应用相关联的一个或多个补充文件,以及响应于接收所述通信向所述客户端应用发送与所述应用文件有关的信息,以及 标识在所述计算设备上的对应于所述应用文件的存储的文件,基于标识的所述存储的文件以及与从所述应用市场服务器系统发送的所述应用文件有关的所述信息来确定所述应用文件中的要下载的特定应用文件,以及发起所述应用文件中的所述特定应用文件的下载。
2.根据权利要求1所述的系统,其中所述客户端应用包括应用市场客户端,所述应用市场客户端对应于所述应用市场服务器系统并且被编程为从所述应用市场服务器系统下载针对多个不同应用的文件。
3.根据权利要求2所述的系统,其中与所述应用文件有关的所述信息包括针对所述应用文件中的每个应用文件的版本信息,并且其中所述应用市场客户端被编程为将所述版本信息与所述存储的文件的相应版本比较以确定是否下载所述应用文件中的特定应用文件。
4.根据权利要求3所述的系统,其中所述客户端应用被编程为在下载所述存储的文件的更加新的版本之后从所述计算设备移除所述存储的文件的先前版本。
5.根据权利要求1所述的系统,其中所述应用市场服务器系统被编程为将所述应用二进制文件限制到定义的最大大小,并且其中所述应用文件中的所述特定应用文件的聚合大小超过所述应用二进制文件的所述最大大小。
6.根据权利要求1所述的系统,其中所述客户端应用被编程为通过分析在所述计算设备上的对应于所述软件应用的目录中存储的文件来标识所述存储的文件。
7.根据权利要求1所述的系统,其中所述应用市场服务器系统被编程为基于分析所述应用文件的部分来生成针对所述应用文件的文件签名,并且其中所述客户端应用被编程为在发起所述应用文件的安装之前验证所述文件签名。
8.根据权利要求7所述的系统,其中所述应用市场服务器系统被编程为向所述客户端应用发送关于由所述应用市场服务器系统分析的所述应用文件的所述部分的信息,并且所述客户端应用被编程为通过基于分析由所述市场服务器系统分析的所述应用文件的所述部分来生成针对所述应用文件的验证签名、并且将所述文件签名与所述验证签名比较以验证所述文件签名。
9.根据权利要求1所述的系统,其中与所述软件应用相关联的所述补充文件的特定版本以相应设备组为目标,并且其中所述应用市场服务器系统被编程为基于所述计算设备属于的特定设备组的确定来标识用于向所述计算设备分发的所述补充文件的所述特定版本。
10.根据权利要求1所述的系统,其中与所述应用文件有关的所述信息包括针对所述应用文件中的特定应用文件的大小信息,并且其中所述客户端应用被编程为显示所述应用文件中的所述特定应用文件的所述下载的进度的指示符,所述指示符示出下载的量与所述应用文件中的所述特定应用文件的聚合大小的比例。
11.根据权利要求1所述的系统,其中所述客户端应用被编程为在所述应用文件中的所述特定应用文件的所述下载完成之后发起所述应用文件的安装。
12.根据权利要求1所述的系统,其中所述应用市场服务器系统被编程为响应于来自以下各项的验证的请求来下载文件:(4应用市场应用,其对应于所述应用市场服务器系统并且被编程为从所述应用市场服务器系统下载针对多个不同应用的文件;以及03)特定应用,其请求所述下载的文件以用于其自己使用。
13.一种用于确定用于向计算设备下载的应用文件的计算机实现的方法,所述方法包括: 利用在计算设备上执行的应用市场客户端接收对于获得或更新与多个应用文件相关联并且被配置为在所述计算设备上执行的软件应用的请求; 利用所述应用市场客户端并且从远离所述计算设备操作的应用市场服务器系统接收与所述应用文件有关的信息; 标识在所述计算设备上的对应于所述应用文件的存储的文件; 基于标识的所述存储的文件以及与所述应用文件有关的接收的所述信息来确定所述应用文件中的要下载的特定应用文件;以及 发起所述应用文件中的确定的所述特定应用文件的下载。
14.根据权利要求13所述的方法,进一步包括由所述应用市场客户端标识故障以下载一个或多个文件,并且在所述一个或多个文件被下载之后由被编程为使用所述一个或多个文件的应用开始从所述市场服务器系统下载所述一个或多个文件。
15.根据权利要求13所述的方法,其中与所述应用文件有关的所述信息包括针对所述应用文件中的特定应用文件的版本信息,并且其中所述方法进一步包括将所述版本信息与所述存储的文件的相应版本比较以确定是否下载所述应用文件中的特定应用文件。
16.根据权利要求15所述的方法,进一步包括在下载所述存储的文件的更加新的版本之后从所述计算设备自动移除所述存储的文件的先前版本。
17.根据权利要求13所述的方法,进一步包括通过分析在所述计算设备上的对应于所述软件应用的目录中存储的文件来标识所述存储的文件。
18.根据权利要求13所述的方法,进一步包括在发起所述应用文件的安装之前,通过分析所述应用文件的部分来验证由所述应用市场服务器系统针对所述应用文件生成的文件签名。
19.根据权利要求18所述的方法,进一步包括: 从所述应用市场服务器系统接收关于由所述应用市场服务器系统分析的所述应用文件的所述部分的信息,以及 通过基于分析由所述市场服务器系统分析的所述应用文件的所述部分来生成针对所述应用文件的验证签名、并且将所述文件签名与所述验证签名比较来验证所述文件签名。
20.根据权利要求13所述的方法,其中与所述应用文件有关的所述信息包括针对所述应用文件中的每个应用文件的大小信息,并且所述方法进一步包括显示所述应用文件中的所述特定应用文件的所述下载的进度的指示符,所述指示符示出下载的量与所述应用文件中的所述特定应用文件的聚合大小的比例。
21.一种用于确定用于从应用市场向计算设备下载的应用的计算机实现的方法,所述方法包括: 从多个客户端计算设备中的一个客户端计算设备的应用市场客户端接收对应于对于获得或更新针对所述一个客户端计算设备的软件应用的请求的通信; 响应于所述通信,标识应用文件,所述应用文件包括对应于所述软件应用的应用二进制文件和与所述软件应用相关联的一个或多个补充文件,以及响应于接收所述通信向所述应用市场客户端发送与所述应用文件有关的信息,以及 响应于在所述计算设备上的对应于所述应用文件的存储的文件的标识,发起所述应用文件中的特定应用文件的下载,并且基于标识的所述存储的文件以及与从所述应用市场服务器系统发送的所述应用文件有关的所述信息来确定所述应用文件中的所述特定应用文件。
22.根据权利要求21所述的方法,进一步包括将所述应用二进制文件限制到定义的最大大小,其中所述应用文件中的所述特定应用文件的聚合大小超过所述应用二进制文件的所述最大大小。
23.根据权利要求21所述的方法,其中与所述软件应用相关联的所述补充文件的特定版本以相应的设备组为目标,并且所述方法进一步包括基于所述计算设备属于的特定设备组的确定来标识用于向所述计算设备分发的所述补充文件的所述特定版本。
【文档编号】G06F9/445GK104321746SQ201380021593
【公开日】2015年1月28日 申请日期:2013年3月1日 优先权日:2012年3月2日
【发明者】I·费曼, F·柯克帕特里克 申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1