CN110442374A - 用电信息采集终端用软件产品打包方法和装置 - Google Patents

用电信息采集终端用软件产品打包方法和装置 Download PDF

Info

Publication number
CN110442374A
CN110442374A CN201910554462.0A CN201910554462A CN110442374A CN 110442374 A CN110442374 A CN 110442374A CN 201910554462 A CN201910554462 A CN 201910554462A CN 110442374 A CN110442374 A CN 110442374A
Authority
CN
China
Prior art keywords
program file
packaged
file
head
target software
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.)
Pending
Application number
CN201910554462.0A
Other languages
English (en)
Inventor
刘宣
卢继哲
阿辽沙·叶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Electric Power Research Institute Co Ltd CEPRI
Original Assignee
China Electric Power Research Institute Co Ltd CEPRI
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Electric Power Research Institute Co Ltd CEPRI filed Critical China Electric Power Research Institute Co Ltd CEPRI
Priority to CN201910554462.0A priority Critical patent/CN110442374A/zh
Publication of CN110442374A publication Critical patent/CN110442374A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开一种用电信息采集终端用软件产品打包方法和装置。该方法,包括:根据用电信息采集终端的产品形态及预先设置的打包配置文件框架,生成打包配置脚本;根据从所述打包配置脚本中提取的待打包程序文件信息,获取全部的待打包程序文件;逐一对待打包程序文件执行加头操作,生成加头后的待打包程序文件;根据从所述打包配置脚本中提取的待打包程序文件拼接逻辑,对全部的加头后的待打包程序文件打包,以生成与预先指定的用电信息采集终端的产品形态对应的目标软件包。该方法可以快速、准确地构建紧凑、安全、不可分割的目标软件包,生成的目标软件包可以有效地避免被非法移除或修改,可用性好。

Description

用电信息采集终端用软件产品打包方法和装置
技术领域
本发明涉及软件工程技术领域,尤其涉及一种用电信息采集终端用软件产品打包方法及装置。
背景技术
用电信息采集终端是典型的嵌入式产品。由于产品更新换代以及在不同区域部署的需求,用电信息采集终端具有多种产品形态。从而导致其软件工程目录结构具有多产品适应性要求,使得软件工程变得较为复杂。
目前,在对软件产品打包时,对应于目标软件包,常用的构建方式为,人工提取待打包程序文件,并进行归档或压缩。
这种目标软件包构建方式,自动化程度低,容易出错,耗时耗力,效率不高。
发明内容
本发明提供一种用电信息采集终端用软件产品打包方法及装置,以克服目前的打包方法自动化程度低的问题。
第一方面,本发明提供了一种用电信息采集终端用软件产品打包方法,包括:
根据用电信息采集终端的产品形态及预先设置的打包配置文件框架,生成打包配置脚本;
根据从所述打包配置脚本中提取的待打包程序文件信息,获取全部的待打包程序文件;
逐一对待打包程序文件执行加头操作,生成加头后的待打包程序文件;
根据从所述打包配置脚本中提取的待打包程序文件拼接逻辑,对全部的加头后的待打包程序文件打包,以生成与预先指定的用电信息采集终端的产品形态对应的目标软件包。
第二方面,本发明提供了一种用电信息采集终端用软件产品打包装置,包括:
打包配置脚本生成模块,用于根据用电信息采集终端的产品形态及预先设置的打包配置文件框架,生成打包配置脚本;
待打包程序文件获取模块,用于根据从所述打包配置脚本中提取的待打包程序文件信息,获取全部的待打包程序文件;
待打包程序文件加头模块,用于逐一对待打包程序文件执行加头操作,生成加头后的待打包程序文件;
目标软件包生成模块,用于根据从所述打包配置脚本中提取的待打包程序文件拼接逻辑,对全部的加头后的待打包程序文件打包,以生成与预先指定的用电信息采集终端的产品形态对应的目标软件包。
与现有技术相比,本发明提供的用电信息采集终端用软件产品打包方法由配置脚本驱动,由打包可执行程序实施构建,可以快速、准确地构建或制作紧凑、安全、不可分割的整体软件目标软件包,生成的目标软件包可用性好。
本发明提供的打包方法所构建的软件包具有逻辑上的整体性和不可分割性,便于进行整体意义上的合法性校验,各程序文件之间相互关联关系唯一,程序文件可以有效地避免被非法移除或修改。
本发明提供的打包方法所构建的软件包支持解包时整体和分立多级校验机制。目标软件包在任意一处损坏,都能够在解包时经过上一级校验而拦截。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为本发明优选实施方式的用电信息采集终端用软件产品打包方法的流程示意图;
图2为本发明优选实施方式的用电信息采集终端用软件产品打包装置的组成示意图;
图3是本发明优选实施方式中目标软件包文件的组成结构示意图;
图4是本发明优选实施方式中由配置脚本驱动的软件打包流程示意图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
用电信息采集终端承担着用电信息采集功能。由于采集数据、协议和功能需求的不断扩充和升级,用电信息采集终端具有多种产品形态,如I型集中器、II型集中器、I型专变、II型专变、III型专变。这些用电信息采集终端可能基于不同的开发平台和语言,如基于arm平台,基于andriod平台;在对软件产品打包时,对应于目标软件包,人工提取待打包程序文件,并进行归档或压缩这种方式自动化程度低,容易出错,耗时耗力,效率不高。
因此,需要一种实现用电信息采集终端软件打包方法,以快速、准确地生成针对目标产品的软件包,提高打包过程的自动化程度和作业效率。
本发明提供的用电信息采集终端用软件产品打包方法根据用电信息采集终端的产品形态,分别定义不同产品形态对应的目标软件包类型;由配置脚本驱动,生成与不同的用电信息采集终端的产品形态适配的目标软件包,错误率低,自动化程度高。
如,针对不同的产品类型,定义目标包类型为0XFFFF0000、0XFFFF0001、0XFFFF0002、0XFFFF0003、0XFFFF0004,以分别对应I型集中器、II型集中器、I型专变、II型专变、和III型专变。
具体地,该打包方法依次由程序文件配置脚本和目标软件包文件配置脚本驱动、依次由加头可执行程序、打包可执行程序构建,并最终生成适合不同产品形态的目标软件包文件。
该打包方法适用于任何嵌入式软件工程领域,尤其是涉及跨产品形态的大型嵌入式软件工程领域,能够以定制的方式提取待打包程序文件并生成目标软件包文件。
如图1所示,本发明一个实施例的打包方法,包括:
步骤S10:根据用电信息采集终端的产品形态及预先设置的打包配置文件框架,生成打包配置脚本;
步骤S20:根据从所述打包配置脚本中提取的待打包程序文件信息,获取全部的待打包程序文件;
步骤S30:逐一对待打包程序文件执行加头操作,生成加头后的待打包程序文件;
步骤S40:根据从所述打包配置脚本中提取的待打包程序文件拼接逻辑,对全部的加头后的待打包程序文件打包,以生成与预先指定的用电信息采集终端的产品形态对应的目标软件包。
所述步骤S20,根据从所述打包配置脚本中提取的待打包程序文件信息,获取全部的待打包程序文件,具体实施时,根据打包配置脚本中的产品形态,映射出待打包程序文件列表,从而获取全部的待打包程序文件。
步骤S40中的待打包程序文件拼接逻辑,可以是文件标识与文件拼接的次序,在打包配置脚本中描述每个分立程序文件的配置项中指定,如FileId和FileNo。
进一步地,所述的打包方法,
所述目标软件包包括目标软件包文件头,
所述目标软件包文件头包括:
目标软件包的版本号、目标软件包的生成日期、目标软件包中程序文件数量、目标软件包的名称、所述预先指定的用电信息采集终端的产品形态、各程序文件的基础信息、目标软件包的校验值、目标软件包文件头的校验值;
其中,所述目标软件包文件头的校验值对应于所述目标软件包文件头;
在对所述目标软件包解包时,在根据所述目标软件包文件头的校验值确定所述目标软件包文件头完整时,执行目标软件包解包操作;
在执行目标软件包解包操作时,在根据所述目标软件包的校验值确定所述目标软件包中程序文件为整包完整时,执行程序文件解包操作。
进一步地,所述的打包方法,所述目标软件包还包括:
根据所述待打包程序文件拼接逻辑依次排列的加头后的待打包程序文件;
所述目标软件包的校验值对应于所述依次排列的加头后的待打包程序文件。
进一步地,所述的打包方法,
所述程序文件的基础信息包括:程序文件的标识、程序文件在所述目标文件包中的偏移值、加头后的待打包程序文件的长度、程序文件的校验值、程序文件的版本号;
在执行程序文件解包操作时,根据获取的目标软件包的存储位置、程序文件的标识、程序文件在所述目标文件包中的偏移值和加头后的待打包程序文件的长度,获取加头后的待打包程序文件;并
在根据程序文件的校验值判断加头后的待打包程序文件完整时,对所述加头后的待打包程序文件进行解包。进一步地,所述的打包方法,
所述逐一对待打包程序文件执行加头操作,得到加头后的待打包程序文件包括:
根据预先指定的加头文件配置框架,逐一生成待打包程序文件的加头配置脚本;
逐一利用所述加头配置脚本,制作文件加头可执行程序;
执行所述文件加头可执行程序,以逐一生成各待打包程序文件的文件头;
将待打包程序文件的文件头与待打包程序文件组合,得到加头后的待打包程序文件。
进一步地,所述的打包方法,
所述待打包程序文件的文件头包括:
程序文件的标识、程序文件的版本号、程序文件的长度、程序文件的校验值、程序文件的压缩类型、程序文件的描述信息、程序文件的文件头校验值;
对所述加头后的待打包程序文件进行解包时,在根据程序文件的文件头校验值确定所述程序文件的文件头完整时,执行程序文件校验操作;
在执行程序文件校验操作时,在根据程序文件的校验值确定所述程序文件完整时,按照程序文件拼接逻辑执行解包操作。
综上,共判断了3次,也即3类文件是否完整,分别是:目标软件包中程序文件为整包完整;加头后的待打包程序文件完整;程序文件完整(即加头前的待打包程序文件)。
进一步地,所述的打包方法,
所述程序文件的版本号用于标识程序文件的版本;
所述目标软件包的版本号用于标识目标软件包的版本;
在同一个用电信息采集终端上,存储有至少一个版本的目标软件包;
在不同版本的目标软件包中,描述信息相同的程序文件具有至少一个版本。
进一步地,所述的打包方法,
所述程序文件为分立的bin文件;或
所述打包配置脚本为ini文件;或
所述加头配置文件为ini文件。
进一步地,所述的打包方法,
所述用电信息采集终端的产品形态包括:
I型集中器、II型集中器、I型专变、II型专变、和III型专变。
如图2所示,本发明一个实施例的用电信息采集终端用软件产品打包装置,包括:
打包配置脚本生成模块100,用于根据用电信息采集终端的产品形态及预先设置的打包配置文件框架,生成打包配置脚本;
待打包程序文件获取模块200,用于根据从所述打包配置脚本中提取的待打包程序文件信息,获取全部的待打包程序文件;
待打包程序文件加头模块300,用于逐一对待打包程序文件执行加头操作,生成加头后的待打包程序文件;
目标软件包生成模块400,用于根据从所述打包配置脚本中提取的待打包程序文件拼接逻辑,对全部的加头后的待打包程序文件打包,以生成与预先指定的用电信息采集终端的产品形态对应的目标软件包。
如图3所示,每个待打包的程序文件都对应一个文件头。
具体地,打包时,定义适用于全部的程序文件的文件头描述结构,如下:
程序文件的标识、程序文件的版本号、程序文件的压缩类型、程序文件的描述信息、程序文件的长度、程序文件的校验值、及文件头的校验值。
其中,程序文件的标识、程序文件的版本号、程序文件的长度和程序文件的校验值为文件头的必选项;程序文件的压缩类型、程序文件的描述信息为文件头的可选项目。
具体地,这里的程序文件的长度即程序文件的大小,单位为字节。
优选地,程序文件的校验值为与程序文件的长度对应的循环冗余校验码(CyclicRedundancy Check,以下简称CRC校验值)。
在生成了待打包的程序文件的文件头之后,即可生成与该文件头对应的校验值。优选地,文件头的校验值为与文件头的数据长度对应的CRC校验值。
具体实施时,对应于全部的待打包的程序文件,枚举地定义每个程序文件的标识(该程序文件的标识与该程序文件唯一地对应,并在打包和解包过程中用于标识该程序文件),并分别根据上述的文件头描述结构制作对应的加头配置脚本,各程序文件的加头配置脚本可以命名为xx.ini,其中xx为不含文件后缀的程序文件名。
具体实施时,加头配置脚本中的配置语句以变量名赋值的形式,实例化每一条配置信息,如xx.ini文件中可以有如下配置:
FileId=0x00000001;
FileVersion=0x0;
CompressType=0x0;
Description=libcommon.so
利用各加头配置脚本,制作各文件加头可执行程序。执行各文件加头可执行程序,即可实例化各程序文件的文件头;这时,执行各文件加头可执行程序生成的各加头后的待打包程序文件的文件头均具有上述文件头描述结构。
在执行各加头可执行程序时,各程序文件的加头配置脚本为输入参数,各加头后的待打包程序文件为各加头可执行程序的输出。
进一步地,如图3所示,定义适用于不同的用电信息采集终端的产品形态的目标软件包文件的目标软件包文件头描述结构,如下:
目标软件包文件的版本号、目标软件包文件的生成日期、目标软件包文件中拼接的文件个数、目标软件包文件的类型、每个被拼接的程序文件的基础信息、目标软件包文件的校验值、目标软件包文件头校验值。
每个被拼接的程序文件的基础信息,包括:
在前述步骤中确定的每个被拼接的程序文件的标识,被拼接的程序文件在目标软件包文件中的位置,被拼接程序文件在目标软件包文件中的文件标识、被拼接的程序文件的长度、被拼接的程序文件的校验值和被拼接的程序文件的版本号。
优选地,被拼接程序文件在目标软件包文件中的位置,为被拼接程序文件在目标软件包文件中的位置偏移量。被拼接程序文件在目标软件包文件中的位置,用于在解析目标软件包文件时,基于被拼接程序文件的文件标识,搜索目标软件包文件的文件头,查找与被拼接程序文件标识对应的位置偏移量,并根据该位置偏移量跳转到被拼接程序文件的实际存储位置。
应该理解为,被拼接程序文件的实际存储位置通常为逻辑存储位置,可以进一步根据该逻辑存储位置跳转到实际的物理存储位置。
获取指定的用电信息采集终端的产品形态,确定与该用电信息采集终端的产品形态对应的打包配置文件框架;
根据前述目标软件包文件头描述结构,制作与该用电信息采集终端的产品形态对应的目标软件包文件配置脚本。
该目标软件包文件配置脚本用于实例化目标软件包文件头描述结构,如,将目标软件包文件配置脚本命名为yy.ini,其中yy为不含后缀的待生成的目标软件包文件名。
具体地,配置脚本中,配置语句以变量名赋值的形式,实例化每一条配置信息,如目标软件包文件配置脚本yy.ini中有如下配置:
PackageVersion=0x00000001;
ProductType=0xFFFFAA55;
PackageName="ProductA-Release-V1.pkg";
FileNums=0x20;
BuildDate="2018.09.12"
//待拼接程序文件1的配置信息
[Start]
FileNo=1;
FileId=0x00000001;
FileVersion=0x01;
[End]
//待拼接程序文件2的配置信息
[Start]
FileNo=2;
FileId=0x00000002;
FileVersion=0x01;
[End]
应该理解为,以上配置信息仅作为示例,并未包括全部的配置信息。
下一步,基于以上目标软件包文件头描述结构和目标软件包文件配置脚本,制作打包可执行程序。
随后,基于该打包可执行程序,以目标软件包文件配置脚本为输入参数,执行打包操作,生成目标软件包文件。
该目标软件包文件包括目标软件包文件头(包括目标软件包文件的版本号、目标软件包文件的生成日期、目标软件包文件中拼接的文件个数、目标软件包文件的类型、每个被拼接的程序文件的基础信息、目标软件包文件的校验值、目标软件包文件头校验值)、按照文件标识依次拼接的被拼接的程序文件。
该目标软件包文件中具有每个被拼接程序文件的版本信息和校验信息,具有逻辑上的整体性,便于进行整体意义上的合法性校验;各被拼接的程序文件之间的相互关联关系唯一,可以有效地避免目标软件包文件被非法移除或修改。
本发明所述的软件打包方法和系统,由配置脚本驱动、由文件加头可执行程序、打包可执行程序实施构建,实现快速、准确的构建定制化的目标软件目标软件包。
如图4所示,该程序软件打包方法,由配置脚本驱动,由文件加头可执行程序和打包可执行程序实施构建。具体地,包括以下步骤:
P1:定义程序文件的文件头描述结构;
以一种具体的代码实现为例,程序文件的文件头描述结构可以定义为:
typedefstructtagFileHeader
{
unsignedintuiHeaderCrc;/*文件头的crc校验和*/
unsignedintuiFileId;/*唯一的文件标识*/
unsignedintuiVersion;/*文件版本号*/
unsignedintuiFileDataLength;/*文件数据长度*/
unsignedintuiFileDataCrc;/*文件数据的crc校验和*/
unsignedintuiCompressType;/*文件压缩类型*/
charszDescription[128];/*文件描述*/
}FileHeader;
P2:枚举定义每个程序文件的唯一标识ID;
在定义文件标识ID时,鉴于嵌入式软件工程中通常包含多个待打包程序文件。为保证通用性,为所有待打包程序文件分配唯一的文件标识ID。
在具体的代码实现时,以枚举方式为每个程序文件指定唯一的文件标识ID,如为N个待打包的程序文件依次分配自1到N的自然数作为文件标识。
优选地,为尽可能减小目标软件包的规模,还可以在打包前对程序文件进行压缩。压缩类型通常以枚举方式定义,如,rar、.zip、.cab、.iso、.ja。
P3:制作每个程序文件的加头配置脚本;
基于对程序文件的文件头描述结构的定义,任意一个程序文件都对应一个唯一的配置脚本。如,该配置脚本可以命名为*.ini,其中*为不包括文件后缀的程序文件名。在每一个*.ini中,实例化文件头描述结构。
以libcommon.so程序文件为例,下面为其配置脚本,该配置脚本为libcommon.ini:
FileId=0x00000001;
FileVersion=0x0;
CompressType=0x0;
Description=libcommon.so
P4:制作文件加头可执行程序;
制作通用的文件加头可执行程序,用于提供通用的文件加头逻辑框架,其基本功能包括读取指定的配置脚本,解析配置脚本,并打开配置脚本指定的待加头程序文件,基于配置脚本指定的文件头实例信息,对目标程序文件进行文件加头处理,并在文件头描述部分填充crc校验和等信息。
通用的文件加头可执行程序,由任意符合配置脚本格式要求的配置脚本驱动。
P5:执行文件加头可执行程序;
以配置脚本文件名为参数运行文件加头可执行程序,即可完成文件加头操作。
P6:生成加头后的程序文件。
至此,待打包的各程序文件均已被加头;各加头后的待打包的程序文件随后被按照指定的产品形态对应的目标软件包类型构建为目标文件包。
综上,上述步骤用于实现任意待打包程序文件的加头操作,加头后的待打包程序文件将作为目标软件包文件的组件,拼接起来构成目标软件包文件的主体部分。
应该理解为,以上P1-P6步骤中生成的加头后程序文件可以对应多种目标文件包。
构建目标软件包的环节,如图4中P7所示。
P7:定义目标软件包文件头描述结构。
以一种具体的代码实现为例,目标软件包文件头描述结构定义为:
1)、包头描述结构
2)、分立bin文件描述结构
如目标软件包文件头描述结构定义所示,目标软件包文件头描述结构中包括目标软件包类型字段,该目标软件包类型字段反映了目标软件包的唯一性。即由定制化配置脚本提供的特定程序文件组合而构成的一个唯一的打包文件,由目标软件包类型字段唯一标识一个目标软件包类型。
P8:定义每一种产品形态的目标软件包类型;
以一种具体的代码实现为例,通常以枚举方式为每一种产品形态定义唯一的目标软件包类型ID。
P9:制作唯一的打包配置脚本;
应用上述定义的目标软件包头描述结构及目标软件包类型ID,产生待打包配置脚本信息,制作唯一的、定制化的打包配置脚本。
打包配置脚本是控制打包执行逻辑的输入参数,决定了从一个嵌入式软件工程中提取哪些待打包程序文件,以及这些待打包程序之间的拼接逻辑以构建出应用于特定产品形态的目标软件包。
打包配置脚本中,至少需要包含以下内容:目标软件包版本信息、目标软件包类型、目标软件包名称、目标软件包中包含的程序文件个数、目标软件包构建日期,以及所有待打包的程序文件的基础信息,该基础信息中,至少包含每个程序文件的以下内容:文件序号、文件标识ID、文件版本、文件名称。
如,在打包配置脚本中,每个待打包程序文件描述信息以起始和终止标识隔开,如[Start]和[End]。以一个具体的实现为例,其打包配置脚本为:
PackageVersion=0x00000001;
ProductType=0xFFFFAA55;
PackageName="ProductA-Release-V1.pkg";
FileNums=0x20;
BuildDate="2018.09.12"
//待拼接程序文件配置信息
[Start]
FileNo=1;
FileId=0x00000001;
FileVersion=0x01;
Description=libcommon.so
[End]
//待拼接程序文件配置信息
[Start]
FileNo=2;
FileId=0x00000002;
FileVersion=0x01;
Description=libapp.so
[End]
......
基于上述的方法和步骤,生成了唯一的、定制的打包配置脚本,要完成打包操作,需要进一步制作打包可执行程序。
P10:制作打包工具可执行程序;
该打包工具可执行程序,用于提供一种通用的打包逻辑框架。其基本功能包括读取指定的打包配置脚本,解析打包配置脚本,并依据打包配置脚本中记载的目标软件包文件头描述结构、待打包程序文件基础信息拼接各待打包文件,并填充整体CRC校验和及每个程序文件的CRC校验信息,构建出图2所示的软件目标软件包。
P11:执行打包工具可执行程序;
P12:生成定制的目标软件包文件。
至此,已生成应用于特定产品形态的目标软件包。
综上,该打包方法具有以下技术效果:
(1)、提高了嵌入式软件工程领域,尤其是涉及跨产品形态的复杂嵌入式软件工程领域中软件打包的自动化水平。
(2)、在嵌入式软件工程领域,尤其是涉及跨产品形态的复杂嵌入式软件工程领域中,能够快速、准确提取与特定产品形态对应的待打包文件,提高了打包效率和质量。
(3)、构建的软件包无法被非法解压,从而可以防止软件包内的程序文件被非法删除或修改。
(4)、构建的软件包具有不可非法更改的唯一版本号,可以支持严格、准确的版本管理。
(5)、采所构建的软件包整体上和内部各程序文件都具有唯一的校验值,确保实现软件包整体和各程序文件之间的不可分割性。
(6)、所构建的软件包具有整体上的不可分割性,及具有唯一的版本号;在同一个终端设备上可以保存有多个不同版本的目标软件包。在需要的时候,可以支持软件包自动升级或回滚。
(7)、所构建的软件包能够更好的支持不同版本之间的比对,实现版本的快速升级。
该实施例提供了一种由配置脚本驱动的软件打包方法和系统,通过定义软件目标软件包组成结构、目标软件包头描述结构、程序文件拼接结构、程序文件文件头描述结构、由制作的加头可执行程序、打包可执行程序实施构建、由定制化的配置脚本为控制参数,实现从嵌入式软件工程中,尤其是跨产品形态的复杂软件工程中,提取待打包程序文件,并驱动打包操作的实施。
该方法解决了现有的嵌入式软件工程中,打包自动化程度低,容易出错,并且所构建的软件包不具有逻辑上的整体性,无法进行整体的合法性校验,各程序文件之间缺少相互关联,程序文件易被非法移除或者修改的问题。
以上已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。

