在QT程序中自动更新的方法及装置与流程

文档序号:11154509阅读:4030来源:国知局
在QT程序中自动更新的方法及装置与制造工艺

本发明涉及计算机程序技术领域,特别是涉及一种在QT程序中自动更新的方法及装置。



背景技术:

Qt程序是一个跨平台C++图形用户界面应用程序开发框架,它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt程序是面向对象的框架,使用特殊的代码生成扩展,以及一些宏,易于扩展,允许组件变成。在Qt程序完成开发发布以后,会有一个自动更新版本的功能。然而,一般的更新都是简单的从服务器将新版本文件直接覆盖到本地文件中,并没有涉及到模块化更新、更新文件校验、更新级别机制等特殊情况的处理,并且,一般的更新都是只要主程序启动就进行更新检查,都是频繁验证更新。此外,一般的更新,更新信息文件结构过于复杂,并且,更新程序无法更新。



技术实现要素:

有鉴于此,本发明提供了一种在QT程序中自动更新的方法及装置,其能够使得更新效率提高,更新复杂度降低,从而更加适于实用。

为了达到上述第一个目的,本发明提供的在QT程序中自动更新的方法的技术方案如下:

本发明提供的在QT程序中自动更新的方法包括以下步骤:

本发明提供的在QT程序中自动更新的方法包括以下步骤:

获取更新信息文件;

通过比较经过解析的所述更新信息文件和对应的本地信息,判断所述对应的本地信息是否需要更新:

如需要更新,则启动更新,使得所述更新文件覆盖对应的本地信息;

如不需要更新,则维持所述本地信息。

本发明提供的在QT程序中自动更新的方法还可采用以下技术措施进一步实现。

作为优选,所述解析所述更新信息文件,得到经过解析的更新信息文件包括以下步骤:

加载所述更新信息文件并返回文本对象和错误值;

对所述返回的文本对象和错误值进行判断:

若所述文本对象不存在错误信息,则通过文本对象返回JSON对象,并采用键值对的形式返回每个字段值,得到所述经过解析的更新信息文件;

若所述文本对象存在错误信息,则更新错误并回调所述错误。

作为优选,定义本地信息的版本号为第一版本号,定义所述经过解析的更新信息文件的版本号为第二版本号,定义所述经过解析的更新信息文件的建议版本号为第三版本号;

所述通过比较所述经过解析的更新信息文件和对应的本地信息,判断所述对应的本地信息是否需要更新包括以下步骤:

比较所述第一版本号的字符串与所述第二版本号的字符串:

若所述第一版本号的字符串与所述第二版本号的字符串不等,则启动更新;

若所述第一版本号的字符串与所述第二版本号的字符串相等,则维持所述本地信息;

和/或,

比较所述第一版本号的字符串与所述第三版本号的字符串:

若所述第一版本号的字符串与所述第三版本号的字符串不等,则启动更新;

若所述第一版本号的字符串与所述第三版本号的字符串相等,则维持所述本地信息;

和/或,

计算本地信息的MD5值并得到第一MD5值,计算所述经过解析的更新信息文件的MD5值并得到第二MD5值:

若所述第一MD5值与所述第二MD5值不等,则启动更新;

若所述第一MD5值与所述第二MD5值相等,则维持所述本地信息。

作为优选,所述MD5值的计算方法包括以下步骤:

获取待计算文件对象的散列函数对象;

应用所述散列函数对象添加待计算文件数据;

根据所述待计算文件数据计算并返回所述待计算文件的MD5值;

其中,所述第一MD5值与所述第二MD5值是通过动态链接库的更新监听接口的检查回调函数通知主程序的。

作为优选,所述在QT程序中自动更新的方法还包括以下步骤:

获取相邻两次启动更新的时刻T1和T2

计算所述相邻两次启动更新的时间差t=|T2-T1|;

比较相邻两次启动更新的时间差t与更新阈值t0的大小关系:

当t>t0时,启动更新;

当t≤t0时,拒绝更新。

为了达到上述第二个目的,本发明提供的在QT程序中自动更新的装置的技术方案如下:

本发明提供的在QT程序中自动更新的装置包括更新信息文件获取单元、比较判断单元、更新单元,

所述更新信息文件获取单元用于获取更新信息文件;

所述比较判断单元用于通过比较经过解析的所述更新信息文件和对应的本地信息,判断所述对应的本地信息是否需要更新:

当所述比较判断单元的结果是需要更新时,所述更新单元用于根据所述比较判断单元的判断结果,进行更新,使得所述更新文件覆盖对应的本地信息;

当所述比较判断单元的结果是不需要更新时,维持所述本地信息。

本发明提供的在QT程序中自动更新的装置还可采用以下技术措施进一步实现。

