CN105589706B - 一种升级包生成方法和装置 - Google Patents
一种升级包生成方法和装置 Download PDFInfo
- Publication number
- CN105589706B CN105589706B CN201410598900.0A CN201410598900A CN105589706B CN 105589706 B CN105589706 B CN 105589706B CN 201410598900 A CN201410598900 A CN 201410598900A CN 105589706 B CN105589706 B CN 105589706B
- Authority
- CN
- China
- Prior art keywords
- file
- upgrade package
- partition name
- partition
- upgrade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于操作系统领域,提供了一种升级包生成方法和装置;获取分区表中记录的分区名称;判断目标文件包是否包括所述分区名称的文件夹;如果所述目标文件包包括所述分区名称的文件夹,则从所述分区表中获取与所述分区名称对应的分区类型;基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包。制作升级包的整个过程不需要人工参与,并且对于需升级的不同目的系统,可根据该目的系统的分区类型,调整分区表,这样可自适应目的系统的不同分区方式,更具实用性。
Description
技术领域
本发明属于操作系统领域,尤其涉及一种升级包生成方法和装置。
背景技术
安卓系统Android,是基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑。随着安卓系统的普及,针对安卓系统开发的系统程序逐渐增多。
对于已开发的系统程序,可能根据使用场合的改变,需要升级。但现有技术提供的升级包制作工具,仅能人工针对每个分区,分别制作升级包;实际应用时,由于实际分区的数量通常都远远多于安卓系统的原生分区(system,boot,recovery,data,cache等),人工针对每个分区生成升级包的方式非常繁琐和耗时。
发明内容
本发明的目的在于提供一种升级包生成方法和装置,以解决现有技术需人工针对每个分区,人为使用升级包制作工作生成对应的升级包,繁琐而耗时的问题。
第一方面,本发明提供一种升级包生成方法,所述升级包生成方法包括:
获取分区表中记录的分区名称;
判断目标文件包是否包括所述分区名称的文件夹;
如果所述目标文件包包括所述分区名称的文件夹,则从所述分区表中获取与所述分区名称对应的分区类型;
基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包。
第二方面,本发明提供一种升级包生成装置,所述升级包生成装置包括分区名称获取单元、第一判断单元、分区类型获取单元和升级包生成单元;
所述分区名称获取单元用于:获取分区表中记录的分区名称;
所述第一判断单元用于:判断目标文件包是否包括所述分区名称的文件夹;
所述分区类型获取单元用于:如果所述目标文件包包括所述分区名称的文件夹,则从所述分区表中获取与所述分区名称对应的分区类型;
所述升级包生成单元用于:基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包。
本发明的有益效果:对于在目的系统中已设定的每个分区,预先在分区表中记录该分区的分区名称和分区类型;在制作升级包的过程中,依次遍历分区表中记录的所有分区名称,对于需要升级的分区,基于该分区的分区类型生成升级包。整个过程不需要人工参与,并且对于需升级的不同目的系统,可根据该目的系统的分区类型,调整分区表,这样可自适应目的系统的不同分区方式,更具实用性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的升级包生成方法的工作流程图;
图2是本发明实施例提供的升级包生成方法的一种优化工作流程图;
图3是本发明实施例提供的升级包生成方法的又一种优化工作流程图;
图4是本发明实施例提供的升级包生成方法的又一种优化工作流程图;
图5是本发明实施例提供的升级包生成方法的又一种优化工作流程图;
图6是本发明实施例提供的升级包生成装置的组成结构;
图7是本发明实施例提供的升级包生成装置的一种优化组成结构;
图8是本发明实施例提供的升级包生成装置的又一种优化组成结构;
图9是本发明实施例提供的升级包生成装置的又一种优化组成结构。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
本发明实施例以安卓系统为例对本发明的实施过程进行解释,当然,本发明提供的升级包生成方法还可适用于其他操作系统。
在本发明实施例中,需预先获取目标文件包;对于某个系统程序而言,需要预先获取的目标文件包包括:本次升级成功后,执行升级成功后的该系统程序所需的所有文件。
在本发明实施例中,目标文件包、原始文件包以及升级包中的一种或多种为由数据组成的包。优选的,目标文件包、原始文件包以及升级包均为压缩包,需得说明的是,对于生成目标文件包、原始文件包以及升级包分别采用的压缩算法,本发明实施例在此不做限定,对相应的解压缩的算法也不做限定。
图1示出了本发明实施例提供的升级包生成方法的工作流程,为了便于描述,仅示出了与本发明实施例相关的部分。
本发明实施例提供的所述升级包生成方法,如图1所示,所述升级包生成方法包括步骤A1、步骤A2、步骤A3和步骤A4。
步骤A1,获取分区表中记录的分区名称。
在本发明实施例中,所述目标文件包中已包括分区表,该分区表记录了:目的系统(该目的系统为需要升级的安卓系统)的所有分区的分区名称和分区类型,以及每个分区对应的分区节点。例如,在zip格式的目标文件包中设置recovery文件夹,在该recovery文件夹添加有recovery.fstab文件,该recovery.fstab文件中记录有本发明实施例所述的分区表。
作为本发明实施例一具体实施方式,所述分区表的每一行记录一个分区的分区名称、该个分区的分区类型、以及该个分区的分区节点。需说明的是,本发明实施例所述的分区包括但不限于:system分区、boot分区、recovery分区、data分区以及cache分区等。
因此,在制作升级包时,按行依次读取所述分区表的每一行;针对每一行指定的分区,如需升级,分别制作对应的升级文件;将制作的所有升级文件合并,并采用相应算法制作升级包。
步骤A2,判断目标文件包是否包括所述分区名称的文件夹。
在本发明实施例中,由于与分区表中记录的分区名称对应的分区,不一定都需要升级,因此在制作升级包时,需要遍历分区表中的每个分区名称,查找目标文件中是否具有相同分区名称的文件夹。如果在目标文件中查找到分区表中的某个分区名称的文件夹,则代表需要对具有该个分区名称的分区进行升级,本发明需要针对该个分区制作升级文件,即执行步骤A3。
步骤A3,如果所述目标文件包包括所述分区名称的文件夹,则从所述分区表中获取与所述分区名称对应的分区类型。
在本发明实施例中,如果执行步骤A2并在所述目标文件包中找到所述分区名称的文件夹,则根据分区表确定与该分区名称对应的分区类型。
例如,分区表的每一行记录有一个分区的分区名称、该个分区的分区类型、以及该个分区的分区节点;因此,如果执行步骤A2在所述目标文件包找到所述分区名称的文件夹,可从分区表中找到与该分区名称对应的分区类型,执行步骤A4根据该分区类型制作升级文件。
步骤A4,基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包。
在本发明实施例中,对于需要生成升级文件的分区,待执行步骤A3确定出与该分区的分区类型之后,基于确定出的该分区类型执行步骤A4,生成与该分区对应的升级文件;这样,生成的升级文件可适用于该分区类型。具体在制作升级文件时,至少根据所述目标文件包包含的所述分区名称的文件夹生成该升级文件。
例如,如果需制作全量升级包,则在制作该分区的升级文件时,需将所述目标文件包包含的与该分区相关的文件全部复制到升级文件中。
再例如,如果需制作增量升级包,则在制作该分区的升级文件时,需将所述目标文件包相对于原始文件包增加的、与该分区相关的文件和/或数据全部复制到升级文件中。
针对每个需要升级的分区分别制作升级文件之后,根据制作出的所有升级文件以及升级顺序生成升级包。
具体对于如何制作升级包,需要在升级包中添加的升级程序、脚本,以及执行该升级程序、执行该脚本所需的环境和语言,在此不做限定,只要能够保证以该升级包能够完成本次升级即可。
下面结合全量升级包的制作流程,对本发明的精神进行详述,图2为本发明实施例在制作全量升级包时提供的升级包生成方法的一种工作流程,为了便于描述,仅示出了与本发明实施例相关的部分。
作为本发明实施例一实施方式,如图2所示,在制作全量升级包时,对于步骤A4,即对于所述基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包这一步骤,具体包括步骤A411、步骤A412、步骤A413、步骤A414和步骤A415。
步骤A411,判断与所述分区名称对应的分区类型。
步骤A412,如果与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第一升级脚本,使得在运行所述第一升级脚本时执行:在目的系统挂载所述分区名称的文件夹,将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限,在所述目的系统卸载所述分区名称的文件夹。
作为步骤A412的一具体实施方式,步骤A412依次包括步骤A4121、步骤A4122、步骤A4123、步骤A4124和步骤A4125。并且所述第一升级脚本至少依次包括有:第一脚本语句、第二脚本语句、第三脚本语句、第四脚本语句。
步骤A4121,如果与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包。需说明的是,在升级包制作工具制作升级包时,会临时生成一个中间升级包,依次将需要升级的文件和升级过程中所需执行的脚本按升级顺序添加到该中间升级包,最终制作得到升级包。
在本实施方式中,执行步骤A411确定需制作升级文件的分区所述的分区类型之后,如果确定出的分区类型为文件系统分区类型(例如EXT4),则在制作该分区的升级文件时,首先执行步骤A4121将目标文件包包含的、所述分区名称的文件夹(包括:所述分区名称的文件夹里面所包含的所有文件夹和文件)复制到所述中间升级包中。
作为将目标文件包包含的、所述分区名称的文件夹复制到所述中间升级包中的一具体实施方式,按照目标文件包中所述分区名称的文件夹里面的父子目录以及其包含的文件的包含关系,将该分区名称的文件夹及其包含的子文件夹和文件全部复制到中间升级包中。作为一具体实施方式,将目标文件包中的所述分区名称的文件夹复制到中间升级包的根目录,便于升级时的快速查找,以及便于认为检测。
步骤A4122,在所述中间升级包中添加第一脚本语句,使得执行所述第一脚本语句时在目的系统挂载所述分区名称的文件夹。需要说明的是,本发明实施例和本实施方式所述的目的系统,是指一操作系统,需要执行所述升级包在该目的系统进行升级。
在本实施方式中,在制作与具有该分区名称的分区的升级文件时,在执行步骤A4121之后,为在目的系统上完成升级,需要在中间升级包中添加第一脚本语句;待制成升级包后,在升级过程中,通过调用升级包中的该第一脚本语句,在目的系统上挂载所述分区名称的文件夹,即在目标系统上进入所述分区名称的文件夹,也即在目标系统上访问所述分区名称的文件夹。
步骤A4123,在所述中间升级包中添加第二脚本语句,使得执行所述第二脚本语句时将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中。
在本实施方式中,目的系统升级的过程中,因执行升级包中的第一脚本语句已在目的系统进入所述分区名称的文件夹,进而执行第二脚本语句时,可将所述升级包中所述分区名称的文件夹所包含的所有目录和文件全部复制到所述目的系统挂载的所述分区名称的文件夹中。
步骤A4124,在所述中间升级包中添加第三脚本语句,使得执行所述第三脚本语句时对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限。
在本实施方式中,执行步骤A4124在中间升级包中添加第三脚本语句;进而在通过升级包升级过程中,可执行第三脚本语句,对所述目的系统挂载的所述分区名称的文件夹以及已复制到该文件夹中的文件和子目录,分别设置不同的或相同的修改权限、访问权限。
步骤A4125,在所述中间升级包中添加第四脚本语句,使得执行所述第四脚本语句时在所述目的系统卸载所述分区名称的文件夹。
在本实施方式中,针对具有所述分区名称的分区制作升级文件时,与执行步骤A4122对应地,执行步骤A4125在该中间升级文件中添加第四脚本语句。
进而在目的系统上的升级过程中,执行第一升级脚本即可实现升级,具体实现流程为:完成执行第二脚本语句将所述升级包包括的所述分区名称的文件夹所包含的文件全部复制到所述目的系统挂载的所述分区名称的文件夹中并执行第三脚本语句完成修改权限设定之后,继而执行第四脚本语句在所述目的系统退出所述分区名称的文件夹,即在所述目的系统卸载所述分区名称的文件夹。
步骤A413,如果与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件:
在本实施方式中,执行步骤A3确定需制作升级文件的分区所述的分区类型之后,如果确定出的分区类型为无文件系统分区类型(例如EMMC),则在制作该分区的升级文件时,首先执行步骤A413进一步在目标文件包中查找与所述分区名称的文件夹对应的第一镜像文件;如果在目标文件包中查找到与所述分区名称的文件夹对应的第一镜像文件,则执行步骤A414,如果在目标文件包中未查找到与所述分区名称的文件夹对应的第一镜像文件,执行步骤A415。
步骤A414,如果所述目标文件包包含有所述第一镜像文件,则将所述目标文件包包含的所述第一镜像文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第二升级脚本;使得在运行所述第二升级脚本时执行:将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
在本实施方式中,如果所述目标文件包包含有所述第一镜像文件,则不需要将所述目标文件包包含的、与所述分区名称的文件夹制作成所述第一镜像文件,直接将所述目标文件包包含的所述第一镜像文件直接复制到中间升级包即可。作为一具体实施方式,为便于查找和检测,将所述目标文件包包含的所述第一镜像文件直接复制到中间升级包的根目录。
步骤A415,如果所述目标文件包未包含有所述第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件,将生成的第一镜像文件复制到所述中间升级包,并在所述中间升级包中添加第二升级脚本;使得在运行所述第二升级脚本时执行:将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
在本实施方式中,由于所述目标文件包未包含有所述第一镜像文件,但对于无文件系统分区类型的分区,需要执行镜像文件升级,因此在制作升级包时,需预先将所述目标文件包包括的所述分区名称的文件夹制成所述第一镜像文件;进而将制成的所述第一镜像文件复制到中间升级包中。作为一具体实施方式,为便于查找和检测,将制成的所述第一镜像文件复制到中间升级包的根目录。
值得说明的是,为所述目的系统以所述第一镜像文件进行升级,在步骤A414和步骤A415中均在所述中间升级包中添加第二升级脚本。
进而在升级过程中,执行第二升级脚本中的脚本语句即可将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。进而,在所述目的系统通过所述第一镜像文件即可在该无文件系统分区类型的分区进行升级。
下面结合增量升级包的制作流程,对本发明的精神进行详述,图3为本发明实施例在制作增量升级包时提供的升级包生成方法的一种工作流程,为了便于描述,仅示出了与本发明实施例相关的部分。
作为本发明实施例一实施方式,如图3所示,在制作全量升级包时,对于步骤A4,即对于所述基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包这一步骤,具体包括步骤A421、步骤A422、步骤A423和步骤A424。
步骤A421,判断原始文件包是否包括所述分区名称的文件夹。
在本实施方式中,执行步骤A3确定所述目标文件包包括所述分区名称的文件夹之后,如果是制作增量升级包,还需执行步骤A4121进一步判断原始文件包是否包括所述分区名称的文件夹。
如果所述原始文件包未包括所述分区名称的文件夹,可类似按照制作全量升级包的方式,制作升级包。
步骤A422,如果所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第一升级脚本,使得在运行所述第一升级脚本时执行:在目的系统挂载所述分区名称的文件夹,将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限,在所述目的系统卸载所述分区名称的文件夹。
作为步骤A422的一种实施方式,所述步骤A422具体包括步骤A4221、步骤A4222、步骤A4223、步骤A4224和步骤A4225。并且所述第一升级脚本至少依次包括有:第一脚本语句、第二脚本语句、第三脚本语句、第四脚本语句。
步骤A4221,如果所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包。
在本实施方式中,由于所述原始文件包未包括有所述分区名称的文件夹,因此针对所述分区名称的文件夹而言,目标文件包相对于原始文件包增加的数据为:整个所述目标文件包包括所述分区名称的文件夹。
因此,本实施方式在判定所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型的情况下,直接将目标文件包包含的所述分区名称的文件夹复制到所述中间升级包。
步骤A4222,在所述中间升级包中添加第一脚本语句,使得执行所述第一脚本语句时在目的系统挂载所述分区名称的文件夹。
在本实施方式中,在执行步骤A4221之后,为在目的系统上升级,需要在中间升级包中添加第一脚本语句;进而在升级过程中,通过调用已制成的升级包中的该第一脚本语句,在目的系统上挂载所述分区名称的文件夹,即在目标系统上访问所述分区名称的文件夹。继而才能将升级包中的文件复制到在目的系统上挂载所述分区名称的文件夹中。
步骤A4223,在所述中间升级包中添加第二脚本语句,使得执行所述第二脚本语句时将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中。
具体的,通过执行步骤A4223在所述中间升级包中添加第二脚本语句;从而在目的系统升级的过程中,执行第一脚本语句进入目的系统上的所述分区名称的文件夹之后,继而执行第二脚本语句,将所述升级包中所述分区名称的文件夹所包含的所有目录和文件全部复制到所述目的系统挂载的所述分区名称的文件夹中。
步骤A4224,在所述中间升级包中添加第三脚本语句,使得执行所述第三脚本语句时对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限。
在本实施方式中,执行步骤A4224在所述中间升级包中添加第三脚本语句;进而在通过升级包升级的过程中,执行第二脚本语句完成文件复制之后,执行升级包中的第三脚本语句,可对所述目的系统挂载的所述分区名称的文件夹以及已复制到该文件夹中的文件和子目录,分别设置不同的或相同的修改权限、访问权限。
步骤A4225,在所述中间升级包中添加第四脚本语句,使得执行所述第四脚本语句时在所述目的系统卸载所述分区名称的文件夹。
在本实施方式中,执行步骤A4225在所述中间升级包中添加第四脚本语句;进而在执行完第三脚本语句对完成权限设置之后,执行第四脚本语句时在所述目的系统卸载所述分区名称的文件夹。
步骤A423,如果所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件。
在本实施方式中,执行步骤A3确定需制作升级文件的分区所述的分区类型之后,如果确定出的分区类型为无文件系统分区类型(例如EMMC),并且执行步骤A421判定所述原始文件包未包括有所述分区名称的文件夹的情况下,则在制作该分区的升级文件时,进一步在目标文件包中查找与所述分区名称的文件夹对应的第一镜像文件;如果在目标文件包中查找到与所述分区名称的文件夹对应的第一镜像文件,则执行步骤A424,如果在目标文件包中未查找到与所述分区名称的文件夹对应的第一镜像文件,执行步骤A425。
步骤A424,如果所述目标文件包包含有所述第一镜像文件,则将所述目标文件包包含的所述第一镜像文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第二升级脚本,使得在运行所述第二升级脚本时执行:将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
在本实施方式中,如果所述目标文件包包含有所述第一镜像文件,则不需要将所述目标文件包包含的、与所述分区名称的文件夹制作成所述第一镜像文件,直接将所述目标文件包包含的所述第一镜像文件直接复制到中间升级包即可。作为一具体实施方式,为便于查找和检测,将所述目标文件包包含的所述第一镜像文件直接复制到中间升级包的根目录。
步骤A425,如果所述目标文件包未包含有所述第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件,并将生成的第一镜像文件复制到所述中间升级包,并在所述中间升级包中添加第二升级脚本,使得在运行所述第二升级脚本时执行:将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
在本实施方式中,由于所述目标文件包未包含有所述第一镜像文件,但对于无文件系统分区类型的分区,需要执行镜像文件升级,因此在制作升级包时,需预先将所述目标文件包包括的所述分区名称的文件夹制成所述第一镜像文件;进而将制成的所述第一镜像文件复制到中间升级包中。作为一具体实施方式,为便于查找和检测,将制成的所述第一镜像文件复制到中间升级包的根目录。
值得说明的是,在所述中间升级包中添加第二升级脚本,使得执行所述第二升级脚本所包含的脚本语句时将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。进而在升级过程中,执行第五脚本语句将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。进而,在所述目的系统通过所述第一镜像文件即可在该无文件系统分区类型的分区进行升级。
下面结合增量升级包的制作流程,对本发明的精神进行详述,图4为本发明实施例在制作增量升级包时提供的升级包生成方法的一种工作流程,为了便于描述,仅示出了与本发明实施例相关的部分。
作为本发明实施例一实施方式,如图4所示,在制作全量升级包时,对于步骤A4,即对于在所述基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包这一步骤,具体包括步骤A431、步骤A432、步骤A433、步骤A434、步骤A4145和步骤A4146。
步骤A431,判断原始文件包是否包括所述分区名称的文件夹。在本实施方式中,执行步骤A3确定所述目标文件包包括所述分区名称的文件夹之后,如果是制作增量升级包,还需执行步骤A4141进一步判断原始文件包是否包括所述分区名称的文件夹。
步骤A432,如果所述原始文件包包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型,则在所述中间升级包中添加第一脚本语句,使得执行所述第一脚本语句时在目的系统挂载所述分区名称的文件夹。在本实施方式中,由于所述原始文件包包括有所述分区名称的文件夹,因此针对所述分区名称的文件夹而言,为将所述目标文件包相对于所述原始文件包增加的文件(即第一文件)从升级包复制到目的系统挂载的所述分区名称的文件夹中,需预先在中间升级包中添加第一脚本语句。进而在升级过程中,可执行第一脚本语句在目的系统挂载所述分区名称的文件夹。
步骤A433,针对所述分区名称的文件夹,查找所述目标文件包包含有而所述原始文件包未包含有的第一文件,将查找到的第一文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第三升级脚本,使得在运行所述第三升级脚本时执行:将所述升级包包括的所述第一文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹包含的第一文件设置修改权限,在所述目的系统卸载所述分区名称的文件夹。
作为步骤A433的一具体实施方式,步骤A433包括步骤A4331、步骤A4332、步骤A4333和步骤A434。所述第三升级脚本至少依次包括:第六脚本语句、第七脚本语句和第四脚本语句。
步骤A4331,针对所述分区名称的文件夹,查找所述目标文件包包含有而所述原始文件包未包含有的第一文件,将查找到的第一文件复制到用于制作所述升级包的中间升级包。在本实施方式中,由于所述原始文件包包括有所述分区名称的文件夹,因此针对所述分区名称的文件夹,预先从目标文件包筛选出其相对于原始文件包增加的文件,将筛选出的文件作为第一文件,并将第一文件复制到所述升级包。作为一具体实施方式,为便于查找和检测,将所述第一文件直接复制到中间升级包的根目录。
步骤A4332,在所述中间升级包中添加第六脚本语句,使得执行所述第六脚本语句时将所述升级包包括的所述第一文件复制到所述目的系统挂载的所述分区名称的文件夹中。在本实施方式中,预先在所述中间升级包中添加第六脚本语句。进而在目的系统升级过程中,执行升级包中的第一脚本语句成功在挂载所述分区名称的文件夹之后,可执行第六脚本语句将所述升级包中的所述第一文件复制到所述目的系统挂载的所述分区名称的文件夹中。
步骤A4333,在所述中间升级包中添加第七脚本语句,使得执行所述第七脚本语句时对所述目的系统挂载的所述分区名称的文件夹包含的第一文件设置修改权限。在本实施方式中,执行步骤A4333在所述中间升级包中添加第七脚本语句;进而在通过升级包升级的过程中,执行第六脚本语句完成文件复制之后,执行升级包中的第七脚本语句,可对所述目的系统挂载的所述分区名称的文件夹以及其包含的第一文件设置不同的或相同的修改权限、访问权限。
步骤A4334,在所述中间升级包中添加第四脚本语句,使得执行所述第四脚本语句时在所述目的系统卸载所述分区名称的文件夹。在本实施方式中,执行步骤A4334在所述中间升级包中添加第四脚本语句;进而在执行完第七脚本语句对第一文件完成权限设置之后,执行第四脚本语句时在所述目的系统卸载所述分区名称的文件夹。
步骤A434,针对所述分区名称的文件夹,对于所述目标文件包和所述原始文件包均包含的第二文件,提取所述目标文件包中的第二文件相对于所述原始文件包中的第二文件增加的第一增量数据,根据提取出的第一增量数据生成第一补丁文件,将所述第一补丁文件复制到所述中间升级包,并在所述中间升级包中添加第四升级脚本,使得在运行所述第四升级脚本时执行:对所述升级包中的所述第一补丁文件进行校验,对所述升级包中的所述第一补丁文件与所述原始文件包包含的第二文件进行合并。
作为步骤A434的一具体实施方式,所述升级包生成方法还包括步骤A4341、步骤A4342和步骤A4343。所述第四升级脚本至少依次包括:第八脚本语句和第九脚本语句。
步骤A4341,针对所述分区名称的文件夹,对于所述目标文件包和所述原始文件包均包含的第二文件,提取所述目标文件包中的第二文件相对于所述原始文件包中的第二文件增加的第一增量数据,根据提取出的第一增量数据生成第一补丁文件,将所述第一补丁文件复制到所述中间升级包。在本实施方式中,由于所述原始文件包包括有所述分区名称的文件夹,具体针对所述分区名称的文件夹中,目标文件包和原始文件包均具有的文件(即第二文件),预先从目标文件包提取出目标文件包中的第二文件相对于原始文件包中的第二文件增加的数据,将提取出的数据作为第一补丁文件,并将第一补丁文件复制到所述中间升级包。作为一具体实施方式,为便于查找和检测,将所述第一补丁文件直接复制到中间升级包的根目录。
步骤A4342,在所述中间升级包中添加第八脚本语句,使得执行所述第八脚本语句时对所述升级包中的所述第一补丁文件进行校验。在本实施方式中,预先在所述中间升级包中添加第八脚本语句。进而在目的系统升级过程中,执行第八脚本语句对在目的系统的原始文件包中的第二文件进行校验并生成校验码,根据生成的校验码与所述升级包中的第一补丁文件的校验码进行匹配比较,如果比较结果为匹配,则校验通过,执行第九脚本语句。
步骤A4343,在所述中间升级包中添加第九脚本语句,使得执行所述第九脚本语句时对所述升级包中的所述第一补丁文件与所述原始文件包包含的第二文件进行合并。在本实施方式中,预先在所述中间升级包中添加第九脚本语句。进而在目的系统升级过程中,执行第八脚本语句校验通过之后,执行第九脚本语句将在目的系统的原始文件包中的第二文件与所述升级包中的所述第一补丁文件进行合并;继而,目的系统可调用合并得到的数据。
下面结合增量升级包的制作流程,对本发明的精神进行详述,图5为本发明实施例在制作增量升级包时提供的升级包生成方法的一种工作流程,为了便于描述,仅示出了与本发明实施例相关的部分。
作为本发明实施例一实施方式,如图5所示,在制作全量升级包时,对于步骤A4,即对于在所述基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包这一步骤,具体包括步骤A451、步骤A452、步骤A453、步骤A454和步骤A455。
步骤A451,判断原始文件包是否包括所述分区名称的文件夹。在本实施方式中,执行步骤A3确定所述目标文件包包括所述分区名称的文件夹之后,如果是制作增量升级包,还需执行步骤A451进一步判断原始文件包是否包括所述分区名称的文件夹。
步骤A452,如果所述原始文件包包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件,判断所述原始文件包是否包含有与所述分区名称的文件夹对应的第二镜像文件。
在本实施方式中,由于所述原始文件包包括有所述分区名称的文件夹,因此针对所述分区名称的文件夹而言,如果所述分区名称对应的分区类型为无文件系统分区类型(例如EMMC),则在制作该分区的升级包时,进一步在目标文件包中查找与所述分区名称的文件夹对应的第一镜像文件,进一步在原始文件包中查找与所述分区名称的文件夹对应的第二像文件。
如果在目标文件包中查找与所述分区名称的文件夹对应的第一镜像文件,如果查找到,则不需要执行步骤A453,如果未查找到,则需执行步骤A453生成所述第一镜像文件。如果在原始文件包中查找与所述分区名称的文件夹对应的第二镜像文件,如果查找到,则不需要执行步骤A4534,如果未查找到,则需执行步骤A454生成所述第二镜像文件。
步骤A453,如果所述目标文件包未包含有与所述分区名称的文件夹对应的第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件。在本实施方式中,在所述目标文件包未查找到所述第一镜像文件,但对于无文件系统分区类型的分区,需要执行镜像文件升级,因此在制作升级包时,需预先将所述目标文件包包括的所述分区名称的文件夹制成所述第一镜像文件;进而将制成的所述第一镜像文件复制到中间升级包中。
步骤A4154,如果所述原始文件包未包含有与所述分区名称的文件夹对应的第二镜像文件,则根据所述原始文件包包括的所述分区名称的文件夹生成所述第二镜像文件。在本实施方式中,为所述目的文件包与所述原始文件包的不同,但对于无文件系统分区类型的分区,需要执行镜像文件升级,预先执行步骤A454将所述原始文件包包括的所述分区名称的文件夹制成所述第二镜像文件。
步骤A455,提取所述第一镜像文件相对于所述第二镜像文件增加的第二增量数据,根据提取出的第二增量数据生成第二补丁文件,将所述第二补丁文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第五升级脚本,使得在运行所述第五升级脚本时执行:对所述升级包中的所述第二补丁文件进行校验,对所述升级包中的所述第二补丁文件与所述第二镜像文件进行合并。作为步骤A455的一具体实施方式,所述步骤A455包括步骤A4551、步骤A4552和步骤A4553。所述第五升级脚本至少依次包括:第十脚本语句和第十一脚本语句。
步骤A4551,提取所述第一镜像文件相对于所述第二镜像文件增加的第二增量数据,根据提取出的第二增量数据生成第二补丁文件,将所述第二补丁文件复制到用于制作所述升级包的中间升级包。在本实施方式中,对于所述第一镜像文件,从所述第一镜像文件提取出其相对于所述第二镜像文件增加的数据(即第二增量数据),将第二增量数据制成第二补丁文件,并将第二补丁文件复制到所述中间升级包。作为一具体实施方式,为便于查找和检测,将所述第二补丁文件直接复制到升级包的根目录。
步骤A4552,在所述中间升级包中添加第十脚本语句,使得执行所述第十脚本语句时对所述升级包中的所述第二补丁文件进行校验。在本实施方式中,预先在所述中间升级包中添加第十脚本语句。进而在目的系统升级过程中,执行第十脚本语句对在目的系统的原始文件包中的第一镜像文件进行校验并生成校验码,根据生成的校验码与所述升级包中的第二补丁文件的校验码进行匹配比较,如果比较结果为匹配,则校验通过,执行第十一脚本语句。
步骤A4553,在所述中间升级包中添加第十一脚本语句,使得执行所述第十一脚本语句时对所述升级包中的所述第二补丁文件与所述第二镜像文件进行合并。在本实施方式中,预先在所述中间升级包中添加第十一脚本语句。进而在目的系统升级过程中,执行第十脚本语句校验通过之后,执行第十一脚本语句将在目的系统的原始文件包中的第一镜像文件与所述升级包中的所述第二补丁文件进行合并;继而,目的系统可调用合并得到的数据。
本领域普通技术人员还可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令和相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,包括ROM/RAM、磁盘、光盘等。
需要说明的是,本发明实施例提供的升级包生成装置与本发明实施例提供的升级包生成方法相互适用。
图6示出了本发明实施例提供的升级包生成装置的组成结构,为了便于描述,仅示出了与本发明实施例相关的部分。
本实施例提供的升级包生成装置,如图6所示,所述升级包生成装置包括分区名称获取单元61、第一判断单元62、分区类型获取单元63和升级包生成单元64;
所述分区名称获取单元61用于:获取分区表中记录的分区名称;
所述第一判断单元62用于:判断目标文件包是否包括所述分区名称的文件夹;
所述分区类型获取单元63用于:如果所述目标文件包包括所述分区名称的文件夹,则从所述分区表中获取与所述分区名称对应的分区类型;
所述升级包生成单元64用于:基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包。
图7示出了本发明实施例提供的升级包生成装置的一种优化组成结构,为了便于描述,仅示出了与本发明实施例相关的部分。
作为本发明实施例一具体实施方式,如图7所示,所述升级包生成单元64包括类型判断单元641、第一全量升级包生成单元642和第二全量升级包生成单元643;
所述类型判断单元641用于:判断与所述分区名称对应的分区类型;
所述第一全量升级包生成单元642用于:如果与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第一升级脚本;
所述第二全量升级包生成单元643用于:如果与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件:所述第二全量升级包生成单元643还用于:如果所述目标文件包包含有所述第一镜像文件,则将所述目标文件包包含的所述第一镜像文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第二升级脚本;所述第二全量升级包生成单元643还用于:如果所述目标文件包未包含有所述第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件,将生成的第一镜像文件复制到所述中间升级包,并在所述中间升级包中添加第二升级脚本;
其中,所述第一升级脚本用于:在运行时,执行在目的系统挂载所述分区名称的文件夹,将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限,在所述目的系统卸载所述分区名称的文件夹;其中,所述第二升级脚本用于:在运行时将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
图8示出了本发明实施例提供的升级包生成装置的一种优化组成结构,为了便于描述,仅示出了与本发明实施例相关的部分。
作为本发明实施例一具体实施方式,如图8所示,所述升级包生成单元64包括第二判断单元644、第一增量升级包生成单元645和第二增量升级包生成单元646;
所述第二判断单元644用于:判断原始文件包是否包括所述分区名称的文件夹;
所述第一增量升级包生成单元645用于:如果所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第一升级脚本;
所述第二增量升级包生成单元646用于:如果所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件;所述第二增量升级包生成单元646还用于:如果所述目标文件包包含有所述第一镜像文件,则将所述目标文件包包含的所述第一镜像文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第二升级脚本;所述第二增量升级包生成单元646还用于:如果所述目标文件包未包含有所述第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件,并将生成的第一镜像文件复制到所述中间升级包,并在所述中间升级包中添加第二升级脚本;
其中,所述第一升级脚本用于:在运行时,在目的系统挂载所述分区名称的文件夹,将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限,在所述目的系统卸载所述分区名称的文件夹;其中,所述第二升级脚本用于:在运行时将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
图9示出了本发明实施例提供的升级包生成装置的一种优化组成结构,为了便于描述,仅示出了与本发明实施例相关的部分。
作为本发明实施例一具体实施方式,如图9所示,所述升级包生成单元64包括第二判断单元644和第三增量升级包生成单元647;
所述第二判断单元644用于:判断原始文件包是否包括所述分区名称的文件夹;
所述第三增量升级包生成单元647用于:如果所述原始文件包包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型,则在所述中间升级包中添加第一脚本语句,使得执行所述第一脚本语句时在目的系统挂载所述分区名称的文件夹;所述第三增量升级包生成单元647还用于:针对所述分区名称的文件夹,查找所述目标文件包包含有而所述原始文件包未包含有的第一文件,将查找到的第一文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第三升级脚本,使得在运行所述第三升级脚本时执行:将所述升级包包括的所述第一文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹包含的第一文件设置修改权限,在所述目的系统卸载所述分区名称的文件夹;所述第三增量升级包生成单元647还用于:针对所述分区名称的文件夹,对于所述目标文件包和所述原始文件包均包含的第二文件,提取所述目标文件包中的第二文件相对于所述原始文件包中的第二文件增加的第一增量数据,根据提取出的第一增量数据生成第一补丁文件,将所述第一补丁文件复制到所述中间升级包,并在所述中间升级包中添加第四升级脚本,使得在运行所述第四升级脚本时执行:对所述升级包中的所述第一补丁文件进行校验,对所述升级包中的所述第一补丁文件与所述原始文件包包含的第二文件进行合并。
作为本发明实施例一具体实施方式,如图9所示,所述升级包生成单元64包括第二判断单元644和第三增量升级包生成单元647;
第二判断单元644,用于判断原始文件包是否包括所述分区名称的文件夹;
所述第三增量升级包生成单元647用于:如果所述原始文件包包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件,判断所述原始文件包是否包含有与所述分区名称的文件夹对应的第二镜像文件;所述第三增量升级包生成单元647还用于:如果所述目标文件包未包含有与所述分区名称的文件夹对应的第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件;所述第三增量升级包生成单元647还用于:如果所述原始文件包未包含有与所述分区名称的文件夹对应的第二镜像文件,则根据所述原始文件包包括的所述分区名称的文件夹生成所述第二镜像文件;所述第三增量升级包生成单元647还用于:提取所述第一镜像文件相对于所述第二镜像文件增加的第二增量数据,根据提取出的第二增量数据生成第二补丁文件,将所述第二补丁文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第五升级脚本,使得在运行所述第五升级脚本时执行:对所述升级包中的所述第二补丁文件进行校验,对所述升级包中的所述第二补丁文件与所述第二镜像文件进行合并。
本领域技术人员可以理解为本发明实施例提供的升级包生成装置所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明由所提交的权利要求书确定的专利保护范围。
Claims (8)
1.一种升级包生成方法,其特征在于,所述升级包生成方法包括:
获取分区表中记录的分区名称;
判断目标文件包是否包括所述分区名称的文件夹;
如果所述目标文件包包括所述分区名称的文件夹,则从所述分区表中获取与所述分区名称对应的分区类型;
基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包;
所述基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包这一步骤,具体包括:
判断与所述分区名称对应的分区类型;
如果与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第一升级脚本,使得在运行所述第一升级脚本时执行:在目的系统挂载所述分区名称的文件夹,将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限,在所述目的系统卸载所述分区名称的文件夹;
如果与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件:
如果所述目标文件包包含有所述第一镜像文件,则将所述目标文件包包含的所述第一镜像文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第二升级脚本;
如果所述目标文件包未包含有所述第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件,将生成的第一镜像文件复制到所述中间升级包,并在所述中间升级包中添加第二升级脚本;
其中,所述第二升级脚本用于在运行时将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
2.如权利要求1所述的升级包生成方法,其特征在于,所述基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包这一步骤,具体包括:
判断原始文件包是否包括所述分区名称的文件夹;
如果所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第一升级脚本,使得在运行所述第一升级脚本时执行:在目的系统挂载所述分区名称的文件夹,将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限,在所述目的系统卸载所述分区名称的文件夹;
如果所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件;
如果所述目标文件包包含有所述第一镜像文件,则将所述目标文件包包含的所述第一镜像文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第二升级脚本;
如果所述目标文件包未包含有所述第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件,将生成的第一镜像文件复制到所述中间升级包,并在所述中间升级包中添加第二升级脚本;
其中,所述第二升级脚本用于在运行时将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
3.如权利要求1所述的升级包生成方法,其特征在于,在所述基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包这一步骤,具体包括:
判断原始文件包是否包括所述分区名称的文件夹;
如果所述原始文件包包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型,则在所述中间升级包中添加第一脚本语句,使得执行所述第一脚本语句时在目的系统挂载所述分区名称的文件夹;
针对所述分区名称的文件夹,查找所述目标文件包包含有而所述原始文件包未包含有的第一文件,将查找到的第一文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第三升级脚本,使得在运行所述第三升级脚本时执行:将所述升级包包括的所述第一文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹包含的第一文件设置修改权限,在所述目的系统卸载所述分区名称的文件夹;
针对所述分区名称的文件夹,对于所述目标文件包和所述原始文件包均包含的第二文件,提取所述目标文件包中的第二文件相对于所述原始文件包中的第二文件增加的第一增量数据,根据提取出的第一增量数据生成第一补丁文件,将所述第一补丁文件复制到所述中间升级包,并在所述中间升级包中添加第四升级脚本,使得在运行所述第四升级脚本时执行:对所述升级包中的所述第一补丁文件进行校验,对所述升级包中的所述第一补丁文件与所述原始文件包包含的第二文件进行合并。
4.如权利要求1所述的升级包生成方法,其特征在于,在所述基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包这一步骤,具体包括:
判断原始文件包是否包括所述分区名称的文件夹;
如果所述原始文件包包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件,判断所述原始文件包是否包含有与所述分区名称的文件夹对应的第二镜像文件;
如果所述目标文件包未包含有与所述分区名称的文件夹对应的第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件;
如果所述原始文件包未包含有与所述分区名称的文件夹对应的第二镜像文件,则根据所述原始文件包包括的所述分区名称的文件夹生成所述第二镜像文件;
提取所述第一镜像文件相对于所述第二镜像文件增加的第二增量数据,根据提取出的第二增量数据生成第二补丁文件,将所述第二补丁文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第五升级脚本,使得在运行所述第五升级脚本时执行:对所述升级包中的所述第二补丁文件进行校验,对所述升级包中的所述第二补丁文件与所述第二镜像文件进行合并。
5.一种升级包生成装置,其特征在于,所述升级包生成装置包括分区名称获取单元、第一判断单元、分区类型获取单元和升级包生成单元;
所述分区名称获取单元用于:获取分区表中记录的分区名称;
所述第一判断单元用于:判断目标文件包是否包括所述分区名称的文件夹;
所述分区类型获取单元用于:如果所述目标文件包包括所述分区名称的文件夹,则从所述分区表中获取与所述分区名称对应的分区类型;
所述升级包生成单元用于:基于与所述分区名称对应的分区类型,根据所述分区名称的文件夹生成升级包;
所述升级包生成单元包括类型判断单元、第一全量升级包生成单元和第二全量升级包生成单元;
所述类型判断单元用于:判断与所述分区名称对应的分区类型;
所述第一全量升级包生成单元用于:如果与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第一升级脚本;
所述第二全量升级包生成单元用于:如果与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件:
所述第二全量升级包生成单元还用于:如果所述目标文件包包含有所述第一镜像文件,则将所述目标文件包包含的所述第一镜像文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第二升级脚本;
所述第二全量升级包生成单元还用于:如果所述目标文件包未包含有所述第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件,将生成的第一镜像文件复制到所述中间升级包,并在所述中间升级包中添加第二升级脚本;
其中,所述第一升级脚本用于:在运行时,执行在目的系统挂载所述分区名称的文件夹,将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限,在所述目的系统卸载所述分区名称的文件夹;
其中,所述第二升级脚本用于:在运行时将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
6.如权利要求5所述的升级包生成装置,其特征在于,所述升级包生成单元包括第二判断单元、第一增量升级包生成单元和第二增量升级包生成单元;
所述第二判断单元用于:判断原始文件包是否包括所述分区名称的文件夹;
所述第一增量升级包生成单元用于:如果所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型,则将所述分区名称的文件夹复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第一升级脚本;
所述第二增量升级包生成单元用于:如果所述原始文件包未包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件;
所述第二增量升级包生成单元还用于:如果所述目标文件包包含有所述第一镜像文件,则将所述目标文件包包含的所述第一镜像文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第二升级脚本;
所述第二增量升级包生成单元还用于:如果所述目标文件包未包含有所述第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件,并将生成的第一镜像文件复制到所述中间升级包,并在所述中间升级包中添加第二升级脚本;
其中,所述第一升级脚本用于:在运行时,在目的系统挂载所述分区名称的文件夹,将所述升级包包括的所述分区名称的文件夹所包含的所有文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹及其包含的所有文件分别设置修改权限,在所述目的系统卸载所述分区名称的文件夹;
其中,所述第二升级脚本用于:在运行时将所述升级包包含的所述第一镜像文件复制到所述目的系统挂载的无文件系统分区类型的分区中。
7.如权利要求5所述的升级包生成装置,其特征在于,所述升级包生成单元包括第二判断单元和第三增量升级包生成单元;
所述第二判断单元用于:判断原始文件包是否包括所述分区名称的文件夹;
所述第三增量升级包生成单元用于:如果所述原始文件包包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为文件系统分区类型,则在所述中间升级包中添加第一脚本语句,使得执行所述第一脚本语句时在目的系统挂载所述分区名称的文件夹;
所述第三增量升级包生成单元还用于:针对所述分区名称的文件夹,查找所述目标文件包包含有而所述原始文件包未包含有的第一文件,将查找到的第一文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第三升级脚本,使得在运行所述第三升级脚本时执行:将所述升级包包括的所述第一文件复制到所述目的系统挂载的所述分区名称的文件夹中,对所述目的系统挂载的所述分区名称的文件夹包含的第一文件设置修改权限,在所述目的系统卸载所述分区名称的文件夹;
所述第三增量升级包生成单元还用于:针对所述分区名称的文件夹,对于所述目标文件包和所述原始文件包均包含的第二文件,提取所述目标文件包中的第二文件相对于所述原始文件包中的第二文件增加的第一增量数据,根据提取出的第一增量数据生成第一补丁文件,将所述第一补丁文件复制到所述中间升级包,并在所述中间升级包中添加第四升级脚本,使得在运行所述第四升级脚本时执行:对所述升级包中的所述第一补丁文件进行校验,对所述升级包中的所述第一补丁文件与所述原始文件包包含的第二文件进行合并。
8.如权利要求5所述的升级包生成装置,其特征在于,所述升级包生成单元包括第二判断单元和第三增量升级包生成单元;
所述第二判断单元用于:判断原始文件包是否包括所述分区名称的文件夹;
所述第三增量升级包生成单元用于:如果所述原始文件包包括有所述分区名称的文件夹、且与所述分区名称对应的分区类型为无文件系统分区类型,则判断所述目标文件包是否包含有与所述分区名称的文件夹对应的第一镜像文件,判断所述原始文件包是否包含有与所述分区名称的文件夹对应的第二镜像文件;
所述第三增量升级包生成单元还用于:如果所述目标文件包未包含有与所述分区名称的文件夹对应的第一镜像文件,则根据所述目标文件包包括的所述分区名称的文件夹生成所述第一镜像文件;
所述第三增量升级包生成单元还用于:如果所述原始文件包未包含有与所述分区名称的文件夹对应的第二镜像文件,则根据所述原始文件包包括的所述分区名称的文件夹生成所述第二镜像文件;
所述第三增量升级包生成单元还用于:提取所述第一镜像文件相对于所述第二镜像文件增加的第二增量数据,根据提取出的第二增量数据生成第二补丁文件,将所述第二补丁文件复制到用于制作所述升级包的中间升级包,并在所述中间升级包中添加第五升级脚本,使得在运行所述第五升级脚本时执行:对所述升级包中的所述第二补丁文件进行校验,对所述升级包中的所述第二补丁文件与所述第二镜像文件进行合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410598900.0A CN105589706B (zh) | 2014-10-29 | 2014-10-29 | 一种升级包生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410598900.0A CN105589706B (zh) | 2014-10-29 | 2014-10-29 | 一种升级包生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105589706A CN105589706A (zh) | 2016-05-18 |
CN105589706B true CN105589706B (zh) | 2019-04-16 |
Family
ID=55929313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410598900.0A Active CN105589706B (zh) | 2014-10-29 | 2014-10-29 | 一种升级包生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105589706B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201571A (zh) * | 2016-06-23 | 2016-12-07 | 浪潮电子信息产业股份有限公司 | 一种基于集中管理平台统一升级客户端ssr软件的方法 |
CN106572372B (zh) * | 2016-11-14 | 2021-06-04 | 青岛海信宽带多媒体技术有限公司 | 一种机顶盒升级方法及机顶盒 |
CN107092504A (zh) * | 2017-03-30 | 2017-08-25 | 努比亚技术有限公司 | 一种移动终端及其升级方法 |
CN111736858A (zh) * | 2019-03-25 | 2020-10-02 | 深圳Tcl新技术有限公司 | 一种终端设备的升级方法、存储介质及终端设备 |
CN110069273A (zh) * | 2019-04-30 | 2019-07-30 | 四川长虹教育科技有限公司 | 软件升级包的批量打包方法及装置 |
CN111417114B (zh) * | 2020-03-16 | 2023-07-04 | 纳瓦电子(上海)有限公司 | U-boot下基于网口自动升级的方法 |
CN111694589B (zh) * | 2020-06-15 | 2023-09-29 | Oppo(重庆)智能科技有限公司 | 升级包生成方法、装置、服务器及计算机可读存储介质 |
CN111831314B (zh) * | 2020-06-24 | 2022-11-22 | 烽火通信科技股份有限公司 | 一种针对不可写分区打补丁的方法与装置 |
CN113485736B (zh) * | 2021-06-17 | 2024-05-07 | 厦门亿联网络技术股份有限公司 | 一种系统增量更新方法及装置 |
CN114339108A (zh) * | 2021-12-29 | 2022-04-12 | 天地伟业技术有限公司 | 一种网络硬盘录像机的升级方法及升级包输出装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520734A (zh) * | 2008-12-17 | 2009-09-02 | 康佳集团股份有限公司 | 一种升级闪存中数据的方法及其网络电视和交互式机顶盒 |
CN102385520A (zh) * | 2011-09-06 | 2012-03-21 | 四川金网通电子科技有限公司 | 一种数字电视机顶盒基于分区名的usb升级方法 |
CN103473099A (zh) * | 2013-09-13 | 2013-12-25 | 惠州Tcl移动通信有限公司 | 一种移动终端的软件升级方法和系统 |
CN103677884A (zh) * | 2012-09-21 | 2014-03-26 | 华为技术有限公司 | flash分区表文件生成及其数据升级方法、装置 |
-
2014
- 2014-10-29 CN CN201410598900.0A patent/CN105589706B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520734A (zh) * | 2008-12-17 | 2009-09-02 | 康佳集团股份有限公司 | 一种升级闪存中数据的方法及其网络电视和交互式机顶盒 |
CN102385520A (zh) * | 2011-09-06 | 2012-03-21 | 四川金网通电子科技有限公司 | 一种数字电视机顶盒基于分区名的usb升级方法 |
CN103677884A (zh) * | 2012-09-21 | 2014-03-26 | 华为技术有限公司 | flash分区表文件生成及其数据升级方法、装置 |
CN103473099A (zh) * | 2013-09-13 | 2013-12-25 | 惠州Tcl移动通信有限公司 | 一种移动终端的软件升级方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105589706A (zh) | 2016-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105589706B (zh) | 一种升级包生成方法和装置 | |
US10901709B2 (en) | Partitioning based migration of systems to container and microservice based platforms | |
CN109144882B (zh) | 一种基于程序不变量的软件故障定位方法及装置 | |
US10606570B2 (en) | Representing software with an abstract code graph | |
KR102044046B1 (ko) | 텔레메트리 파일 해시 및 충돌 검출 기법 | |
CN105653554B (zh) | 一种文件数据比对方法和系统 | |
Fan et al. | Answering graph pattern queries using views | |
McPhillips et al. | Retrospective provenance without a runtime provenance recorder | |
EP3674918B1 (en) | Column lineage and metadata propagation | |
WO2016026328A1 (zh) | 一种信息处理方法、装置及计算机存储介质 | |
Turcu et al. | Automated data partitioning for highly scalable and strongly consistent transactions | |
US11036479B2 (en) | Devices, systems, and methods of program identification, isolation, and profile attachment | |
CN104778410B (zh) | 一种应用程序完整性验证方法 | |
CN107122238B (zh) | 基于Hadoop云计算框架的高效迭代机制设计方法 | |
CN108415846A (zh) | 一种生成最小自动化测试用例集的方法和装置 | |
CN105824756A (zh) | 一种基于代码依赖关系的过时需求自动检测方法及系统 | |
CN107133043A (zh) | 基于国产CPU和操作系统的web工程打包方法及装置 | |
US11663113B2 (en) | Real time fault localization using combinatorial test design techniques and test case priority selection | |
CN102945155B (zh) | 一种用于检测Linux操作系统软件包及其依赖关系缺失的方法 | |
CN106919501A (zh) | 基于缺陷模式的静态分析方法和工具 | |
CN107085613A (zh) | 入库文件的过滤方法和装置 | |
CN108897678B (zh) | 静态代码检测方法和静态代码检测系统、存储设备 | |
US10114951B2 (en) | Virus signature matching method and apparatus | |
CN106446064A (zh) | 一种数据转换方法及装置 | |
WO2014112303A1 (ja) | データ更新漏れ検査装置、データ更新漏れ検査方法、データ更新漏れ検査プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |