一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于更新计算设备上的应用的存储器高效软件打补丁的制作方法

2021-11-20 05:23:00 来源:中国专利 TAG:

用于更新计算设备上的应用的存储器高效软件打补丁


背景技术:

1.软件开发者可以提供一个或多个应用更新或“补丁”以改进应用的功能。补丁可以包括一个或多个应用元素,诸如经编译的源代码(其可以是可执行代码或其各种抽象,诸如字节代码)、纹理、图像、动画、视频文件、音频文件、或由可执行代码引用的任何其它资源。在一些分布式环境中,用户计算设备(例如,智能电话)可以使用应用商店应用(其可以被称为“应用商店”)来获得和安装补丁,补丁由支持应用商店的执行的远程服务器计算系统提供。
2.在一些示例中,当用户选择用户计算设备上现有的已安装应用以更新用户计算设备时,可以下载包含所有应用更新的所谓的“补丁”。因此,术语“补丁”可指经编译的源代码与经编译的源代码的更新版本之间的差异。用户计算设备然后可制作已安装应用的经编译源代码(其可以是二进制可执行文件)的副本,并将补丁安装到经编译的源代码的副本以获得已更新的经编译的源代码。这样的应用更新过程可能要求用户计算设备具有足够的存储空间来存储已安装应用的经编译的源代码、补丁(当采用压缩时可能两次,因为补丁的压缩版本需要解压缩,这可能导致补丁的另一解压缩版本)以及已更新的经编译的源代码。


技术实现要素:

3.一般而言,本公开的技术可以使得用户计算设备能够(在存储器消耗方面)更高效地安装补丁。用户计算设备可以从服务器计算设备(其可以被称为“服务器”)获得补丁。服务器可以生成补丁作为未打补丁的应用和已打补丁的应用之间的差异,其中补丁可以定义一系列命令,这些命令指示是否删除、复制还是写入数据,以从未打补丁的应用创建已打补丁的应用。补丁可以包括要被写入以创建已打补丁的应用的附加数据。服务器可以将补丁分割成比补丁整体的字节总数少的一个或多个片段,其中每个片段关于未打补丁的应用是单独可安装的。服务器可以将一个或多个片段中的每个片段单独地发送到用户计算设备。
4.用户计算设备可以以一个或多个片段中的每个单独片段的形式接收补丁,然后每次安装一个单独片段。在安装每个片段之后,用户计算设备可以请求一个或多个片段中的下一个片段,重复该过程直到整个补丁被系统地应用于未打补丁的应用。服务器还可以发送指示用户计算设备何时可以删除未打补丁的应用的不同资产(asset)的附加元数据,从而潜在地使得用户计算设备能够在应用打补丁期间消耗甚至更少的存储器,因为删除未打补丁的应用的部分可以释放附加存储器(或者,换言之,增加可用存储器)。
5.因此,所描述的技术可以改进用户计算设备以及包括用户计算设备和服务器的计算系统的操作。通过以片段接收和安装补丁,所描述的技术可以减少用户计算设备上安装补丁所需的存储量,并且提高用户计算设备性能(因为补丁可以随着时间推移而被取出,并且从而提高在应用补丁期间的处理吞吐量,降低包括存储器带宽利用率的带宽利用率)。另外,在将补丁的片段应用于未打补丁的应用期间允许删除未打补丁的应用的部分可以进一步减少存储器利用,从而改进用户计算设备的性能。
6.在一个示例中,本技术的各个方面针对一种方法,包括:由一个或多个处理器虚拟
化形成未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;由一个或多个处理器获得表示形成已打补丁的应用的第二多个资产的单个第二虚拟资产;由一个或多个处理器并基于单个第一虚拟资产和单个第二虚拟资产之间的差异来获得补丁,补丁标识如何更新单个第一虚拟资产以获得单个第二虚拟资产并且包括单个第二虚拟资产的用于更新单个第一虚拟资产的部分;由一个或多个处理器将补丁分割成多个片段;以及由一个或多个处理器并向用户计算设备输出来自多个片段的单个片段以用于由用户计算设备单独安装到未打补丁的应用。
7.在另一示例中,本技术的各方面针对一种服务器计算设备,包括:存储器,其被配置为存储形成未打补丁的应用的第一多个资产和形成已打补丁的应用的第二多个资产;以及一个或多个处理器,其被配置为:虚拟化第一多个资产以获得单个第一虚拟资产;获得表示第二多个资产的单个第二虚拟资产;基于单个第一虚拟资产和单个第二虚拟资产之间的差异,获得补丁,补丁标识如何更新单个第一虚拟资产以获得单个第二虚拟资产并且包括单个第二虚拟资产的用于更新单个第一虚拟资产的部分;将补丁分割成多个片段;以及向用户计算设备输出来自多个片段的单个片段以用于由用户计算设备单独安装到未打补丁的应用。
8.在另一示例中,本技术的各种方面针对一种非暂时性计算机可读存储介质,其上存储有指令,指令在被执行时使得一个或多个处理器:虚拟化形成未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;获得表示形成已打补丁的应用的第二多个资产的单个第二虚拟资产;基于单个第一虚拟资产和单个第二虚拟资产之间的差异来获得补丁,补丁标识如何更新单个第一虚拟资产以获得单个第二虚拟资产并且包括单个第二虚拟资产的用于更新单个第一虚拟资产的部分;将补丁分割成多个片段;以及向用户计算设备输出来自多个片段的单个片段以用于由用户计算设备单独安装到未打补丁的应用。
9.在另一示例中,本技术的各个方面针对一种方法,包括:由用户计算设备的一个或多个处理器并从服务器计算设备获得多个片段中的单个片段,多个片段表示补丁,补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括第二虚拟化资产的用于更新单个第一虚拟化资产的部分;由一个或多个处理器虚拟化形成被安装在用户计算设备处的未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;以及由一个或多个处理器将单个片段应用于单个第一虚拟资产以构造单个第二虚拟资产的至少部分,单个第二虚拟资产包括形成已打补丁的应用的第二多个资产。
10.在另一示例中,技术的各个方面涉及一种用户计算设备,包括:存储器,其被配置为存储由服务器计算设备提供的多个片段中的单个片段,多个片段表示补丁,补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括第二虚拟化资产的用于更新单个第一虚拟化资产的部分;以及一个或多个处理器,其被配置为虚拟化形成被安装在用户计算设备处的未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;以及将单个片段应用于单个第一虚拟资产以构造单个第二虚拟资产的至少部分,单个第二虚拟资产包括形成已打补丁的应用的第二多个资产。
11.在另一示例中,本技术的各个方面针对一种非暂时性计算机可读存储介质,其上存储有指令,指令在被执行时使得用户计算设备的一个或多个处理器:从服务器计算设备
获得多个片段中的单个片段,多个片段表示补丁,补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括第二虚拟化资产的用于更新单个第一虚拟化资产的部分;虚拟化形成被安装在用户计算设备处的未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;以及将单个片段应用于单个第一虚拟资产以构造单个第二虚拟资产的至少部分,单个第二虚拟资产包括形成已打补丁的应用的第二多个资产。
12.在另一示例中,本技术的各个方面涉及一种方法,包括:由一个或多个处理器虚拟化形成未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;由一个或多个处理器虚拟化形成已打补丁的应用的第二多个资产,以获得单个第二虚拟资产;由一个或多个处理器基于单个第一虚拟资产和单个第二虚拟资产之间的差异来获得补丁,补丁标识如何更新第一虚拟资产以获得单个第二虚拟资产并且包括第二虚拟资产的用于更新单个第一虚拟资产的部分;由一个或多个处理器在获得补丁的同时生成指示用户计算设备何时能够删除单个第一虚拟资产的部分的元数据;以及由一个或多个处理器并向用户计算设备输出补丁和元数据。
13.在另一示例中,本技术的各个方面涉及一种服务器计算设备,包括:存储器,其被配置为存储形成未打补丁的应用的第一多个资产和形成已打补丁的应用的第二多个资产;以及一个或多个处理器,其被配置为:虚拟化第一多个资产,以获得单个第一虚拟资产;虚拟化第二多个资产,以获得单个第二虚拟资产;基于单个第一虚拟资产和单个第二虚拟资产之间的差异来获得补丁,补丁标识如何更新第一虚拟资产以获得单个第二虚拟资产并且包括第二虚拟资产的用于更新单个第一虚拟资产的部分;在获得补丁的同时生成指示用户计算设备何时能够删除单个第一虚拟资产的部分的元数据;以及向用户计算设备输出补丁和元数据。
14.在另一实例中,技术的各个方面针对一种非暂时性计算机可读存储介质,其上存储有指令,指令在被执行时使得一个或多个处理器:虚拟化形成未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;虚拟化形成已打补丁的应用的第二多个资产,以获得单个第二虚拟资产;基于单个第一虚拟资产和单个第二虚拟资产之间的差异来获得补丁,补丁标识如何更新第一虚拟资产以获得单个第二虚拟资产并且包括第二虚拟资产的用于更新单个第一虚拟资产的部分;在获得补丁的同时生成指示用户计算设备何时能够删除单个第一虚拟资产的部分的元数据;以及向用户计算设备输出补丁和元数据。
15.在另一示例中,本技术的各个方面涉及一种方法,包括:由用户计算设备的一个或多个处理器并从服务器计算设备获得补丁,补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括第二虚拟化资产的用于更新单个第一虚拟化资产的部分;由一个或多个处理器从服务器计算设备获得指示用户计算设备何时能够删除单个第一虚拟资产的一部分的元数据;由一个或多个处理器虚拟化形成安装在用户计算设备处的未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;以及由一个或多个处理器将补丁应用于单个第一虚拟资产以构造单个第二虚拟资产,单个第二虚拟资产包括形成已打补丁的应用的第二多个资产;以及在应用补丁期间基于元数据删除单个第一虚拟资产的部分。
16.在另一示例中,本技术的各个方面涉及一种用户计算设备,包括:存储器,其被配
置为存储补丁,补丁标识如何更新表示未打补丁的应用的单个第一虚拟资产以获得表示已打补丁的应用的单个第二虚拟资产并且包括第二虚拟化资产的用于更新单个第一虚拟化资产的部分;以及一个或多个处理器,其被配置为:将补丁应用于单个第一虚拟资产以构造单个第二虚拟资产,单个第二虚拟资产包括形成已打补丁的应用的第二多个资产;以及在应用补丁期间基于元数据删除单个第一虚拟资产的部分。
17.在另一示例中,本技术的各个方面针对一种非暂时性计算机可读存储介质,其上存储有指令,指令在被执行时使得用户计算设备的一个或多个处理器:从服务器计算设备获得补丁,补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括第二虚拟化资产的用于更新单个第一虚拟化资产的部分;虚拟化形成安装在用户计算设备处的未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;以及将补丁应用于单个第一虚拟资产以构造单个第二虚拟资产,单个第二虚拟资产包括形成已打补丁的应用的第二多个资产;以及在应用补丁期间基于元数据删除单个第一虚拟资产的部分。
18.在附图和以下描述中阐述一个或多个示例的细节。本公开的其他特征、目的和优点将从描述和附图以及从权利要求中显而易见。
附图说明
19.图1是示出被配置为执行本公开中描述的片段应用更新技术的各个方面的示例计算系统的概念图。
20.图2是示出被配置为执行本公开中描述的高效打补丁技术的各个方面的示例应用提供商服务器的框图。
21.图3是示出根据本公开的一个或多个方面的被配置为下载和安装一个或多个补丁的示例计算设备的框图。
22.图4是示出根据本公开中描述的技术的各个方面的由图1的系统生成的示例虚拟资产的框图。
23.图5a和5b是示出根据本公开中描述的存储器高效打补丁技术在向图3的示例中示出的计算设备提供补丁时图2的示例中示出的应用提供商服务器的示例操作的流程图。
24.图6是示出根据本公开中描述的存储器高效打补丁技术在向图3的示例中所示的计算设备提供补丁时图2的示例中所示的应用提供商服务器的示例操作的另一流程图。
具体实施方式
25.图1是示出其中计算装置可执行本公开中所描述的存储器高效打补丁技术的各种方面的示例性计算系统的概念图。如图1所示,计算系统100可以包括计算设备102和应用提供商服务器104。计算设备102可表示能够执行诸如应用130a的应用的任何类型的设备,并且支持对这种应用的软件补丁(也可被称为“补丁”)的应用。例如,计算设备102可以表示蜂窝电话或手机(包括所谓的“智能电话”)、流媒体设备(包括直接插入到电视的端口中的那些)、专用游戏系统、便携式游戏系统、流游戏系统、电视(包括所谓的“智能电视”)、无线扬声器、智能集线器、手表(包括所谓的“智能手表”)、智能眼镜、智能指环或其他可穿戴设备、扩展现实设备(诸如虚拟现实vr设备、增强现实ar设备等)、数字视频盘(dvd)播放器、
blueray播放器、膝上型计算机、台式计算机、工作站、或能够执行应用的任何其他设备。
26.如图1的示例中所示,计算设备102包括用户界面组件(uic)144、ui模块146、应用安装器148、以及在接收应用130a的补丁之前的应用130a。计算设备102的uic 144可以用作计算设备102的输入和/或输出设备。uic 144可以使用各种技术来实现。例如,uic 144可以用作使用存在敏感输入屏的输入设备,诸如电阻式触摸屏、表面声波触摸屏、电容式触摸屏、投影式电容触摸屏、压敏屏幕、声脉冲标识触摸屏或另一存在敏感显示技术。
27.ui模块146可以管理用户与计算设备102的uic 144和其他组件的交互。当用户与由uic 144呈现的用户界面交互时,uic 144和ui模块146可以从用户接收输入(例如,语音输入、手势输入等)的一个或多个指示。未打补丁的应用130a可以表示当前安装在计算设备102上的应用。虽然图1的示例示出了当前安装在计算设备102上的单个应用130a,但是应当理解,可以在计算设备102上安装任何数量的应用,并且计算设备102不必限于仅具有安装在计算设备102上的单个应用。
28.应用安装器148可以表示被配置成在计算设备102上安装未打补丁的应用130a的模块或单元。应用安装器148还可以呈现由应用提供商服务器104提供的界面,计算设备102的用户可以经由uic 144和/或ui模块146与该界面交互以下载未打补丁的应用130a。应用安装器148可以与应用提供商服务器104通信以安排对未打补丁的应用130a的下载,其中应用安装器148可以在接收到未打补丁的应用130a时执行各种操作以安装未打补丁的应用130a,诸如解压缩(其可以被称为“解压”)未打补丁的应用130a、存储器管理等。
29.uic 144、ui模块146、应用安装器148、以及未打补丁的应用130a可以使用硬件、或者硬件和软件的组合和/或驻留在计算设备102中和/或在其处执行的固件来执行本文描述的操作。计算设备102可以用多个处理器或多个设备来执行ui模块146、应用安装器148、以及未打补丁的应用130a。在一些情况下,计算设备102可以将ui模块146和/或应用安装器148作为在底层硬件上执行的虚拟机来执行。ui模块146和/或应用安装器148还可作为操作系统或计算平台的一个或多个服务来执行,或者作为计算平台的应用层处的一个或多个可执行程序来执行。
30.应用130a可以包括一个或多个资产132a

132n(“资产132”)。资产132可以指在应用的执行期间访问的资源(例如,图像、纹理、文件、脚本、视频数据、音频数据等)等。应当理解,在没有未打补丁的应用130a的明确许可的情况下,未打补丁的应用130a的资产132可能不能被安装在计算设备102上的其他应用访问。因此,资产132可能不包括由多个不同应用访问的共享库或其他数据。同样,未打补丁的应用130a可能不能访问不同应用的资产。在一些示例中,计算设备102可以在沙箱化环境中执行未打补丁的应用130a,这将未打补丁的应用130a的资产132与其他应用隔离。
31.如图1的示例中进一步所示,计算设备102可以经由网络108与应用提供商服务器104通信,其中网络108可以表示用于在计算系统、服务器和计算设备之间传送数据的任何公共或专用通信网络,例如,蜂窝、wi

fi和/或其他类型的网络。网络108可以包括一个或多个网络集线器、网络交换机、网络路由器或任何其他网络设备,它们可操作地相互耦合,从而提供应用提供商服务器104和计算设备102之间的信息交换。计算设备102和应用提供商服务器104可以使用任何合适的通信技术跨网络108传送和接收数据。计算设备102和应用提供商服务器104可以各自使用相应的网络链路可操作地耦合到网络108。将计算设备102
和应用提供商服务器104耦合到网络108的链路可以是以太网或其他类型的网络连接,并且这样的连接可以是无线和/或有线连接。
32.应用提供商服务器104可以表示能够向诸如网络108的网络发送信息和从其接收信息的任何合适的远程计算系统,诸如一个或多个台式计算机、膝上型计算机、大型机、服务器、云计算系统等。应用提供商服务器104托管应用(或至少提供对其的访问)并呈现上述界面(诸如应用商店,为了便于说明,其在图1的示例中未示出),计算设备102可以通过该界面访问应用以经由网络108下载到计算设备102。
33.应用提供商服务器104可以使用硬件或硬件、软件和驻留在应用提供商服务器104中和/或在其处执行的固件的混合来执行所描述的操作。应用提供商服务器104可以利用多个处理器或多个设备执行本文描述的各种操作。应用提供商服务器104还可以执行以下更详细地描述为在底层硬件上执行的虚拟机的各种模块或单元。在一些示例中,应用提供商服务器104可以执行接口,通过该接口访问应用作为操作系统或计算平台的一个或多个服务或者作为在计算平台的应用层处的一个或多个可执行程序。
34.应用提供商服务器104可以包括补丁生成单元116,其可以生成用于未打补丁的应用110a的补丁117。补丁生成单元116可执行各种打补丁算法以生成补丁117,诸如遗传差异(diff)(“gdiff”)、bsdiff等,其可生成并且可能压缩(连同关于其执行的其它操作一起)未打补丁的应用110a和已打补丁的应用110b之间的底层二进制差异以形成补丁117。
35.即,未打补丁的应用110a和已打补丁的应用110b中的每一个可以表示经编译的源代码(或者,换言之,可执行二进制代码或其某种派生,诸如字节代码),其配置或以其他方式编程处理器(或其他硬件)以执行各种操作。补丁生成单元116可以表示被配置成确定未打补丁的应用110a与已打补丁的应用110b之间的差异并且输出都形成补丁117的用于更新未打补丁的应用110a到已修改的应用110b的命令121以及差异123(“diff123”)的列表的单元。命令121可以标识一个或多个删除操作、一个或多个复制操作和/或一个或多个写入操作(或其任何组合),这些操作指示计算设备102如何操纵未打补丁的应用130a以产生已打补丁的应用130b(其中未打补丁的应用130a可以表示未打补丁的应用110a的不同实例,并且已打补丁的应用130b可以表示已打补丁的应用110b的不同实例)。
36.在生成补丁117时,应用提供商服务器104可以与由计算设备102执行的app安装器148接口以指示补丁117可用于下载。在一些实例中,app安装器148可以响应于补丁117可用的指示而产生未打补丁的应用130a的补丁117可用于下载和安装的警告或其它指示。在这一实例中,计算设备102的用户可以经由uic 144和/或ui模块146与app安装器148接口以发起补丁117的下载和安装。在其他实例中,app安装器148可以响应于补丁117可用的指示而自动下载和安装补丁117。用户可以指定在系统设置中或每个应用启用自动打补丁,标识自动打补丁可发生的时间和/或日期。
37.无论如何,计算设备102可以从应用提供商服务器104获得补丁117并且将补丁117安装到未打补丁的应用130a以产生已打补丁的应用130b。可以发生以此方式的打补丁,以允许应用110a/130a的开发者添加附加功能、修复软件错误(所谓的“软件错误”)、防止恶意攻击、更新图形能力或其他功能等,而无需下载完整的新应用(其可能很大,因此消耗相当大的带宽

网络108的带宽和计算设备102的存储器和/或存储带宽、计算设备102的处理器周期等)。
38.虽然打补丁一般可以改进应用110a/130a的操作,并且由此改进计算设备102的操作,但是在某些实例中,补丁117仍然可以很大(在若干吉字节的量级上

例如,几至几十吉字节,若干兆字节

例如,几百兆字节等)。例如,开发者可更新未打补丁的应用(其指资产132的实例)的资产112a

112n(“资产112”)以改进图形保真度、更新纹理、添加或移除视频数据和/或音频数据、或执行改进未打补丁的应用110a的用户体验的其他示例更新。这样,已打补丁的应用110b可以包括不同的资产122a

122n(“资产122”)集合,其中资产122中的一个或多个可以与资产112不同(尽管在一些实例中,资产122中的一个或多个可以与资产112相同)。在该示例中,补丁生成单元116可以不确定在未打补丁的应用110a和已打补丁的应用110b的经编译的源代码之间有很大差异,而仅仅注意到在资产112和122之间存在差异,从而导致主要包括资产122的diff 123,该资产122包括替换资产112的资产或者除了资产112的资产之外的资产。
39.在一些实例中,由于打补丁过程,计算设备102可能没有足够的存储空间(例如,存储器和/或存储空间)来存储未打补丁的应用130a、已打补丁的应用130b和补丁117。换言之,为了应用补丁117,计算设备102可以下载补丁117的全部,并且在存储器和/或存储中为已打补丁的应用130b保留可用空间而同时存储未打补丁的应用130a的全部。计算设备102然后可以通过补丁117的命令121迭代,执行上述操作中的一个或多个以从未打补丁的应用130a和diff 123来构造已打补丁的应用130b。虽然关于资产描述了技术的各个方面,但是这些技术可以关于在本公开中没有详细描述的经编译的源代码或其它类型的文件、资源和/或数据来实现。
40.为了说明存储器和/或存储受限的计算设备如何受到该过程的影响,假设计算设备102仅具有1.4千兆字节(gb)的可用存储器,并且相对于大小为1gb的未打补丁的应用130a要安装大小为400兆字节(mb)的补丁117,导致大小为1.2gb的已打补丁的应用130b。在该示例说明中,计算设备102可下载补丁117,其消耗1.4gb的可用存储器的400mb,从而导致仅1gb的可用存储器。当计算设备102尝试为已打补丁的应用130b保留1.2gb的存储器时,计算设备102的存储器管理器(为了易于说明的目的而未示出)可以由于可用的存储器不足(因为1.2gb大于1gb的可用存储器)而拒绝该请求。因此,计算设备102可以不将补丁117应用于未打补丁的应用130a。
41.不能应用补丁117可能导致计算设备102不能执行已打补丁的应用130b,从而潜在地剥夺了用户增加的功能、更新的图形、音频体验、视频体验等,使计算设备102暴露于安全漏洞等。随着诸如计算设备102等计算设备继续发展,这些计算设备被使用越来越多的时间,使得可用存储器的短缺通常可能成为适当打补丁应用的障碍(诸如在存储视频、文本(包括文本消息、电子邮件等)、图像(诸如照片等)形式的大量个人信息的智能电话的情况下)。
42.根据本公开中阐述的技术的各方面,应用提供商服务器104可将补丁117分割成多个补丁片段127a

127n(“片段127”)并且将片段127提供给计算设备102(其可表示“用户计算设备”的一个示例),从而潜在地使得计算设备102能够更高效地安装补丁(在存储器消耗方面)。计算设备102可从应用提供商服务器104(其可被称为“服务器”)获得补丁117。应用提供商服务器104可将补丁117分割成一个或多个具有比补丁117整体少的字节总数的片段127,其中每个片段127可关于未打补丁的应用110a/130a单独安装。应用提供商服务器104
可以将一个或多个片段127中的每个片段单独地发送到计算设备102。
43.计算设备102可以接收一个或多个片段127的每个单独片段形式的补丁117,然后每次安装一个每个单独片段(在一些实例中,尽管在其他实例中,可能需要两个或更多个片段127来在diff 123中安装资产122a的一些较大部分或全部)。在安装每个片段之后,计算设备102可以请求片段127的下一个片段,重复该过程直到整个补丁117被系统地应用于未打补丁的应用130a。应用提供商服务器104还可发送指示计算设备102何时可删除未打补丁的应用130a的不同资产132的附加元数据119,由此潜在地使得计算设备102能够在补丁117的应用期间消耗甚至更少的存储器(以片段127的迭代应用的形式),因为删除未打补丁的应用130a的部分可释放附加存储器(或者,换言之,增加可用存储器)。
44.在操作中,软件开发者可以与应用提供商服务器104接口以上载已打补丁的应用110b,并且请求应用提供商服务器104产生补丁117。响应于应用提供商服务器104产生补丁117的请求,应用提供商服务器104可以调用补丁生成单元116,其可以执行上述打补丁算法中的一个或多个,以基于未打补丁的应用110a和已打补丁的应用110b之间的差异来产生补丁117。
45.由于打补丁算法可以逐个文件地而不是跨文件地执行diff,打补丁生成单元116可以将包括所有资产112的未打补丁的应用110a虚拟化为单个虚拟资产114。补丁生成单元116可以执行虚拟化算法,该虚拟化算法呈现具有文件夹和子文件夹的多层存储器和/或存储文件分级结构,其中包括资产112的未打补丁的应用110a被存储为单个虚拟资产114a。补丁生成单元116还可以虚拟化包括资产122的已打补丁的应用110b,以呈现具有文件夹和子文件夹的多层存储器和/或存储文件分级结构,其中包括资产122的未打补丁的应用110b被存储为单个虚拟资产114b。补丁生成单元116然后可以关于单个虚拟资产114b执行打补丁算法以产生补丁117的命令121和diff 123,其中命令121标识关于未打补丁的应用110a执行的操作以部分地基于diff 123产生已打补丁的应用110b。
46.尽管被描述为执行虚拟化,但是在服务器104可以接收资产作为档案(这是引用虚拟化资产的另一种方式)的实例中,补丁生成单元116可以不执行虚拟化。替代地,服务器104可在开发者上传时虚拟化资产122,并且在此后将虚拟化的资产存储为虚拟资产114b。
47.补丁生成单元116可以输出补丁117,应用提供商服务器104可在其上以上述方式接口以向计算装置102警告补丁117。计算设备102然后可以经由上述接口从应用提供商服务器104请求补丁117,从而调用app安装器148来下载和安装补丁117。响应于对补丁117的请求,应用提供商服务器104可以调用补丁分割单元118。补丁分割单元118可以表示被配置以将补丁117分割成一个或一个补丁片段127的模块或单元。补丁分割单元118可创建每个片段127,使得命令121的一些子集和diff 123的相应部分完全包含在每个片段127内。
48.在某些实例中,补丁分割单元118可能不能存储由包括在片段127之一中的命令121中的命令引用的diff 123的给定部分的全部,导致diff123的该部分跨两个或更多片段127的一定程度分裂。在这些实例中,补丁分割单元118可以跨两个或更多个片段127来扩展diff 123的部分,这可以导致计算设备102缓存片段127中的特定片段直到diff 123的整个部分可用于存储到已打补丁的应用130b为止。然而,在其他实例中,补丁分割单元118可以生成片段127,使得每个片段127可由计算设备102单独安装。
49.为了便于解释,假设每个片段127可由计算设备102单独安装,应用提供商服务器
104可以将每个片段127单独输出到计算设备102(例如,一次一个)。计算设备102可以接收片段,诸如图1的示例中所示的片段127a,其包括命令121的子集(例如,命令121a

121n,其可以被称为“命令子集121”)和由命令子集121引用的diff片段123(例如,“diff segs123a

123n”,其可以被称为“diff segs 123”)的子集。
50.响应于接收到片段127a,计算设备102可以调用分割的补丁应用单元136,其表示被配置成以迭代方式应用补丁117作为片段127的序列的单元。为了应用片段127a,分割的补丁应用单元136可以首先以与上文关于补丁生成单元116所描述的方式类似(如果不是实质上类似)的方式虚拟化未打补丁的应用130a以创建虚拟资产134a。
51.分割的补丁应用单元136可以接下来执行命令121以从表示已打补丁的应用130b的虚拟资产134b删除资产142、从虚拟资产134a复制到虚拟资产134b、以及将表示已打补丁的应用130b的虚拟资产的一个或多个部分(以diff片段123的形式)写入到虚拟资产134b。即,命令121可以指示如何更新单个虚拟资产134a以获得单个虚拟资产134b。这样,分割的补丁应用单元136可以将单个片段127a应用于虚拟资产134a以填充或换句话说构造虚拟资产134b。
52.另外或作为替换,补丁生成单元116可在获得补丁117的同时生成指示计算设备102何时能够删除虚拟资产134a的各部分的元数据119。补丁生成单元116可以生成元数据119作为一系列一个或多个指令129a

129n,其中的每个包括读取索引,其后跟随有标识资产132中的相关联的一个资产或未打补丁的应用130a的其它部分的指示。在图1中,指令129包括两个示例,其中读取索引

1和213后面跟随有资源名称、引用或其他标识符(在图1的示例中被标记为“asset”)。
53.补丁生成单元116可以包括读取计数器139(“rc 139”),补丁生成单元116在未打补丁的应用110a的每个读取之后递增所述读取计数器。当发生对资产112中的一个的读取时,补丁生成单元116可以更新元数据119以指示资产112中的一个的读取索引等于读取计数器139,从而指定标识读取索引之后的资产112中的一个的指示。补丁生成单元116可以以这种方式系统地生成元数据119,以指示何时可以删除由虚拟资产114a/134a表示的未被补丁的应用110a/130a的每个资产112或其他部分(或者,换句话说,标记为可用的存储器和/或存储)。补丁生成单元116可将该读取索引和对应的资产标识符指定为元数据119中的指令129。
54.补丁生成单元116可以将元数据119提供给补丁分割单元118,该补丁分割单元可以将元数据119附加到发送到计算装置102的第一片段(为了说明的目的,假设该第一片段是片段127a)。应用提供商服务器104可以将元数据119与片段127a一起发送到计算设备102。
55.如上所述,计算设备102可以调用分割的补丁应用单元136来处理片段127a,随后分割的补丁应用单元136可以从片段127a中解析元数据119。分割的补丁应用单元136然后可以以与上文关于补丁生成单元116所描述的方式相同的方式来维持读取计数器139。每当元数据119中的读取索引与读取计数器139匹配时,分割的补丁应用单元136可以删除由对应资产标识符标识的资产132中的一个(其可更一般地指未打补丁的应用130a的任何部分)。
56.在一些示例中,读取索引可具有负值(诸如负一(

1)),其指示资产132中的对应资
产可被删除而不参考读取计数器139(例如,因为其被弃用、替换或以其他方式被完全移除)。在这些示例中,分割的补丁应用单元136可以初始处理元数据119,以主动删除由其中对应的读取索引具有负值的应用标识符标识的所有资产132。
57.分割的补丁应用单元136可以以此方式继续迭代地接收片段127,并且在应用片段127中的连续片段之前单独地应用片段127中的每个片段。在一些示例中,分割的补丁应用单元136可以与应用提供商服务器104接口以提供成功应用了片段127中的前一个片段的确认,并且仅在接收到确认之后,应用提供商服务器104才可以传送片段127中的下一个片段,以潜在地确保保存了可用存储器资源,使得对补丁117的应用可成功完成。
58.同样地,当将片段127迭代地应用于虚拟资产134a时,分割的补丁应用单元136可继续维持读取计数器139。分割的补丁应用单元136可继续相对于元数据119的指令129参考读取计数器139,且每当读取计数器139匹配指令129中的一个指令的读取索引时,删除资产132中的对应资产。
59.因此,所描述的技术可以改进计算设备102以及包括计算设备102和应用提供商服务器104的计算系统的操作。通过在片段127中接收和安装补丁117,所描述的技术可以减少计算设备102上安装补丁127所需的存储量,并且提高计算设备102的性能(因为补丁可以随着时间被取出,并且从而改进在应用补丁期间的处理吞吐量,并且减少包括存储器带宽利用率的带宽利用率)。另外,允许在将补丁117的片段127应用于未打补丁的应用130a期间删除未打补丁的应用130a的部分可进一步减少存储器利用率,进而改进计算设备102的性能。
60.图2是示出被配置为执行本公开中描述的高效打补丁技术的各个方面的示例应用提供商服务器的框图。图2仅示出应用提供商服务器204的一个特定示例,并且在其他实例中可以使用应用提供商服务器204的许多其他示例。在其他示例中,应用提供商服务器可以包括示例应用提供商服务器104中所包括的组件的子集,或者可以包括图2中未示出的附加组件。例如,应用提供商服务器204可以包括服务器集群,并且包括构成应用提供商服务器204的服务器集群的每个服务器可以包括图2中在此描述的组件中的全部或一些,以执行在此公开的技术。这样,应用提供商服务器204表示应用提供商服务器104的一个示例。
61.如图2的示例中所示,应用提供商服务器204包括一个或多个处理器240、一个或多个通信单元242以及一个或多个存储设备248。处理器240可以实现与应用提供商服务器204相关联的功能和/或执行指令。处理器240的示例包括应用处理器、显示控制器、辅助处理器、一个或多个传感器集线器以及被配置为用作处理器、处理单元或处理设备的任何其他硬件。补丁生成单元116、补丁分割单元118和应用商店接口260可由处理器236执行,以执行应用提供商服务器204的各种动作、操作或功能。例如,处理器240可检索并执行由存储设备248存储的(并由补丁生成单元116、补丁分割单元118和应用存储接口260表示的)指令,这些指令使处理器240执行本文关于补丁生成单元116、补丁分割单元118和应用存储接口260描述的操作。当由处理器240执行时,指令可以使应用提供商服务器204将信息存储在存储设备248内。
62.通信单元242可以表示被配置为通过经由一个或多个有线和/或无线网络(例如,网络108)传送和/或接收网络信号来经由该一个或多个网络与外部设备(例如,计算设备102)通信的单元。通信单元242的示例包括网络接口卡(例如,诸如以太网卡)、光学收发器、射频收发器、全球定位卫星(gps)接收器、蜂窝收发器、或者可以发送和/或接收数据的任何
其他类型的设备。通信单元242的其它示例可以包括短波无线电、蜂窝数据无线电、无线网络无线电以及通用串行总线(usb)控制器。
63.存储设备248可以表示被配置为存储用于在应用提供商服务器204的操作期间进行处理的信息的一个或多个存储器和/或存储设备。在一些示例中,存储设备248可以表示临时存储器,这意味着存储设备248的主要目的不是长期存储。存储设备248可以作为易失性存储器被配置用于信息的短期存储,并且因此如果断电则不保留所存储的内容。易失性存储器的示例包括随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)以及本领域已知的其它形式的易失性存储器。
64.在一些示例中,存储设备248还可以包括一个或多个计算机可读存储介质。存储设备248可以包括一个或多个非暂时性计算机可读存储介质。存储设备248可以被配置为存储比易失性存储器通常存储的信息量更大的信息量。存储设备248还可以作为非易失性存储器空间被配置用于信息的长期存储,并且在通电/断电周期之后保留信息。非易失性存储器的示例包括磁性硬盘、光盘、软盘、快闪存储器,或电可编程存储器(eprom)或电可擦除可编程(eeprom)存储器的形式。存储设备248可以存储与补丁生成单元116、补丁分割单元118和/或应用商店接口260相关联的程序指令和/或信息(例如,数据)。存储设备248可以包括被配置成存储与补丁生成单元116、补丁分割单元118和/或应用商店接口260相关联的数据或其它信息的存储器。
65.应用提供商服务器204最初可以经由应用商店接口260(其可以表示呈现给软件开发商、用户和其他实体的接口,用于与底层电子市场交互以便下载或以其他方式获得应用,诸如应用110a)从负责支持应用110a的软件开发商接收已打补丁的应用110b。应用提供商服务器204可以响应于接收到已打补丁的应用110b而调用补丁生成单元116来生成表示未打补丁的应用110a与已打补丁的应用110b之间的差异的补丁117。
66.为了生成补丁117,补丁生成单元116可以首先调用虚拟化单元262。虚拟化单元262可以表示被配置为虚拟化形成诸如相应的未打补丁的应用110a和已打补丁的应用110b的应用的多个资产(诸如资产112和122中的每一个)的单元。作为一个示例,虚拟化单元262可以扩展被称为“randomaccessfile”的java类,使得单个randomaccessfile对象可以包括多个文件或其他资产,从而虚拟化资产以表现为单个虚拟资产。换句话说,虚拟化单元262可将多个不同的资源彼此附加,并且将附加的资源封装在具有扩展功能的randomaccessfile对象中,以处理如何访问附加的资源并且将其存储到底层文件系统。虚拟化单元262可以以这种方式虚拟化未打补丁的应用110a以获得虚拟资产114a,并且虚拟化已打补丁的应用110b以获得虚拟资产114b。
67.接下来,补丁生成单元116可关于虚拟资产114a和虚拟资产114b应用上述打补丁算法中的一个或多个以获得命令121和diff 123。在应用打补丁算法期间,补丁生成单元116可调用元数据生成单元264,其可表示被配置为生成元数据119的单元,该元数据119指示在将补丁117应用到未打补丁的应用的其它实例(例如图1的示例中所示的计算设备102的未打补丁的应用130a)期间何时可删除未打补丁的应用110a的资产112。
68.元数据生成单元264可递增读取计数器139以反映关于资产112执行的每个存储器/存储设备读取操作。每当发生对资产的最后一次读取时,元数据生成单元264可以将读取计数器139的当前值指定为读取索引以及资产标识符,从而指示当在计算设备102处维护
的对应读取计数器139等于读取索引时可以删除所标识的资产。元数据生成单元264还可以通过为读取索引指定负值(诸如负值)连同应用标识符,在元数据119中指示资产可被立即删除(因为在补丁117的整个生成过程中资产未被读取)。
69.在生成补丁117之后,应用提供商服务器204可以调用应用商店接口260以经由通信单元242与计算设备102接口,以指示补丁117可用于下载。应用提供商服务器204此后可以接收对补丁117的请求,并且可能经由该请求或单独的通信接收设备信息267。设备信息267可以包括关于计算设备102的一种或多种类型的信息,但是还可以指定可用的存储器(其可以被称为“可用存储器”)的量。应用提供商服务器204接下来可以调用补丁分割单元118,将设备信息267传递到补丁分割单元118。
70.补丁分割单元118可以可能地基于设备信息267将补丁117分割成片段127。即,如果设备信息267指示可用存储器低于阈值,那么补丁分割单元118可以为片段127中的每一个片段选择与当设备信息267指示可用存储器高于阈值时原本将被选择(或预定义)的大小相比较小的大小。然而,在一些实例中,补丁分割单元118可以将补丁117分割成片段127而不管设备信息267如何,其中片段127中的每一个片段的大小可以相同、针对每一片段预定义但未必相同,或基于各种准则(例如,个别安装的能力)而自适应。
71.在生成片段127之后,补丁分割单元118可以调用压缩单元266以彼此独立地压缩片段127中的每一个(使得可以单独地解压缩片段127中的每一个)。压缩单元266可以表示被配置为关于diff片段127和可能的命令121应用一个或多个压缩算法的单元。当压缩片段127时,压缩单元266可以取决于片段127的各个部分所表示的内容的类型而调用不同的压缩算法。即,片段127可包括资产122中的整个资产,其同样可表示图像、视频、纹理、文本、音频等,并且压缩单元266可以对图像应用图像压缩算法、对视频应用视频压缩算法、对纹理应用纹理压缩算法、对音频应用音频压缩算法等。
72.应用提供商服务器204然后可以迭代地将片段127(可能一次一个)输出到计算设备102(其中一个片段可以包括元数据119,补丁生成单元116将该元数据119连同补丁117一起传递到补丁分割单元118)。应用提供商服务器204可以仅响应于来自计算设备102的指示当前片段被成功应用于表示未打补丁的应用130a的虚拟资产134a的确认而输出连续片段。应用提供商服务器204可以以这种方式迭代,一次服务片段127的单个片段,直到片段127中的每一个片段已被成功地应用于虚拟资产134a以便生成虚拟资产134b。
73.图3是示出根据本公开的一个或多个方面的被配置为下载和安装一个或多个补丁的示例计算设备的框图。图3仅示出计算设备302的一个特定示例,并且计算设备302的许多其他示例可在其他实例中使用,并且可包括示例计算设备302中所包括的组件的子集,或者可以包括图3中未示出的附加组件。计算设备302可以表示图1的示例中示出的计算设备102的一个示例。
74.如图3的示例中所示,计算设备302包括用户接口组件(uic)344、一个或多个处理器336、一个或多个通信单元338、以及一个或多个存储设备328,其中的每一个由通信信道330(其可以类似于图2的示例中所示的通信信道250,如果不是相同的话)互连。如果不相同uic 314可以与图1的示例中所示的uic 144相似。如果不相同处理器336可以与图2的示例中所示的处理器240相似。如果不相同通信单元338可以与图2的示例中所示的通信单元242相似。如果不相同存储设备328可以与图2的示例中所示的存储设备248相似,而通信信道
75.如图3的示例中进一步示出的,用户接口组件344可以包括一个或多个输入组件332和一个或多个输出组件334。计算设备302的一个或多个输入组件332可以接收输入。输入的示例是触觉、音频和视频输入。在一个示例中,输入组件332包括存在敏感输入设备(例如,触敏屏幕、存在敏感显示器)、鼠标、键盘、语音响应系统、摄像机、麦克风或用于检测来自人或机器的输入的任何其他类型的设备。在一些示例中,输入组件332可以包括一个或多个传感器组件,诸如一个或多个位置传感器(gps组件、wi

fi组件、蜂窝组件)、一个或多个温度传感器、一个或多个运动传感器(例如,加速度计、陀螺仪)、一个或多个压力传感器(例如,气压计)、一个或多个环境光传感器、以及一个或多个其他传感器(例如,麦克风、相机、红外接近传感器、湿度计等)。举几个其它非限制性示例,其它传感器可以包括心率传感器、磁力计、葡萄糖传感器、湿度计传感器、嗅觉传感器、罗盘传感器、计步器传感器。
76.计算设备302的一个或多个输出组件334可以生成输出。输出的示例是触觉、音频和视频输出。在一个示例中,计算设备302的输出组件334包括psd、声卡、视频图形适配卡、扬声器、阴极射线管(crt)监视器、液晶显示器(lcd)或用于向人类或机器生成输出的任何其他类型的设备。
77.尽管被示为计算设备302的内部组件,但uic 344也可表示与计算设备302共享数据路径以传送和/或接收输入和输出的外部组件。例如,在一个示例中,uic 344表示位于计算设备302的外部封装(例如,移动电话上的屏幕)内并且与其物理地连接的计算设备302的内置组件。在另一示例中,uic 344表示位于计算设备302的封装或外壳外部并且与其物理地分离的计算设备302的外部组件(例如,与计算设备302共享有线和/或无线数据路径的监视器、投影仪等)。
78.计算设备302内的一个或多个存储设备328可以存储用于在计算设备302的操作期间处理的信息(例如,计算设备302可以存储在由计算设备302执行期间由ui模块146、应用安装器148、未打补丁的应用130a、以及一个或多个片段127访问的数据)。存储设备328可以存储与分割的补丁应用单元136、ui模块146、应用安装器148、应用130a和片段127a相关联的程序指令和/或信息(例如,数据)。存储组件328可以包括存储器,其被配置成存储与分割的补丁应用单元136、ui模块146、应用安装器148、应用130a和片段127a相关联的数据或其它信息。
79.如上所述,应用安装器148可由处理器236执行以在计算设备302处安装补丁。应用安装器148可以执行应用市场应用的功能,该应用市场应用允许用户经由uic 344与应用商店接口260交互以浏览、下载和安装来自应用提供商服务器(诸如图2的示例中所示的应用提供商服务器204)的补丁。uic 344可以接收指示为未打补丁的应用130a下载补丁(例如补丁117)的请求的指示,并且ui模块146可以将该请求转发给应用安装器148。响应于下载补丁117的请求的指示,应用安装器148然后可以将请求发送到应用提供商服务器204。
80.响应于向应用提供商服务器204发送对补丁117的请求,应用安装器148可以从应用提供商服务器204以片段127的每个单独片段的形式接收补丁117。应用安装器148可以以压缩形式接收应用130a的补丁117的片段127a,以便潜在地减少下载片段127a所需的时间量并且减少下载中所使用的网络资源。片段127a的diff片段123内的每个资产142(或者其部分)可以(例如,由应用提供商服务器204)已经使用特定于资产142的类型的压缩算法来压缩,以减小经由网络向计算设备302传送的片段127a的大小。因此,当应用片段127a包括
两种或更多种不同类型的两个或更多个资产142时,两种或更多种类型的资产142中的每一个可能已经使用如上文详细讨论的不同压缩算法来压缩。
81.为了解压缩被表示为片段127a的diff片段123的资产142,分割的补丁应用单元136可以调用解压缩单元366,该解压缩单元366可以存储针对已经使用基于字典的压缩算法压缩的资产的压缩字典,在所述压缩算法中,数据块—诸如字符串—可以通过参考该数据块在压缩字典中的位置来替换。压缩字典可以包括数据块的索引,基于字典的压缩算法可以将该数据块进行索引,以便对数据进行压缩和解压缩。为了解压缩已经使用基于字典的压缩算法所压缩的应用元素,解压缩单元366可以用压缩字典中的对应引用位置处的数据块来替换压缩资产中的引用。
82.一旦计算设备302已经下载片段127a,分割的补丁应用单元136就可以调用虚拟化单元362。虚拟化单元362可以表示被配置为以与以上关于图2的示例中所示的应用提供商服务器204的虚拟化单元262所描述的方式类似的(如果不是基本上类似的)方式来虚拟化未打补丁的应用130a的单元,虚拟化单元362可以创建使得包括资产132的未打补丁的应用130a表现为单个文件的单个虚拟资产134a。
83.分割的补丁应用单元136可以接下来提取命令121并且根据命令121开始应用diff片段123。对于命令121的复制命令,分割的补丁应用单元136可以将一个或多个资产132(或其部分)从虚拟资产134a移动到虚拟资产134b,其中此类复制的资产现在被表达为资产142。对于命令121中的删除命令,分割的补丁应用单元136可以删除资产132中的所标识的资产。对于命令121的写入命令,分割的补丁应用单元136可以将diff片段123中的一个或多个写入到虚拟资产134b,虚拟资产134b再次被示出为资产142。
84.如上所述,补丁生成单元116可以调用压缩单元266以便压缩diff片段123。这样,为了写入diff片段123,分割的补丁应用单元136可以调用解压缩单元366,其可以解压缩片段127a,从而解压缩由包括在片段127a内的命令121引用的资产142。然而,在提取期间(这是另一种涉及解压缩的方式),解压缩单元366可以直接将资源提取到文件系统内的最终位置,而不是存储压缩资源和资源的临时副本二者,从而进一步节省存储器消耗。为了便于直接写入底层文件系统,应用提供商服务器204的补丁生成单元116可以在补丁117中存储的每个新资产(例如,一个或多个资产142)之前写入指示每个新资产要存储在哪里的附加报头(其被称为本地文件报头

lfh)。
85.解压缩单元366可以参考每个本地文件报头,将本地文件报头保存到存储器。参考本地文件报头,解压缩单元366可以在本地文件报头中指定的位置处直接提取diff片段123到文件系统。这样,解压缩单元366可以避免在将diff片段123的副本移动到文件系统中的相应位置之前在存储器中维护diff片段123的临时副本。
86.在任何情况下,分割的补丁应用单元136可以为每个diff片段123调用解压缩单元366,因为每个diff片段都由命令121引用,因为提取将diff片段123的经解压缩形式中的每一个将直接写入到虚拟资产134b(作为资产142之一)。以这种方式,分割的补丁应用单元136可以以潜在地更存储器有效的方式处理片段127a。分割的补丁应用单元136可以针对片段127中的每一个重复该过程,直到补丁127被完全安装为止。
87.在一些示例中,分割的补丁应用单元136可在片段(例如,片段127a)的安装期间检测系统故障并且可以通过周期性地生成检查点元素来恢复片段的安装。在图3的示例中,可
以周期性地生成用于片段127a的检查点元素367,并且可以将其存储在存储组件228内。检查点元素367可以包括资产名称、资产状态、资产偏移、在片段127a的安装期间应用的资产的剩余字节、以及要应用的下一片段的指示中的一个或多个。资产名称指示该资产在系统故障时正在应用。
88.资产状态指示在资产安装过程期间发生了或者在资产的本地文件报头读取过程期间发生了系统故障。在一个示例中,值零可以指示在资产安装过程期间发生了系统故障,而值一可以指示在本地文件报头读取过程期间发生了系统故障。
89.资产偏移指示开始应用下一片段的位置。剩余字节指示恢复资产的安装的位置。下一个片段元素指示用于安装的下一片段。以此方式,使用检查点元素367,分割的补丁应用单元136可以在发生了系统故障时恢复片段的安装。
90.另外,分割的补丁应用单元136还可以接收标识分割的补丁应用单元136何时可以删除资产132的元数据119。即,分割的补丁应用单元136可以接收元数据119连同发送到计算设备302的第一片段(例如,片段127a),其中元数据119可以在一些示例中被附加到片段127a。响应于接收到片段127a,分割的补丁应用单元136可以调用元数据处理单元364。元数据处理单元364可以表示被配置为从片段127a解析元数据119并且随后处理元数据119以在应用片段127期间(或换言之在应用补丁117期间)移除资产132的单元。
91.元数据处理单元364然后可以按照与以上关于补丁生成单元116所述的相同方式来维持读取计数器139。每当元数据119中的读取索引与读取计数器139相匹配时,分割的补丁应用单元136可以删除由对应资产标识符标识的资产132中的一个(其可更一般地指未打补丁的应用130a的任何部分)。
92.在一些示例中,读取索引可以具有负值(诸如负一(

1)),其指示资产132中的对应资产可以被删除而不参考读取计数器139(例如,因为其被弃用、替换或以其他方式被完全移除)。在这些示例中,元数据处理单元364可以初始处理元数据119以主动删除由其中对应读取索引具有负值的应用标识符标识的所有资产132(例如,资产132a)。
93.分割的补丁应用单元136可以以此方式继续迭代地接收片段127并且在应用片段127中的连续片段之前个别地应用片段127中的每一个片段。在一些示例中,分割的补丁应用单元136可以与应用提供商服务器204接口以提供成功应用片段127中的前一个片段的确认,并且仅在接收到确认之后,应用提供商服务器104才可以传送片段127中的下一个片段,以潜在地确保保存了可用存储器资源,使得补丁117的应用可以成功完成。
94.同样,当片段127被迭代地应用于虚拟资产134a时,元数据处理单元364可以继续维护读取计数器139。元数据处理单元364可以相对于元数据119的指令129继续参考读取计数器139,并且每当读取计数器139匹配指令129之一的读取索引时,删除资产132中的对应资产。
95.图4是示出根据本公开中描述的技术的各个方面的由图1的系统生成的示例虚拟资产的框图。在图4的示例中,虚拟资产418可以表示虚拟资产114a、114b、134a和/或134b中的任何一个的示例。虚拟资产418可以包括资产416a

416n(“资产416”)、可指示存储器中存储资产416中的相关联的资产的对应位置的本地文件报头(lfh)440a

440n(“lfh440”)、以及定义资产416被存储到的底层文件系统的中央目录422。
96.为了生成虚拟资产418,系统100(应用供应商服务器104和计算设备102中的任一
个或两者)可以调用修改的randomaccessfile功能,该功能可以跨文件系统分层结构处理多个文件,在文件夹和子文件夹之间移动以标识存储到中央目录422的每个资产416。这样,系统100可以创建用于每个资产416的lfh 440,从而生成每个资产416的lfh 440的lfh,其相对于中央目录422标识资产416的位置,从而允许在解压缩期间将每个资产416直接提取到每个资产416将被存储的位置(从而避免了上面关于图3的示例所述的临时拷贝)。
97.图5a和5b是示出根据本公开中描述的存储器高效打补丁技术在向图3的示例中示出的计算设备提供补丁时图2的示例中示出的应用提供商服务器的示例操作的流程图。应用提供商服务器204可以最初地经由应用商店接口260接收未打补丁的应用110a(498),并且随后从负责支持应用110a的软件开发者接收已打补丁的应用110b(500)。应用提供商服务器204可以响应于接收到打补丁的应用110b而调用补丁生成单元116来生成表示未打补丁的应用110a与已打补丁的应用110b之间的差异的补丁117。在这个方面,补丁生成单元116可以基于未打补丁的应用110a和已打补丁的应用110b来生成补丁117。
98.为了生成补丁117,补丁生成单元116可以首先调用虚拟化单元262。虚拟化单元262可以虚拟化形成应用的多个资产,诸如资产112和122中的每一个,所述应用诸如相应的未打补丁的应用110a和已打补丁的应用110b。虚拟化单元262可以将多个不同资产彼此附加,并且将附加的资产封装为具有扩展功能的单个对象,以处理如何访问附加资产并且将其存储到底层文件系统。虚拟化单元262可以以这种方式虚拟化未打补丁的应用110a以获得第一虚拟资产114a(502)并且虚拟化已打补丁的应用110b以获得第二虚拟资产114b(504)。
99.接下来,补丁生成单元116可以关于虚拟资产114a和虚拟资产114b应用上述打补丁的算法中的一个或多个,以获得可共同表示补丁117的命令121和diff 123(506)。在生成补丁117之后,应用提供商服务器204可以调用应用商店接口260以经由通信单元242与计算设备102接口,以指示补丁117可用于下载(508)。计算设备302的uic 344可以接收指示为未打补丁的应用130a下载补丁—诸如补丁117—的请求的指示(510),并且ui模块146可将该请求转发给应用安装器148。响应于下载补丁117的请求的指示,应用安装器148可以将对补丁117的请求发送到应用提供商服务器204(512)。
100.应用提供商服务器204此后可以接收对补丁的请求117(514),并且可能经由该请求或单独通信接收设备信息267。设备信息267可以包括关于计算设备102的一种或多种类型的信息,但是还可以指定可用的存储器的量(其可以被称为“可用存储器”)。应用提供商服务器204可以接下来调用补丁分割单元118,将设备信息267传递到补丁分割单元118。
101.补丁分割单元118可以可能地基于设备信息267而将片段117分割成片段127(516)。即,如果设备信息267指示可用存储器低于阈值,则补丁分割单元118可以为片段127中的每一个选择与当设备信息267指示可用存储器高于阈值时原本将被选择(或预定义)的大小相比较小的大小。然而,在一些实例中,补丁分割单元118可以将补丁117分割成片段127而不管设备信息267如何,其中片段127中的每一个片段的大小可以相同、针对每一片段预定义但未必相同,或基于各种准则(例如,个别安装的能力)而自适应。
102.在生成片段127之后,补丁分割单元118可以调用压缩单元266以彼此独立地压缩片段127中的每一个(使得可以单独地解压缩片段127中的每一个)(518)。应用提供商服务器204然后可以迭代地将片段127(可能一次一个)输出到计算设备102(其中一个片段可以
包括元数据119),补丁生成单元116可以将其连同补丁117一起传递到补丁分割单元118。应用提供商服务器204可以输出片段127的初始片段(520)。
103.应用安装器148可以以压缩形式接收应用130a的补丁117的初始片段127a,以便潜在地减少下载片段127a所需的时间量并且减少下载中所使用的网络资源。这样,应用安装器148可以接收已压缩的初始片段127a(522)。为了解压缩被表示为片段127a的diff片段123的资产142,分割的补丁应用单元136可以调用解压缩单元366,该解压缩单元366可以解压缩片段127a(524)。
104.虚拟化单元362可以接下来以与上面关于图2的示例中所示的应用提供商服务器204的虚拟化单元262描述的方式类似的(如果不是基本类似的)方式来虚拟化未打补丁的应用130a(526)。虚拟化单元362可以创建使得包括资产132的未打补丁的应用130a表现为单个文件的单个虚拟资产134a。
105.分割的补丁应用单元136接下来可以提取命令121并且根据命令121开始应用diff片段123。分割的补丁应用单元136可以为每个diff片段123调用解压缩单元366,因为每个diff片段都由命令121引用,因为提取将diff片段123的经解压缩形式中的每一个将直接写入到虚拟资产134b(作为资产142之一)。以这种方式,分割的补丁应用单元136可以以潜在地更存储器有效的方式处理片段127a。以这种方式,分割的补丁应用单元136可以解压缩初始片段127a(527)并且将初始片段127应用于第一虚拟资产以获得第二虚拟资产(528)。
106.分割的补丁应用单元136可以在成功应用初始片段127a之后生成初始片段127a的应用已完成的确认,并且将确认发送到应用提供商服务器204(530、532)。应用提供商服务器204可以接收确认(534)并且确定是否存在要发送的附加片段127(536)。当存在要发送的附加片段127时,应用提供商服务器204输出片段127的下一片段(538),计算设备302可以如上所述接收、解压缩并且应用该片段(540

544)。计算设备302可以生成接收到的片段的应用完成的另一确认,如上所述输出确认(546、532)。
107.该过程可以继续,直到应用提供商服务器204确定不存在附加片段(532

546)为止。当没有附加片段被剩下以发送给计算设备302时(“否”536),应用提供商服务器204可以发送不存在附加片段的指示(或者,换言之,已经提供并且应用了整个补丁)(548)。
108.图6是示出根据本公开中描述的存储器高效打补丁技术的在向图3的示例中所示的计算设备提供补丁时图2的示例中所示的应用提供商服务器的示例操作的另一流程图。如上所述,应用提供商服务器204可以最初经由应用商店接口260从负责支持应用110a的软件开发者接收已打补丁的应用110b(600)。应用提供商服务器204可以响应于接收到已打补丁的应用110b而调用补丁生成单元116来生成表示未打补丁的应用110a与已打补丁的应用110b之间的差异的补丁117。在这个方面,补丁生成单元116可以基于未打补丁的应用110a和已打补丁的应用110b来生成补丁117。
109.为了生成补丁117,补丁生成单元116可以首先调用虚拟化单元262。虚拟化单元262可以虚拟化形成应用的多个资产,诸如资产112和122中的每一个,所述应用诸如相应的未打补丁的应用110a和已打补丁应用110b。虚拟化单元262可以将多个不同资产彼此附加,并且将附加的资产封装为具有扩展功能的单个对象,以处理如何访问附加资产并且将其存储到底层文件系统。虚拟化单元262可以以这种方式虚拟化未打补丁的应用110a以获得第一虚拟资产114a(602),并且虚拟化打补丁的应用110b以获得第二虚拟资产114b(604)。
110.接下来,补丁生成单元116可关于虚拟资产114a和虚拟资产114b应用上述打补丁的算法中的一个或多个,以获得可共同表示补丁117的命令121和diff 123(606)。在应用打补丁的算法期间,补丁生成单元116可以调用元数据生成单元264,其可表示被配置为生成元数据119的单元,该元数据119指示在将补丁117应用到未打补丁的应用的其它实例(例如图1的示例中所示的计算设备102的未打补丁的应用130a)期间何时可以删除未打补丁的应用110a的资产112(608)。
111.在生成补丁117之后,应用提供商服务器204可以调用应用商店接口260以经由通信单元242与计算设备102接口,以指示补丁117可用于下载(610)。计算设备302的uic 344可以接收指示为未打补丁的应用130a下载补丁,诸如补丁117的请求的指示(612),并且ui模块146可将该请求转发给应用安装器148。响应于下载补丁117的请求的指示,应用安装器148然后可以将对补丁117的请求发送到应用提供商服务器204(614)。
112.应用提供商服务器204此后可以接收对补丁117的请求(616)并且输出补丁117(可能为如上所述的一个或多个片段127)连同元数据119(618)。分割的补丁应用单元136可以接收补丁117和元数据119(620),其中元数据119可以标识分割的补丁应用单元136何时可以删除资产132。在一些示例中,分割的补丁应用单元136可以接收元数据119连同发送到计算设备302的第一片段(例如,片段127a),其中元数据119在一些示例中可以被附加到片段127a。响应于接收到片段127a,分割的补丁应用单元136可以调用元数据处理单元364。元数据处理单元364可以从片段127a解析元数据119,然后处理元数据119以在应用片段127期间(或者,换句话说,在应用补丁117期间)移除资产132(622)。
113.分割的补丁应用单元136可以以这种方式继续迭代地接收片段127,且在应用片段127中的连续片段之前个别地应用片段127中的每一个。在一些示例中,分割的补丁应用单元136可以与应用提供商服务器204接口以提供成功应用了片段127中的前一个的确认,并且仅在接收到确认之后,应用提供商服务器104才可以传送片段127中的下一个,以潜在地确保保存了可用存储器资源,使得补丁117的应用可以成功完成。
114.所述技术的各个方面可以实现下面关于以下条款阐述的各个示例。
115.条款1a.一种方法,包括:由一个或多个处理器虚拟化形成未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;由所述一个或多个处理器获得表示形成已打补丁的应用的第二多个资产的单个第二虚拟资产;由所述一个或多个处理器并基于所述单个第一虚拟资产和所述单个第二虚拟资产之间的差异来获得补丁,所述补丁标识如何更新所述单个第一虚拟资产以获得所述单个第二虚拟资产并且包括所述单个第二虚拟资产的用于更新所述单个第一虚拟资产的部分;由所述一个或多个处理器将所述补丁分割成多个片段;以及,由所述一个或多个处理器并向用户计算设备输出来自所述多个片段的单个片段以用于由所述用户计算设备单独安装到所述未打补丁的应用。
116.条款2a.根据条款1a所述的方法,其中,所述单个片段包括指示如何更新所述第一虚拟资产以获得所述单个第二虚拟资产的复制命令和写入命令。
117.条款3a.根据条款1a和2a的任何组合所述的方法,进一步包括:生成指示何时删除所述单个第一虚拟资产的部分的元数据;以及向所述用户计算设备输出所述元数据。
118.条款4a.根据条款3a所述的方法,其中,所述元数据包括读取索引,所述读取索引指示在哪个累积存储器读取之后在来自所述多个片段的所述单个片段的单独应用期间删
除所述单个第一虚拟资产的部分。
119.条款5a.根据条款4a所述的方法,其中所述读取索引包括指示对所述单个第一虚拟资产的所述部分的删除的负值。
120.条款6a.根据条款3a

5a的任何组合所述的方法,其中,所述单个第一虚拟资产的所述部分包括所述第一多个资产中的资产。
121.条款7a.根据条款1a

5a的任何组合所述的方法,进一步包括压缩所述多个片段中的每个片段以获得多个压缩片段。
122.条款8a.根据条款1a

6a的任何组合所述的方法,其中,输出所述单个片段包括仅在从所述用户计算设备接收到来自所述多个片段的先前发送的片段已经被安装的确认之后才输出所述单个片段。
123.条款9a.根据条项1a

8a的任何组合所述的方法,其中,将所述补丁分割成多个片段包括:获得描述所述用户计算设备的可用存储器大小的设备信息;以及基于所述用户计算设备的所述可用存储器大小来确定来自所述多个片段的每个片段的大小。
124.条款10a.根据条款1a

9a的任何组合所述的方法,其中,所述多个片段中的至少两个片段的大小是相同的。
125.条款11a.根据条款1a

9a的任何组合所述的方法,其中,来自所述多个片段的每个片段的大小是预定义的。
126.条款12a.根据条款1a

11a的任何组合所述的方法,其中,所述第一多个资产和所述第二多个资产各自包括以下中的一个或多个:图像、动画、纹理、音频数据或视频数据。
127.条款13a.一种服务器计算设备,包括:存储器,所述存储器被配置为存储形成未打补丁的应用的第一多个资产和形成已打补丁的应用的第二多个资产;以及一个或多个处理器,所述一个或多个处理器被配置为:虚拟化所述第一多个资产以获得单个第一虚拟资产;获得表示所述第二多个资产的单个第二虚拟资产;基于所述单个第一虚拟资产和所述单个第二虚拟资产之间的差异,获得补丁,所述补丁标识如何更新所述单个第一虚拟资产以获得所述单个第二虚拟资产并且包括所述单个第二虚拟资产的用于更新所述单个第一虚拟资产的部分;将所述补丁分割成多个片段;以及,向用户计算设备输出来自所述多个片段的单个片段以用于由所述用户计算设备单独安装到所述未打补丁的应用。
128.条款14a.根据条款13a所述的服务器计算设备,其中,所述单个片段包括指示如何更新所述第一虚拟资产以获得所述单个第二虚拟资产的复制命令和写入命令。
129.条款15a.根据条款13a和14a的任何组合所述的服务器计算设备,其中,所述一个或多个处理器进一步被配置为:生成指示何时删除所述单个第一虚拟资产的部分的元数据;以及向所述用户计算设备输出所述元数据。
130.条款16a.根据条款15a所述的服务器计算设备,其中,所述元数据包括读取索引,所述读取索引指示在哪个累积存储器读取之后在来自所述多个片段的所述单个片段的单独应用期间删除所述单个第一虚拟资产的一部分。
131.条款17a.根据条款16a所述的服务器计算设备,其中,所述读取索引包括指示对所述单个第一虚拟资产的所述部分的删除的负值。
132.条款18a.根据条款15a

17a的任何组合所述的服务器计算设备,其中,所述单个第一虚拟资产的所述部分包括所述第一多个资产中的资产。
133.条款19a.根据条款13a

17a的任何组合所述的服务器计算设备,其中,所述一个或多个处理器进一步被配置为压缩所述多个片段中的每个片段以获得多个压缩片段。
134.条款20a.根据条款13a

18a的任何组合所述的服务器计算设备,其中,所述一个或多个处理器被配置为仅在从所述用户计算设备接收到来自所述多个片段的先前发送的片段已经被安装的确认之后才输出所述单个片段。
135.条款21a.根据条款13a

20a的任何组合所述的服务器计算设备,其中,所述一个或多个处理器被配置为:获得描述所述用户计算设备的可用存储器大小的设备信息;以及基于所述用户计算设备的所述可用存储器大小来确定来自所述多个片段的每个片段的大小。
136.条款22a.根据条款13a

21a的任何组合所述的服务器计算设备,其中,所述多个片段中的至少两个片段的大小是相同的。
137.条款23a.根据条款13a

21a的任何组合所述的服务器计算设备,其中,来自所述多个片段的每个片段的大小是预定义的。
138.条款24a.根据条款13a至23a的任何组合所述的服务器计算设备,其中,所述第一多个资产和所述第二多个资产各自包括以下中的一个或多个:图像、动画、纹理、音频数据或视频数据。
139.条款25a.一种具有存储在其上的指令的非暂时性计算机可读存储介质,所述指令在被执行时使得一个或多个处理器:虚拟化形成未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;获得表示形成已打补丁的应用的第二多个资产的单个第二虚拟资产;基于所述单个第一虚拟资产和所述单个第二虚拟资产之间的差异来获得补丁,所述补丁标识如何更新所述单个第一虚拟资产以获得所述单个第二虚拟资产并且包括所述单个第二虚拟资产的用于更新所述单个第一虚拟资产的部分;将所述补丁分割成多个片段;以及,向用户计算设备输出来自所述多个片段的单个片段以用于由所述用户计算设备单独安装到所述未打补丁的应用。
140.条款1b.一种方法,包括:由用户计算设备的一个或多个处理器并从服务器计算设备获得多个片段中的单个片段,所述多个片段表示补丁,所述补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括所述第二虚拟化资产的用于更新所述单个第一虚拟化资产的部分;由所述一个或多个处理器虚拟化形成被安装在所述用户计算设备处的所述未打补丁的应用的第一多个资产,以获得所述单个第一虚拟资产;以及由所述一个或多个处理器将所述单个片段应用于所述单个第一虚拟资产以构造单个第二虚拟资产的至少部分,所述单个第二虚拟资产包括形成已打补丁的应用的第二多个资产。
141.条款2b.根据条款1b所述的方法,其中,所述单个片段包括以下中的一个或多个:指示如何更新所述第一虚拟资产以获得所述单个第二虚拟资产的删除命令、复制命令和写入命令。
142.条款3b.根据条款1b和2b的任何组合所述的方法,进一步包括:获得指示何时删除所述单个第一虚拟资产的部分的元数据;以及基于所述元数据来删除所述单个第一虚拟资产的部分。
143.条款4b.根据条款3b所述的方法,其中,所述元数据包括读取索引,所述读取索引指示在哪个累积存储器读取之后在应用所述多个片段期间删除所述单个第一虚拟资产的
部分,其中所述方法进一步包括:维护反映在应用所述多个片段期间对所述单个第一虚拟资产的读取次数的读取计数器;以及当所述读取计数器等于所述读取索引时删除所述单个第一虚拟资产的所述部分。
144.条款5b.根据条款4b所述的方法,其中,所述读取索引包括指示在不参考所述读取计数器的情况下删除所述单个第一虚拟资产的所述部分的负值。
145.条款6b.根据条款3b

5b的任何组合所述的方法,其中,所述单个第一虚拟资产的所述部分包括所述第一多个资产中的资产。
146.条款7b.根据条款1b

5b的任何组合所述的方法,其中,所述补丁包括压缩补丁,并且其中所述方法包括解压缩所述单个片段以将所述第二虚拟资产的所述部分中的一个部分直接写入所述已打补丁的应用。
147.条款8b.根据条款1b

6b的任何组合所述的方法,进一步包括向所述服务器计算设备输出来自所述多个片段的先前发送的片段已被安装的确认,其中获得所述单个片段包括响应于输出所述确认而接收所述单个片段。
148.条款9b.根据条款1b

8b的任何组合所述的方法,进一步包括在将所述单个片段应用于所述单个第一虚拟资产之后,在接收到所述多个片段中的连续单个片段之前删除所述单个片段。
149.条款10b.根据条款1b

9b的任何组合所述的方法,进一步包括:确定所述单个第二虚拟资产的所述部分中的一部分未完全提供在所述单个片段中;响应于确定所述一部分未完全提供在所述单个片段中,高速缓存所述单个片段;从所述服务器计算设备请求所述多个片段中的连续片段;响应于对所述连续片段的所述请求,接收所述连续片段;以及将所述单个片段和所述连续片段应用于所述单个第一虚拟资产以构造所述单个第二虚拟资产的所述至少部分。
150.条款11b.根据条款1b

10b的任何组合所述的方法,进一步包括:获得描述所述用户计算设备的可用存储器大小的设备信息;以及向所述服务器计算设备输出所述设备信息以使得所述服务器计算设备能够确定来自所述多个片段的每个片段的大小。
151.条款12b.根据条款1b

10b的任何组合所述的方法,其中,所述多个片段中的至少两个片段的大小是相同的。
152.条款13b.根据条款1b

10b的任何组合所述的方法,其中,来自所述多个片段的每个片段的大小是预定义的。
153.条款14b.根据条款1b

13b的任何组合所述的方法,其中,所述第一多个资产和所述第二多个资产各自包括以下中的一个或多个:图像、动画、纹理、音频数据或视频数据。
154.条款15b,一种用户计算设备,包括:存储器,所述存储器被配置为存储由服务器计算设备提供的多个片段中的单个片段,所述多个片段表示补丁,所述补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括所述第二虚拟化资产的用于更新所述单个第一虚拟化资产的部分;以及一个或多个处理器,其被配置为虚拟化形成被安装在所述用户计算设备处的所述未打补丁的应用的第一多个资产,以获得所述单个第一虚拟资产;以及将所述单个片段应用于所述单个第一虚拟资产以构造单个第二虚拟资产的至少部分,所述单个第二虚拟资产包括形成已打补丁的应用的第二多个资产。
155.条款16b.根据条款15b所述的用户计算设备,其中,所述单个片段包括以下中的一个或多个:指示如何更新所述第一虚拟资产以获得所述单个第二虚拟资产的删除命令、复制命令和写入命令。
156.条款17b.根据条款15b和16b的任何组合所述的用户计算设备,其中,所述一个或多个处理器进一步被配置为:获得指示何时删除所述单个第一虚拟资产的部分的元数据;以及基于所述元数据来删除所述单个第一虚拟资产的部分。
157.条款18b.根据条款17b所述的用户计算设备,其中,所述元数据包括读取索引,所述读取索引指示在哪个累积存储器读取之后在应用所述多个片段期间删除所述单个第一虚拟资产的部分,并且其中所述一个或多个处理器进一步被配置为:维护反映在应用所述多个片段期间对所述单个第一虚拟资产的读取次数的读取计数器;以及当所述读取计数器等于所述读取索引时删除所述单个第一虚拟资产的所述部分。
158.条款19b.根据条款18b所述的用户计算设备,其中,所述读取索引包括指示在不参考所述读取计数器的情况下删除所述单个第一虚拟资产的所述部分的负值。
159.条款20b.根据条款17b

19b的任何组合所述的用户计算设备,其中,所述单个第一虚拟资产的所述部分包括所述第一多个资产中的资产。
160.条款21b.根据条款15b

19b的任何组合所述的用户计算设备,其中,所述单个片段包括单个压缩片段,并且其中所述一个或多个处理器进一步被配置为解压缩所述单个压缩片段以将所述第二虚拟资产的所述部分中的一个部分直接写入所述已打补丁的应用。
161.条款22b.根据条款15b

20b的任何组合所述的用户计算设备,其中,所述一个或多个处理器进一步被配置为向所述服务器计算设备输出来自所述多个片段的先前发送的片段已被安装的确认,其中获得所述单个片段包括响应于输出所述确认而接收所述单个片段。
162.条款23b.根据条款15b

22b的任何组合所述的用户计算设备,其中,所述一个或多个处理器进一步被配置为在将单个片段应用于所述单个第一虚拟资产之后,在接收到多个片段中的连续单个片段之前删除所述单个片段。
163.条款24b.根据条款15b至23b的任何组合所述的用户计算设备,其中,所述一个或多个处理器进一步被配置为:确定所述单个第二虚拟资产的所述部分中的一部分未完全提供在所述单个片段中;响应于确定所述部分未完全提供在所述单个片段中,高速缓存所述单个片段;从所述服务器计算设备请求所述多个片段中的连续片段;响应于对所述连续片段的所述请求,接收所述连续片段;以及将所述单个片段和所述连续片段应用于所述单个第一虚拟资产以构造所述单个第二虚拟资产的所述至少部分。
164.条款25b.根据条款15b

24b的任何组合所述的用户计算设备,其中,所述一个或多个处理器进一步被配置为:获得描述所述用户计算设备的可用存储器大小的设备信息;以及向所述服务器计算设备输出所述设备信息以使得所述服务器计算设备能够确定来自所述多个片段的每个片段的大小。
165.条款26b.根据条款15b

24b的任何组合所述的用户计算设备,其中,所述多个片段中的至少两个片段的大小是相同的。
166.条款27b.根据条款15b

24b的任何组合所述的用户计算设备,其中,来自所述多个片段的每个片段的大小是预定义的。
167.条款28b.根据条款15b

27b的任何组合所述的用户计算设备,其中,所述第一多个资产和所述第二多个资产各自包括以下中的一个或多个:图像、动画、纹理、音频数据或视频数据。
168.条款29b.一种具有存储在其上的指令的非暂时性计算机可读存储介质,所述指令在被执行时使得用户计算设备的一个或多个处理器:从服务器计算设备获得多个片段中的单个片段,所述多个片段表示补丁,所述补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括所述第二虚拟化资产的用于更新所述单个第一虚拟化资产的部分;虚拟化形成被安装在所述用户计算设备处的所述未打补丁的应用的第一多个资产,以获得所述单个第一虚拟资产;以及将所述单个片段应用于所述单个第一虚拟资产以构造单个第二虚拟资产的至少部分,所述单个第二虚拟资产包括形成已打补丁的应用的第二多个资产。
169.条款1c.一种方法,包括:由一个或多个处理器虚拟化形成未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;由所述一个或多个处理器虚拟化形成已打补丁的应用的第二多个资产,以获得单个第二虚拟资产;由所述一个或多个处理器并基于所述单个第一虚拟资产和所述单个第二虚拟资产之间的差异来获得补丁,所述补丁标识如何更新所述第一虚拟资产以获得所述单个第二虚拟资产并且包括所述第二虚拟资产的用于更新所述单个第一虚拟资产的部分;由所述一个或多个处理器并在获得所述补丁的同时生成指示用户计算设备何时能够删除所述单个第一虚拟资产的部分的元数据;以及由所述一个或多个处理器并向所述用户计算设备输出所述补丁和所述元数据。
170.条款2c.根据条款1c所述的方法,其中,所述元数据包括读取索引,所述读取索引指示在哪个累积存储器读取之后在应用所述补丁期间删除由所述用户计算设备存储的所述单个第一虚拟资产的部分。
171.条款3c.根据条款2c所述的方法,其中,所述读取索引包括指示对由所述用户计算设备存储的所述单个第一虚拟资产的所述部分的删除的负值。
172.条款4c.根据条款2c和3c的任何组合所述的方法,其中,所述单个第一虚拟资产的所述部分包括所述第一多个资产中的资产。
173.条款5c.根据条款1c

4c的任何组合所述的方法,进一步包括压缩所述补丁以获得压缩补丁。
174.条款6c.根据条款1c

5c的任何组合所述的方法,其中,所述补丁包括以下中的一个或多个:指示如何更新所述第一虚拟资产以获得所述单个第二虚拟资产的删除命令、复制命令和写入命令。
175.条款7c.根据条款1c

6c的任何组合所述的方法,进一步包括将所述补丁分割成多个片段,其中输出所述补丁包括向所述用户计算设备输出来自所述多个片段的单个片段以用于由所述用户计算设备单独安装到所述未打补丁的应用。
176.条款8c.根据条款7c所述的方法,其中,输出所述单个片段包括仅在从所述用户计算设备接收到来自所述多个片段的先前发送的片段已经被安装的确认之后才输出所述单个片段。
177.条款9c.根据条款7c和8c的任何组合所述的方法,其中,将所述片段分割成多个片段包括:获得描述所述用户计算设备的可用存储器大小的设备信息;以及基于所述用户计
算设备的所述可用存储器大小来确定来自所述多个片段的每个片段的大小。
178.条款10c.根据条款6c

9c的任何组合所述的方法,其中,所述多个片段中的至少两个片段的大小是相同的。
179.条款11c.根据条款6c

9c的任何组合所述的方法,其中,来自所述多个片段的每个片段的大小是预定义的。
180.条款12c.根据条款1c

11c的任何组合所述的方法,其中,所述第一多个资产和所述第二多个资产各自包括以下中的一个或多个:图像、动画、纹理、音频数据或视频数据。
181.条款13c.一种服务器计算设备,包括:存储器,所述存储器被配置为存储形成未打补丁的应用的第一多个资产和形成已打补丁的应用的第二多个资产;以及一个或多个处理器,所述一个或多个处理器被配置为:虚拟化所述第一多个资产,以获得单个第一虚拟资产;虚拟化所述第二多个资产,以获得单个第二虚拟资产;基于所述单个第一虚拟资产和所述单个第二虚拟资产之间的差异来获得补丁,所述补丁标识如何更新所述第一虚拟资产以获得所述单个第二虚拟资产并且包括所述第二虚拟资产的用于更新所述单个第一虚拟资产的部分;在获得所述补丁的同时生成指示用户计算设备何时能够删除所述单个第一虚拟资产的部分的元数据;以及向所述用户计算设备输出所述补丁和所述元数据。
182.条款14c.根据条款13c所述的服务器计算设备,其中,所述元数据包括读取索引,所述读取索引指示在哪个累积存储器读取之后在应用所述补丁期间删除由所述用户计算设备存储的所述单个第一虚拟资产的部分。
183.条款15c.根据条款14c所述的服务器计算设备,其中,所述读取索引包括指示对由所述用户计算设备存储的所述单个第一虚拟资产的所述部分的删除的负值。
184.条款16c.根据条款14c和15c的任何组合所述的服务器计算设备,其中,所述单个第一虚拟资产的所述部分包括所述第一多个资产中的资产。
185.条款17c.根据条款13c

16c的任何组合所述的服务器计算设备,其中,所述一个或多个处理器进一步被配置为压缩所述补丁以获得压缩补丁。
186.条款18c.根据条款13c

17c的任何组合所述的服务器计算设备,其中,所述补丁包括以下中的一个或多个:指示如何更新所述第一虚拟资产以获得所述单个第二虚拟资产的删除命令、复制命令和写入命令。
187.条款19c.根据条款13c

18c的任何组合所述的服务器计算设备,其中,所述一个或多个处理器进一步被配置为将所述补丁分割成多个片段,其中输出所述补丁包括向所述用户计算设备输出来自所述多个片段的单个片段以用于由所述用户计算设备单独安装到所述未打补丁的应用。
188.条款20c.根据条款19c所述的服务器计算设备,其中,所述一个或多个处理器被配置成仅在从所述用户计算设备接收到来自所述多个片段的先前发送的片段已经被安装的确认之后才输出所述单个片段。
189.条款21c.根据条款19c和20c的任何组合所述的服务器计算设备,其中,所述一个或多个处理器被配置为:获得描述所述用户计算设备的可用存储器大小的设备信息;以及基于所述用户计算设备的所述可用存储器大小来确定来自所述多个片段的每个片段的大小。
190.条款22c.根据条款18c

21c的任何组合所述的服务器计算设备,其中,所述多个片
段中的至少两个片段的大小是相同的。
191.条款23c.根据条款18c

21c的任何组合所述的服务器计算设备,其中,来自所述多个片段的每个片段的大小是预定义的。
192.条款24c.根据条款13c

23c的任何组合所述的服务器计算设备,其中,所述第一多个资产和所述第二多个资产各自包括以下中的一个或多个:图像、动画、纹理、音频数据或视频数据。
193.条款25c.一种具有存储在其上的指令的非暂时性计算机可读存储介质,所述指令在被执行时使得一个或多个处理器:虚拟化形成未打补丁的应用的第一多个资产,以获得单个第一虚拟资产;虚拟化形成已打补丁的应用的第二多个资产,以获得单个第二虚拟资产;基于所述单个第一虚拟资产和所述单个第二虚拟资产之间的差异来获得补丁,所述补丁标识如何更新所述第一虚拟资产以获得所述单个第二虚拟资产和所述第二虚拟资产的用于更新所述单个第一虚拟资产的部分;在获得所述补丁的同时生成指示用户计算设备何时能够删除所述单个第一虚拟资产的部分的元数据;以及向所述用户计算设备输出所述补丁和所述元数据。
194.条款1d.一种方法,包括:由用户计算设备的一个或多个处理器从服务器计算设备获得补丁,所述补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括所述第二虚拟化资产的用于更新所述单个第一虚拟化资产的部分;由所述一个或多个处理器从所述服务器计算设备获得指示所述用户计算设备何时能够删除所述单个第一虚拟资产的部分的元数据;由所述一个或多个处理器虚拟化形成被安装在所述用户计算设备处的所述未打补丁的应用的第一多个资产,以获得所述单个第一虚拟资产;以及由所述一个或多个处理器将所述补丁应用于所述单个第一虚拟资产以构造所述单个第二虚拟资产,所述单个第二虚拟资产包括形成已打补丁的应用的第二多个资产;以及在应用所述补丁期间基于所述元数据删除所述单个第一虚拟资产的所述部分。
195.条款2d.根据条款1d所述的方法,其中,所述补丁包括以下中的一个或多个:指示如何更新所述第一虚拟资产以获得所述单个第二虚拟资产的删除命令、复制命令和写入命令。
196.条款3d.根据条款1d和2d的任何组合所述的方法,其中,元数据包括读取索引,所述读取索引指示在哪个累积存储器读取之后在应用所述补丁期间删除所述单个第一虚拟资产的所述部分,其中在应用所述补丁期间删除所述单个第一虚拟资产的所述部分包括:维护反映在应用所述补丁期间对所述单个第一虚拟资产的读取次数的读取计数器;以及当所述读取计数器等于所述读取索引时删除所述单个第一虚拟资产的所述部分。
197.条款4d.根据条款3d所述的方法,其中,读取索引包括指示在不参考所述读取计数器的情况下删除所述单个第一虚拟资产的所述部分的负值。
198.条款5d.根据条款1d

4d的任何组合所述的方法,其中,所述单个第一虚拟资产的所述部分包括所述第一多个资产中的资产。
199.条款6d.根据条款1d

5d的任何组合所述的方法,
200.其中,所述补丁包括压缩补丁,并且其中所述方法包括解压缩所述单个压缩补丁以将所述第二虚拟资产的所述部分中的一部分直接写入所述已打补丁的应用。
201.条款7d.根据条款1d

6d的任何组合所述的方法,其中,获得所述补丁包括获得多个片段中的单个片段,所述多个片段表示所述补丁,并且其中应用所述补丁包括将所述单个片段应用于所述单个第一虚拟资产以构造所述单个第二虚拟资产的至少部分。
202.条款8d.根据条款7d所述的方法,进一步包括向所述服务器计算设备输出来自多个片段的先前发送的片段已被安装的确认,并且其中获得单个片段包括响应于输出确认而接收所述单个片段。
203.条款9d.根据条款7d和8d的任何组合所述的方法,进一步包括在将所述单个片段应用于所述单个第一虚拟资产之后,在接收到多个片段中的连续单个片段之前删除所述单个片段。
204.条款10d.根据条款7d

9d的任何组合所述的方法,进一步包括:确定所述单个第二虚拟资产的所述部分中的一部分未完全提供在所述单个片段中;响应于确定所述一部分未完全提供在所述单个片段中,高速缓存所述单个片段;从所述服务器计算设备请求所述多个片段中的连续片段;响应于对所述连续片段的所述请求,接收所述连续片段;以及将所述单个片段和所述连续片段应用于所述单个第一虚拟资产以构造所述单个第二虚拟资产的至少所述部分。
205.条款11d.根据条款7d

10d的任何组合所述的方法,进一步包括:获得描述所述用户计算设备的可用存储器大小的设备信息;以及向所述服务器计算设备输出所述设备信息以使得所述服务器计算设备能够确定来自所述多个片段的每个片段的大小。
206.条款12d.根据条款7d

10d的任何组合所述的方法,其中,所述多个片段中的至少两个片段的大小是相同的。
207.条款13d.根据条款7d

10d的任何组合所述的方法,其中,来自所述多个片段的每个片段的大小是预定义的。
208.条款14d.根据条款1d

13d的任何组合所述的方法,其中,所述第一多个资产和所述第二多个资产各自包括以下中的一个或多个:图像、动画、纹理、音频数据或视频数据。
209.条款15d.一种用户计算设备,包括:存储器,所述存储器被配置为存储补丁,所述补丁标识如何更新表示未打补丁的应用的单个第一虚拟资产以获得表示已打补丁的应用的单个第二虚拟资产并且包括所述第二虚拟化资产的用于更新所述单个第一虚拟化资产的部分;以及一个或多个处理器,所述一个或多个处理器被配置为:将所述补丁应用于所述单个第一虚拟资产以构造所述单个第二虚拟资产,所述单个第二虚拟资产包括形成已打补丁的应用的第二多个资产;以及在应用所述补丁期间基于所述元数据删除所述单个第一虚拟资产的所述部分。
210.条款16d.根据条款15d所述的用户计算设备,其中,所述补丁包括以下中的一个或多个:指示如何更新所述第一虚拟资产以获得所述单个第二虚拟资产的删除命令、复制命令和写入命令。
211.条款17d.根据条款15d和16d的任何组合所述的方法,其中,元数据包括读取索引,所述读取索引指示在哪个累积存储器读取之后在应用所述补丁期间删除所述单个第一虚拟资产的部分,其中在应用所述补丁期间删除所述单个第一虚拟资产的所述部分包括:维护反映在应用所述补丁期间对所述单个第一虚拟资产的读取次数的读取计数器;以及当所述读取计数器等于所述读取索引时删除所述单个第一虚拟资产的所述部分。
212.条款18d.根据条款17d所述的用户计算设备,其中,读取索引包括指示在不参考所述读取计数器的情况下删除所述单个第一虚拟资产的所述部分的负值。
213.条款19d.根据条款15d

18d的任何组合所述的用户计算设备,其中,所述单个第一虚拟资产的所述部分包括所述第一多个资产中的资产。
214.条款20d.根据条款15d

19d的任何组合所述的用户计算设备,其中,所述单个片段包括单个压缩片段,并且其中所述一个或多个处理器被配置为解压缩所述单个压缩补丁以将所述第二虚拟资产的所述部分中的一部分直接写入所述已打补丁的应用。
215.条款21d.根据权利要求15d

20d的任何组合所述的用户计算设备,其中,所述一个或多个处理器被配置为获得多个片段中的单个片段,所述多个片段表示所述补丁,并且其中所述一个或多个处理器被配置为将所述单个片段应用于所述单个第一虚拟资产以构造所述单个第二虚拟资产的至少所述部分。
216.条款22d.根据条款21d所述的用户计算设备,其中,所述一个或多个处理器进一步被配置为向所述服务器计算设备输出来自多个片段的先前发送的片段已被安装的确认,并且其中获得所述单个片段包括响应于输出所述确认而接收所述单个片段。
217.条款23d.根据条款21d和22d的任何组合所述的用户计算设备,其中,一个或多个处理器进一步被配置为在将所述单个片段应用于所述单个第一虚拟资产之后,在接收到多个片段中的连续单个片段之前删除所述单个片段。
218.条款24d.根据条款21d

23d的任何组合所述的用户计算设备,其中,所述一个或多个处理器进一步被配置为:确定所述单个第二虚拟资产的所述部分中的一部分未完全提供在所述单个片段中;响应于确定所述一部分未完全提供在所述单个片段中,高速缓存所述单个片段;从所述服务器计算设备请求所述多个片段中的连续片段;响应于对所述连续片段的所述请求,接收所述连续片段;以及将所述单个片段和所述连续片段应用于所述单个第一虚拟资产以构造所述单个第二虚拟资产的至少所述部分。
219.条款25d.根据条款21d

24d的任何组合所述的用户计算设备,其中,所述一个或多个处理器进一步被配置为:获得描述所述用户计算设备的可用存储器大小的设备信息;以及向所述服务器计算设备输出所述设备信息以使得所述服务器计算设备能够确定来自所述多个片段的每个片段的大小。
220.条款26d.根据条款21d

24d的任何组合所述的用户计算设备,其中,所述多个片段中的至少两个片段的大小是相同的。
221.条款27d.根据条款21d

24d的任何组合所述的用户计算设备,其中,来自所述多个片段的每个片段的大小是预定义的。
222.条款28d.根据条款15d

27d的任何组合所述的用户计算设备,其中,所述第一多个资产和所述第二多个资产各自包括以下中的一个或多个:图像、动画、纹理、音频数据或视频数据。
223.根据条款29d.一种具有存储在其上的指令的非暂时性计算机可读存储介质,所述指令在被执行时使得用户计算设备的一个或多个处理器:从服务器计算设备获得补丁,所述补丁标识如何更新表示未打补丁的应用的第一虚拟化资产以获得表示已打补丁的应用的单个第二虚拟化资产并且包括所述第二虚拟化资产的用于更新所述单个第一虚拟化资产的部分;虚拟化形成被安装在所述用户计算设备处的所述未打补丁的应用的第一多个资
产,以获得所述单个第一虚拟资产;以及将所述补丁应用于所述单个第一虚拟资产以构造所述单个第二虚拟资产,所述单个第二虚拟资产包括形成已打补丁的应用的第二多个资产;以及在应用所述补丁期间基于所述元数据删除所述单个第一虚拟资产的所述部分。
224.在一个或多个示例中,所描述的功能可以以硬件、软件、固件或其任何组合来实施。如果以软件实施,则功能可作为一个或一个以上指令或代码而存储在计算机可读介质上或经由计算机可读介质传输,且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于例如数据存储介质等有形介质,或包括促进例如根据通信协议将计算机程序从一处传送到另一处的任何介质的通信介质。以此方式,计算机可读介质一般可以对应于(1)非暂时性有形计算机可读存储介质或(2)诸如信号或载波之类的通信介质。数据存储介质可为可由一个或多个计算机或一个或多个处理器存取以检索用于实现本公开中所描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
225.通过示例而非限制,此类计算机可读存储介质可以包括ram、rom、eeprom、cd

rom或其它光盘存储、磁盘存储或其它磁性存储设备、快闪存储器或可用以存储呈指令或数据结构形式的所要程序代码且可由计算机存取的任何其它介质。而且,任何连接都被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传送指令,则同轴电缆、光纤电缆、双绞线、dsl或诸如红外线、无线电和微波等无线技术包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时介质,而是改为针对非暂时性有形存储介质。如本文所使用的,磁盘和光盘包括压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光盘用激光光学地再现数据。以上的组合也应包括在计算机可读介质的范围内。
226.指令可以由一个或多个处理器执行,所述一个或多个处理器诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指代前述结构中的任一者或适合于实施本文中所描述的技术的任何其它结构。另外,在一些方面,本文描述的功能性可在专用硬件和/或软件模块内提供。而且,所述技术可在一个或多个电路或逻辑元件中完全实现。
227.本公开的技术可实现在广泛多种设备或装置中,包含无线手机、集成电路(ic)或一组ic(例如,芯片组)。在本公开中描述各种组件、模块或单元以强调被配置以执行所公开的技术的设备的功能方面,但未必需要由不同硬件单元实现。相反,如上所述,各种单元可以组合在硬件单元中,或者由互操作硬件单元的集合提供,包括如上所述的一个或多个处理器,与适当的软件和/或固件结合。
228.已经描述了本公开的各个方面。这些和其它方面在以下权利要求的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献