本發(fā)明涉及計(jì)算機(jī)程序技術(shù)領(lǐng)域,特別是涉及一種在QT程序中自動(dòng)更新的方法及裝置。
背景技術(shù):
Qt程序是一個(gè)跨平臺(tái)C++圖形用戶(hù)界面應(yīng)用程序開(kāi)發(fā)框架,它既可以開(kāi)發(fā)GUI程序,也可用于開(kāi)發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。Qt程序是面向?qū)ο蟮目蚣?,使用特殊的代碼生成擴(kuò)展,以及一些宏,易于擴(kuò)展,允許組件變成。在Qt程序完成開(kāi)發(fā)發(fā)布以后,會(huì)有一個(gè)自動(dòng)更新版本的功能。然而,一般的更新都是簡(jiǎn)單的從服務(wù)器將新版本文件直接覆蓋到本地文件中,并沒(méi)有涉及到模塊化更新、更新文件校驗(yàn)、更新級(jí)別機(jī)制等特殊情況的處理,并且,一般的更新都是只要主程序啟動(dòng)就進(jìn)行更新檢查,都是頻繁驗(yàn)證更新。此外,一般的更新,更新信息文件結(jié)構(gòu)過(guò)于復(fù)雜,并且,更新程序無(wú)法更新。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種在QT程序中自動(dòng)更新的方法及裝置,其能夠使得更新效率提高,更新復(fù)雜度降低,從而更加適于實(shí)用。
為了達(dá)到上述第一個(gè)目的,本發(fā)明提供的在QT程序中自動(dòng)更新的方法的技術(shù)方案如下:
本發(fā)明提供的在QT程序中自動(dòng)更新的方法包括以下步驟:
本發(fā)明提供的在QT程序中自動(dòng)更新的方法包括以下步驟:
獲取更新信息文件;
通過(guò)比較經(jīng)過(guò)解析的所述更新信息文件和對(duì)應(yīng)的本地信息,判斷所述對(duì)應(yīng)的本地信息是否需要更新:
如需要更新,則啟動(dòng)更新,使得所述更新文件覆蓋對(duì)應(yīng)的本地信息;
如不需要更新,則維持所述本地信息。
本發(fā)明提供的在QT程序中自動(dòng)更新的方法還可采用以下技術(shù)措施進(jìn)一步實(shí)現(xiàn)。
作為優(yōu)選,所述解析所述更新信息文件,得到經(jīng)過(guò)解析的更新信息文件包括以下步驟:
加載所述更新信息文件并返回文本對(duì)象和錯(cuò)誤值;
對(duì)所述返回的文本對(duì)象和錯(cuò)誤值進(jìn)行判斷:
若所述文本對(duì)象不存在錯(cuò)誤信息,則通過(guò)文本對(duì)象返回JSON對(duì)象,并采用鍵值對(duì)的形式返回每個(gè)字段值,得到所述經(jīng)過(guò)解析的更新信息文件;
若所述文本對(duì)象存在錯(cuò)誤信息,則更新錯(cuò)誤并回調(diào)所述錯(cuò)誤。
作為優(yōu)選,定義本地信息的版本號(hào)為第一版本號(hào),定義所述經(jīng)過(guò)解析的更新信息文件的版本號(hào)為第二版本號(hào),定義所述經(jīng)過(guò)解析的更新信息文件的建議版本號(hào)為第三版本號(hào);
所述通過(guò)比較所述經(jīng)過(guò)解析的更新信息文件和對(duì)應(yīng)的本地信息,判斷所述對(duì)應(yīng)的本地信息是否需要更新包括以下步驟:
比較所述第一版本號(hào)的字符串與所述第二版本號(hào)的字符串:
若所述第一版本號(hào)的字符串與所述第二版本號(hào)的字符串不等,則啟動(dòng)更新;
若所述第一版本號(hào)的字符串與所述第二版本號(hào)的字符串相等,則維持所述本地信息;
和/或,
比較所述第一版本號(hào)的字符串與所述第三版本號(hào)的字符串:
若所述第一版本號(hào)的字符串與所述第三版本號(hào)的字符串不等,則啟動(dòng)更新;
若所述第一版本號(hào)的字符串與所述第三版本號(hào)的字符串相等,則維持所述本地信息;
和/或,
計(jì)算本地信息的MD5值并得到第一MD5值,計(jì)算所述經(jīng)過(guò)解析的更新信息文件的MD5值并得到第二MD5值:
若所述第一MD5值與所述第二MD5值不等,則啟動(dòng)更新;
若所述第一MD5值與所述第二MD5值相等,則維持所述本地信息。
作為優(yōu)選,所述MD5值的計(jì)算方法包括以下步驟:
獲取待計(jì)算文件對(duì)象的散列函數(shù)對(duì)象;
應(yīng)用所述散列函數(shù)對(duì)象添加待計(jì)算文件數(shù)據(jù);
根據(jù)所述待計(jì)算文件數(shù)據(jù)計(jì)算并返回所述待計(jì)算文件的MD5值;
其中,所述第一MD5值與所述第二MD5值是通過(guò)動(dòng)態(tài)鏈接庫(kù)的更新監(jiān)聽(tīng)接口的檢查回調(diào)函數(shù)通知主程序的。
作為優(yōu)選,所述在QT程序中自動(dòng)更新的方法還包括以下步驟:
獲取相鄰兩次啟動(dòng)更新的時(shí)刻T1和T2;
計(jì)算所述相鄰兩次啟動(dòng)更新的時(shí)間差t=|T2-T1|;
比較相鄰兩次啟動(dòng)更新的時(shí)間差t與更新閾值t0的大小關(guān)系:
當(dāng)t>t0時(shí),啟動(dòng)更新;
當(dāng)t≤t0時(shí),拒絕更新。
為了達(dá)到上述第二個(gè)目的,本發(fā)明提供的在QT程序中自動(dòng)更新的裝置的技術(shù)方案如下:
本發(fā)明提供的在QT程序中自動(dòng)更新的裝置包括更新信息文件獲取單元、比較判斷單元、更新單元,
所述更新信息文件獲取單元用于獲取更新信息文件;
所述比較判斷單元用于通過(guò)比較經(jīng)過(guò)解析的所述更新信息文件和對(duì)應(yīng)的本地信息,判斷所述對(duì)應(yīng)的本地信息是否需要更新:
當(dāng)所述比較判斷單元的結(jié)果是需要更新時(shí),所述更新單元用于根據(jù)所述比較判斷單元的判斷結(jié)果,進(jìn)行更新,使得所述更新文件覆蓋對(duì)應(yīng)的本地信息;
當(dāng)所述比較判斷單元的結(jié)果是不需要更新時(shí),維持所述本地信息。
本發(fā)明提供的在QT程序中自動(dòng)更新的裝置還可采用以下技術(shù)措施進(jìn)一步實(shí)現(xiàn)。
作為優(yōu)選,所述文件解析單元包括加載模塊、錯(cuò)誤值判斷模塊、字段返回模塊、更新回調(diào)模塊,
所述加載模塊用于加載所述更新信息文件并返回文本對(duì)象和錯(cuò)誤值;
所述錯(cuò)誤值判斷模塊用于對(duì)所述返回的文本對(duì)象和錯(cuò)誤值進(jìn)行判斷:
當(dāng)所述錯(cuò)誤值判斷模塊的判斷結(jié)果為所述文本對(duì)象不存在錯(cuò)誤信息時(shí),所述字段返回模塊通過(guò)文本對(duì)象返回JSON對(duì)象,并采用鍵值對(duì)的形式返回每個(gè)字段值,得到所述經(jīng)過(guò)解析的更新信息文件;
當(dāng)所述錯(cuò)誤值判斷模塊的判斷結(jié)果為所述文本對(duì)象存在錯(cuò)誤信息時(shí),所述更新回調(diào)模塊用于更新錯(cuò)誤并回調(diào)所述錯(cuò)誤。
作為優(yōu)選,所述在QT程序中自動(dòng)更新的裝置還包括MD5值計(jì)算單元,
所述MD5值計(jì)算單元包括散列函數(shù)獲取模塊、文件數(shù)據(jù)添加模塊、MD5值計(jì)算返回模塊,
所述散列函數(shù)獲取模塊用于獲取待計(jì)算文件對(duì)象的散列函數(shù)對(duì)象;
所述文件數(shù)據(jù)添加模塊用于應(yīng)用所述散列函數(shù)對(duì)象添加待計(jì)算文件數(shù)據(jù);
所述MD5值計(jì)算返回模塊用于根據(jù)所述待計(jì)算文件數(shù)據(jù)計(jì)算并返回所述待計(jì)算文件的MD5值。
作為優(yōu)選,所述比較判斷單元包括第一比較模塊和/或第二比較模塊和/或第二比較模塊和/或第三比較模塊,
所述第一比較模塊用于比較第一版本號(hào)和第二版本號(hào),當(dāng)所述第一版本號(hào)與所述第二版本號(hào)不等時(shí),則啟動(dòng)更新;當(dāng)所述第一版本號(hào)與所述第二版本號(hào)相等時(shí),則維持所述本地信息;
所述第二比較模塊用于比較第一版本號(hào)和第三版本號(hào),當(dāng)所述第一版本號(hào)與所述第三版本號(hào)不等時(shí),則啟動(dòng)更新;當(dāng)所述第一版本號(hào)與所述第三版本號(hào)相等時(shí),則維持所述本地信息;
所述第三比較模塊用于比較第一MD5值和第二MD5值,若所述第一MD5值與所述第二MD5值不等,則啟動(dòng)更新;若所述第一MD5值與所述第二MD5值相等,則維持所述本地信息;
其中,
所述第一版本號(hào)為本地信息的版本號(hào),所述第二版本號(hào)為經(jīng)過(guò)解析的更新信息文件的版本號(hào),所述第三版本號(hào)為經(jīng)過(guò)解析的更新信息文件的建議版本號(hào);
所述第一MD5值為本地信息的MD5值,所述第二MD5值為經(jīng)過(guò)解析的更新信息文件的MD5值。
作為優(yōu)選,所述在QT程序中自動(dòng)更新的裝置還包括更新限制單元,
所述更新限制單元包括更新時(shí)刻獲取模塊、更新時(shí)差計(jì)算模塊、更新時(shí)差比較判斷模塊,
所述更新時(shí)刻獲取模塊用于獲取相鄰兩次啟動(dòng)更新的時(shí)刻T1和T2;
所述更新時(shí)差計(jì)算模塊用于計(jì)算所述相鄰兩次啟動(dòng)更新的時(shí)間差t=|T2-T1|;
所述更新時(shí)差比較判斷模塊用于比較相鄰兩次啟動(dòng)更新的時(shí)間差t與更新閾值t0的大小關(guān)系,并決定是否啟動(dòng)更新:
當(dāng)t>t0時(shí),啟動(dòng)更新;
當(dāng)t≤t0時(shí),拒絕更新。
本發(fā)明提供的在QT程序中自動(dòng)更新的方法及裝置首先獲取更新信息文件;之后,之后,通過(guò)比較經(jīng)過(guò)解析的所述更新信息文件和對(duì)應(yīng)的本地信息,判斷所述對(duì)應(yīng)的本地信息是否需要更新:如需要更新,則啟動(dòng)更新,使得所述更新文件覆蓋對(duì)應(yīng)的本地信息;如不需要更新,則維持本地信息。由于其中存在對(duì)是否需要更新進(jìn)行判斷的步驟,只有在判斷為對(duì)應(yīng)的本地信息需要更新的時(shí)候才啟動(dòng)更新,而在判斷為對(duì)應(yīng)的本地信息不需要更新的時(shí)候則不予更新,因此,能夠避免只要主程序啟動(dòng)就進(jìn)行更新檢查造成的頻繁驗(yàn)證更新。因此,其能夠提高更新效率,降低更新復(fù)雜度。
附圖說(shuō)明
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1為本發(fā)明實(shí)施例一提供的在QT程序中自動(dòng)更新的方法的步驟流程圖;
圖2為本發(fā)明實(shí)施例二提供的在QT程序中自動(dòng)更新的裝置的信號(hào)流向關(guān)系示意圖。
具體實(shí)施方式
本發(fā)明為解決現(xiàn)有技術(shù)存在的問(wèn)題,提供一種在QT程序中自動(dòng)更新的方法及裝置,其能夠使得更新效率提高,更新復(fù)雜度降低,從而更加適于實(shí)用。
為更進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實(shí)施例,對(duì)依據(jù)本發(fā)明提出的在QT程序中自動(dòng)更新的方法及裝置,其具體實(shí)施方式、結(jié)構(gòu)、特征及其功效,詳細(xì)說(shuō)明如后。在下述說(shuō)明中,不同的“一實(shí)施例”或“實(shí)施例”指的不一定是同一實(shí)施例。此外,一或多個(gè)實(shí)施例中的特定特征、結(jié)構(gòu)、或特點(diǎn)可由任何合適形式組合。
本文中術(shù)語(yǔ)“和/或”,僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,具體的理解為:可以同時(shí)包含有A與B,可以單獨(dú)存在A(yíng),也可以單獨(dú)存在B,能夠具備上述三種任一種情況。
實(shí)施例一
參見(jiàn)附圖1,本發(fā)明實(shí)施例一提供的在QT程序中自動(dòng)更新的方法包括以下步驟:
步驟101:獲取更新信息文件;
本實(shí)施例中,更新信息文件是JSON格式文件,JSON格式文件的樹(shù)形結(jié)構(gòu)包括三層;其中,第一層為更新信息層,更新信息層用于保存的信息包括版本號(hào)、更新時(shí)間、建議版本號(hào)、更新大??;第二層為模塊信息層,模塊信息層用于保存的信息包括模塊名稱(chēng)、版本號(hào)、大?。坏谌龑訛楦挛募畔?,更新文件信息層用于保存的信息包括文件名、文件MD5值、文件路徑。其中,JSON格式的文件效率最好,將文件設(shè)計(jì)為三層的樹(shù)型結(jié)構(gòu),能夠降低更新信息的復(fù)雜度。具體地說(shuō),復(fù)雜度的下降是通過(guò)將更新的基本信息與更新的文件信息進(jìn)行分層,在把更新文件以模塊為單位進(jìn)行隔開(kāi)來(lái)達(dá)到的。
步驟102:由于網(wǎng)絡(luò)傳播的文件都需要進(jìn)行壓縮,因此,在步驟101之后還需要解壓縮更新信息文件,得到解壓縮后的更新信息文件;本實(shí)施例中,更新信息文件為RAR或者ZIP格式的壓縮文件。
步驟103:解析解壓縮后的更新信息文件,得到經(jīng)過(guò)解析的更新信息文件;
本實(shí)施例中,解析解壓縮后的更新信息文件,得到經(jīng)過(guò)解析的更新信息文件包括以下步驟:步驟1031:加載解壓縮后的更新信息文件并返回文本對(duì)象和錯(cuò)誤值;步驟1032:對(duì)返回的文本對(duì)象和錯(cuò)誤值進(jìn)行判斷:若文本對(duì)象不存在錯(cuò)誤信息,則執(zhí)行步驟1033:通過(guò)文本對(duì)象返回JSON對(duì)象,并采用鍵值對(duì)的形式返回每個(gè)字段值,得到經(jīng)過(guò)解析的更新信息文件;若文本對(duì)象存在錯(cuò)誤信息,則執(zhí)行步驟1034:更新錯(cuò)誤并回調(diào)錯(cuò)誤。
步驟104:通過(guò)比較經(jīng)過(guò)解析的更新信息文件和對(duì)應(yīng)的本地信息,判斷對(duì)應(yīng)的本地信息是否需要更新:
如需要更新,則執(zhí)行步驟105:?jiǎn)?dòng)更新,使得更新文件覆蓋對(duì)應(yīng)的本地信息;
如不需要更新,則返回執(zhí)行步驟101。
其中,步驟104通過(guò)比較經(jīng)過(guò)解析的更新信息文件和對(duì)應(yīng)的本地信息,判斷對(duì)應(yīng)的本地信息是否需要更新的第一種方式包括以下步驟:步驟10411:定義本地信息的版本號(hào)為第一版本號(hào),定義經(jīng)過(guò)解析的更新信息文件的版本號(hào)為第二版本號(hào);步驟10412:比較第一版本號(hào)的字符串與第二版本號(hào)的字符串:步驟10413:若第一版本號(hào)的字符串與第二版本號(hào)的字符串不等,則啟動(dòng)更新;步驟10414:若第一版本號(hào)的字符串與第二版本號(hào)的字符串相等,則維持本地信息。
其中,步驟104通過(guò)比較經(jīng)過(guò)解析的更新信息文件和對(duì)應(yīng)的本地信息,判斷對(duì)應(yīng)的本地信息是否需要更新的第二種方式包括以下步驟:步驟10421:定義本地信息的版本號(hào)為第一版本號(hào),定義經(jīng)過(guò)解析的更新信息文件的建議版本號(hào)為第三版本號(hào);步驟10422:比較第一版本號(hào)的字符串與第三版本號(hào)的字符串:步驟10423:若第一版本號(hào)的字符串與第三版本號(hào)的字符串不等,則啟動(dòng)更新;步驟10424:若第一版本號(hào)的字符串與第三版本號(hào)的字符串相等,則維持本地信息。
其中,在比較第一版本號(hào)與第二版本號(hào)時(shí),當(dāng)前一字段相同時(shí),繼續(xù)進(jìn)行下一字段的比較,直到比較得到不等,認(rèn)為第一版本號(hào)小,啟動(dòng)更新。例如,當(dāng)?shù)谝话姹咎?hào)為1.0.1,第二版本號(hào)為1.1.0時(shí),由于第一版本號(hào)的第一字段和第二版本號(hào)的第一字段均為“1”,進(jìn)行第二字段的比較,因?yàn)榈谝话姹咎?hào)的第一字段為“0”,而第二版本號(hào)的第二字段為“1”,能夠得到不等的結(jié)果,此時(shí),認(rèn)為第一版本號(hào)小。
或者,比較第一版本號(hào)與第三版本號(hào)時(shí),當(dāng)?shù)谝话姹咎?hào)與第二版本號(hào)不等時(shí),啟模糊更新,也就是根據(jù)隨機(jī)數(shù)進(jìn)行隨機(jī)更新。例如,當(dāng)?shù)谝话姹咎?hào)為1.0.1,第三版本號(hào)為1.1.0,比較過(guò)程中,由于1.0.1≠1.1.0,因此,啟動(dòng)模糊更新,也就是根據(jù)隨機(jī)數(shù)進(jìn)行隨機(jī)更新。
其中,步驟104通過(guò)比較經(jīng)過(guò)解析的更新信息文件和對(duì)應(yīng)的本地信息,判斷對(duì)應(yīng)的本地信息是否需要更新的第三種方式包括以下步驟:步驟10431:計(jì)算本地信息的MD5值并得到第一MD5值;計(jì)算經(jīng)過(guò)解析的更新信息文件的MD5值并得到第二MD5值;步驟10432:若第一MD5值與第二MD5值不等,則啟動(dòng)更新;步驟10433:若第一MD5值與第二MD5值相等,則維持本地信息。
其中,MD5值的計(jì)算方法包括以下步驟:步驟104311:使用QT QCryptographicHash hash(QCryptographicHash::Md5)獲取待計(jì)算文件對(duì)象的散列函數(shù)對(duì)象;步驟104312:應(yīng)用散列函數(shù)對(duì)象的adddata方法添加待計(jì)算文件數(shù)據(jù);步驟104313:根據(jù)待計(jì)算文件數(shù)據(jù),通過(guò)md5C=hash.result().toHex();計(jì)算并返回待計(jì)算文件的MD5值。
本實(shí)施例中,第一MD5值與第二MD5值是通過(guò)動(dòng)態(tài)鏈接庫(kù)的更新監(jiān)聽(tīng)接口的檢查回調(diào)函數(shù)通知主程序的,該動(dòng)態(tài)鏈接數(shù)據(jù)庫(kù)具體為:
定義一個(gè)IUpdate接口和IListener回調(diào)接口,方便外部調(diào)用。接口:
由于所有的模塊都是通過(guò)接口,命令行參數(shù),下載文件進(jìn)行連接的,可以很好的降低模塊與模塊之間的耦合度,由此每個(gè)模塊的更新和修改也是相對(duì)獨(dú)立的。
此外,該在QT程序中自動(dòng)更新的方法在步驟104和步驟105之間還包括以下步驟:
步驟z1:獲取相鄰兩次啟動(dòng)更新的時(shí)刻T1和T2;
步驟z2:計(jì)算相鄰兩次啟動(dòng)更新的時(shí)間差t=|T2-T1|;
步驟z3:比較相鄰兩次啟動(dòng)更新的時(shí)間差t與更新閾值t0的大小關(guān)系:當(dāng)t>t0時(shí),啟動(dòng)更新;當(dāng)t≤t0時(shí),拒絕更新。
在這種情況下,能夠避免頻繁更新。
本發(fā)明提供的在QT程序中自動(dòng)更新的方法首先獲取更新信息文件;之后,解壓縮所述更新信息文件,得到解壓縮后的更新信息文件;之后,解析所述解壓縮后的更新信息文件,得到經(jīng)過(guò)解析的更新信息文件;之后,通過(guò)比較所述經(jīng)過(guò)解析的更新信息文件和對(duì)應(yīng)的本地信息,判斷所述對(duì)應(yīng)的本地信息是否需要更新:如需要更新,則啟動(dòng)更新,使得所述更新文件覆蓋對(duì)應(yīng)的本地信息;如不需要更新,則維持本地信息。由于其中存在對(duì)是否需要更新進(jìn)行判斷的步驟,只有在判斷為對(duì)應(yīng)的本地信息需要更新的時(shí)候才啟動(dòng)更新,而在判斷為對(duì)應(yīng)的本地信息不需要更新的時(shí)候則不予更新,因此,能夠避免只要主程序啟動(dòng)就進(jìn)行更新檢查造成的頻繁驗(yàn)證更新。因此,其能夠提高更新效率,降低更新復(fù)雜度。
實(shí)施例二
參見(jiàn)附圖2,本發(fā)明實(shí)施例二提供的在QT程序中自動(dòng)更新的裝置包括更新信息文件獲取單元201、解壓縮單元202、文件解析單元203、比較判斷單元204、更新單元205。更新信息文件獲取單元201用于獲取更新信息文件;解壓縮單元202用于解壓縮更新信息文件,得到解壓縮后的更新信息文件;文件解析單元203用于解析解壓縮后的更新信息文件,得到經(jīng)過(guò)解析的更新信息文件;比較判斷單元204用于通過(guò)比較經(jīng)過(guò)解析的更新信息文件和對(duì)應(yīng)的本地信息,判斷對(duì)應(yīng)的本地信息是否需要更新:當(dāng)比較判斷單元204的結(jié)果是需要更新時(shí),更新單元205用于根據(jù)比較判斷單元的判斷結(jié)果,進(jìn)行更新,使得更新文件覆蓋對(duì)應(yīng)的本地信息;當(dāng)比較判斷單元204的結(jié)果是不需要更新時(shí),維持本地信息。
其中,文件解析單元203包括加載模塊、錯(cuò)誤值判斷模塊、字段返回模塊、更新回調(diào)模塊。加載模塊用于加載解壓縮后的更新信息文件并返回文本對(duì)象和錯(cuò)誤值;錯(cuò)誤值判斷模塊用于對(duì)返回的文本對(duì)象和錯(cuò)誤值進(jìn)行判斷:當(dāng)錯(cuò)誤值判斷模塊的判斷結(jié)果為文本對(duì)象不存在錯(cuò)誤信息時(shí),字段返回模塊通過(guò)文本對(duì)象返回JSON對(duì)象,并采用鍵值對(duì)的形式返回每個(gè)字段值,得到經(jīng)過(guò)解析的更新信息文件;當(dāng)錯(cuò)誤值判斷模塊的判斷結(jié)果為文本對(duì)象存在錯(cuò)誤信息時(shí),更新回調(diào)模塊用于更新錯(cuò)誤并回調(diào)錯(cuò)誤。
其中,在QT程序中自動(dòng)更新的裝置還包括MD5值計(jì)算單元。MD5值計(jì)算單元包括散列函數(shù)獲取模塊、文件數(shù)據(jù)添加模塊、MD5值計(jì)算返回模塊。散列函數(shù)獲取模塊用于獲取待計(jì)算文件對(duì)象的散列函數(shù)對(duì)象;文件數(shù)據(jù)添加模塊用于應(yīng)用散列函數(shù)對(duì)象添加待計(jì)算文件數(shù)據(jù);MD5值計(jì)算返回模塊用于根據(jù)待計(jì)算文件數(shù)據(jù)計(jì)算并返回待計(jì)算文件的MD5值。
其中,比較判斷單元204包括第一比較模塊和/或第二比較模塊和/或第二比較模塊和/或第三比較模塊。第一比較模塊用于比較第一版本號(hào)和第二版本號(hào),當(dāng)?shù)谝话姹咎?hào)與第二版本號(hào)不等時(shí),則啟動(dòng)更新;當(dāng)?shù)谝话姹咎?hào)與第二版本號(hào)相等時(shí),則維持本地信息。第二比較模塊用于比較第一版本號(hào)和第三版本號(hào),當(dāng)?shù)谝话姹咎?hào)與第三版本號(hào)不等時(shí),則啟動(dòng)更新;當(dāng)?shù)谝话姹咎?hào)與第三版本號(hào)相等時(shí),則維持本地信息。第三比較模塊用于比較第一MD5值和第二MD5值,若第一MD5值與第二MD5值不等,則啟動(dòng)更新;若第一MD5值與第二MD5值相等,則維持本地信息。其中,第一版本號(hào)為本地信息的版本號(hào),第二版本號(hào)為經(jīng)過(guò)解析的更新信息文件的版本號(hào),第三版本號(hào)為經(jīng)過(guò)解析的更新信息文件的建議版本號(hào)。第一MD5值為本地信息的MD5值,第二MD5值為經(jīng)過(guò)解析的更新信息文件的MD5值。
此外,的在QT程序中自動(dòng)更新的裝置還包括更新限制單元。更新限制單元包括更新時(shí)刻獲取模塊、更新時(shí)差計(jì)算模塊、更新時(shí)差比較判斷模塊。更新時(shí)刻獲取模塊用于獲取相鄰兩次啟動(dòng)更新的時(shí)刻T1和T2;更新時(shí)差計(jì)算模塊用于計(jì)算相鄰兩次啟動(dòng)更新的時(shí)間差t=|T2-T1|;更新時(shí)差比較判斷模塊用于比較相鄰兩次啟動(dòng)更新的時(shí)間差t與更新閾值t0的大小關(guān)系,并決定是否啟動(dòng)更新:當(dāng)t>t0時(shí),啟動(dòng)更新;當(dāng)t≤t0時(shí),拒絕更新。在這種情況下,能夠避免頻繁更新。
本發(fā)明提供的在QT程序中自動(dòng)更新的裝置首先通過(guò)更新信息文件獲取單元201獲取更新信息文件;之后,通過(guò)解壓縮單元202解壓縮所述更新信息文件,得到解壓縮后的更新信息文件;之后,通過(guò)文件解析單元203解析所述解壓縮后的更新信息文件,得到經(jīng)過(guò)解析的更新信息文件;之后,通過(guò)比較判斷單元204比較所述經(jīng)過(guò)解析的更新信息文件和對(duì)應(yīng)的本地信息,判斷所述對(duì)應(yīng)的本地信息是否需要更新:如需要更新,則通過(guò)更新單元205啟動(dòng)更新,使得所述更新文件覆蓋對(duì)應(yīng)的本地信息;如不需要更新,則維持本地信息。由于其中存在比較判斷單元204,只有在判斷為對(duì)應(yīng)的本地信息需要更新的時(shí)候才觸發(fā)更新單元啟動(dòng)更新,而在判斷為對(duì)應(yīng)的本地信息不需要更新的時(shí)候則不會(huì)觸發(fā)更新單元205不予更新,因此,能夠避免只要主程序啟動(dòng)就進(jìn)行更新檢查造成的頻繁驗(yàn)證更新。因此,其能夠提高更新效率,降低更新復(fù)雜度。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。