Claims (10)

1.一种用电信息采集终端用软件产品打包方法,其特征在于,包括如下步骤:
根据用电信息采集终端的产品形态及预先设置的打包配置文件框架,生成打包配置脚本;
根据从所述打包配置脚本中提取的待打包程序文件信息,获取全部的待打包程序文件;
逐一对待打包程序文件执行加头操作,生成加头后的待打包程序文件;
根据从所述打包配置脚本中提取的待打包程序文件拼接逻辑,对全部的加头后的待打包程序文件打包,以生成与预先指定的用电信息采集终端的产品形态对应的目标软件包。
2.根据权利要求1所述的打包方法,其特征在于,
所述目标软件包包括目标软件包文件头,
所述目标软件包文件头包括:
目标软件包的版本号、目标软件包的生成日期、目标软件包中程序文件数量、目标软件包的名称、所述预先指定的用电信息采集终端的产品形态、各程序文件的基础信息、目标软件包的校验值、目标软件包文件头的校验值;
其中,所述目标软件包文件头的校验值对应于所述目标软件包文件头;
在对所述目标软件包解包时,在根据所述目标软件包文件头的校验值确定所述目标软件包文件头完整时,执行目标软件包解包操作;
在执行目标软件包解包操作时,在根据所述目标软件包的校验值确定所述目标软件包中程序文件为整包完整时,执行程序文件解包操作。
3.根据权利要求2所述的打包方法,其特征在于,所述目标软件包还包括:
根据所述待打包程序文件拼接逻辑依次排列的加头后的待打包程序文件;
所述目标软件包的校验值对应于所述依次排列的加头后的待打包程序文件。
4.根据权利要求2所述的打包方法,其特征在于,
所述程序文件的基础信息包括:程序文件的标识、程序文件在所述目标文件包中的偏移值、加头后的待打包程序文件的长度、程序文件的校验值、程序文件的版本号;
在执行程序文件解包操作时,根据获取的目标软件包的存储位置、程序文件的标识、程序文件在所述目标文件包中的偏移值和加头后的待打包程序文件的长度,获取加头后的待打包程序文件;并
在根据程序文件的校验值判断加头后的待打包程序文件完整时,对所述加头后的待打包程序文件进行解包。
5.根据权利要求4所述的打包方法,其特征在于,
所述逐一对待打包程序文件执行加头操作,得到加头后的待打包程序文件包括:
根据预先指定的加头文件配置框架,逐一生成待打包程序文件的加头配置脚本;
逐一利用所述加头配置脚本,制作文件加头可执行程序;
执行所述文件加头可执行程序,以逐一生成各待打包程序文件的文件头;
将待打包程序文件的文件头与待打包程序文件组合,得到加头后的待打包程序文件。
6.根据权利要求5所述的打包方法,其特征在于,
所述待打包程序文件的文件头包括:
程序文件的标识、程序文件的版本号、程序文件的长度、程序文件的校验值、程序文件的压缩类型、程序文件的描述信息、程序文件的文件头校验值;
对所述加头后的待打包程序文件进行解包时,在根据程序文件的文件头校验值确定所述程序文件的文件头完整时,执行程序文件校验操作;
在执行程序文件校验操作时,在根据程序文件的校验值确定所述程序文件完整时,按照程序文件拼接逻辑执行解包操作。
7.根据权利要求1所述的打包方法,其特征在于,
所述程序文件的版本号用于标识程序文件的版本;
所述目标软件包的版本号用于标识目标软件包的版本;
在同一个用电信息采集终端上,存储有至少一个版本的目标软件包;
在不同版本的目标软件包中,描述信息相同的程序文件具有至少一个版本。
8.根据权利要求3所述的打包方法,其特征在于,
所述程序文件为分立的bin文件;或
所述打包配置脚本为ini文件;或
所述加头配置文件为ini文件。
9.根据权利要求1所述的打包方法,其特征在于,
所述用电信息采集终端的产品形态包括:
I型集中器、II型集中器、I型专变、II型专变、和III型专变。
10.一种用电信息采集终端用软件产品打包装置,其特征在于,包括:
打包配置脚本生成模块,用于根据用电信息采集终端的产品形态及预先设置的打包配置文件框架,生成打包配置脚本;
待打包程序文件获取模块,用于根据从所述打包配置脚本中提取的待打包程序文件信息,获取全部的待打包程序文件;
待打包程序文件加头模块,用于逐一对待打包程序文件执行加头操作,生成加头后的待打包程序文件;
目标软件包生成模块,用于根据从所述打包配置脚本中提取的待打包程序文件拼接逻辑,对全部的加头后的待打包程序文件打包,以生成与预先指定的用电信息采集终端的产品形态对应的目标软件包。
CN201910554462.0A 2019-06-25 2019-06-25 用电信息采集终端用软件产品打包方法和装置 Pending CN110442374A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910554462.0A CN110442374A (zh) 2019-06-25 2019-06-25 用电信息采集终端用软件产品打包方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910554462.0A CN110442374A (zh) 2019-06-25 2019-06-25 用电信息采集终端用软件产品打包方法和装置

