软件在线升级方法、相关设备及存储介质与流程

文档序号:25041703发布日期:2021-05-14 10:57阅读:90来源:国知局
软件在线升级方法、相关设备及存储介质与流程

1.本公开涉及计算机软件技术领域,具体而言,涉及一种软件在线升级方法、装置、服务器、电子设备及存储介质。


背景技术:

2.在线升级一直是软件研发至关重要的一部分,从新功能的发布到原有问题的修复都离不开升级的功能。目前在线升级的模式主要有全量升级和增量升级两种模式,但无论哪种模式下的升级,都是针对应用程序层面的文件改动,存在的问题是即使很小的源代码改动也会产生比例级别的文件变化,这样就导致了升级时安装包体积偏大,占用较高带宽,导致升级速度较慢。


技术实现要素:

3.本公开实施例至少提供一种软件在线升级方法、相关设备及计算机可读存储介质。
4.第一方面,本公开实施例提供了一种软件在线升级方法,适用于服务端,包括:
5.对目标软件的旧版本文件和新版本文件分别进行反汇编,以生成对应的旧汇编文件和新汇编文件;所述旧版本文件和所述新版本文件为操作系统下的可执行文件;
6.基于所述旧汇编文件和所述新汇编文件,生成汇编层差异文件;
7.将所述汇编层差异文件发送至客户端,以使得所述客户端基于所述汇编层差异文件实现所述目标软件的在线升级。
8.本公开实施例中,通过对目标软件的旧版本文件和新版本文件分别进行反汇编,以生成对应的旧汇编文件和新汇编文件,然后基于所述旧汇编文件和所述新汇编文件,生成汇编层差异文件,然后将所述汇编层差异文件发送至客户端,以使得所述客户端基于所述汇编层差异文件实现所述目标软件的在线升级。如此,通过在汇编层比较新旧版本的文件差异从而实现软件升级,安装包的体积就会小很多,占用带宽更小,进而可以提高升级的速度。
9.根据第一方面,在一种可能的实施方式中,所述基于所述旧汇编文件和所述新汇编文件,生成汇编层差异文件,包括:
10.分别将所述旧汇编文件所对应的程序和所述新汇编文件所对应的程序划分为指令序列、内部指针的目标地址列表和普通字节三个部分;所述指令序列用于确定所述普通字节和所述内部指针如何交错调整以获取原始输入;
11.引入地址标签来标记所述内部指针,所述地址标签存储在目标数组中,并用所述目标数组的索引列表替换所述内部指针的目标地址列表;
12.基于所述索引列表,将所述旧汇编文件和所述新汇编文件进行比对,生成所述汇编层差异文件。
13.本公开实施例中,通过用目标数组的索引列表替换内部指针的目标地址列表,使
得比对出来的差异文件较小。
14.根据第一方面,在一种可能的实施方式中,所述基于所述索引列表,将所述旧汇编文件和所述新汇编文件进行比对,生成所述汇编层差异文件,包括:
15.通过对所述索引列表进行更改,进而移动所述目标数组中的地址,以在汇编层比较出所述旧汇编文件和所述新汇编文件之间的差异,生成所述汇编层差异文件。
16.本公开实施例中,可以通过索引列表的变化比对出旧汇编文件和新汇编文件的差异,进而得到汇编层差异文件,提高了比对的效率。
17.根据第一方面,在一种可能的实施方式中,所述目标数组为符号表,所述符号表的符号名称或标签是所述目标数组中的整数索引。
18.第二方面,本公开实施例还提供了一种软件在线升级方法,适用于客户端,包括:
19.获取目标软件的汇编层差异文件;所述汇编层差异文件是基于存储于服务端的与所述目标软件相对应的旧版本文件和新版本文件,并分别对所述旧版本文件和新版本文件进行反汇编后获得的;
20.基于存储的所述目标软件的旧版本文件以及所述汇编层差异文件,生成所述目标软件的目标新版本文件。
21.本公开实施例中,通过获取目标软件的汇编层差异文件,然后基于存储的所述目标软件的旧版本文件以及所述汇编层差异文件,生成所述目标软件的目标新版本文件。如此,相较于现有技术,降低了安装包的体积,占用带宽较小,进而提高了升级的速度。
22.根据第二方面,在一种可能的实施方式中,所述基于存储的所述目标软件的旧版本文件以及所述汇编层差异文件,生成所述目标软件的目标新版本文件,包括:
23.对所述目标软件的旧版本文件进行反汇编生成对应的目标旧汇编文件;
24.将所述目标旧汇编文件与所述汇编层差异文件合并,以生成目标汇编文件;
25.将所述目标汇编文件进行汇编,生成所述目标软件的目标新版本文件。
26.本公开实施例中,通过将目标软件的旧版本文件进行反汇编后再与汇编层差异文件合并,得到目标汇编文件,然后再对目标汇编文件进行汇编得到能够对目标软件进行升级的目标新版本文件,相较于现有技术,降低了目标新版本文件的获取难度以及复杂性。
27.根据第二方面,在一种可能的实施方式中,所述基于存储的所述目标软件的旧版本文件以及所述汇编层差异文件,生成所述目标软件的目标新版本文件之后,所述方法还包括:
28.基于所述目标新版本文件,对所述目标软件进行在线升级。
29.本实施方式中,在得到目标新版本文件之后,还基于该目标新版本文件,对所述目标软件进行在线升级,进而实现了目标软件升级的目的。
30.根据第二方面,在一种可能的实施方式中,所述基于所述目标新版本文件,对所述目标软件进行在线升级,包括:
31.在所述客户端新建目标文件夹,将所述目标新版本文件从原文件夹另存至所述目标文件夹中;所述目标文件夹与所述原文件夹的访问路径不同;
32.在所述目标软件运行时,访问所述目标文件夹下的目标新版本文件,对所述目标软件进行在线升级。
33.本公开实施例中,通过重新建立单独的文件夹,可以避免程序打开进程被占用的
情况,进而降低了升级失败的概率,提高了升级的安全性。
34.第三方面,本公开实施例还提供一种服务端,包括:
35.反汇编模块,用于对目标软件的旧版本文件和新版本文件分别进行反汇编,以生成对应的旧汇编文件和新汇编文件;所述旧版本文件和所述新版本文件为操作系统下的可执行文件;
36.生成模块,用于基于所述旧汇编文件和所述新汇编文件,生成汇编层差异文件;
37.发送模块,用于将所述汇编层差异文件发送至客户端,以使得所述客户端基于所述汇编层差异文件实现所述目标软件的在线升级。
38.根据第三方面,在一种可能的实施方式中,所述生成模块具体用于:
39.分别将所述旧汇编文件所对应的程序和所述新汇编文件所对应的程序划分为指令序列、内部指针的目标地址列表和普通字节三个部分;所述指令序列用于确定所述普通字节和所述内部指针如何交错调整以获取原始输入;
40.引入地址标签来标记所述内部指针,所述地址标签存储在目标数组中,并用所述目标数组的索引列表替换所述内部指针的目标地址列表;
41.基于所述索引列表,将所述旧汇编文件和所述新汇编文件进行比对,生成所述汇编层差异文件。
42.根据第三方面,在一种可能的实施方式中,所述生成模块具体用于:
43.通过对所述索引列表进行更改,进而移动所述目标数组中的地址,以在汇编层比较出所述旧汇编文件和所述新汇编文件之间的差异,生成所述汇编层差异文件。
44.第四方面,本公开实施例还提供一种客户端,包括:
45.获取单元,用于获取目标软件的汇编层差异文件;所述汇编层差异文件是基于存储于服务端的与所述目标软件相对应的旧版本文件和新版本文件,并分别对所述旧版本文件和新版本文件进行反汇编后获得的;
46.生成单元,用于基于存储的所述目标软件的旧版本文件以及所述汇编层差异文件,生成所述目标软件的目标新版本文件。
47.根据第四方面,在一种可能的实施方式中,所述生成单元具体用于:
48.对所述目标软件的旧版本文件进行反汇编生成对应的目标旧汇编文件;
49.将所述目标旧汇编文件与所述汇编层差异文件合并,以生成目标汇编文件;
50.将所述目标汇编文件进行汇编,生成所述目标软件的目标新版本文件。
51.根据第四方面,在一种可能的实施方式中,所述客户端还包括:
52.升级单元,用于基于所述目标新版本文件,对所述目标软件进行在线升级。
53.根据第四方面,在一种可能的实施方式中,所述升级单元具体用于:
54.在所述客户端新建目标文件夹,将所述目标新版本文件从原文件夹另存至所述目标文件夹中;所述目标文件夹与所述原文件夹的访问路径不同;
55.在所述目标软件运行时,访问所述目标文件夹下的目标新版本文件,对所述目标软件进行在线升级。
56.第五方面,本公开实施例还提供一种服务器,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当服务器运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一
方面中任一种可能的实施方式中所述的软件在线升级方法的步骤。
57.第六方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第二方面,或第二方面中任一种可能的实施方式中所述的软件在线升级方法的步骤。
58.第七方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面和第二方面,或第一方面和第二方面中任一种可能的实施方式中所述的软件在线升级方法的步骤。
59.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
60.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
61.图1示出了本公开实施例所提供的一种软件在线升级的示例性系统架构图;
62.图2示出了本公开实施例所提供的第一种适用于服务端的软件在线升级方法的流程图;
63.图3示出了本公开实施例所提供的一种生成汇编层差异文件的过程示意图;
64.图4示出了本公开实施例所提供的一种生成汇编层差异文件的方法流程图;
65.图5示出了本公开实施例所提供的第二种适用于客户端的软件在线升级方法的流程图;
66.图6示出了本公开实施例所提供的一种生成目标软件的目标新版本文件的方法流程图;
67.图7示出了本公开实施例所提供的一种生成目标软件的目标新版本文件的过程示意图;
68.图8示出了本公开实施例所提供的第三种适用于客户端的软件在线升级方法的流程图;
69.图9示出了本公开实施例所提供的一种服务端的结构示意图;
70.图10示出了本公开实施例所提供的一种客户端的结构示意图;
71.图11示出了本公开实施例所提供的一种电子设备的示意图;
72.图12示出了本公开实施例所提供的一种服务器的示意图。
具体实施方式
73.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实
施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
74.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
75.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
76.在线升级一直是软件研发至关重要的一部分,从新功能的发布到原有问题的修复都离不开升级的功能,现在常规的升级模式都是在线升级,目前在线升级的模式主要有全量升级和增量升级两种模式。
77.经研究发现,无论哪种模式下的升级,都是针对应用程序层面的文件改动,存在的问题是即使很小的源代码改动也会产生比例级别的文件变化,这样就导致了升级时安装包体积偏大,占用较高带宽,导致升级速度较慢。
78.基于上述研究,本公开提供了一种软件在线升级方法,该方法可以对目标软件的旧版本文件和新版本文件分别进行反汇编,以生成对应的旧汇编文件和新汇编文件,然后基于所述旧汇编文件和所述新汇编文件,生成汇编层差异文件,然后将所述汇编层差异文件发送至客户端,以使得所述客户端基于所述汇编层差异文件实现所述目标软件的在线升级。如此,通过在汇编层比较新旧版本的文件差异从而实现软件升级,安装包的体积就会小很多,占用带宽更小,进而可以提高升级的速度。
79.针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
80.下面结合具体的系统应用架构对本申请方案进行详细说明。
81.请参阅图1,图1示出了本公开实施例中的软件在线升级的示例性系统架构。
82.如图1所示,该系统架构1000可以包括服务端100和客户端200。其中,服务端100和客户端200之间通过网络300建立通信连接。也即,网络300用于在服务端100和客户端200之间提供通信链路的介质。网络300可以包括各种类型的有线通信链路或无线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆的,无线通信链路包括窄带物联网(narrow band internet of things,nb

iot)、蓝牙通信链路、无线保真(wireless

fidelity,wi

fi)通信链路或微波通信链路等。
83.其中,客户端200可以安装有各种通信客户端应用,例如:在线教育应用、在线直播课程应用、绘图应用、视频录制应用、视频播放应用、语音采集应用、语音交互应用、搜索类应用、及时通信工具、邮箱客户端以及社交平台软件等。一些实施方式中,客户端200包括但不限于智能手机、平板电脑、膝上型便携式计算机等。
84.服务端100可以是提供各种服务的服务器。示例性地,服务端100可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。
85.应理解,图1中的服务端100、客户端200和网络300的数目仅是示意性的。根据实现需要,可以是任意数量的服务端、客户端和网络。
86.示例性地,在实际使用过程中,服务端100更新了新版本的安装程序后,客户端200通过网络300发送检测更新的消息到服务端100,服务端100通过网络300返回是否有新版本的信息至客户端200,在有新版本的情况下,服务端200还发送相应的最新版本号以及下载地址等信息至客户端200,客户端200根据这些信息通过网络300下载最新的安装包并执行安装程序更新。
87.本公开实施例所提供的软件在线升级方法,适用于的场景通常可包括互联网+、在线教育、通信交互等。以在线教育场景为例,前述服务端100即可为在线教育企业的远端服务器等,前述客户端200通常可包括至少一个安装有在线教育应用的电子设备,对此不作任何限定。
88.下面将结合图2对本公开实施例所公开的第一种适用于服务端的软件在线升级方法进行详细介绍,本公开实施例所提供的第一种适用于服务端的软件在线升级方法的执行主体一般为服务器或者其他处理设备,也即图1中的服务端100。在一些可能的实现方式中,该软件在线升级方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
89.参见图2所示,为本公开实施例所提供的第一种适用于服务端的软件在线升级方法的流程图,其中,该方法可以应用于上述服务端100中,比如可以是本地或云端的服务器中。图2所示的软件在线升级方法包括以下s101~s103:
90.s101,对目标软件的旧版本文件和新版本文件分别进行反汇编,以生成对应的旧汇编文件和新汇编文件。
91.其中,所述旧版本文件和所述新版本文件为操作系统下的可执行文件。其中,操作系统可以是linux操作系统、安卓(android)操作系统等开放源代码的操作系统,在此不做限定。
92.示例地,目标软件是指操作系统中待升级的软件,所述旧版本文件是指服务端目标软件升级之前的文件,比如微信v1.0,所述新版本文件是指服务端目标软件需要更新的文件,比如微信v1.1。
93.示例地,本实施例中的反汇编是指利用反汇编器将可执行文件反汇编成汇编文件的过程。
94.s102,基于所述旧汇编文件和所述新汇编文件,生成汇编层差异文件。
95.示例地,软件升级的过程实质是旧版本软件到新版本软件转变的过程,而转变的过程实际就是寻找差异的过程,本实施方式中,是将目标软件的旧版本文件和新版本文件先转换成对应的旧汇编文件和新汇编文件,然后在汇编层通过比较两者的差异从而得到汇编层差异文件,由于在汇编层源代码的所有实体都是符号,还没被分配地址,这时候比较的差异和源代码的差异是一致的,但是相对于编译后比较差异文件会小很多,如此,通过在汇编层比较差异,可以使得安装包的体积会小很多,升级也就更快。
96.s103,将所述汇编层差异文件发送至客户端,以使得所述客户端基于所述汇编层差异文件实现所述目标软件的在线升级。
97.可以理解,由于目标软件的升级过程是在客户端进行的,在汇编层生成汇编层差异文件之后,服务端将汇编层差异文件发送至客户端,然后目标软件便可以在客户端基于
所述汇编层差异文件完成在线升级。
98.为便于对本实施例进行理解,针对上述s101~s103,参见图3所示,为本公开实施例所提供的一种生成汇编层差异文件的过程示意图。
99.从图3中可以看出,通过对目标软件的旧版本文件和新版本文件分别进行反汇编,以生成对应的旧汇编文件和新汇编文件,然后基于所述旧汇编文件和所述新汇编文件,生成汇编层差异文件,然后将所述汇编层差异文件发送至客户端,以使得所述客户端基于所述汇编层差异文件实现所述目标软件的在线升级。如此,通过在汇编层比较新旧版本的文件差异从而实现软件升级,安装包的体积就会小很多,占用带宽更小,进而可以提高升级的速度。
100.下面结合具体实施例,对上述s102进行详细介绍。
101.针对上述s102,在基于所述旧汇编文件和所述新汇编文件,生成汇编层差异文件时,如图4所示,可以包括以下s1021~s1023:
102.s1021,分别将所述旧汇编文件所对应的程序和所述新汇编文件所对应的程序划分为指令序列、内部指针的目标地址列表和普通字节三个部分;所述指令序列用于确定所述普通字节和所述内部指针如何交错调整以获取原始输入。
103.s1022,引入地址标签来标记所述内部指针,所述地址标签存储在目标数组中,并用所述目标数组的索引列表替换所述内部指针的目标地址列表。
104.其中,所述目标数组为符号表,所述符号表的符号名称或标签是所述目标数组中的整数索引。如此,通过用目标数组的索引列表替换内部指针的目标地址列表,使得比对出来的差异文件较小。
105.s1023,基于所述索引列表,将所述旧汇编文件和所述新汇编文件进行比对,生成所述汇编层差异文件。
106.在一些实施例中,通过对所述索引列表进行更改,进而移动所述目标数组中的地址,以在汇编层比较出所述旧汇编文件和所述新汇编文件之间的差异,生成所述汇编层差异文件。如此,可以通过索引列表的变化比对出旧汇编文件和新汇编文件的差异,进而得到汇编层差异文件,提高了比对的效率。
107.可以理解,上述软件在线升级方法主要是基于服务端100来执行的,而在实际应用中,得到反汇编差异文件之后,是需要客户端200来执行具体的升级任务的,因此,本公开实施例还提供第二种适用于客户端的软件在线升级方法。
108.本公开实施例所提供的第二种适用于客户端的软件在线升级方法的执行主体一般为电子设备或者其他硬件设备,也即图1中的客户端200。该电子设备例如包括:终端设备,终端设备可以为移动设备、用户终端、终端、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该软件在线升级方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
109.下面结合图5,对本公开实施例所提供的第二种适用于客户端的软件在线升级方法做详细介绍。参见图5所示,该方法包括以下s201~s202:
110.s201,获取目标软件的汇编层差异文件。
111.其中,所述汇编层差异文件是基于存储于服务端的与所述目标软件相对应的旧版本文件和新版本文件,并分别对所述旧版本文件和新版本文件进行反汇编后获得的,例如,
可以是通过前述图2所示的方法所获得的汇编层差异文件。
112.s202,基于存储的所述目标软件的旧版本文件以及所述汇编层差异文件,生成所述目标软件的目标新版本文件。
113.示例地,在客户端获取到汇编层差异文件之后,需要将存储于客户端的目标软件的旧版本文件和汇编层差异文件结合,以形成可以用来升级的目标新版本文件。
114.参见图6所示,为生成目标软件的目标新版本文件的方法流程图,该流程包括以下s2021~s2023:
115.s2021,对所述目标软件的旧版本文件进行反汇编生成对应的目标旧汇编文件。
116.可以理解,由于汇编层差异文件是在汇编层面的文件,需要将目标软件的旧版本文件同样进行反汇编,生成目标旧汇编文件,这样才能完成与汇编层差异文件的有效结合。
117.s2022,将所述目标旧汇编文件与所述汇编层差异文件合并,以生成目标汇编文件。
118.此步骤就是在汇编层,将目标旧汇编文件与汇编层差异文件合并,生成目标汇编文件的过程。
119.s2023,将所述目标汇编文件进行汇编,生成所述目标软件的目标新版本文件。
120.可以理解,由于客户端的目标软件最终是在可执行文件的基础上进行升级的,因此还要将目标汇编文件进行汇编,最终生成可以升级的目标新版本文件。
121.为便于对本实施例进行理解,针对上述s2021~s2023,参见图7所示,为本公开实施例所提供的目标软件的目标新版本文件生成过程。
122.从图7中可以看出,通过获取目标软件的汇编层差异文件,然后基于存储的所述目标软件的旧版本文件以及所述汇编层差异文件,生成所述目标软件的目标新版本文件。如此,相较于现有技术,降低了安装包的体积,占用带宽较小,进而提高了升级的速度。
123.参见图8所示,为本公开实施例所提供的第三种适用于客户端的软件在线升级方法的流程图,该流程包括以下s301~s303:
124.s301,获取目标软件的汇编层差异文件。
125.该步骤与图5中的步骤s201类似,在此不再赘述。
126.s302,基于存储的所述目标软件的旧版本文件以及所述汇编层差异文件,生成所述目标软件的目标新版本文件。
127.该步骤与图5中的步骤s202类似,在此不再赘述。
128.s303,基于所述目标新版本文件,对所述目标软件进行在线升级。
129.在一些实施例中,在对目标软件进行在线升级的时候,在客户端新建目标文件夹,将所述目标新版本文件从原文件夹另存至所述目标文件夹中;所述目标文件夹与所述原文件夹的访问路径不同。然后,在所述目标软件运行时,访问所述目标文件夹下的目标新版本文件,对所述目标软件进行在线升级。如此,在客户端下次启动程序时,会从新的安装路径启动。
130.示例地,由于应用程序正在运行时进行升级会存在资源占用导致升级失败的问题,为了避免此类情况发生,本实施例在对目标软件进行升级的时候,会在区别于原文件夹路径的位置重新建立单独的目标文件夹,然后目标新版本文件会另存至该目标文件夹中,这样就不存在程序打开进程被占用的情况,新下载的安装包访问新的路径,如此,可以降低
升级失败的概率,提高升级的安全性。
131.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
132.基于同一技术构思,本公开实施例中还提供了与软件在线升级方法对应的服务端,由于本公开实施例中的服务端解决问题的原理与本公开实施例上述软件在线升级方法相似,因此服务端的实施可以参见方法的实施,重复之处不再赘述。
133.参照图9所示,为本公开实施例提供的一种服务端的结构示意图,所述服务端500包括:
134.反汇编模块501,用于对目标软件的旧版本文件和新版本文件分别进行反汇编,以生成对应的旧汇编文件和新汇编文件;所述旧版本文件和所述新版本文件为操作系统下的可执行文件;
135.生成模块502,用于基于所述旧汇编文件和所述新汇编文件,生成汇编层差异文件;
136.发送模块503,用于将所述汇编层差异文件发送至客户端,以使得所述客户端基于所述汇编层差异文件实现所述目标软件的在线升级。
137.在一种可能的实施方式中,所述生成模块502具体用于:
138.分别将所述旧汇编文件所对应的程序和所述新汇编文件所对应的程序划分为指令序列、内部指针的目标地址列表和普通字节三个部分;所述指令序列用于确定所述普通字节和所述内部指针如何交错调整以获取原始输入;
139.引入地址标签来标记所述内部指针,所述地址标签存储在目标数组中,并用所述目标数组的索引列表替换所述内部指针的目标地址列表;
140.基于所述索引列表,将所述旧汇编文件和所述新汇编文件进行比对,生成所述汇编层差异文件。
141.在一种可能的实施方式中,所述生成模块502具体用于:
142.通过对所述索引列表进行更改,进而移动所述目标数组中的地址,以在汇编层比较出所述旧汇编文件和所述新汇编文件之间的差异,生成所述汇编层差异文件。
143.参见图10所示,为本公开实施例提供的一种客户端的结构示意图,所述客户端600包括:
144.获取单元601,用于获取目标软件的汇编层差异文件;所述汇编层差异文件是基于存储于服务端的与所述目标软件相对应的旧版本文件和新版本文件,并分别对所述旧版本文件和新版本文件进行反汇编后获得的;
145.生成单元602,用于基于存储的所述目标软件的旧版本文件以及所述汇编层差异文件,生成所述目标软件的目标新版本文件。
146.在一种可能的实施方式中,所述生成单元602具体用于:
147.对所述目标软件的旧版本文件进行反汇编生成对应的目标旧汇编文件;
148.将所述目标旧汇编文件与所述汇编层差异文件合并,以生成目标汇编文件;
149.将所述目标汇编文件进行汇编,生成所述目标软件的目标新版本文件。
150.在一种可能的实施方式中,所述客户端还包括:
151.升级单元603,用于基于所述目标新版本文件,对所述目标软件进行在线升级。
152.在一种可能的实施方式中,所述升级单元603具体用于:
153.在所述客户端新建目标文件夹,将所述目标新版本文件从原文件夹另存至所述目标文件夹中;所述目标文件夹与所述原文件夹的访问路径不同;
154.在所述目标软件运行时,访问所述目标文件夹下的目标新版本文件,对所述目标软件进行在线升级。
155.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
156.基于同一技术构思,本公开实施例还提供了一种电子设备。参照图11所示,为本公开实施例提供的电子设备700的结构示意图,包括处理器701、存储器702、和总线703。其中,存储器702用于存储执行指令,包括内存7021和外部存储器7022;这里的内存7021也称内存储器,用于暂时存放处理器701中的运算数据,以及与硬盘等外部存储器7022交换的数据,处理器701通过内存7021与外部存储器7022进行数据交换。
157.本申请实施例中,存储器702具体用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。也即,当电子设备700运行时,处理器701与存储器702之间通过总线703通信,使得处理器701执行存储器702中存储的应用程序代码,进而执行前述图5、图6或图8所揭示的方法。
158.其中,存储器702可以是,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。
159.处理器701可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
160.可以理解的是,本申请实施例示意的结构并不构成对电子设备700的具体限定。在本申请另一些实施例中,电子设备700可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
161.同理,基于同一技术构思,本公开实施例还提供了一种服务器,参照图12所示,为本公开实施例提供的服务器800的结构示意图,包括处理器801、存储器802、和总线803。其中,存储器802用于存储执行指令,包括内存8021和外部存储器8022;这里的内存8021也称内存储器,用于暂时存放处理器801中的运算数据,以及与硬盘等外部存储器8022交换的数据,处理器801通过内存8021与外部存储器8022进行数据交换。
162.本申请实施例中,存储器802具体用于存储执行本申请方案的应用程序代码,并由处理器801来控制执行。也即,当服务器800运行时,处理器801与存储器802之间通过总线
803通信,使得处理器801执行存储器802中存储的应用程序代码,进而执行前述图4所揭示的方法。
163.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中的软件在线升级方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
164.本公开实施例还提供一种计算机程序产品,该计算机程序产品载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中的软件在线升级方法的步骤,具体可参见上述方法实施例,在此不再赘述。
165.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
166.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
167.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
168.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
169.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
170.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使
相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1