作为优选,所述文件解析单元包括加载模块、错误值判断模块、字段返回模块、更新回调模块,

所述加载模块用于加载所述更新信息文件并返回文本对象和错误值;

所述错误值判断模块用于对所述返回的文本对象和错误值进行判断:

当所述错误值判断模块的判断结果为所述文本对象不存在错误信息时,所述字段返回模块通过文本对象返回JSON对象,并采用键值对的形式返回每个字段值,得到所述经过解析的更新信息文件;

当所述错误值判断模块的判断结果为所述文本对象存在错误信息时,所述更新回调模块用于更新错误并回调所述错误。

作为优选,所述在QT程序中自动更新的装置还包括MD5值计算单元,

所述MD5值计算单元包括散列函数获取模块、文件数据添加模块、MD5值计算返回模块,

所述散列函数获取模块用于获取待计算文件对象的散列函数对象;

所述文件数据添加模块用于应用所述散列函数对象添加待计算文件数据;

所述MD5值计算返回模块用于根据所述待计算文件数据计算并返回所述待计算文件的MD5值。

作为优选,所述比较判断单元包括第一比较模块和/或第二比较模块和/或第二比较模块和/或第三比较模块,

所述第一比较模块用于比较第一版本号和第二版本号,当所述第一版本号与所述第二版本号不等时,则启动更新;当所述第一版本号与所述第二版本号相等时,则维持所述本地信息;

所述第二比较模块用于比较第一版本号和第三版本号,当所述第一版本号与所述第三版本号不等时,则启动更新;当所述第一版本号与所述第三版本号相等时,则维持所述本地信息;

所述第三比较模块用于比较第一MD5值和第二MD5值,若所述第一MD5值与所述第二MD5值不等,则启动更新;若所述第一MD5值与所述第二MD5值相等,则维持所述本地信息;

其中,

所述第一版本号为本地信息的版本号,所述第二版本号为经过解析的更新信息文件的版本号,所述第三版本号为经过解析的更新信息文件的建议版本号;

所述第一MD5值为本地信息的MD5值,所述第二MD5值为经过解析的更新信息文件的MD5值。

作为优选,所述在QT程序中自动更新的装置还包括更新限制单元,

所述更新限制单元包括更新时刻获取模块、更新时差计算模块、更新时差比较判断模块,

所述更新时刻获取模块用于获取相邻两次启动更新的时刻T1和T2

所述更新时差计算模块用于计算所述相邻两次启动更新的时间差t=|T2-T1|;

所述更新时差比较判断模块用于比较相邻两次启动更新的时间差t与更新阈值t0的大小关系,并决定是否启动更新:

当t>t0时,启动更新;

当t≤t0时,拒绝更新。

本发明提供的在QT程序中自动更新的方法及装置首先获取更新信息文件;之后,之后,通过比较经过解析的所述更新信息文件和对应的本地信息,判断所述对应的本地信息是否需要更新:如需要更新,则启动更新,使得所述更新文件覆盖对应的本地信息;如不需要更新,则维持本地信息。由于其中存在对是否需要更新进行判断的步骤,只有在判断为对应的本地信息需要更新的时候才启动更新,而在判断为对应的本地信息不需要更新的时候则不予更新,因此,能够避免只要主程序启动就进行更新检查造成的频繁验证更新。因此,其能够提高更新效率,降低更新复杂度。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例一提供的在QT程序中自动更新的方法的步骤流程图;

图2为本发明实施例二提供的在QT程序中自动更新的装置的信号流向关系示意图。

具体实施方式

本发明为解决现有技术存在的问题,提供一种在QT程序中自动更新的方法及装置,其能够使得更新效率提高,更新复杂度降低,从而更加适于实用。

为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的在QT程序中自动更新的方法及装置,其具体实施方式、结构、特征及其功效,详细说明如后。在下述说明中,不同的“一实施例”或“实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,具体的理解为:可以同时包含有A与B,可以单独存在A,也可以单独存在B,能够具备上述三种任一种情况。

实施例一

参见附图1,本发明实施例一提供的在QT程序中自动更新的方法包括以下步骤:

步骤101:获取更新信息文件;

本实施例中,更新信息文件是JSON格式文件,JSON格式文件的树形结构包括三层;其中,第一层为更新信息层,更新信息层用于保存的信息包括版本号、更新时间、建议版本号、更新大小;第二层为模块信息层,模块信息层用于保存的信息包括模块名称、版本号、大小;第三层为更新文件信息层,更新文件信息层用于保存的信息包括文件名、文件MD5值、文件路径。其中,JSON格式的文件效率最好,将文件设计为三层的树型结构,能够降低更新信息的复杂度。具体地说,复杂度的下降是通过将更新的基本信息与更新的文件信息进行分层,在把更新文件以模块为单位进行隔开来达到的。

步骤102:由于网络传播的文件都需要进行压缩,因此,在步骤101之后还需要解压缩更新信息文件,得到解压缩后的更新信息文件;本实施例中,更新信息文件为RAR或者ZIP格式的压缩文件。

步骤103:解析解压缩后的更新信息文件,得到经过解析的更新信息文件;

本实施例中,解析解压缩后的更新信息文件,得到经过解析的更新信息文件包括以下步骤:步骤1031:加载解压缩后的更新信息文件并返回文本对象和错误值;步骤1032:对返回的文本对象和错误值进行判断:若文本对象不存在错误信息,则执行步骤1033:通过文本对象返回JSON对象,并采用键值对的形式返回每个字段值,得到经过解析的更新信息文件;若文本对象存在错误信息,则执行步骤1034:更新错误并回调错误。

步骤104:通过比较经过解析的更新信息文件和对应的本地信息,判断对应的本地信息是否需要更新:

如需要更新,则执行步骤105:启动更新,使得更新文件覆盖对应的本地信息;

如不需要更新,则返回执行步骤101。

其中,步骤104通过比较经过解析的更新信息文件和对应的本地信息,判断对应的本地信息是否需要更新的第一种方式包括以下步骤:步骤10411:定义本地信息的版本号为第一版本号,定义经过解析的更新信息文件的版本号为第二版本号;步骤10412:比较第一版本号的字符串与第二版本号的字符串:步骤10413:若第一版本号的字符串与第二版本号的字符串不等,则启动更新;步骤10414:若第一版本号的字符串与第二版本号的字符串相等,则维持本地信息。

其中,步骤104通过比较经过解析的更新信息文件和对应的本地信息,判断对应的本地信息是否需要更新的第二种方式包括以下步骤:步骤10421:定义本地信息的版本号为第一版本号,定义经过解析的更新信息文件的建议版本号为第三版本号;步骤10422:比较第一版本号的字符串与第三版本号的字符串:步骤10423:若第一版本号的字符串与第三版本号的字符串不等,则启动更新;步骤10424:若第一版本号的字符串与第三版本号的字符串相等,则维持本地信息。

其中,在比较第一版本号与第二版本号时,当前一字段相同时,继续进行下一字段的比较,直到比较得到不等,认为第一版本号小,启动更新。例如,当第一版本号为1.0.1,第二版本号为1.1.0时,由于第一版本号的第一字段和第二版本号的第一字段均为“1”,进行第二字段的比较,因为第一版本号的第一字段为“0”,而第二版本号的第二字段为“1”,能够得到不等的结果,此时,认为第一版本号小。

或者,比较第一版本号与第三版本号时,当第一版本号与第二版本号不等时,启模糊更新,也就是根据随机数进行随机更新。例如,当第一版本号为1.0.1,第三版本号为1.1.0,比较过程中,由于1.0.1≠1.1.0,因此,启动模糊更新,也就是根据随机数进行随机更新。

其中,步骤104通过比较经过解析的更新信息文件和对应的本地信息,判断对应的本地信息是否需要更新的第三种方式包括以下步骤:步骤10431:计算本地信息的MD5值并得到第一MD5值;计算经过解析的更新信息文件的MD5值并得到第二MD5值;步骤10432:若第一MD5值与第二MD5值不等,则启动更新;步骤10433:若第一MD5值与第二MD5值相等,则维持本地信息。

其中,MD5值的计算方法包括以下步骤:步骤104311:使用QT QCryptographicHash hash(QCryptographicHash::Md5)获取待计算文件对象的散列函数对象;步骤104312:应用散列函数对象的adddata方法添加待计算文件数据;步骤104313:根据待计算文件数据,通过md5C=hash.result().toHex();计算并返回待计算文件的MD5值。

本实施例中,第一MD5值与第二MD5值是通过动态链接库的更新监听接口的检查回调函数通知主程序的,该动态链接数据库具体为:

定义一个IUpdate接口和IListener回调接口,方便外部调用。接口:

由于所有的模块都是通过接口,命令行参数,下载文件进行连接的,可以很好的降低模块与模块之间的耦合度,由此每个模块的更新和修改也是相对独立的。

此外,该在QT程序中自动更新的方法在步骤104和步骤105之间还包括以下步骤:

步骤z1:获取相邻两次启动更新的时刻T1和T2

步骤z2:计算相邻两次启动更新的时间差t=|T2-T1|;

步骤z3:比较相邻两次启动更新的时间差t与更新阈值t0的大小关系:当t>t0时,启动更新;当t≤t0时,拒绝更新。

在这种情况下,能够避免频繁更新。

本发明提供的在QT程序中自动更新的方法首先获取更新信息文件;之后,解压缩所述更新信息文件,得到解压缩后的更新信息文件;之后,解析所述解压缩后的更新信息文件,得到经过解析的更新信息文件;之后,通过比较所述经过解析的更新信息文件和对应的本地信息,判断所述对应的本地信息是否需要更新:如需要更新,则启动更新,使得所述更新文件覆盖对应的本地信息;如不需要更新,则维持本地信息。由于其中存在对是否需要更新进行判断的步骤,只有在判断为对应的本地信息需要更新的时候才启动更新,而在判断为对应的本地信息不需要更新的时候则不予更新,因此,能够避免只要主程序启动就进行更新检查造成的频繁验证更新。因此,其能够提高更新效率,降低更新复杂度。

实施例二

参见附图2,本发明实施例二提供的在QT程序中自动更新的装置包括更新信息文件获取单元201、解压缩单元202、文件解析单元203、比较判断单元204、更新单元205。更新信息文件获取单元201用于获取更新信息文件;解压缩单元202用于解压缩更新信息文件,得到解压缩后的更新信息文件;文件解析单元203用于解析解压缩后的更新信息文件,得到经过解析的更新信息文件;比较判断单元204用于通过比较经过解析的更新信息文件和对应的本地信息,判断对应的本地信息是否需要更新:当比较判断单元204的结果是需要更新时,更新单元205用于根据比较判断单元的判断结果,进行更新,使得更新文件覆盖对应的本地信息;当比较判断单元204的结果是不需要更新时,维持本地信息。

其中,文件解析单元203包括加载模块、错误值判断模块、字段返回模块、更新回调模块。加载模块用于加载解压缩后的更新信息文件并返回文本对象和错误值;错误值判断模块用于对返回的文本对象和错误值进行判断:当错误值判断模块的判断结果为文本对象不存在错误信息时,字段返回模块通过文本对象返回JSON对象,并采用键值对的形式返回每个字段值,得到经过解析的更新信息文件;当错误值判断模块的判断结果为文本对象存在错误信息时,更新回调模块用于更新错误并回调错误。

其中,在QT程序中自动更新的装置还包括MD5值计算单元。MD5值计算单元包括散列函数获取模块、文件数据添加模块、MD5值计算返回模块。散列函数获取模块用于获取待计算文件对象的散列函数对象;文件数据添加模块用于应用散列函数对象添加待计算文件数据;MD5值计算返回模块用于根据待计算文件数据计算并返回待计算文件的MD5值。

其中,比较判断单元204包括第一比较模块和/或第二比较模块和/或第二比较模块和/或第三比较模块。第一比较模块用于比较第一版本号和第二版本号,当第一版本号与第二版本号不等时,则启动更新;当第一版本号与第二版本号相等时,则维持本地信息。第二比较模块用于比较第一版本号和第三版本号,当第一版本号与第三版本号不等时,则启动更新;当第一版本号与第三版本号相等时,则维持本地信息。第三比较模块用于比较第一MD5值和第二MD5值,若第一MD5值与第二MD5值不等,则启动更新;若第一MD5值与第二MD5值相等,则维持本地信息。其中,第一版本号为本地信息的版本号,第二版本号为经过解析的更新信息文件的版本号,第三版本号为经过解析的更新信息文件的建议版本号。第一MD5值为本地信息的MD5值,第二MD5值为经过解析的更新信息文件的MD5值。

此外,的在QT程序中自动更新的装置还包括更新限制单元。更新限制单元包括更新时刻获取模块、更新时差计算模块、更新时差比较判断模块。更新时刻获取模块用于获取相邻两次启动更新的时刻T1和T2;更新时差计算模块用于计算相邻两次启动更新的时间差t=|T2-T1|;更新时差比较判断模块用于比较相邻两次启动更新的时间差t与更新阈值t0的大小关系,并决定是否启动更新:当t>t0时,启动更新;当t≤t0时,拒绝更新。在这种情况下,能够避免频繁更新。

本发明提供的在QT程序中自动更新的装置首先通过更新信息文件获取单元201获取更新信息文件;之后,通过解压缩单元202解压缩所述更新信息文件,得到解压缩后的更新信息文件;之后,通过文件解析单元203解析所述解压缩后的更新信息文件,得到经过解析的更新信息文件;之后,通过比较判断单元204比较所述经过解析的更新信息文件和对应的本地信息,判断所述对应的本地信息是否需要更新:如需要更新,则通过更新单元205启动更新,使得所述更新文件覆盖对应的本地信息;如不需要更新,则维持本地信息。由于其中存在比较判断单元204,只有在判断为对应的本地信息需要更新的时候才触发更新单元启动更新,而在判断为对应的本地信息不需要更新的时候则不会触发更新单元205不予更新,因此,能够避免只要主程序启动就进行更新检查造成的频繁验证更新。因此,其能够提高更新效率,降低更新复杂度。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1