Publications (1)

Publication Number Publication Date
CN110442374A true CN110442374A (zh) 2019-11-12

Family

ID=68428223

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910554462.0A Pending CN110442374A (zh) 2019-06-25 2019-06-25 用电信息采集终端用软件产品打包方法和装置

Country Status (1)

Country Link
CN (1) CN110442374A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111443942A (zh) * 2020-04-22 2020-07-24 广州虎牙科技有限公司 资源文件的打包方法、装置、存储介质和计算机设备
CN111813436A (zh) * 2020-06-17 2020-10-23 中车株洲电力机车研究所有限公司 一种批量更新配置文件的方法及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111443942A (zh) * 2020-04-22 2020-07-24 广州虎牙科技有限公司 资源文件的打包方法、装置、存储介质和计算机设备
CN111443942B (zh) * 2020-04-22 2024-04-19 广州虎牙科技有限公司 资源文件的打包方法、装置、存储介质和计算机设备
CN111813436A (zh) * 2020-06-17 2020-10-23 中车株洲电力机车研究所有限公司 一种批量更新配置文件的方法及系统

Similar Documents

Publication Publication Date Title
US8533207B2 (en) Information processing method, apparatus and program in XML driven architecture
CN104391728B (zh) 软件升级差量包获取方法和相应的升级方法以及装置
US7676479B2 (en) Method and system for updating versions of content stored in a storage device
US7032210B2 (en) Method and system for generating program source code of a computer application from an information model
CN100524210C (zh) 用于为组件创建语言中立和对应的语言专用资源文件的方法和系统
US6757894B2 (en) Preprocessed applications suitable for network streaming applications and method for producing same
US8595693B2 (en) Model driven deployment of composite applications
CN107688464A (zh) 软件定制服务器、方法及计算机可读存储介质
CN110442374A (zh) 用电信息采集终端用软件产品打包方法和装置
CN107864052A (zh) 基于持续部署应用配置自动化升级的方法及其系统
CN107678750A (zh) 一种sdk打包方法、计算设备及sdk打包系统
US10866803B2 (en) Generating interaction libraries
CN109298900A (zh) 一种应用拆分以及按需加载方法、装置
CN116090403B (zh) 支持多仿真器的命令处理系统
Ariola et al. A type-theoretic foundation of delimited continuations
CN112732265B (zh) 一种数据处理方法和相关装置
Bagheri et al. Monarch: Model-based development of software architectures
CN114924772B (zh) 一种算法包的更新方法及设备
CN108762796A (zh) 一种Android系统升级方法及其存储设备
CN114896161A (zh) 基于人工智能的文件构造方法、装置、计算机设备及介质
CN115145825A (zh) 一种单片机软件调参方法及系统
CN110262834A (zh) 一种生产安装包的方法及装置
CN117075891B (zh) 一种为测试用例关联配置文件的方法及装置
CN116909627B (zh) 一种可执行程序解析方法、装置、电子设备和存储介质
CN117407031B (zh) 补丁包升级文件生成方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination