專利名稱:用于更新網(wǎng)絡(luò)化環(huán)境中的安裝組件的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件和計(jì)算機(jī)網(wǎng)絡(luò),尤其涉及管理和傳遞軟件更新的系統(tǒng)和方法。
背景技術(shù):
市場上最常見的軟件產(chǎn)品要經(jīng)受連續(xù)的修訂過程,以修補(bǔ)或升級特征和/或功能。軟件產(chǎn)品或組件的每一次修訂可能需要添加新的文件和/或用更加新版本的文件替換現(xiàn)有的文件。一旦銷售商隔離了軟件產(chǎn)品問題并創(chuàng)建了該問題的解決方案,他可能希望將該修補(bǔ)放入更新中,并令更新對顧客廣泛地可用。軟件銷售商具有盡可能快和無故障地向顧客分發(fā)軟件更新的商業(yè)動機(jī)。
因特網(wǎng)為顧客提供了一種獲得軟件產(chǎn)品的最近更新的重要渠道。因特網(wǎng)使用率的蓬勃發(fā)展造成了顧客對軟件產(chǎn)品和更新在線提供用于下載的常見期望。促進(jìn)因特網(wǎng)的使用來分發(fā)更新也是軟件銷售商所感興趣的,因?yàn)樗鼫p少了他們的成本,并允許顧客在修補(bǔ)可用于下載后立即可獲得所確定問題的修補(bǔ)。因特網(wǎng)上的銷售商站點(diǎn)可被設(shè)計(jì)成令發(fā)現(xiàn)和查找應(yīng)用程序的更新文件是非常簡單的。文件下載的技術(shù)方面大多數(shù)已從用戶的觀點(diǎn)中消失,并且它現(xiàn)在通常由操作系統(tǒng)來處理。
在常規(guī)的方法中,軟件銷售商將軟件更新構(gòu)造為“包”用于下載。包通常是自提取的可執(zhí)行文件,它具有設(shè)置程序,并且產(chǎn)品的更新文件的每一個(gè)被嵌入并被壓縮以使包更小。包的大小通常是每一改變的文件的壓縮后大小的總和,加上提取代碼本身的大小。在執(zhí)行時(shí),包將所包含的每一文件提取到一臨時(shí)位置,然后開始設(shè)置程序以將每一文件安裝到系統(tǒng)目錄中一正確的位置。以壓縮形式發(fā)貨的文件在它們被安裝時(shí)被解壓。同一位置中名字相同的任一現(xiàn)有文件將簡單地被替換文件所覆蓋。
即使因特網(wǎng)令軟件更新的廣泛和快速分發(fā)成為可能,然而網(wǎng)絡(luò)傳輸?shù)挠邢迬拰?dǎo)致了問題。常見軟件應(yīng)用程序的絕對大小導(dǎo)致了更新的下載大小變得不合理的大。通常,用于產(chǎn)品的各種問題的多個(gè)修補(bǔ)將被組合成一個(gè)更新。如果銷售商以常規(guī)的基礎(chǔ)更新軟件產(chǎn)品,則更新包的下載大小將繼續(xù)增長,這是因?yàn)殇N售商無法在假設(shè)用戶已經(jīng)具有來自較早更新的那些文件的假設(shè)上省略這些文件。由于更新包組合了若干的完整文件,即使文件被壓縮,它也可能相當(dāng)大。有時(shí),即使在最快的調(diào)制解調(diào)器連接上,下載的帶寬效率也被降低。
常規(guī)下載過程的耗時(shí)方面當(dāng)然是不合需要的。在某些情況下,顧客在下載這些文件的過程中支付了長距離或連接時(shí)間的費(fèi)用。連接時(shí)間的任何減少將減少這些顧客的直接金錢成本。銷售商通常也具有關(guān)于他們所提供的下載大小的可辨識成本,因此減小尺寸也可給予他們直接的金錢收益。減小下載的尺寸將增加他們的可用網(wǎng)絡(luò)帶寬,從而允許他們用現(xiàn)有的網(wǎng)絡(luò)服務(wù)器設(shè)備來服務(wù)更多的顧客。
下載大的更新所花費(fèi)的長時(shí)間也令下載過程變得更易受各種網(wǎng)絡(luò)連接問題的攻擊。對于為什么因特網(wǎng)話路可能會被過早地?cái)嚅_連接有多個(gè)原因,包括電話線噪聲、呼叫等待信號以及無意的命令。某些因特網(wǎng)服務(wù)供應(yīng)商實(shí)施了連接時(shí)間限制,限制了用戶可以在單個(gè)話路中在線的時(shí)間量。如果當(dāng)網(wǎng)絡(luò)連接被切斷時(shí)用戶正在下載大文件,則他或她可能必須從頭開始。最常見的操作系統(tǒng)和文件傳輸協(xié)議不允許文件傳輸?shù)脑倮^續(xù),因此任何中間的進(jìn)度將會丟失,并且傳輸必須重新開始。失敗的幾率如此之大,以致于許多用戶發(fā)現(xiàn)在線獲取更新幾乎是不可能的。如果更新包的尺寸太大,則用戶可能永遠(yuǎn)也無法完整地下載它。
減小軟件更新的尺寸并提高帶寬效率的一種嘗試涉及增量補(bǔ)丁,或二進(jìn)制補(bǔ)丁的使用。本領(lǐng)域的技術(shù)人員可以理解,增量補(bǔ)丁對應(yīng)于當(dāng)由計(jì)算裝置執(zhí)行時(shí)修改現(xiàn)有文件的專用軟件代碼。由于增量補(bǔ)丁包括專用軟件代碼,因此對文件的每一唯一版本需要唯一的增量補(bǔ)丁。當(dāng)應(yīng)用于軟件更新時(shí),軟件更新服務(wù)可發(fā)送較小尺寸的更新增量補(bǔ)丁,而非發(fā)送完整的更新文件。已更新的增量補(bǔ)丁然后用于將現(xiàn)有文件修改成已更新的文件。
盡管更新增量補(bǔ)丁可潛在地減少更新文件所需的數(shù)據(jù)量,然而現(xiàn)有的增量打補(bǔ)丁方法在存在大量的文件版本的情況下管理可適用的增量文件的選擇時(shí)是不夠的。由于對文件的每一版本需要唯一的增量補(bǔ)丁,因此典型的軟件更新系統(tǒng)通常會要求上百(如果不是上千)個(gè)對應(yīng)于文件的每一唯一版本的唯一增量補(bǔ)丁。在一種方法中,支持增量打補(bǔ)丁的某些更新服務(wù)將所有可能的增量補(bǔ)丁發(fā)送到客戶機(jī)計(jì)算裝置。然而,這一方法通常在可能更新增量補(bǔ)丁的數(shù)量增加時(shí)也增加了實(shí)現(xiàn)軟件更新所需的數(shù)據(jù)量。因此,潛在可適用的增量補(bǔ)丁的數(shù)量可迅速增長為與完整的更新文件相同的大小。在另一種方法中,網(wǎng)絡(luò)化更新軟件服務(wù)掃描客戶機(jī)機(jī)器以選擇對每一客戶機(jī)機(jī)器可應(yīng)用哪一增量補(bǔ)丁。盡管這減少了所發(fā)送的增量補(bǔ)丁信息量,然而它需要軟件更新服務(wù)上的附加邏輯來掃描客戶機(jī)機(jī)器并選擇可適用的增量補(bǔ)丁。附加邏輯的使用增加了必須由服務(wù)提供的系統(tǒng)資源。此外,該方法通常阻止如通常由傳統(tǒng)的web服務(wù)器所實(shí)現(xiàn)的網(wǎng)絡(luò)高速緩存的使用。
除上述缺點(diǎn)之外,現(xiàn)有的系統(tǒng)無法傳送某些類型的軟件更新,如硬件驅(qū)動程序。如本領(lǐng)域中所已知的,專用軟件更新,如應(yīng)用于硬件驅(qū)動程序的軟件更新,難以在大規(guī)模分發(fā)的基礎(chǔ)上提供給用戶,因?yàn)榇蠖鄶?shù)專用軟件更新僅在具有特殊硬件的客戶計(jì)算機(jī)上起作用。例如,在大多數(shù)情況下,如果客戶計(jì)算機(jī)獲得了不兼容的硬件驅(qū)動程序升級,則該驅(qū)動程序升級的安裝會導(dǎo)致致命的錯(cuò)誤,或甚至?xí)柚褂?jì)算機(jī)運(yùn)行。
如可以從上述內(nèi)容容易地理解的,需要一種具有服務(wù)器和多個(gè)客戶機(jī)之間的軟件更新的改進(jìn)通信的系統(tǒng)和方法。另外,對具有允許更新服務(wù)在傳送專用更新時(shí)以特定類型的客戶機(jī)為目標(biāo)的改進(jìn)機(jī)制的軟件更新系統(tǒng)和方法有需求。
發(fā)明概述提供了用于管理計(jì)算裝置上的安裝文件的系統(tǒng)和方法??蛻魴C(jī)計(jì)算裝置獲取標(biāo)識儲存在客戶機(jī)計(jì)算裝置上的基線安裝組件的版本的安裝信息。安裝信息也包括一安裝組件增量補(bǔ)丁,它與基線安裝組件合并以生成更新的安裝組件。更新的安裝組件用于將一個(gè)或多個(gè)文件安裝到客戶機(jī)計(jì)算裝置上。在完成了安裝之后,更新的安裝組件可被刪除。
依照本發(fā)明的一方面,提供了一種用于管理客戶機(jī)計(jì)算裝置上的文件的安裝的方法。依照該方法,計(jì)算裝置獲取標(biāo)識在客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件所需的基線安裝組件的安裝信息。計(jì)算裝置選擇儲存在客戶機(jī)計(jì)算裝置上的基線安裝組件。計(jì)算裝置從安裝信息獲取安裝組件增量補(bǔ)丁,并將來自安裝信息的安裝組件增量補(bǔ)丁與所選擇的基線安裝組件合并。計(jì)算裝置使用合并的安裝組件在客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件。
依照本發(fā)明的另一方面,提供了一種用于管理客戶機(jī)計(jì)算裝置上的文件的安裝的方法。依照該方法,計(jì)算裝置獲取包括標(biāo)識在客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件所需的基線安裝組件的信息的包。計(jì)算裝置標(biāo)識儲存在客戶機(jī)計(jì)算裝置上的基線安裝組件,并從該包獲取安裝組件增量補(bǔ)丁。計(jì)算裝置將來自包的安裝組件增量補(bǔ)丁與所標(biāo)識的基線安裝組件合并,并使用合并的安裝組件在客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件。計(jì)算裝置也在客戶機(jī)計(jì)算裝置上安裝了一個(gè)或多個(gè)文件之后刪除合并的安裝組件。
依照本發(fā)明的又一方面,提供了一種用于管理客戶機(jī)計(jì)算裝置上的文件的安裝的方法。依照該方法,計(jì)算裝置獲取包括選擇儲存在客戶機(jī)計(jì)算裝置上的一組基線安裝組件的信息的包。計(jì)算裝置從儲存在客戶機(jī)計(jì)算裝置上的該組基線安裝組件中選擇一基線安裝組件。計(jì)算裝置從包獲取安裝組件更新,并用該安裝組件更新來更新所選擇的安裝組件。另外,計(jì)算裝置使用合并的安裝組件在客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件。
附圖的簡要描述當(dāng)結(jié)合附圖閱讀以下詳細(xì)描述,可以更好地理解并更容易地明白本發(fā)明的上述方面以及許多附加的優(yōu)點(diǎn),附圖中
圖1是依照本發(fā)明的軟件更新系統(tǒng)的框圖,包括客戶機(jī)計(jì)算機(jī)以及提供更新軟件的更新服務(wù);圖2是圖1的軟件更新系統(tǒng)的框圖,它依照本發(fā)明示出了向更新服務(wù)認(rèn)證客戶機(jī)計(jì)算裝置;圖3是圖1的軟件更新系統(tǒng)的框圖,它依照本發(fā)明示出了客戶機(jī)計(jì)算裝置和更新服務(wù)之間的可用更新的同步;圖4是圖1的軟件更新系統(tǒng)的框圖,它依照本發(fā)明示出了軟件更新信息從更新服務(wù)到客戶機(jī)計(jì)算裝置的發(fā)送;圖5是圖1的軟件更新系統(tǒng)的框圖,它依照本發(fā)明示出了客戶機(jī)計(jì)算裝置對更新信息的處理和選擇;圖6是圖1的軟件更新系統(tǒng)的框圖,它依照本發(fā)明示出了客戶機(jī)計(jì)算裝置對增量補(bǔ)丁的合并和對更新文件的安裝;圖7是依照本發(fā)明的軟件更新例程的流程圖,它示出了由客戶機(jī)計(jì)算裝置和更新服務(wù)實(shí)現(xiàn)的用于識別可用于安裝在客戶機(jī)計(jì)算裝置上的軟件更新;圖8是依照本發(fā)明提供對儲存在更新服務(wù)上的更新的選擇性訪問的授權(quán)例程的協(xié)議圖;圖9所示是依照本發(fā)明的授權(quán)例程的一組示例軟件更新的框圖;圖10是依照本發(fā)明將選擇的一組軟件更新從軟件更新服務(wù)傳遞到客戶機(jī)計(jì)算裝置的同步例程的協(xié)議圖;圖11所示是依照本發(fā)明用于顯示對各個(gè)客戶機(jī)計(jì)算裝置可用的軟件更新列表的圖形用戶界面的示例性部分的框圖;圖12A和12B所示是依照本發(fā)明由客戶機(jī)計(jì)算裝置110實(shí)現(xiàn)以檢索和安裝請求的軟件的軟件更新處理子例程1200;以及圖13所示是依照本發(fā)明由客戶機(jī)計(jì)算裝置實(shí)現(xiàn)的用于更新基線安裝組件的子例程的流程圖。
具體實(shí)施例方式
一般而言,本發(fā)明針對的是管理軟件更新的系統(tǒng)和方法。更具體地,本發(fā)明針對的是便于軟件更新的選擇和實(shí)現(xiàn),同時(shí)最小化選擇和實(shí)現(xiàn)軟件更新所需的帶寬和處理資源的系統(tǒng)和方法。依照本發(fā)明,軟件更新可對應(yīng)于用于特定軟件應(yīng)用程序或操作系統(tǒng)的更新。此外,軟件更新可包括軟件驅(qū)動程序或?qū)碳母?,如系統(tǒng)BIOS。依照本發(fā)明的一個(gè)方面,提供了一種處理軟件更新的系統(tǒng)和組件體系結(jié)構(gòu)。依照本發(fā)明的另一方面,提供了一種便于向更新服務(wù)授權(quán)和同步客戶機(jī)機(jī)器的更新協(xié)議和接口。依照本發(fā)明的又一方面,提供了一種適用增量補(bǔ)丁更新安裝組件和各種已安裝文件的方法。然而,本領(lǐng)域的技術(shù)人員可以理解,本申請中也可提供本發(fā)明的其它方面。此外,相關(guān)領(lǐng)域的技術(shù)人員可以理解,每一所標(biāo)識的方面可被個(gè)別或作為公共的發(fā)明性方面的一部分來考慮。
圖1的軟件更新系統(tǒng)100所示是依照本發(fā)明的軟件更新系統(tǒng)100的框圖。一般而言,軟件更新系統(tǒng)100可包括一個(gè)或多個(gè)客戶機(jī)計(jì)算裝置110、更新服務(wù)120以及外部更新提供者130。一般而言,更新服務(wù)120儲存并管理傳遞到并安裝在客戶機(jī)計(jì)算裝置110上的軟件更新的分發(fā)。軟件更新可由更新服務(wù)120或任意數(shù)量的外部更新提供者130來提供。
客戶機(jī)計(jì)算裝置110、更新服務(wù)120和外部更新提供者130通過網(wǎng)絡(luò)101電子地通信。網(wǎng)絡(luò)可以是局域網(wǎng)(LAN)或更大的網(wǎng)絡(luò),如廣域網(wǎng)(WAN)或因特網(wǎng)。通過使用一般已知的軟件,軟件更新系統(tǒng)100可被配置成在客戶機(jī)計(jì)算裝置110和更新服務(wù)120的服務(wù)器121、122、123和124之間交換文檔、命令和其它已知類型的信息。本領(lǐng)域和其他領(lǐng)域的技術(shù)人員可以理解,圖1所示的軟件更新系統(tǒng)100是用于實(shí)現(xiàn)本發(fā)明的一個(gè)合適的系統(tǒng)的簡化示例,本發(fā)明并非局限于此示例。
如后文更詳細(xì)地描述的,更新服務(wù)120的一個(gè)實(shí)施例包括若干服務(wù)器。如圖1所示,更新服務(wù)120包括更新服務(wù)器121,用于管理更新服務(wù)120的全過程并協(xié)調(diào)更新服務(wù)120的服務(wù)器121、122、123和124的處理。授權(quán)服務(wù)器122生成客戶機(jī)請求的授權(quán)cookie,這些授權(quán)cookie進(jìn)而用于生成允許客戶機(jī)計(jì)算機(jī)訪問更新服務(wù)120提供的更新的服務(wù)器cookie。元數(shù)據(jù)服務(wù)器123提供關(guān)于更新服務(wù)120提供的更新的一般信息。元數(shù)據(jù)服務(wù)器123允許本發(fā)明的系統(tǒng)識別用于特定類型的客戶機(jī)計(jì)算機(jī)或特定的客戶機(jī)計(jì)算機(jī)組的特定更新。下載服務(wù)器124提供了用于傳送與由更新服務(wù)120提供的軟件更新相關(guān)聯(lián)的數(shù)據(jù)文件的一個(gè)或多個(gè)軟件組件。
外部更新提供者130可包括分發(fā)軟件更新的一個(gè)或多個(gè)服務(wù)器。外部更新提供者130可與提供軟件、軟件更新或要分發(fā)到客戶機(jī)計(jì)算機(jī)組的其他數(shù)據(jù)的實(shí)體相關(guān)聯(lián)。例如,外部更新服務(wù)器130可以與期望使用更新服務(wù)120來分發(fā)一個(gè)或多個(gè)軟件應(yīng)用程序的更新的第三方軟件開發(fā)者相關(guān)聯(lián)。在另一示例中,外部更新提供者130可以與軟件更新系統(tǒng)120相關(guān)聯(lián)。
客戶機(jī)計(jì)算裝置110可以是儲存并執(zhí)行軟件應(yīng)用程序114的任何計(jì)算裝置??蛻魴C(jī)計(jì)算裝置110可以從多個(gè)不同的計(jì)算機(jī)產(chǎn)品的任一個(gè)形成,包括但不限于,個(gè)人計(jì)算機(jī)(PC)、個(gè)人數(shù)字助理(PDA)、移動電話、雙向?qū)ず魴C(jī)等等。如本領(lǐng)域或其他領(lǐng)域的普通技術(shù)人員所理解的,客戶機(jī)計(jì)算裝置110的體系結(jié)構(gòu)可以采用任一合適的形式。例如,客戶機(jī)計(jì)算裝置110可包括用于提供與網(wǎng)絡(luò)101的通信的網(wǎng)絡(luò)接口。網(wǎng)絡(luò)接口可以被配置成用于任何有線或無線網(wǎng)絡(luò)連接,并用于任一合適的通信協(xié)議,如TCP/IP協(xié)議。另外客戶機(jī)計(jì)算裝置110可包括處理單元、顯示器和存儲器單元。存儲器單元可儲存操作客戶機(jī)計(jì)算裝置110所必須的程序代碼,如操作系統(tǒng)116。另外,存儲器單元儲存用于控制和執(zhí)行本發(fā)明的過程的更新管理組件112。
軟件更新系統(tǒng)100儲存軟件程序,當(dāng)被執(zhí)行時(shí),它們實(shí)現(xiàn)本發(fā)明。當(dāng)被執(zhí)行時(shí),軟件更新系統(tǒng)100儲存、管理并選擇性地傳遞軟件更新。如下文更完整地描述的,除其它益處之外,本發(fā)明提供了用于定義和選擇有資格接收軟件更新的客戶機(jī)計(jì)算裝置的目標(biāo)組的機(jī)制。本發(fā)明也提供了用于下載與軟件更新相關(guān)聯(lián)的數(shù)據(jù)文件的改進(jìn)的機(jī)制。
為說明本發(fā)明的目的,提供了本發(fā)明的工作示例的詳細(xì)描述。在描述該工作示例時(shí),參考軟件更新,它指的是軟件應(yīng)用程序的特定升級,例如,將媒體播放器版本6.0升級到媒體播放器版本7.0。如本領(lǐng)域的普通技術(shù)人員所理解的,這一軟件更新可包括與軟件更新相關(guān)聯(lián)的多個(gè)數(shù)據(jù)文件的傳遞和安裝。由此,為說明本發(fā)明的目的,在軟件更新和包含軟件更新的個(gè)別數(shù)據(jù)文件之間作出區(qū)分。
現(xiàn)在參考圖2-6,描述更新客戶機(jī)計(jì)算裝置110上的一個(gè)或多個(gè)文件的軟件更新系統(tǒng)100的組件之間的說明性交互。參考圖2,軟件更新服務(wù)通過由一個(gè)或多個(gè)外部更新提供者130發(fā)送軟件更新信息來啟動。如上所述,外部更新提供者130可以與軟件更新系統(tǒng)100相關(guān)聯(lián)?;蛘?,軟件更新信息可以由第三方外部更新提供者130發(fā)送。在本發(fā)明的一個(gè)說明性實(shí)施例中,軟件更新信息可包括用于更新文件的軟件代碼、用于替換文件的軟件代碼、用于確定軟件更新的可適用性的各種規(guī)則、和/或描述軟件更新的顯示信息。軟件更新信息的發(fā)送可在任一時(shí)刻完成,并且不必要與其它所示的軟件更新組件交互同時(shí)發(fā)生。
在從外部更新提供者130接收了軟件更新信息之后,更新服務(wù)120生成一段或多段數(shù)據(jù),以便于發(fā)送更新信息。數(shù)據(jù)可包括對應(yīng)于用于更新文件的不同版本的軟件增量補(bǔ)丁集的補(bǔ)丁存儲文件。數(shù)據(jù)也可包括對應(yīng)于將特定的文件版本映射到補(bǔ)丁存儲文件中找到的對應(yīng)增量的索引的補(bǔ)丁存儲清單。數(shù)據(jù)還可包括對應(yīng)于更新代理將用于請求和安裝特定軟件更新數(shù)據(jù)的信息的自提取文件,如后文更詳細(xì)地描述的。相關(guān)領(lǐng)域的技術(shù)人員可以理解,補(bǔ)丁存儲文件、補(bǔ)丁存儲清單和自提取文件的生成可以在任一時(shí)刻完成,并不必要與其它所示的組件交互同時(shí)發(fā)生。
為啟動對客戶機(jī)的軟件更新信息發(fā)送,客戶機(jī)計(jì)算裝置110啟動對更新服務(wù)120的認(rèn)證請求。在本發(fā)明的一個(gè)說明性實(shí)施例中,認(rèn)證請求對應(yīng)于客戶機(jī)計(jì)算裝置110和更新服務(wù)120之間的更新協(xié)議交互,這將在后文更詳細(xì)描述。在完成了認(rèn)證之后,更新服務(wù)120將認(rèn)證cookie發(fā)送到客戶機(jī)計(jì)算裝置120。現(xiàn)在參考圖3,已認(rèn)證的客戶機(jī)計(jì)算裝置120然后啟動與更新服務(wù)器120的可用更新的同步。在本發(fā)明的一個(gè)說明性實(shí)施例中,同步請求也對應(yīng)于客戶機(jī)計(jì)算裝置110和更新服務(wù)120之間的更新協(xié)議交互,這將在后文更詳細(xì)地描述。在完成了同步之后,客戶機(jī)計(jì)算裝置110接收所有可適用的軟件更新的信息和描述更新的信息。然而,在本發(fā)明的一個(gè)說明性實(shí)施例中,沒有下載任何啟動更新的軟件代碼。
繼續(xù)參考圖3,在更新過程期間的某一時(shí)刻,接收到要安裝的更新的選擇。在本發(fā)明的一個(gè)說明性實(shí)施例中,可向用戶呈現(xiàn)在同步期間接收到的軟件更新信息,并要求選擇一個(gè)適當(dāng)?shù)母??;蛘撸蛻魴C(jī)計(jì)算裝置110可以配備自動選擇所有可適用的軟件更新的方式。此外,客戶機(jī)計(jì)算裝置110也可具有允許它自動選擇可用軟件更新的一個(gè)子集的某些規(guī)則。再者,用戶可通過諸如經(jīng)由互聯(lián)網(wǎng)網(wǎng)頁與更新服務(wù)120通信來啟動更新的選擇。
現(xiàn)在參考圖4,如果尚不存在更新代理,則更新管理組件112例示客戶機(jī)計(jì)算裝置110上的更新代理118。更新代理118然后請求諸如自提取文件等軟件更新信息包的發(fā)送。更新代理118接收自提取文件并執(zhí)行對安裝程序的任何更新,如后文更詳細(xì)地描述的。此外,更新代理118可向更新服務(wù)120請求任何丟失或被破壞的信息。
現(xiàn)在參考圖5,一旦更新代理118接收到了軟件更新信息包,更新代理118執(zhí)行安裝在客戶機(jī)計(jì)算裝置110上的文件的清查?;谇宀楹蛙浖滦畔谋容^,更新代理118確定需要哪一增量補(bǔ)丁或其它更新信息來完成所選擇的更新。更新代理118然后發(fā)送對特定增量更新的請求。在本發(fā)明的一個(gè)實(shí)施例中,對軟件更新的請求可對應(yīng)于通過直接網(wǎng)絡(luò)連接發(fā)送的直接請求,被稱為手動更新。在本發(fā)明的另一實(shí)施例中,對軟件更新的請求可以是不需要明顯的用戶行動而發(fā)送的后臺請求。這一實(shí)施例被稱為自動更新。
在本發(fā)明的一個(gè)說明性實(shí)施例中,如果軟件更新對應(yīng)于增量補(bǔ)丁,則更新代理118向更新服務(wù)120發(fā)送標(biāo)識由包存儲清單標(biāo)識的特定增量補(bǔ)丁的請求?;蛘?,在增量補(bǔ)丁不可用或者若干增量補(bǔ)丁失敗的情況下,更新代理118可啟動一后退過程。后退過程可包括對來自包存儲文件的整個(gè)更新文件的完整副本的發(fā)送的請求。后退過程也可包括對自主式包內(nèi)的整個(gè)更新文件的完整副本的發(fā)送的請求。
在本發(fā)明的一個(gè)說明性實(shí)施例中,更新服務(wù)120的下載服務(wù)器124可直接處理來自更新代理118的軟件更新請求?;蛘撸埱笠部捎扇我鈹?shù)量的附加外部下載服務(wù)器來處理,如從更新服務(wù)120接收所請求的更新增量補(bǔ)丁的傳統(tǒng)web服務(wù)器。例如,企業(yè)可使用內(nèi)部服務(wù)器來更新客戶機(jī)機(jī)器。另外,請求可由外部下載服務(wù)器來處理,其中,在處理先前的請求時(shí)高速緩存某些或所有更新增量補(bǔ)丁。另外,在此實(shí)施例中,下載可以被分發(fā)到能夠服務(wù)超文本傳輸協(xié)議(“HTTP”)數(shù)據(jù)請求的若干另外的下載服務(wù)器。
參考圖6,一旦接收到了軟件更新信息,更新代理118將增量補(bǔ)丁與已安裝文件合并,以生成更新文件。另外,更新代理118可確認(rèn)合并程序是否成功地更新了適當(dāng)?shù)奈募?。如上所述,如果增量補(bǔ)丁不能被確認(rèn),則更新代理118可再次請求增量補(bǔ)丁或在若干次失敗之后請求整個(gè)更新文件。一旦更新代理118獲取了已被確認(rèn)和更新文件,該文件被安裝在客戶機(jī)計(jì)算裝置110上。
圖7依照本發(fā)明的軟件更新處理例程700的流程圖,它示出了客戶機(jī)計(jì)算裝置110和軟件更新服務(wù)120之間的交互。在框702,軟件更新服務(wù)120授予對客戶機(jī)計(jì)算機(jī)110的訪問權(quán)限。在本發(fā)明的一個(gè)說明性實(shí)施例中,授予對客戶機(jī)計(jì)算機(jī)的訪問權(quán)限的過程可包括生成允許訪問與特定的計(jì)算機(jī)組相關(guān)聯(lián)的軟件更新的服務(wù)器簽發(fā)的cookie。授權(quán)過程的更詳細(xì)解釋將參考圖8來描述。
在框704,客戶機(jī)計(jì)算機(jī)110和軟件更新服務(wù)120同步更新信息。在本發(fā)明的一個(gè)說明性實(shí)施例中,軟件更新服務(wù)120向客戶機(jī)計(jì)算裝置110發(fā)送描述特定軟件更新的元數(shù)據(jù)。元數(shù)據(jù)包含描述可用軟件更新的信息,以允許用戶選擇一個(gè)或多個(gè)更新來安裝。同步過程的更詳細(xì)描述將在下文參考圖9和10來描述。在框706,客戶機(jī)計(jì)算裝置110獲取對要下載的可適用更新的選擇。在本發(fā)明的一個(gè)說明性實(shí)施例中,對可適用更新的選擇可對應(yīng)于適用多個(gè)唯一用戶界面以便于用戶選擇。用戶界面的選擇將在下文參考圖11來更詳細(xì)描述。
在框708,客戶機(jī)計(jì)算裝置110處理對可適用軟件更新的用戶選擇,并與軟件更新服務(wù)120接口以請求特定的更新信息。在本發(fā)明的一個(gè)說明性實(shí)施例中,客戶機(jī)計(jì)算裝置110選擇并請求一個(gè)或多個(gè)可適用更新增量補(bǔ)丁。客戶機(jī)計(jì)算裝置110上的更新代理118然后可處理所請求的數(shù)據(jù)以實(shí)現(xiàn)所選擇的軟件更新。在框710,例程700終止。
參考圖8,現(xiàn)在描述授予對客戶機(jī)計(jì)算裝置110的訪問權(quán)限并對應(yīng)于框702(圖7)的協(xié)議圖800。在本發(fā)明的一個(gè)說明性實(shí)施例中,軟件更新服務(wù)120使用可擴(kuò)充定目標(biāo)機(jī)制,以控制客戶機(jī)計(jì)算機(jī)110對更新和其它軟件的訪問。軟件更新服務(wù)120結(jié)合了將特定軟件更新與客戶機(jī)計(jì)算裝置110的一個(gè)或多個(gè)目標(biāo)組相關(guān)聯(lián)的機(jī)制。例如,軟件更新服務(wù)120可限制特定的硬件驅(qū)動程序更新對具有特定硬件設(shè)備的特定品牌的客戶機(jī)計(jì)算裝置110的訪問。在這一示例中,軟件更新服務(wù)120可定義具有特定品牌名和特定硬件設(shè)備的客戶機(jī)計(jì)算裝置110的目標(biāo)組,并限制特定軟件下載向該目標(biāo)組的發(fā)送。
在本發(fā)明的一個(gè)說明性實(shí)施例中,可擴(kuò)充定目標(biāo)機(jī)制可通過使用定義客戶機(jī)計(jì)算裝置到一個(gè)或多個(gè)目標(biāo)組的成員資格的軟件組件(“授權(quán)插件”)來促進(jìn)。授權(quán)插件在客戶機(jī)計(jì)算裝置110上的存在定義了客戶機(jī)計(jì)算裝置是否屬于授權(quán)插件的特定目標(biāo)組。例如,目標(biāo)組可包括具有特定軟件應(yīng)用程序的有效產(chǎn)品標(biāo)識(“PID”)號的所有計(jì)算機(jī)。在這一示例中,如下文參考圖8更詳細(xì)地描述的,授權(quán)插件826可安裝在客戶機(jī)中,以從客戶機(jī)計(jì)算裝置的存儲器模塊中讀取PID,并將所獲取的PID傳遞到對應(yīng)的PID服務(wù)器插件829。對應(yīng)的PID插件此處也被稱為PID確認(rèn)程序829,使用了一種或多種方法來確定接收到的PID是否有效。一旦確定了儲存在客戶機(jī)計(jì)算裝置110上的PID有效,則服務(wù)器生成指示客戶機(jī)計(jì)算裝置110是具有有效PID的目標(biāo)組的成員的服務(wù)器cookie。在另一示例中,目標(biāo)組可包括被指定為β測試(測試第二版)計(jì)算機(jī)的客戶機(jī)計(jì)算裝置。
在本發(fā)明的一個(gè)說明性實(shí)施例中,軟件更新服務(wù)120的授權(quán)服務(wù)器122包含多個(gè)服務(wù)器授權(quán)插件,它們定義了授權(quán)服務(wù)器將識別的一組客戶機(jī)計(jì)算裝置目標(biāo)組。每一服務(wù)器授權(quán)插件包含與儲存在客戶機(jī)計(jì)算裝置110上的對應(yīng)客戶機(jī)授權(quán)插件傳遞數(shù)據(jù)的組件。以類似的方式,每一客戶機(jī)計(jì)算裝置110包括標(biāo)識客戶機(jī)所屬的目標(biāo)組的一個(gè)或多個(gè)授權(quán)插件。在本發(fā)明的一個(gè)說明性實(shí)施例中,客戶機(jī)授權(quán)插件可在安裝或升級軟件應(yīng)用程序期間,如安裝或升級操作系統(tǒng)期間,被安裝在每一客戶機(jī)計(jì)算裝置中。另外,服務(wù)器授權(quán)插件可以由期望控制對軟件更新的訪問的管理員動態(tài)地安裝或移除。儲存在客戶機(jī)計(jì)算裝置110和授權(quán)服務(wù)器122上的授權(quán)插件可以是實(shí)際的軟件插件,或者授權(quán)插件可以被硬編碼(hard code)成動態(tài)鏈接庫。
如圖8所示,授權(quán)服務(wù)器122包含三個(gè)示例服務(wù)器授權(quán)插件(1)第一服務(wù)器授權(quán)插件828,它定義了包括所有計(jì)算機(jī)的目標(biāo)組(后文稱為“所有計(jì)算機(jī)目標(biāo)組”);(2)第二服務(wù)器授權(quán)插件829,它定義了包括具有有效PID的計(jì)算機(jī)的目標(biāo)組(后文稱為“PID目標(biāo)組”);以及(3)第三服務(wù)器授權(quán)插件830,它定義了包括β測試計(jì)算機(jī)的目標(biāo)組(后文稱為“β測試目標(biāo)組”)。同樣如圖8所示,客戶機(jī)計(jì)算裝置110包含兩個(gè)客戶機(jī)授權(quán)插件(1)第一客戶機(jī)授權(quán)插件825,它指示客戶機(jī)計(jì)算裝置110是“所有計(jì)算機(jī)目標(biāo)組”的成員;以及(2)第二客戶機(jī)授權(quán)插件826,它指示客戶機(jī)裝置110是“PID目標(biāo)組”的成員。在此示例中,客戶機(jī)計(jì)算裝置110不包含指示它是“β測試目標(biāo)組”的成員的授權(quán)插件。如本領(lǐng)域的普通技術(shù)人員所理解的,每一客戶機(jī)授權(quán)插件825和826可被配置成執(zhí)行客戶機(jī)計(jì)算裝置110上的一個(gè)或多個(gè)功能,以協(xié)助確認(rèn)過程。例如,第二客戶機(jī)授權(quán)插件826可被配置成檢查客戶機(jī)計(jì)算裝置110的存儲器,以驗(yàn)證或獲得已安裝軟件應(yīng)用程序的PID。
如圖8所示,授權(quán)子例程702在客戶機(jī)計(jì)算裝置110將配置請求803傳遞到授權(quán)服務(wù)器122時(shí)開始。在本發(fā)明的一個(gè)說明性實(shí)施例中,配置請求803是從被配置成獲取描述儲存在授權(quán)服務(wù)器122上的授權(quán)插件的信息的任一合適的軟件組件形成的。如本領(lǐng)域的技術(shù)人員所理解的,配置請求803可使用一種被稱為“GetConfig(獲取配置)”的已知方法。響應(yīng)于接收配置請求803,授權(quán)服務(wù)器122傳遞配置響應(yīng)804,它包括標(biāo)識儲存在授權(quán)服務(wù)器122上的所有授權(quán)插件的信息。在一個(gè)實(shí)施例中,配置響應(yīng)804包括串?dāng)?shù)組,它標(biāo)識并描述了儲存在授權(quán)服務(wù)器122上的所有授權(quán)插件。在本示例中,配置響應(yīng)804包括標(biāo)識第一服務(wù)器授權(quán)插件828、第二服務(wù)器授權(quán)插件829以及第三服務(wù)器授權(quán)插件830的信息。
在框805,客戶機(jī)計(jì)算裝置110響應(yīng)于接收配置響應(yīng)804生成一個(gè)或多個(gè)授權(quán)cookie。在框805的處理中,客戶機(jī)計(jì)算裝置110對每一對匹配的客戶機(jī)和服務(wù)器授權(quán)插件生成授權(quán)cookie。由此,在本示例中,第一客戶機(jī)授權(quán)插件825生成與“所有計(jì)算機(jī)目標(biāo)組”相關(guān)聯(lián)的第一授權(quán)cookie,因?yàn)榈谝豢蛻魴C(jī)授權(quán)插件825和第一服務(wù)器授權(quán)插件828都與“所有計(jì)算機(jī)目標(biāo)組”相關(guān)聯(lián)。另外,第二客戶機(jī)授權(quán)插件826生成與“PID目標(biāo)組”相關(guān)聯(lián)的第二授權(quán)cookie,因?yàn)榈诙蛻魴C(jī)授權(quán)插件826和第二服務(wù)器授權(quán)插件829都與“PID目標(biāo)組”相關(guān)聯(lián)。未生成第三授權(quán)cookie,因?yàn)榭蛻魴C(jī)計(jì)算裝置110不具有指示它是“β測試目標(biāo)組”的成員的授權(quán)插件。
如本領(lǐng)域的技術(shù)人員也可以理解的,框805的過程的一個(gè)實(shí)現(xiàn)可包括對本領(lǐng)域中稱為“GetAuthCookie(獲取授權(quán)cookie)”的一般已知的軟件方法的使用。也可以理解,每一授權(quán)cookie的生成可涉及額外的處理。例如,第二客戶機(jī)授權(quán)插件826可以被配置成檢查儲存在客戶機(jī)系統(tǒng)注冊表中的信息,以檢索PID并在授權(quán)cookie中包括該P(yáng)ID。在其它示例中,框805的過程可包括與其它計(jì)算機(jī)或裝置通信的過程。例如,客戶機(jī)授權(quán)插件可與諸如聲卡、掃描儀、視頻卡等設(shè)備通信,以獲取設(shè)備的構(gòu)造和模型。在其它非限制示例中,客戶機(jī)授權(quán)插件可與諸如指紋讀取器等安全設(shè)備通信,以獲取描述用戶的信息。
一般而言,客戶機(jī)授權(quán)插件可從客戶機(jī)計(jì)算裝置110的任何組件或通信上耦合至客戶機(jī)計(jì)算裝置110的任何其它計(jì)算裝置讀取配置信息。在其它示例中,客戶機(jī)授權(quán)插件可被配置成使用一個(gè)或多個(gè)公鑰或私鑰應(yīng)用編程接口(API),以收集并加密來自客戶機(jī)的信息,這些信息將由對應(yīng)的服務(wù)器插件來確認(rèn)。在這些示例中,PID確認(rèn)器插件826使用私鑰API來加密客戶機(jī)的PID,以將經(jīng)加密的PID傳遞到服務(wù)器以供解密和確認(rèn)。在其它實(shí)施例中,其它客戶機(jī)授權(quán)插件可使用諸如指紋讀取器或語音打印等生物測定措施,以構(gòu)造傳遞到服務(wù)器供確認(rèn)的授權(quán)cookie。在又一示例中,客戶機(jī)授權(quán)插件可調(diào)用web服務(wù)或任一其它服務(wù)以將授權(quán)憑證或任一其它類型的數(shù)據(jù)傳遞到授權(quán)服務(wù)器122。
在本發(fā)明的一個(gè)說明性實(shí)施例中,每一授權(quán)cookie包括標(biāo)識相關(guān)聯(lián)的目標(biāo)組的串。例如,串可指示特定的授權(quán)cookie與“PID目標(biāo)組”相關(guān)聯(lián)。每一授權(quán)cookie也包括用于在客戶機(jī)和服務(wù)器之間傳遞數(shù)據(jù)的數(shù)據(jù)段。例如,與“PID目際組”相關(guān)聯(lián)的授權(quán)cookie可具有包含實(shí)際PID的數(shù)據(jù)段。如本領(lǐng)域的普通技術(shù)人員所理解的,數(shù)據(jù)段可包含以諸如字節(jié)數(shù)組等任一格式儲存的任何類型的數(shù)據(jù)。例如,如果客戶機(jī)和服務(wù)器上的插件需要公鑰和私鑰的傳遞,則這類數(shù)據(jù)可在一個(gè)或多個(gè)授權(quán)cookie的數(shù)據(jù)段中加密。
一旦客戶機(jī)計(jì)算裝置110對每一對對應(yīng)的客戶機(jī)和服務(wù)器授權(quán)插件生成了授權(quán)cookie,客戶機(jī)計(jì)算裝置將所生成的授權(quán)cookie傳遞到授權(quán)服務(wù)器122。如圖8所示,客戶機(jī)計(jì)算裝置110在cookie請求806中傳遞授權(quán)cookie。cookie請求806包括用于傳遞框805的處理中生成的授權(quán)cookie的數(shù)組的任一合適的格式。這一部分授權(quán)方法702的一種實(shí)現(xiàn)可包括對本領(lǐng)域中被稱為“GetCookie(獲取cookie)”的一般已知的軟件方法的使用。
在一個(gè)實(shí)施例中,cookie請求806也包括儲存在客戶機(jī)計(jì)算裝置110的存儲器中的其它授權(quán)服務(wù)器cookie。如可以從以下描述中更容易地理解的,客戶機(jī)計(jì)算裝置110的存儲器可儲存在授權(quán)例程700的先前的執(zhí)行中創(chuàng)建的舊授權(quán)服務(wù)器cookie。通過在cookie請求806中提供儲存的授權(quán)服務(wù)器cookie,客戶機(jī)計(jì)算裝置110能夠維護(hù)其在授權(quán)子例程702的先前的執(zhí)行中被授予的訪問特權(quán)。在本示例中,由于沒有授權(quán)服務(wù)器cookie儲存在客戶機(jī)中,因此cookie請求806包括與“所有計(jì)算機(jī)目標(biāo)組”相關(guān)聯(lián)的第一授權(quán)cookie以及與“PID目標(biāo)組”相關(guān)聯(lián)的第二授權(quán)cookie。
下一步,如框807中所示,響應(yīng)于接收cookie請求806,授權(quán)服務(wù)器122生成服務(wù)器cookie。在一個(gè)實(shí)施例中,對于每一接收到的授權(quán)cookie,向適當(dāng)?shù)姆?wù)器授權(quán)插件作出調(diào)用以生成服務(wù)器cookie數(shù)據(jù)。每一服務(wù)器授權(quán)插件生成的服務(wù)器cookie數(shù)據(jù)包括接收到的授權(quán)cookie中標(biāo)識的每一目標(biāo)組的標(biāo)識符。在本示例中,由于cookie請求806包括與“所有計(jì)算機(jī)目標(biāo)組”相關(guān)聯(lián)的第一授權(quán)cookie,以及與“PID目標(biāo)組”相關(guān)聯(lián)的第二授權(quán)cookie,因此授權(quán)服務(wù)器122生成包括這些相應(yīng)目標(biāo)組的標(biāo)識符的服務(wù)器cookie數(shù)據(jù)。在授權(quán)服務(wù)器122上,如果在cookie請求806中接收到舊服務(wù)器cookie,則將服務(wù)器cookie數(shù)據(jù)與舊服務(wù)器cookie組合,以生成新服務(wù)器cookie。在一個(gè)實(shí)施例中,新服務(wù)器cookie通過使用諸如三重DES等公眾可用的加密方法來加密。
在本發(fā)明的一個(gè)說明性實(shí)施例中,服務(wù)器cookie可包括標(biāo)識一個(gè)或多個(gè)相關(guān)聯(lián)的目標(biāo)組的經(jīng)加密的信息。另外,服務(wù)器coookie可包括過期數(shù)據(jù),它以明文格式和加密格式兩者儲存。以明文格式儲存的過期數(shù)據(jù)由客戶機(jī)計(jì)算裝置110用于監(jiān)視服務(wù)器cookie的過期。以加密格式儲存的過期數(shù)據(jù)由軟件更新服務(wù)120用于確定客戶機(jī)計(jì)算裝置110是否被授權(quán)來接收與特定目標(biāo)組相關(guān)聯(lián)的更新。在一個(gè)實(shí)施例中,服務(wù)器cookie的過期數(shù)據(jù)應(yīng)用于服務(wù)器cookie中標(biāo)識的所有目標(biāo)組?;蛘?,或除應(yīng)用于整個(gè)服務(wù)器cookie的過期時(shí)間之外,服務(wù)器cookie可包括多個(gè)過期數(shù)據(jù),其每一個(gè)可應(yīng)用于個(gè)別的目標(biāo)組。如本領(lǐng)域的普通技術(shù)人員所理解的,每一服務(wù)器cookie可包括附加數(shù)據(jù)。例如,服務(wù)器cookie可被配置成儲存客戶機(jī)狀態(tài)信息,如授權(quán)子例程702的最后執(zhí)行的時(shí)間標(biāo)記。
一旦被生成,授權(quán)服務(wù)器cookie 809從授權(quán)服務(wù)器122傳遞到客戶機(jī)計(jì)算裝置110。下一步,如框811所示,服務(wù)器cookie然后被儲存在客戶機(jī)計(jì)算裝置110的存儲器中。當(dāng)客戶機(jī)計(jì)算裝置110確定服務(wù)器cookie的至少一個(gè)組件過期時(shí),客戶機(jī)計(jì)算裝置可重新執(zhí)行授權(quán)方法702來獲取新的服務(wù)器cookie。如上所述,在授權(quán)方法702的每一次隨后的執(zhí)行中,客戶機(jī)計(jì)算裝置110可在cookie請求806中將其儲存的服務(wù)器cookie傳遞到授權(quán)服務(wù)器122。在一個(gè)實(shí)施例中,客戶機(jī)不必發(fā)送請求803,除非服務(wù)器通知客戶機(jī),服務(wù)器配置已改變,即,添加了新的授權(quán)插件。
依照本發(fā)明的另一方面,軟件更新服務(wù)120可提供用于在元數(shù)據(jù)服務(wù)器123和客戶機(jī)計(jì)算裝置110之間同步更新信息的同步子例程。通過使用唯一的軟件更新層次,同步子例程可有效地標(biāo)識應(yīng)用于特定客戶機(jī)計(jì)算裝置的特定更新。另外,通過使用授權(quán)子例程702中生成的服務(wù)器cookie,同步子例程可選擇性地授予對與特定目標(biāo)組相關(guān)聯(lián)的更新的訪問權(quán)限。
依照本發(fā)明的一個(gè)說明性實(shí)施例,每一軟件更新包括三個(gè)部分1)指令部分;(2)本地化的數(shù)據(jù)部分;以及(3)數(shù)據(jù)部分。如本領(lǐng)域的普通技術(shù)人員所理解的,每一更新可具有上述部分的一個(gè)或多個(gè)。例如,更新可包含指令部分、本地化的數(shù)據(jù)部分和數(shù)據(jù)流部分。在另一示例中,更新可僅包含用于測試客戶機(jī)計(jì)算裝置的一個(gè)或多個(gè)條件的指令部分。軟件更新的各個(gè)部分在下文更詳細(xì)地描述。
一般而言,指令部分包含兩個(gè)子部分(1)定義要由客戶機(jī)計(jì)算裝置110測試的一個(gè)或多個(gè)條件的適用性規(guī)則;以及(2)標(biāo)識個(gè)別更新的正確安裝所需要的一個(gè)或多個(gè)更新的一組先決條件。如后文所描述的,適用性規(guī)則可定義與計(jì)算機(jī)相關(guān)的多個(gè)條件,這些條件的每一個(gè)可通過使用任何邏輯操作符與其它條件相關(guān)聯(lián)。例如,指令部分可包括確定計(jì)算機(jī)是否安裝了Windows的特定版本的適用性規(guī)則。同樣如下所述,該組先決條件可標(biāo)識要求先前已被安裝的一個(gè)或多個(gè)更新。例如,如后文參考圖9更詳細(xì)地描述的,個(gè)別的更新可包含列出個(gè)別更新的正確安裝所需要的其它更新的先決條件。在其它示例中,同樣如圖9所示,該組先決條件可包括對邏輯操作符的使用以定義更復(fù)雜的先決條件規(guī)則。
指令部分也包含指示是否由依賴于特定更新的其它更新的代碼,如布爾標(biāo)志。為說明的目的,如果沒有依賴于特定更新的其它更新,則該更新被認(rèn)為是LEAF更新。用于指示更新是否為LEAF的布爾標(biāo)志是在當(dāng)添加或移除相關(guān)更新時(shí)由元數(shù)據(jù)服務(wù)器123動態(tài)地更新的。
每一更新的本地化數(shù)據(jù)部分包括描述更新的通用信息。例如,本地化數(shù)據(jù)部分可包括描述更新的特征和益處的信息。本地化數(shù)據(jù)部分也可包括更新的安裝過程的文本描述。另外,本地化數(shù)據(jù)部分可包括與更新有關(guān)的任何其它數(shù)據(jù)或信息。例如,本地化數(shù)據(jù)可指示更新是高優(yōu)先級更新。在另一示例中,本地化數(shù)據(jù)可提供特殊的安裝消息,如指示更新不能與其它軟件更新一起安裝的消息。本地化信息可以是允許向用戶顯示其包含的信息的格式。
每一更新的數(shù)據(jù)部分包括更新的一個(gè)或多個(gè)二進(jìn)制數(shù)據(jù)流。在一個(gè)實(shí)施例中,每一更新的數(shù)據(jù)部分可以與一個(gè)或多個(gè)數(shù)據(jù)文件相關(guān)聯(lián),如可執(zhí)行文件、文檔、鏈接庫等等。如下文更詳細(xì)地描述的,每一更新可以與數(shù)據(jù)文件的組合相關(guān)聯(lián),其每一個(gè)促進(jìn)了客戶機(jī)使用的軟件的實(shí)際升級、安裝或修改。例如,更新的安裝可以通過使用包括完成所選擇的更新所需的所有信息的單個(gè)CAB文件來促進(jìn)?;蛘?,更新的安裝可通過使用用于更新儲存在客戶機(jī)計(jì)算裝置上的一個(gè)或多個(gè)文件的多個(gè)個(gè)別更新來促進(jìn)。
在本發(fā)明的一個(gè)說明性實(shí)施例中,軟件更新可以按允許軟件更新的受控分發(fā)的分層結(jié)構(gòu)來排列。一般而言,更新的層次定義了更新之間的關(guān)系,并特別地指示了哪些更新依賴于其它更新。為說明的目的,圖9中提供并示出了一組示例性更新。如圖所示,示例更新900的層次包括基礎(chǔ)更新組901、第二更新組902以及第三更新組903。一般而言,基礎(chǔ)更新集901中的每一更新不具有需要其它更新的安裝的先決條件。然而,第六更新921包含需要第一更新911、第二更新912、第三更新913的安裝的先決條件。第七更新922包含需要第四更新914的安裝的先決條件。第八更新931包含需要第六更新921和第五更新915的先決條件。因此,第八更新931也需要第一更新911、第二更新912和第三更新913的安裝。為說明本發(fā)明的目的,給定示例更新集900的所有更新都與“所有計(jì)算機(jī)目標(biāo)組”和“PID目標(biāo)組”相關(guān)聯(lián)。
如圖9所示,并且如后文更詳細(xì)描述的,每一更新包含指定更新安裝的條件的適用性規(guī)則。例如,第一更新911需要操作系統(tǒng)的英語版本的安裝。第二更新912需要WindowsXP版本SP1的安裝。在另一示例中,第六更新921需要被稱為XP PATCH1的軟件補(bǔ)丁的安裝。因此,如果未滿足適用性規(guī)則,則客戶機(jī)計(jì)算裝置110將不安裝更新。
圖9也示出了指示是否有依賴于特定更新的其它更新的指令部分段。該段被稱為LEAF,它可以是指示軟件更新是一系列相關(guān)更新的最后一個(gè)更新的布爾值形式。為說明本發(fā)明的目的,如果沒有其它更新列出特定更新為先決條件,則該特定更新是LEAF更新。如圖9所示,第七更新922和第八更新931是僅有的兩個(gè)LEAF更新。
圖10示出了依照本發(fā)明形成的同步子例程704(圖7)的協(xié)議圖。一般而言,同步子例程704選擇性地在客戶機(jī)計(jì)算裝置110和諸如元數(shù)據(jù)服務(wù)器123等服務(wù)器之間傳遞某些更新的指令部分,以標(biāo)識可應(yīng)用于客戶機(jī)計(jì)算裝置110的更新。如圖10所示,為啟動更新,客戶機(jī)計(jì)算裝置110首先處理已安裝的更新,并將同步請求1051傳遞到元數(shù)據(jù)服務(wù)器123,請求對客戶機(jī)可用的一個(gè)或多個(gè)更新。響應(yīng)于接收同步請求1051,元數(shù)據(jù)服務(wù)器123向客戶機(jī)計(jì)算裝置110返回多個(gè)更新。如可以從以下描述中更容易地理解的,客戶機(jī)計(jì)算裝置110在傳遞同步請求1051之前處理本地儲存的數(shù)據(jù)。
客戶機(jī)計(jì)算裝置110處理每一接收到的更新的指令部分,以確定是否能滿足適用性規(guī)則中定義的條件。如果滿足了個(gè)別的更新中定義的條件,為說明同步子例程1050的目的,個(gè)別更新是“已安裝”的,并且所安裝的更新被保存在客戶機(jī)更新高速緩存的第一組成部分中。另一方面,如果未滿足個(gè)別更新中定義的條件,則該個(gè)別更新被認(rèn)為“失敗”,并且失敗的更新被保存在客戶機(jī)更新高速緩存的第二組成部分中。在同步子例程1050的這一描述中,如果更新被安裝,則可假定滿足了先決條件和適用性規(guī)則的條件。為描述該子例程的目的,更新的安裝不必要意味著與更新相關(guān)聯(lián)的數(shù)據(jù)文件實(shí)際上被安裝到客戶機(jī)計(jì)算裝置110中。
在一個(gè)實(shí)施例中,客戶機(jī)更新高速緩存的兩個(gè)組成部分可用于歸類所接收到的更新。第一組成部分用于儲存已安裝的、非LEAF更新;第二組成部分用于儲存客戶機(jī)接收的所有其它更新,即未安裝的更新。更新高速緩存的第二組成部分也可包括所有LEAF更新的存儲。如下文更詳細(xì)地描述的,儲存在更新高速緩存中的更新可以被傳遞到元數(shù)據(jù)服務(wù)器123并由其處理,以標(biāo)識可用于在客戶機(jī)計(jì)算裝置110上的安裝的其它相關(guān)更新。
現(xiàn)在回頭參考圖10,將描述同步請求的細(xì)節(jié),被示出為項(xiàng)1051、1055和1060。如本領(lǐng)域的普通技術(shù)人員所理解的,同步請求可由多個(gè)不同裝置、進(jìn)程、應(yīng)用程序、用戶啟動的命令之一來啟動,以請求更新。同步請求可由請求更新列表的用戶、由客戶機(jī)代理啟動的自動更新、以及向元數(shù)據(jù)服務(wù)器123或更新服務(wù)120請求信息的任何其它軟件組件啟動。在一個(gè)實(shí)施例中,同步請求包括授權(quán)服務(wù)器cookie,如從授權(quán)例程702生成的授權(quán)服務(wù)器cookie。服務(wù)器cookie的使用允許服務(wù)器確定客戶機(jī)是否為一個(gè)或多個(gè)目標(biāo)組的成員。
每一同步請求也可包括儲存在客戶機(jī)更新高速緩存中的每一更新的標(biāo)識符。更具體地,如果一個(gè)或多個(gè)更新儲存在更新高速緩存中,同步請求包括具有用于已安裝、非LEAF更新的標(biāo)識符的第一部分;以及具有用于諸如LEAF更新、已失敗更新以及未安裝的其它更新等所有其它更新的標(biāo)識符的第二部分。更新標(biāo)識符可以是任何格式,包括但不限于,整數(shù)數(shù)組?;蛘?,如果沒有更新儲存在客戶機(jī)更新高速緩存中,則同步請求不配備更新標(biāo)識符。當(dāng)同步請求設(shè)備配備更新標(biāo)識符時(shí),同步請求提供客戶機(jī)計(jì)算裝置110沒有任何高速緩存的更新的指示。
如圖10所示,第一同步請求1051從客戶機(jī)計(jì)算裝置110傳遞到元數(shù)據(jù)服務(wù)器123。在本示例中,如果這是方法的第一次執(zhí)行,則客戶機(jī)的更新高速緩存將不包含任何更新。由此,第一同步請求1051不包含用于高速緩存的更新的標(biāo)識符。響應(yīng)于接收同步請求,如框1052所示,元數(shù)據(jù)服務(wù)器123確定同步請求是否包含至少一個(gè)更新標(biāo)識符。如果確定同步請求不包含更新標(biāo)識符,則元數(shù)據(jù)服務(wù)器1123通過選擇用于傳遞到客戶機(jī)計(jì)算裝置110第一級更新來響應(yīng)。如上所述,第一級更新可包括沒有標(biāo)識其它更新的先決條件的任何更新。
或者,如果確定同步請求包含至少一個(gè)更新標(biāo)識符,則元數(shù)據(jù)服務(wù)器123檢查服務(wù)器的已儲存更新的先決條件,以選擇用于傳送到客戶機(jī)的額外更新。在一個(gè)實(shí)施例中,元數(shù)據(jù)服務(wù)器123選擇已實(shí)現(xiàn)先決條件的更新。在檢查先決條件時(shí),服務(wù)器使用同步請求的第一部分的更新,它包括安裝在客戶機(jī)上的非LEAF更新的標(biāo)識符。
除選擇已實(shí)現(xiàn)先決條件的更新之外,服務(wù)器也使用同步請求的第二部分中標(biāo)識的更新,以過濾所選擇的更新。更具體地,同步請求的第二部分中標(biāo)識的未安裝更新、LEAF更新和已失敗更新用于過濾一個(gè)或多個(gè)所選擇的更新。本發(fā)明的這一特征允許本發(fā)明的系統(tǒng)和方法避免儲存在元數(shù)據(jù)服務(wù)器123上的更新的多次發(fā)送。
返回到本示例,由于第一同步請求1051不包括更新標(biāo)識符,則元數(shù)據(jù)服務(wù)器123選擇更新901的基礎(chǔ)級,以傳遞到客戶機(jī)計(jì)算裝置110。參考圖9所示的示例更新集,基礎(chǔ)集更新901包括標(biāo)號為911、912、913、914和915的更新。
在框1052的處理中,元數(shù)據(jù)服務(wù)器123也檢查包含在同步請求1051中的授權(quán)服務(wù)器cookie,以標(biāo)識與客戶機(jī)計(jì)算裝置110相關(guān)聯(lián)的目標(biāo)組。元數(shù)據(jù)服務(wù)器123也檢查在框1052的過程中選擇的更新的目標(biāo)組???052的處理然后過濾出不與接收到的授權(quán)服務(wù)器cookie中標(biāo)識的目標(biāo)組相關(guān)聯(lián)的所有所選擇的更新。在本示例中,由于所有所選擇的更新911、912、913、914和91 5與PID和所有計(jì)算機(jī)目標(biāo)組相關(guān)聯(lián),因此所有所選擇的更新都被發(fā)送到客戶機(jī)計(jì)算裝置110。
元數(shù)據(jù)服務(wù)器123然后在同步響應(yīng)1053中將所選擇的更新傳遞到客戶機(jī)計(jì)算裝置110。一般而言,每一同步響應(yīng)包括服務(wù)器120發(fā)送的每一更新的指令部分。由此,在本示例中,第一同步響應(yīng)1053包括標(biāo)號為911、912、913、914和915的更新的指令部分。在一個(gè)實(shí)施例中,每一同步響應(yīng)不包括每一更新的本地化數(shù)據(jù)部分或數(shù)據(jù)部分。
下一步,如框1054中所示,客戶機(jī)計(jì)算裝置110處理每一接收到的更新的指令部分,以確定是否可滿足適用性規(guī)則中定義的條件。再次參考圖9,客戶機(jī)計(jì)算裝置110處理接收到的更新911-915的指令部分。為說明本發(fā)明的目的,在本示例中假定客戶機(jī)計(jì)算裝置110的操作系統(tǒng)是Windows版本XP SP1的英語安裝。也假定客戶機(jī)計(jì)算裝置110是Dell PC,并運(yùn)行32位的X86處理器。由此,在處理示例更新集的指令部分時(shí),客戶機(jī)計(jì)算裝置110可確定將滿足第一更新911中定義的條件,因?yàn)橛?jì)算機(jī)包含英語OS。將滿足第二更新912中定義的條件,因?yàn)椴僮飨到y(tǒng)是Windows版本XP SP1。將滿足第三更新913中定義的條件,因?yàn)榭蛻魴C(jī)計(jì)算裝置運(yùn)行X96處理器。將滿足第五更新915中定義的條件,因?yàn)榭蛻魴C(jī)計(jì)算裝置110是Dell PC。結(jié)果,第一更新911、第二更新912、第三更新913和第五更新915都被保存在客戶機(jī)更新高速緩存的第一組成部分中。將不滿足第四更新914中定義的條件,因?yàn)榭蛻魴C(jī)計(jì)算裝置110不運(yùn)行64位的X86處理器。由此,第四更新914被認(rèn)為是已失敗的更新,并保存在客戶機(jī)更新高速緩存的第二組成部分中。
返回到圖10,在框1054的處理中,客戶機(jī)計(jì)算裝置110也確定是否需要后續(xù)的同步請求。在一個(gè)實(shí)施例中,如果至少一個(gè)所接收到的更新指示它不是LEAF更新,則確定需要后續(xù)的同步請求。在本發(fā)明的示例中,確定需要隨后的同步請求,因?yàn)樗薪邮盏降母露疾皇荓EAF更新。由此,客戶機(jī)計(jì)算裝置110將后續(xù)的同步請求1055傳遞到元數(shù)據(jù)服務(wù)器123。
如上所述,同步請求包括儲存在客戶機(jī)更新高速緩存中的每一更新的標(biāo)識符。由此,在本示例中,后續(xù)的同步請求1055包括指示客戶機(jī)上安裝了第一更新911、第二更新922、第三更新913和第五更新915的第一數(shù)據(jù)部分。另外,后續(xù)的同步請求1055包括指示客戶機(jī)上未成功地安裝第四更新911的第二數(shù)據(jù)部分。
響應(yīng)于接收后續(xù)的同步請求1055,如上所述,元數(shù)據(jù)服務(wù)器123確定后續(xù)的同步請求1055是否包含至少一個(gè)更新標(biāo)識符。如果確定后續(xù)的同步請求包含至少一個(gè)更新標(biāo)識符,元數(shù)據(jù)服務(wù)器123檢查所有儲存的更新的先決條件,以選擇用于傳送到客戶機(jī)的額外更新。
再次參考本示例,在框1056的處理中,元數(shù)據(jù)服務(wù)器123將選擇第六更新921,因?yàn)闈M足了它的先決條件。更具體地,如圖9所示,第六更新921被選中用于傳遞到客戶機(jī)計(jì)算裝置110,因?yàn)槠湫枰谝桓?11、第二更新912和第三更新913的安裝的先決條件已被實(shí)現(xiàn)。第七更新922和第八更新931將不被選中用于傳遞到客戶機(jī),因?yàn)樗鼈兊南葲Q條件未被實(shí)現(xiàn)。更具體地,同步請求1055不包含第四更新914的標(biāo)識符,它是第七更新922的先決條件。另外,同步請求855不包含第六更新921的標(biāo)識符,它是第八更新931的先決條件。
返回到圖10,同步子例程1050通過在后續(xù)響應(yīng)1057中將所選擇的更新從元數(shù)據(jù)服務(wù)器123傳遞到客戶機(jī)計(jì)算裝置110來繼續(xù)。再次參考本示例,后續(xù)響應(yīng)1057將包括與第六更新921有關(guān)的信息,它在后續(xù)響應(yīng)1057中被傳遞到客戶機(jī)110。
在接收到后續(xù)響應(yīng)1057之后,客戶機(jī)計(jì)算裝置110處理后續(xù)響應(yīng)1057的指令部分。類似于框1054的過程,客戶機(jī)計(jì)算裝置110處理每一接收到的更新的指令部分,以確定是否滿足適用性規(guī)則中定義的條件。在本示例中,如果假設(shè)在客戶機(jī)計(jì)算裝置中已安裝了XP PATCH1,則第六更新921被認(rèn)為是已安裝的,并且更新被寫入客戶機(jī)計(jì)算裝置110的更新高速緩存中。由于第六更新921不是LEAF更新,因此客戶機(jī)計(jì)算裝置110發(fā)送包括儲存在客戶機(jī)更新高速緩存的第一和第二組成部分中的所有更新的另一同步請求1060。同步請求1060也包括授權(quán)服務(wù)器cookie。
在本示例中,通過使用上述元數(shù)據(jù)服務(wù)器123的處理,同步請求1060在框1061被處理,其中,服務(wù)器選擇第八更新931。第八更新931被選中,因?yàn)橥秸埱?060指示第五和第六更新915和921已安裝在客戶機(jī)計(jì)算裝置110上。假設(shè)第八更新931與授權(quán)服務(wù)器cookie中標(biāo)識的相同目標(biāo)組相關(guān)聯(lián),則在另一響應(yīng)1062中將第八更新931的指令部分傳遞到客戶機(jī)計(jì)算裝置110。然后在框1063以類似于框1054和1059的處理的方式處理第八更新931。由于響應(yīng)1062所有所接收的更新都是LEAF更新,因此不將后續(xù)請求發(fā)送回元數(shù)據(jù)服務(wù)器123。
在客戶機(jī)計(jì)算裝置110處,在確定了所有接收到的更新都是LEAF更新之后,或者如果在響應(yīng)1062中沒有接收到任何更新,則同步子例程1050將驅(qū)動程序同步請求1064從客戶機(jī)計(jì)算裝置110傳遞到元數(shù)據(jù)服務(wù)器123。如本領(lǐng)域的普通技術(shù)人員所理解的,驅(qū)動程序同步請求1064可包括描述安裝在客戶機(jī)計(jì)算裝置110上的所有硬件的信息以及描述已安裝軟件的信息。類似于先前的軟件同步請求(1051、1055和1060),驅(qū)動程序同步請求1064可將已安裝的更新傳遞到服務(wù)器。另外,當(dāng)前在客戶機(jī)上高速緩存的所有驅(qū)動程序更新(如果有的話)被傳遞到服務(wù)器。
響應(yīng)于接收驅(qū)動程序同步請求1064,元數(shù)據(jù)服務(wù)器123通過發(fā)送應(yīng)用于客戶機(jī)計(jì)算裝置110的尚未高速緩存到客戶機(jī)上的所有驅(qū)動程序更新來響應(yīng)。如果滿足其先決條件和條件,則在響應(yīng)1065中將驅(qū)動程序更新發(fā)送到客戶機(jī)計(jì)算裝置110。傳遞驅(qū)動程序更新的響應(yīng)1065較佳地傳遞每一更新的指令部分。驅(qū)動程序更新然后被寫入客戶機(jī)計(jì)算裝置的更新高速緩存中。
在接收包含驅(qū)動程序更新的響應(yīng)1065之后,同步子例程1050發(fā)送對所接收的軟件和硬件更新的每一個(gè)的本地化數(shù)據(jù)的請求1066。如上所述,每一更新的本地化數(shù)據(jù)部分包括描述更新的通用信息。例如,本地化數(shù)據(jù)部分可包括描述更新的特征和益處的信息。本地化數(shù)據(jù)部分也可包括更新的安裝過程的文本描述。另外,本地化數(shù)據(jù)部分可包括關(guān)于更新的任何其它數(shù)據(jù)或信息。
由此,在接收了對接收到的軟件更新和硬件更新的每一個(gè)的本地化數(shù)據(jù)的請求1066之后,元數(shù)據(jù)服務(wù)器123通過發(fā)送客戶機(jī)更新高速緩存中保存的所有接收到的軟件更新和硬件更新的所有本地化數(shù)據(jù)來響應(yīng)。一旦接收到,本地化數(shù)據(jù)可由軟件應(yīng)用程序來處理,以確定哪些更新需要被安裝?;蛘?,接收到的本地化數(shù)據(jù)可顯示給用戶,以向用戶通知對客戶機(jī)計(jì)算裝置110可用的所有更新。在一個(gè)實(shí)施例中,接收到的本地化數(shù)據(jù)可在網(wǎng)頁上顯示。在本示例中,第六和第八更新921和931的本地化數(shù)據(jù)可以由客戶機(jī)接收。如果本地化數(shù)據(jù)被儲存在基礎(chǔ)更新911、912、913和915中,則那些更新的本地化數(shù)據(jù)也由客戶機(jī)接收。
圖11示出了網(wǎng)頁1100的一個(gè)示例,它顯示了與對客戶機(jī)可用的更新相關(guān)聯(lián)的本地化數(shù)據(jù)的示例。為說明的目的,網(wǎng)頁1100包括更新的第一詳細(xì)描述1105和另一更新的第二詳細(xì)描述1106。如圖所示,每一更新分別與用于接收更新的用戶選擇的選擇機(jī)制1103和1104相關(guān)聯(lián)。同樣如圖所示,網(wǎng)頁1100配備允許用戶控制更新的選擇到諸如元數(shù)據(jù)服務(wù)器123或下載服務(wù)器124等服務(wù)器的傳遞的控制按鈕1101。
在本發(fā)明的一個(gè)方面中,客戶機(jī)執(zhí)行多個(gè)處理以增強(qiáng)網(wǎng)頁1100的顯示。例如,客戶機(jī)計(jì)算裝置110檢查每一更新的本地化數(shù)據(jù)以確定特定更新是否是高優(yōu)先級。這一特征可通過在本地化數(shù)據(jù)或特定更新的其它組件中查找指示特定更新是高優(yōu)先級或緊急更新的文本來促進(jìn)。如果客戶機(jī)計(jì)算裝置110檢測到高優(yōu)先級更新或緊急更新,則客戶機(jī)在網(wǎng)頁1100的可視部分中,如頁面的頂部顯示高優(yōu)先級更新。另外,客戶機(jī)可生成可視指示符,如專用的文本消息1120,指示該更新是高優(yōu)先級更新。
客戶機(jī)計(jì)算裝置110也可檢查每一更新的本地化數(shù)據(jù),以確定特定更新是否需要排他安裝,即,更新具有不能與另一更新的安裝文件同時(shí)安裝的安裝文件。這一特征可通過在本地化數(shù)據(jù)或特定更新的其它組件中查找指示特定更新需要排他安裝的文本來促進(jìn)。如果客戶機(jī)計(jì)算裝置110檢測到這一更新,則客戶機(jī)顯示一可視指示符,例如圖11所示的文本消息1122,它具有需要排他安裝的更新的描述。
返回到圖7,軟件更新例程700在框708繼續(xù),其中客戶機(jī)計(jì)算裝置110接收更新的選擇。如上所述,響應(yīng)于控制按鈕1101的激勵(lì),對一個(gè)或多個(gè)更新的選擇可由元數(shù)據(jù)服務(wù)器123或下載服務(wù)器124獲得。一旦接收到了一個(gè)或多個(gè)更新的選擇,軟件更新例程700在框708繼續(xù),處理所選擇的軟件更新。
依照本發(fā)明的又一方面,軟件更新服務(wù)120可提供一種在軟件更新服務(wù)和客戶機(jī)計(jì)算裝置110之間選擇和發(fā)送信息的方法。圖12A和12B所示是依照本發(fā)明的軟件更新處理子例程1200,它由客戶機(jī)計(jì)算裝置110實(shí)現(xiàn),用于檢索和安裝所請求的軟件。如上所述,一旦生成或接收到了對軟件更新的選擇,就可以實(shí)現(xiàn)軟件更新處理子例程1200。參考圖12A,在框1202,更新管理組件112例示更新代理118。在本發(fā)明的一個(gè)說明性實(shí)施例中,更新代理118是一種專用軟件組件,用于確定需要什么軟件更新信息來完成請求的軟件更新、生成更新代理的安裝組件的所需要的版本、通過將現(xiàn)有文件與增量補(bǔ)丁合并生成更新文件、和/或啟動更新文件的安裝。在更新代理118已被例示的情況下,可省略框1202。
在框1204,更新代理118從更新服務(wù)120獲取軟件更新信息。在本發(fā)明的一個(gè)說明性實(shí)施例中,更新服務(wù)120發(fā)送的軟件更新信息是包的形式,如自提取文件,它包括可由更新代理使用的各種數(shù)據(jù)。在一個(gè)方面,包可包括對應(yīng)于特定軟件更新的所有文件的列表。另外,包可包括補(bǔ)丁存儲清單的至少一部分的副本,該清單將要更新的文件的特定版本映射到儲存在更新服務(wù)120上的補(bǔ)丁存儲文件中的對應(yīng)軟件更新增量補(bǔ)丁。包也可包括用于要更新的每一文件的安裝信息,它可包括完成安裝所需要的安裝組件的版本的標(biāo)識。此外,包也可包括用于更新代理118的安裝組件,或更新已儲存在客戶機(jī)計(jì)算裝置110上的安裝組件的版本的增量補(bǔ)丁。再者,包可包括允許更新代理確定軟件更新是否成功的驗(yàn)證信息。例如,驗(yàn)證信息可包括更新文件的參考散列值用于比較。更新代理118也可驗(yàn)證包的內(nèi)容。
在判別塊1206,執(zhí)行測試以確定更新代理118是否需要更新安裝組件的版本以實(shí)現(xiàn)更新。相關(guān)領(lǐng)域的技術(shù)人員將認(rèn)識到,在自提取文件中發(fā)送安裝組件的完整副本可增加更新服務(wù)120對每一軟件更新發(fā)送的數(shù)據(jù)量。因此,在本發(fā)明的一個(gè)說明性實(shí)施例中,可將安裝組件的基線版本儲存在客戶機(jī)計(jì)算裝置中,并通過安裝組件增量補(bǔ)丁對當(dāng)前軟件更新的需求來特別更新。因此,自提取文件中的安裝信息指令更新代理118任何所包括的安全組件更新是否需要與客戶機(jī)計(jì)算裝置110上的安裝組件的基線版本合并。如果需要更新,則在框1208,更新代理118更新基線安裝組件,如后文參考圖13更詳細(xì)討論的。
一旦更新代理更新了安裝組件,或者安裝組件不需要更新,則在框1210,更新代理11 8執(zhí)行安裝在計(jì)算裝置110上的文件和文件的特定版本的清查。在本發(fā)明的一個(gè)說明性實(shí)施例中,更新代理118可向客戶機(jī)計(jì)算裝置110文件系統(tǒng)查詢在包內(nèi)被標(biāo)識為對應(yīng)于所選擇的更新的所有文件?;蛘?,如果更新代理118最近已執(zhí)行了清查,則可使用詳細(xì)目錄的高速緩存的版本。在框1212,更新代理118標(biāo)識完成所請求的更新所需要什么軟件更新信息。在本發(fā)明的一個(gè)說明性實(shí)施例中,包存儲清單包括已安裝文件的版本到所需要的增量補(bǔ)丁的映射。因此,如果增量打補(bǔ)丁可用,則更新代理118將使用該映射來標(biāo)識特定的增量補(bǔ)丁及其在包存儲文件中的偏移位置?;蛘?,如果增量補(bǔ)丁不可用或不能實(shí)現(xiàn),則更新代理118可標(biāo)識整個(gè)文件用于下載。
現(xiàn)在參考圖12B,在框1214,更新數(shù)據(jù)代理發(fā)送對已標(biāo)識軟件更新信息的請求。在本發(fā)明的一個(gè)說明性實(shí)施例中,更新代理118可通過指示特定范圍的補(bǔ)丁,將對特定增量補(bǔ)丁的請求從補(bǔ)丁存儲文件發(fā)送到更新服務(wù)120的下載服務(wù)器124。如上所述,補(bǔ)丁存儲文件包括大量的可適用增量補(bǔ)丁,其中每一增量補(bǔ)丁由其在補(bǔ)丁存儲文件中的位置來標(biāo)識。由于補(bǔ)丁存儲文件在某些實(shí)現(xiàn)中可能相當(dāng)大,因此更新代理118可使用僅請求來自補(bǔ)丁存儲文件中的特定位置的數(shù)據(jù)的請求,如補(bǔ)丁存儲清單中所指示的。在本發(fā)明的一個(gè)替換實(shí)施例中,更新代理118可請求更新文件的整個(gè)副本和/或補(bǔ)丁存儲文件的完整副本。
在本發(fā)明的一個(gè)替換實(shí)施例中,可能不排他地與更新服務(wù)120相關(guān)聯(lián)的另一下載服務(wù)器可處理更新代理118請求。在這一實(shí)施例中,請求補(bǔ)丁存儲文件可完整或部分地發(fā)送到網(wǎng)絡(luò)上的任意數(shù)量的附加下載服務(wù)器。附加下載服務(wù)器可以是用于更新專用網(wǎng)絡(luò)上的客戶機(jī)的專用網(wǎng)絡(luò)的一部分。此外,附加下載服務(wù)器可以是公共網(wǎng)絡(luò)的一部分。在專用網(wǎng)絡(luò)環(huán)境中,下載服務(wù)器可獲取補(bǔ)丁存儲文件的完整副本,用于處理客戶機(jī)請求?;蛘?,下載服務(wù)器也可在處理來自其它客戶機(jī)的先前的數(shù)據(jù)請求時(shí)高速緩存補(bǔ)丁存儲文件的各部分,并使用高速緩存數(shù)據(jù)來滿足下載。因此,附加下載服務(wù)器可減少對更新服務(wù)120的下載服務(wù)器124的通信張力。
在框1216,更新代理118接收所請求的更新信息。在本發(fā)明的一個(gè)說明性實(shí)施例中,所請求的更新信息可以用兩種方法發(fā)送。在被稱為手動更新的第一種方法中,更新請求連同對直接HTTP數(shù)據(jù)傳送響應(yīng)的請求一起發(fā)送到更新服務(wù)120。在該方法中,更新服務(wù)120可使用可用于向更新代理118發(fā)送所請求數(shù)據(jù)的整個(gè)帶寬的全部。在被稱為自動更新的第二種方法中,更新請求連同對間接HTTP數(shù)據(jù)傳送響應(yīng)的請求一起發(fā)送到更新服務(wù)120。在這一響應(yīng)中,更新服務(wù)120發(fā)送所請求的數(shù)據(jù)作為后臺進(jìn)程。后臺進(jìn)程可以用使用最小量可用帶寬的方式來實(shí)現(xiàn)。此外,后臺進(jìn)程可在下載過程期間中斷,并可在下一可用時(shí)刻重新開始。通過后臺進(jìn)程發(fā)送所請求數(shù)據(jù)的系統(tǒng)和方法的描述在2000年2月16日提交的,名為“System andMethod for Transferring Data Over a Network(通過網(wǎng)絡(luò)傳輸數(shù)據(jù)的系統(tǒng)和方法)”的共同轉(zhuǎn)讓并共同提交的待決美國專利申請?zhí)?9/505,735中有描述,該申請通過引用結(jié)合于此。相關(guān)領(lǐng)域的技術(shù)人員可以理解,前臺和后臺數(shù)據(jù)傳輸不必要反映所選擇的軟件更新的優(yōu)先級,但是相反反映了如何分配帶寬來獲取更新信息。
一旦從更新服務(wù)接收到了所請求的信息,在框1218,更新代理118將增量補(bǔ)丁與對應(yīng)的已安裝文件合并。在本發(fā)明的一個(gè)說明性實(shí)施例中,更新代理118可高速緩存已安裝文件的原始版本,以確保所選擇的文件不會在下載和合并過程中改變。此外,高速緩存的已安裝文件的原始版本可用于卸載所選擇的更新。
在判別框1220,執(zhí)行測試以確定更新文件是否有效。在本發(fā)明的一個(gè)說明性實(shí)施例中,更新代理118可使用散列算法,以將從更新信息包中獲得并對應(yīng)于有效文件更新的參考散列值與來自當(dāng)前修改的文件的散列相比較。如果散列不匹配,則當(dāng)前修改的文件不是有效的。相關(guān)領(lǐng)域的技術(shù)人員可以理解,可使用多種替換確認(rèn)算法的任一種。如果更新文件不是有效的,則子例程1200返回到框1214,其中更新代理可再次請求更新信息?;蛘?,如果更新代理118已若干次不成功地嘗試了生成更新文件,則更新的代理可實(shí)現(xiàn)若干后退過程的任一種。在本發(fā)明的一個(gè)實(shí)施例中,更新代理118可向更新服務(wù)120請求儲存在補(bǔ)丁存儲文件中,并從補(bǔ)丁存儲清單標(biāo)識的更新文件的已完成副本。在本發(fā)明的另一實(shí)施例中,更新代理118可向更新服務(wù)120請求自主式文件中的更新文件的副本。在本發(fā)明的又一實(shí)施例中,另一子例程1200可以失敗。
一旦所選擇的文件有效,則在判別塊1222,執(zhí)行測試以確定是否需要任何額外的下載。在本發(fā)明的一個(gè)說明性實(shí)施例中,子例程1200進(jìn)入一迭代循環(huán),它在完成了先前選擇的下載之后連續(xù)地核查額外的下載。如果文件的狀態(tài)在下載期間改變,則更新代理118可繼續(xù)請求對新狀態(tài)改變的額外下載。如果需要額外的下載,則在框1224,更新代理118執(zhí)行另一清查,并標(biāo)識所有可適用的增量補(bǔ)丁。子例程1200然后返回到框1214。
一旦完成了所有的所請求的更新下載,在判別框1226,執(zhí)行測試以確定客戶機(jī)機(jī)器的狀態(tài)是否改變。在本發(fā)明的一個(gè)說明性實(shí)施例中,在更新文件的更新信息和實(shí)際安裝的下載和合并之間會經(jīng)過某些時(shí)間。因此,在安裝更新文件之前,更新代理確定客戶機(jī)計(jì)算裝置狀態(tài)是否改變。如果狀態(tài)已改變,則文件更新可能不是有效的,并且更新在框1228失敗?;蛘?,如果沒有發(fā)生狀態(tài)改變,則更新代理118在框1230安裝更新文件,并且子例程1200返回到框1232。
現(xiàn)在參考圖13,描述了由客戶機(jī)計(jì)算裝置110實(shí)現(xiàn),用于更新對應(yīng)于框1208(圖12A)的基線安裝組件的子例程1300。在判別框1302,執(zhí)行測試以確定從更新服務(wù)120發(fā)送到更新代理118的自提取文件中是否包括了新的基線安裝組件。在本發(fā)明的一個(gè)說明性實(shí)施例中,如果更新基線安裝程序所需的增量補(bǔ)丁在大小上可與已更新安裝組件的發(fā)送比較,則將發(fā)送新的基線安裝組件。如果包括了已更新安裝組件,則在框1304,更新代理安裝已更新的基線安裝組件作為新的安裝組件。另外,新的已更新安裝組件可以保存在客戶機(jī)計(jì)算裝置110的存儲器中,以擔(dān)當(dāng)用于附加更新的基線安裝程序。在框1306,子例程返回。
如果在自提取文件中未包括已更新的基線安裝組件,則在框1308,更新代理11 8從自提取文件獲取基線安裝組件增量補(bǔ)丁。在本發(fā)明的一個(gè)說明性實(shí)施例中,基線安裝組件增量補(bǔ)丁對應(yīng)于可與基線安裝組件合并來生成已更新基線安裝組件的軟件代碼。因此,在框1310,更新代理將基線安裝組件增量補(bǔ)丁與基線安裝組件合并。在框1312,更新代理118然后將已更新基線安裝組件制定為當(dāng)前安裝組件。在本發(fā)明的一個(gè)說明性實(shí)施例中,已更新安裝組件在安裝完成之后將不被保存。依照該實(shí)施例,更新代理118僅維護(hù)客戶機(jī)計(jì)算裝置110的存儲器中有限數(shù)量的基線安裝組件。因此,更新代理在每一次安裝時(shí)生成臨時(shí)的已更新安裝組件。由于每一客戶機(jī)計(jì)算裝置110只能對應(yīng)于有限數(shù)量的基線安裝組件,因此僅需要更新服務(wù)120對每一客戶機(jī)計(jì)算裝置發(fā)送單個(gè)基線安裝組件增量補(bǔ)丁。在框1314,子例程1300返回。
盡管示出并描述了本發(fā)明的較佳實(shí)施例,然而可以理解,可在不脫離本發(fā)明的精神和范圍的情況下作出對其作出各種改變。例如,盡管此處描述的說明性示例應(yīng)用于軟件更新,然而本發(fā)明的范圍包括除關(guān)于軟件更新的信息的分發(fā)和傳遞之外的其它使用。因此,除非在本揭示中明確地排除了特定主題,可以理解,本發(fā)明的范圍應(yīng)用于不同于軟件更新或除此之外的任何類型數(shù)據(jù)的分發(fā)和傳遞。
權(quán)利要求
1.一種用于管理客戶機(jī)計(jì)算裝置上的文件的安裝的方法,其特征在于,所述方法包括獲取標(biāo)識在所述客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件所需的基線安裝組件的安裝信息;選擇儲存在所述客戶機(jī)計(jì)算裝置上的基線安裝組件;從所述安裝信息獲取安裝組件增量補(bǔ)??;將來自所述安裝信息的安裝組件增量補(bǔ)丁與所選擇的基線安裝組件合并;以及使用所合并的安裝組件安裝所述客戶機(jī)計(jì)算裝置上的一個(gè)或多個(gè)文件。
2.如權(quán)利要求1所述的方法,其特征在于,獲取標(biāo)識在所述客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件所需的基線安裝組件的安裝信息包括獲取包括所述安裝組件增量補(bǔ)丁的包以及標(biāo)識所需的基線安裝組件的信息。
3.如權(quán)利要求1所述的方法,其特征在于,所述安裝信息包括要安裝在所述客戶機(jī)計(jì)算裝置上的一個(gè)或多個(gè)文件。
4.如權(quán)利要求1所述的方法,其特征在于,標(biāo)識所需的基線安裝組件的所述安裝信息包括標(biāo)識儲存在所述客戶機(jī)計(jì)算裝置上的特定版本的基線安裝組件的信息。
5.如權(quán)利要求1所述的方法,其特征在于,還包括在所述客戶機(jī)計(jì)算裝置上安裝了所述一個(gè)或多個(gè)文件之后刪除所合并的安裝組件。
6.如權(quán)利要求1所述的方法,其特征在于,還包括獲取第二基線組件;將所述第二基線組件儲存在所述客戶機(jī)計(jì)算裝置上;獲取標(biāo)識用于在所述客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件的所述第二基線安裝組件的安裝信息;選擇儲存在所述客戶機(jī)計(jì)算裝置上的所述第二基線安裝組件;從所述安裝信息獲取安裝組件增量補(bǔ)??;將來自所述安裝信息的安裝組件增量補(bǔ)丁與所述第二基線安裝組件合并;以及使用所合并的安裝組件在所述客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件。
7.一種具有用于執(zhí)行權(quán)利要求1所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
8.一種具有處理器、存儲器和操作環(huán)境的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)用于執(zhí)行權(quán)利要求1所述的方法。
9.一種用于管理客戶機(jī)計(jì)算裝置上的文件的安裝的方法,其特征在于,所述方法包括獲取包括標(biāo)識在所述客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件所需的基線安裝組件的信息的包;標(biāo)識儲存在所述客戶機(jī)計(jì)算裝置上的基線安裝組件;從所述包獲取安裝組件增量補(bǔ)丁;將來自所述包的安裝組件增量補(bǔ)丁與所標(biāo)識的基線安裝組件合并;使用所合并的安裝組件在所述客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件;以及在所述客戶機(jī)計(jì)算裝置上安裝了所述一個(gè)或多個(gè)文件之后,刪除所合并的安裝組件。
10.如權(quán)利要求9所述的方法,其特征在于,所述自提取信息包括要安裝在所述客戶機(jī)計(jì)算裝置上的所述一個(gè)或多個(gè)文件。
11.如權(quán)利要求9所述的方法,其特征在于,所述自提取信息包括用于更新和安裝所述客戶機(jī)計(jì)算裝置上的一個(gè)或多個(gè)文件的一個(gè)或多個(gè)軟件更新增量包。
12.如權(quán)利要求9所述的方法,其特征在于,標(biāo)識所需的基線安裝組件的所述安裝信息包括標(biāo)識儲存在所述客戶機(jī)計(jì)算裝置上的特定版本的基線安裝組件的信息。
13.如權(quán)利要求1所述的方法,其特征在于,還包括獲取第二基線組件;將所述第二基線組件儲存在所述客戶機(jī)計(jì)算裝置上;獲取標(biāo)識用于在所述客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件的所述第二基線組件的安裝信息;選擇儲存在所述客戶機(jī)計(jì)算裝置上的所述第二基線安裝組件;從所述安裝信息獲取安裝組件增量補(bǔ)?。粚碜运霭惭b信息的安裝組件增量補(bǔ)丁與所述第二基線安裝組件合并;以及使用所合并的安裝組件在所述客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件;以及在所述客戶機(jī)計(jì)算裝置上安裝了所述一個(gè)或多個(gè)文件之后刪除所合并的第二安裝組件。
14.一種具有用于執(zhí)行權(quán)利要求9所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
15.一種具有處理器、存儲器和操作環(huán)境的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)用于執(zhí)行權(quán)利要求9所述的方法。
16.一種用于管理客戶機(jī)計(jì)算裝置上的文件的安裝的方法,其特征在于,所述方法包括獲取包括選擇儲存在所述客戶機(jī)計(jì)算裝置上的一組基線安裝組件中的信息的包;從儲存在所述客戶機(jī)計(jì)算裝置上的所述基線安裝組件組中選擇一基線安裝組件;從所述包獲取安裝組件更新;用所述安裝組件更新來更新所選擇的安裝組件;以及使用所合并的安裝組件在所述客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件。
17.如權(quán)利要求16所述的方法,其特征在于,所述自提取信息包括要安裝在所述客戶機(jī)計(jì)算裝置上的所述一個(gè)或多個(gè)文件。
18.如權(quán)利要求16所述的方法,其特征在于,所述自提取信息包括用于更新和安裝所述客戶機(jī)計(jì)算裝置上的所述一個(gè)或多個(gè)文件的一個(gè)或多個(gè)軟件更新增量補(bǔ)丁。
19.如權(quán)利要求16所述的方法,其特征在于,所述基線安裝組件組是依照所述基線安裝組件的版本來組織的,并且其中,選擇基線安裝組件包括從所述基線安裝組件組中選擇特定版本的基線安裝組件。
20.一種具有用于執(zhí)行權(quán)利要求16所述的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
21.一種具有處理器、存儲器和操作環(huán)境的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)用于執(zhí)行權(quán)利要求16所述的方法。
全文摘要
提供了一種用于管理計(jì)算裝置上的文件的安裝的系統(tǒng)和方法。客戶機(jī)計(jì)算裝置獲取標(biāo)識儲存在客戶機(jī)計(jì)算裝置上的基線安裝組件的版本的安裝信息。安裝信息也包括安裝組件增量補(bǔ)丁,它與基線安裝組件合并以生成更新的安裝組件。更新的安裝組件用于在客戶機(jī)計(jì)算裝置上安裝一個(gè)或多個(gè)文件。在完成了安裝之后,更新的安裝組件可被刪除。
文檔編號G06F9/445GK1735862SQ200480001320
公開日2006年2月15日 申請日期2004年7月23日 優(yōu)先權(quán)日2003年12月15日
發(fā)明者T·D·邁克基利, D·P·孟席斯, M·V·史利格爾, D·程, M·默哈姆德, M·申德 申請人:微軟公司