專利名稱:軟件分發(fā)方法與系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于數(shù)據(jù)處理領(lǐng)域,更具體地講,涉及軟件分發(fā)方法與相應(yīng)的系統(tǒng)。
背景技術(shù):
軟件產(chǎn)品(例如新的軟件產(chǎn)品)的分發(fā)是一項(xiàng)很耗時(shí)的活動(dòng),尤其在包含軟件必須分發(fā)到的大量目標(biāo)計(jì)算機(jī)的系統(tǒng)中。例如,在包括成千上萬(wàn)個(gè)工作站的大型組織中,這是一種經(jīng)常性的活動(dòng),因?yàn)樵谄渲幸ㄆ诟萝浖a(chǎn)品以與信息技術(shù)的發(fā)展同步或者符合組織變化。
在最近幾年中人們已經(jīng)提出了軟件分發(fā)應(yīng)用用來(lái)幫助系統(tǒng)管理員有效地管理軟件產(chǎn)品從系統(tǒng)中心站點(diǎn)的分發(fā)。軟件分發(fā)應(yīng)用控制建立包含以下指令的包,這些指令指明要在目標(biāo)計(jì)算機(jī)上執(zhí)行的行動(dòng)以安裝或者去除所選擇的軟件產(chǎn)品;每個(gè)包還嵌入了待安裝到目標(biāo)計(jì)算機(jī)上的軟件產(chǎn)品的拷貝。該包被發(fā)送到每個(gè)目標(biāo)計(jì)算機(jī),并且相應(yīng)的指令被解釋以實(shí)施所希望的軟件產(chǎn)品。
為了增加軟件分發(fā)應(yīng)用的靈活性,一般將所述指令以目標(biāo)計(jì)算機(jī)的配置(例如,由一系列硬件參數(shù)定義)為條件。然后,使該包對(duì)于具有不同硬件配置的目標(biāo)計(jì)算機(jī)通用,從而對(duì)于系統(tǒng)管理員要求較少的維護(hù)。
現(xiàn)有技術(shù)的軟件分發(fā)應(yīng)用基于實(shí)施模型(enforcement model),其中從系統(tǒng)的中心站點(diǎn)管理所有的操作;不支持中心站點(diǎn)與目標(biāo)計(jì)算機(jī)之間任何類型的合作。在幾種情景中,這種合作的缺乏產(chǎn)生了不一致。
具體地,目標(biāo)計(jì)算機(jī)的硬件更新可能改變對(duì)在包中定義的條件的評(píng)估結(jié)果;換而言之,在過(guò)去分發(fā)時(shí)為真的條件可能變?yōu)閭?,反之亦然。結(jié)果,安裝在目標(biāo)計(jì)算機(jī)上的軟件產(chǎn)品不再與其硬件配置一致。在最好的情況下,目標(biāo)計(jì)算機(jī)的硬件資源也會(huì)利用不充分。然而,這些不一致可能造成運(yùn)行時(shí)錯(cuò)誤(例如,由于缺少存儲(chǔ)分配);在最壞的情況下,這些不一致可能破壞整個(gè)目標(biāo)計(jì)算機(jī)的運(yùn)行(例如,當(dāng)安裝在目標(biāo)計(jì)算機(jī)上的軟件產(chǎn)品的版本與其硬件不兼容時(shí))。
在高度動(dòng)態(tài)的環(huán)境下,這些缺點(diǎn)尤其嚴(yán)重,其中目標(biāo)計(jì)算機(jī)的硬件配置經(jīng)常變動(dòng)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種軟件分發(fā)方法與相應(yīng)的系統(tǒng),其支持中心站點(diǎn)與目標(biāo)計(jì)算機(jī)之間某種類型的合作。
本發(fā)明的另一目的在于避免目標(biāo)計(jì)算機(jī)中的不一致性。
本發(fā)明的另一目的在于確保目標(biāo)計(jì)算機(jī)的運(yùn)行不會(huì)被與其配置不兼容的軟件產(chǎn)品破壞。
這些以及其他有關(guān)目的通過(guò)包含以下步驟的軟件分發(fā)方法達(dá)到在源計(jì)算機(jī)上提供包含對(duì)于為實(shí)施相應(yīng)的軟件產(chǎn)品而要在多個(gè)目標(biāo)計(jì)算機(jī)中的每一個(gè)上執(zhí)行的動(dòng)作的指示的包,至少一個(gè)所述動(dòng)作的條件為目標(biāo)計(jì)算機(jī)的配置;將該包從源計(jì)算機(jī)傳送到目標(biāo)計(jì)算機(jī);執(zhí)行符合目標(biāo)計(jì)算機(jī)配置的動(dòng)作;檢測(cè)導(dǎo)致目標(biāo)計(jì)算機(jī)新配置的變化,確定修改動(dòng)作以實(shí)施符合新配置的軟件產(chǎn)品,以及執(zhí)行修改動(dòng)作。
本發(fā)明還提供了一種用來(lái)執(zhí)行該方法的計(jì)算機(jī)程序應(yīng)用,以及存儲(chǔ)該程序應(yīng)用的產(chǎn)品。另外,本發(fā)明提供了相應(yīng)的軟件分發(fā)系統(tǒng)。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種可直接載入目標(biāo)計(jì)算機(jī)工作存儲(chǔ)器的計(jì)算機(jī)程序,當(dāng)該程序在目標(biāo)計(jì)算機(jī)上運(yùn)行時(shí),用來(lái)執(zhí)行軟件分發(fā)方法,其中目標(biāo)計(jì)算機(jī)與源計(jì)算機(jī)耦合,源計(jì)算機(jī)提供包含對(duì)于為實(shí)施相應(yīng)的軟件產(chǎn)品而要在目標(biāo)計(jì)算機(jī)上執(zhí)行的動(dòng)作的指示的包,并且其中至少一個(gè)所述動(dòng)作的條件為目標(biāo)計(jì)算機(jī)的配置;所述方法包含以下步驟從源計(jì)算機(jī)接收該包,執(zhí)行符合目標(biāo)計(jì)算機(jī)配置的動(dòng)作;檢測(cè)導(dǎo)致目標(biāo)計(jì)算機(jī)新配置的變化,確定修改動(dòng)作以實(shí)施符合新配置的軟件產(chǎn)品,以及執(zhí)行修改動(dòng)作。
本發(fā)明還提供了一種存儲(chǔ)該程序的產(chǎn)品,以及相應(yīng)的用于軟件分發(fā)系統(tǒng)的目標(biāo)計(jì)算機(jī)。
在權(quán)利要求中列出了本發(fā)明的新穎特征。然而,本發(fā)明自身及其以上與其他相關(guān)目的與優(yōu)點(diǎn)最好通過(guò)結(jié)合附圖與以下描述進(jìn)行了解。
圖1a為可以使用本發(fā)明方法的系統(tǒng)的示意方框圖;
圖1b顯示本系統(tǒng)的通用計(jì)算機(jī)的功能塊;圖2a顯示本系統(tǒng)源主機(jī)以及終點(diǎn)(endpoint)的工作存儲(chǔ)器的部分內(nèi)容;圖2b顯示軟件分發(fā)過(guò)程中使用的包的分層結(jié)構(gòu);圖3a-3b為描述軟件分發(fā)過(guò)程不同階段的邏輯的流程圖。
具體實(shí)施例方式
具體參考圖1a,顯示了具有分布式體系結(jié)構(gòu)的數(shù)據(jù)處理系統(tǒng)100。主機(jī)計(jì)算機(jī)105運(yùn)行為待在整個(gè)系統(tǒng)100中分發(fā)的軟件產(chǎn)品的準(zhǔn)備與測(cè)試中心站點(diǎn)。(源)主機(jī)105連接到服務(wù)器計(jì)算機(jī)110,服務(wù)器計(jì)算機(jī)110管理軟件分發(fā)過(guò)程。一或多個(gè)網(wǎng)關(guān)計(jì)算機(jī)115將服務(wù)器與網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)120耦合,網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)120一般基于因特網(wǎng)。多個(gè)終點(diǎn)計(jì)算機(jī)(endpoint computer)125訪問(wèn)網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)120;每個(gè)終點(diǎn)125定義了軟件分發(fā)過(guò)程的目標(biāo)。
終點(diǎn)125借助諸如TCP/IP之類的對(duì)等協(xié)議與相應(yīng)的網(wǎng)關(guān)通信。服務(wù)器110與網(wǎng)關(guān)115之間的通信通過(guò)ORB建立,ORB為作為服務(wù)器與客戶端之間的中間件的COBRA編程模型中的組件。每個(gè)終點(diǎn)125由服務(wù)器110通過(guò)在相關(guān)網(wǎng)關(guān)115上的相應(yīng)對(duì)象來(lái)訪問(wèn),由此使終點(diǎn)125能夠直接由服務(wù)器110訪問(wèn)。通過(guò)這種方式,服務(wù)器110可以調(diào)用駐留于終點(diǎn)125的應(yīng)用的方法。
如圖1b所示,本系統(tǒng)的通用計(jì)算機(jī)由并行連接到通信總線130的幾個(gè)單元形成。詳細(xì)地說(shuō),中央處理單元(CPU)135控制計(jì)算機(jī)的運(yùn)行,RAM 140由CPU 135直接用作工作存儲(chǔ)器,ROM 145存儲(chǔ)計(jì)算機(jī)自舉的基本程序。還有幾個(gè)外圍單元連接到總線130(借助各自的接口)。具體地講,海量存儲(chǔ)器包含磁硬盤150與讀取CD-ROM 160的驅(qū)動(dòng)器155。另外,該計(jì)算機(jī)包含輸入設(shè)備165(例如,包含鍵盤與鼠標(biāo)),以及輸出設(shè)備170(例如,包含監(jiān)視器與打印機(jī))。NIC 175用來(lái)控制網(wǎng)絡(luò)通信。
如果計(jì)算機(jī)具有另一拓?fù)浣Y(jié)構(gòu),如果提供了兩個(gè)或多個(gè)源主機(jī)和/或服務(wù)器,如果源主機(jī)與服務(wù)器組合為單一計(jì)算機(jī),如果終點(diǎn)以不同方式與服務(wù)器耦合,如果計(jì)算機(jī)具有不同的結(jié)構(gòu)或者包含不同的單元等等,類似的考慮也同樣適用。
現(xiàn)在考慮圖2a,顯示了源主機(jī)與通用終點(diǎn)的工作存儲(chǔ)器的部分內(nèi)容;該信息(程序與數(shù)據(jù))一般存儲(chǔ)在相應(yīng)的硬盤上,并且當(dāng)程序運(yùn)行時(shí)與操作系統(tǒng)及其他應(yīng)用程序(在該圖中未顯示)一道被(至少部分地)加載到工作存儲(chǔ)器中。程序起初被從CD-ROM安裝到硬盤上。
具體地,源主機(jī)存儲(chǔ)用來(lái)向終點(diǎn)分發(fā)軟件產(chǎn)品的包205。每個(gè)包205包含指令部分205i與數(shù)據(jù)部分205d。數(shù)據(jù)部分205d嵌入了待安裝在每個(gè)終點(diǎn)上的實(shí)體,然而指令部分205i包含待在終點(diǎn)上執(zhí)行的一系列動(dòng)作的定義;每個(gè)動(dòng)作都與可能的條件相關(guān)聯(lián),條件指明何時(shí)可以執(zhí)行該動(dòng)作。
更具體地,如圖2b所示,包205在邏輯上組織為從根結(jié)點(diǎn)開(kāi)始的分層結(jié)構(gòu)。該分層結(jié)構(gòu)的每個(gè)葉子結(jié)點(diǎn)都對(duì)應(yīng)于一個(gè)動(dòng)作。某些動(dòng)作是自包含的,然而其他動(dòng)作采用被稱為可安裝對(duì)象的對(duì)象;可安裝對(duì)象為待安裝到終點(diǎn)或者待從終點(diǎn)去除的實(shí)體。例如,自包含的動(dòng)作指明終點(diǎn)的重新啟動(dòng),而具有可安裝對(duì)象的動(dòng)作指明添加或去除文件、圖標(biāo)等等。分層結(jié)構(gòu)的分枝結(jié)點(diǎn)包括包含共享容器缺省值得子動(dòng)作的集合的容器。
分層結(jié)構(gòu)的每個(gè)結(jié)點(diǎn)使類實(shí)例化。沒(méi)有(待添加或者待去除的)可安裝對(duì)象的動(dòng)作對(duì)應(yīng)于擴(kuò)展通用ACTION(行動(dòng))類205p的類。ACTION類205p揭示一系列屬性,這些屬性指明當(dāng)評(píng)估為真時(shí)允許執(zhí)行動(dòng)作的條件。例如,動(dòng)作的條件設(shè)置為終點(diǎn)的不同硬件參數(shù)(諸如CPU型號(hào)或者RAM大小)、其上安裝的操作系統(tǒng)等等;比較運(yùn)算符、布爾運(yùn)算符、常量以及變量可用于定義條件。ACTION類205p還揭示了CAN_EXECUTE方法,該方法使之可能驗(yàn)證是否可以在終點(diǎn)上執(zhí)行動(dòng)作;然后,使用DO_EXECUTE執(zhí)行動(dòng)作。CAN_EXECUTE方法與DO_EXECUTE方法兩者都通過(guò)指明EXECUTE操作(用來(lái)執(zhí)行動(dòng)作)或者REVERSE操作(用來(lái)解除動(dòng)作)調(diào)用。
具有指明的待從終點(diǎn)去除的實(shí)體的可安裝對(duì)象的動(dòng)作實(shí)例化REMOVE_OBJECT類205r;REMOVE_OBJECT類205r擴(kuò)展ACTION類205p,從而其繼承了它的所有屬性。在另一方面,指明待添加到終點(diǎn)的實(shí)體的動(dòng)作實(shí)例化ADD_OBJECT類205a,其也擴(kuò)展ACTION類205p。ADD_OBJECT類205a揭示一系列屬性,用于實(shí)體版本控制(其值在創(chuàng)建包205時(shí)設(shè)置)目的。例如,REPLACE_IF_EXISTING屬性指明可以替換預(yù)先存在的實(shí)體,REPLACE_IF_NEWER屬性指明只可以替換實(shí)體的舊版本,REMOVE_IF_MODIFIED屬性指明當(dāng)預(yù)先存在的實(shí)體被修改時(shí)必須被去除。
ADD_OBJECT類205a與REMOVE_OBJECT類205r對(duì)于(待添加或待去除的)相應(yīng)實(shí)體具有關(guān)聯(lián)的INSTALLABLE_OBJECT類205o。INSTALLABLE_OBJECT類205o揭示屬性IS_SHARED,當(dāng)實(shí)體可以在多個(gè)包之間共享時(shí)聲明該屬性。
容器對(duì)應(yīng)于CONTAINER類205c,該類擴(kuò)展ACTION類205p。CONTAINER類205c揭示另外的屬性STOP_ON_FAILURE(其值在創(chuàng)建包時(shí)設(shè)置);該屬性動(dòng)作的結(jié)果可以設(shè)置其子動(dòng)作的執(zhí)行條件。
返回圖2a,模塊集合210用來(lái)準(zhǔn)備包205。詳細(xì)地說(shuō),集合210包含使操作人員能夠使用圖形界面定義包的編輯器。該包自身被定義為第一動(dòng)作;然后,提示操作人員輸入包的中間別名、名稱以及版本屬性。從可能選擇的菜單中添加子動(dòng)作,并且通過(guò)對(duì)話框設(shè)置其屬性。
一旦定義了包的分層結(jié)構(gòu),就可以生成包的指令部分205i;指令部分205i包含文件(被稱為軟件包文件),該文件將分層結(jié)構(gòu)串行化為二進(jìn)制表示。為此,編輯器自頂向下遍歷分層結(jié)構(gòu),并且調(diào)用與每個(gè)動(dòng)作相關(guān)的ENCODE方法。所調(diào)用的方法生成一系列記錄,每個(gè)記錄包含為該類的屬性設(shè)置的值、各個(gè)條件的定義以及依賴于其的孩子(如果有的話)。
可替換地,用正常文本文件描述該包(被稱為軟件包定義文件)。該文本文件的語(yǔ)法基于小節(jié)(stanza)的順序,從相應(yīng)于包的頂層小節(jié)開(kāi)始。每個(gè)小節(jié)都表示一個(gè)動(dòng)作;小節(jié)可以嵌套,其中包含其他小節(jié)的小節(jié)表示容器。集合210的轉(zhuǎn)換模塊通過(guò)使用常規(guī)的分析技術(shù)解釋該文本文件而生成指令部分205i。
從指令部分205i建立包205。包205包含壓縮的存檔文件,向該存檔文件添加指令部分205i。然后,解碼指令部分205i。為此,讀取指令部分205i,并且使用分配給每個(gè)記錄的名稱來(lái)訪問(wèn)指明相應(yīng)類的查找表;一旦實(shí)例化了類,就調(diào)用與其相關(guān)的DECODE方法。所調(diào)用的方法生成包的相應(yīng)分層結(jié)構(gòu)。然后,遍歷該分層結(jié)構(gòu),并且在每個(gè)類上調(diào)用BUILD方法。這些方法從庫(kù)215(例如,存儲(chǔ)文件、庫(kù)等等)檢索待安裝到終點(diǎn)上的實(shí)體;然后,向包205添加所檢索到的實(shí)體。
可以以兩種不同格式準(zhǔn)備包205。在BUILT格式,待安裝到終點(diǎn)的實(shí)體從庫(kù)215采集并且在準(zhǔn)備時(shí)導(dǎo)入包的數(shù)據(jù)部分205d;通過(guò)這種方式,實(shí)體被凍結(jié),從而在任意時(shí)間所有終點(diǎn)檢索到包的同一拷貝。相反,在NOT_BUILT格式,只有當(dāng)必須分發(fā)包時(shí)才采集實(shí)體(從而不同的終點(diǎn)總是接收到每個(gè)實(shí)體的最后版本)。
NOT_BUILT格式還用來(lái)以修復(fù)模式向已經(jīng)收到同一包的終點(diǎn)分發(fā)實(shí)體。該包(由相應(yīng)選項(xiàng)標(biāo)志標(biāo)識(shí))將使每個(gè)終點(diǎn)遍歷相應(yīng)的分層結(jié)構(gòu),以在每個(gè)類上調(diào)用方法從而驗(yàn)證各個(gè)實(shí)體是否正確安裝在終點(diǎn)上。生成待修復(fù)的實(shí)體列表(例如,因?yàn)檫@些實(shí)體缺失或者這些實(shí)體的版本不對(duì))并且返回給源主機(jī)。然后,源主機(jī)建立相應(yīng)的(增量)包以在終點(diǎn)上安裝正確實(shí)體。使用來(lái)檢測(cè)并修復(fù)終點(diǎn)中的不一致,尤其是從被終點(diǎn)用戶(例如,錯(cuò)誤地或者在安裝其他軟件產(chǎn)品時(shí))刪除或者更新而產(chǎn)生的不一致。也只使用相同的技術(shù)來(lái)分發(fā)在最后一次分發(fā)過(guò)程之后已經(jīng)被修改的實(shí)體。
集合210還包括使能自動(dòng)生成包205的工具。具體地,該工具通過(guò)以下方式運(yùn)行記錄相應(yīng)于必須向其分發(fā)軟件產(chǎn)品的終點(diǎn)的原始工作站的瞬態(tài)。然后,將軟件產(chǎn)品安裝在工作站上,并且記錄新瞬態(tài)。該工具檢測(cè)兩個(gè)瞬態(tài)之間的差異,以生成相應(yīng)的包205。優(yōu)選地,解碼并檢查包的結(jié)果指令集合205i,以查找不希望的動(dòng)作,并且設(shè)置條件。
通信服務(wù)220提供了訪問(wèn)包205的接口。服務(wù)220還與修復(fù)模塊225耦合,該模塊作為對(duì)從終點(diǎn)接收的相應(yīng)請(qǐng)求的響應(yīng)的控制增量包205的建立和分發(fā)。
駐留于終點(diǎn)的另一通信服務(wù)230與引擎235通信,引擎235在終點(diǎn)上實(shí)施從源主機(jī)接收的包。引擎235訪問(wèn)存儲(chǔ)終點(diǎn)的當(dāng)前硬件配置的庫(kù)237;配置庫(kù)237包含一系列記錄,每個(gè)記錄都指明相應(yīng)硬件參數(shù)的值(諸如CPU型號(hào)、RAM大小等等)。引擎235管理軟件分發(fā)過(guò)程的日志240;日志240包含為每個(gè)分發(fā)到終點(diǎn)的包存儲(chǔ)動(dòng)作以及相應(yīng)條件的定義的目錄;另外,使用標(biāo)志來(lái)表示分發(fā)時(shí)每個(gè)條件的評(píng)估結(jié)果。引擎235還制作作為分發(fā)過(guò)程的結(jié)果而被更新或者從終點(diǎn)去除的實(shí)體的備份拷貝。
用于向終點(diǎn)添加實(shí)體的動(dòng)作列表247a以及用于從終點(diǎn)去除實(shí)體的動(dòng)作列表247r由引擎235生成,作為對(duì)以修復(fù)模式分發(fā)的包的響應(yīng)。監(jiān)視器250通過(guò)配置庫(kù)237檢測(cè)任何變化(導(dǎo)致終點(diǎn)的新配置)。相應(yīng)地,監(jiān)視器250生成用于添加現(xiàn)在符合終點(diǎn)新配置的實(shí)體的動(dòng)作列表247a以及用于從去除現(xiàn)在不再符合新配置的實(shí)體的動(dòng)作列表247r。(通過(guò)服務(wù)230)向源主機(jī)通報(bào)添加列表247a與去除列表247r,以觸發(fā)建立相應(yīng)的增量包。
在以下情況下適用類似的考慮如果整個(gè)應(yīng)用以及相應(yīng)的數(shù)據(jù)以不同方式構(gòu)造,如果包具有另一結(jié)構(gòu)(例如,如果支持逐個(gè)用戶動(dòng)作的概念),如果分發(fā)等效軟件產(chǎn)品(諸如多媒體作品),如果提供不同的模塊或者功能(例如,如果源主機(jī)存儲(chǔ)用于在斷開(kāi)連接的計(jì)算機(jī)上測(cè)試包的模塊);可替換地,包以不同的方式準(zhǔn)備,配置庫(kù)和/或包目錄被替換為等效的存儲(chǔ)結(jié)構(gòu),其他參數(shù)(硬件或者軟件)用來(lái)定義終點(diǎn)的配置,終點(diǎn)配置的變化以不同方式檢測(cè)(例如,每次打開(kāi)終點(diǎn)時(shí)都檢測(cè)其配置),添加動(dòng)作列表與去除動(dòng)作列表被替換為等效信息等等。
現(xiàn)在考慮圖3a,方法300a表示相應(yīng)于包部署的邏輯流程,該方法開(kāi)始于塊303。在塊306通過(guò)定義待在終點(diǎn)上執(zhí)行的動(dòng)作以及相應(yīng)的條件來(lái)準(zhǔn)備包;然后將待在終點(diǎn)上安裝的實(shí)體嵌入包中。移動(dòng)到塊309,操作人員向服務(wù)器提交分發(fā)請(qǐng)求。分發(fā)請(qǐng)求被傳送到源主機(jī),源主機(jī)向服務(wù)器返回標(biāo)識(shí)代碼,從而使操作人員能夠監(jiān)視并且控制分發(fā)過(guò)程。具有允許操作人員暫停或者取消分發(fā)過(guò)程的命令;還有命令使操作人員能夠在分發(fā)過(guò)程完成之后請(qǐng)求詳細(xì)報(bào)告。
現(xiàn)在參考?jí)K312,包被發(fā)送給終點(diǎn)。在達(dá)到終點(diǎn)之前,分發(fā)過(guò)程在多層網(wǎng)關(guān)中發(fā)生;網(wǎng)關(guān)運(yùn)行為轉(zhuǎn)發(fā)器(或者倉(cāng)庫(kù)),在其中加載并存儲(chǔ)包。向終點(diǎn)上的引擎提供包的標(biāo)簽;然后,終點(diǎn)打開(kāi)至最近網(wǎng)關(guān)的通信信道,從而直接使用同步多路復(fù)用技術(shù)下載包。包的指令部分是由終點(diǎn)接收的第一個(gè)文件;在塊315,同時(shí)讀取并解碼指令部分,以在終點(diǎn)的工作存儲(chǔ)器內(nèi)創(chuàng)建包的分層結(jié)構(gòu)。
引擎讀取并且自頂向下地遍歷如此獲得的分層結(jié)構(gòu)(通過(guò)在位于分層頂部的包的實(shí)例上調(diào)用所希望的方法,其方法進(jìn)而在其孩子上調(diào)用相同的方法)。對(duì)于每個(gè)動(dòng)作,引擎在塊318檢查終點(diǎn)配置是否符合相關(guān)條件。如果不能執(zhí)行動(dòng)作,則該方法進(jìn)入塊321(以下描述)。相反,如果終點(diǎn)配置是否符合與動(dòng)作相關(guān)的條件,則該方法轉(zhuǎn)到塊324。如果動(dòng)作涉及更新在終點(diǎn)上預(yù)先存在的實(shí)體(例如,擦除或者替換文件),則塊327執(zhí)行實(shí)體的備份拷貝;然后,該方法繼續(xù)到塊330。相反(例如,當(dāng)動(dòng)作涉及添加新文件時(shí)),該方法直接進(jìn)入塊330。
在塊330執(zhí)行該動(dòng)作;如果動(dòng)作指明可安裝對(duì)象,則向終點(diǎn)添加該實(shí)體或者從終點(diǎn)去除該實(shí)體。如果實(shí)體在多個(gè)包之間共享,則引擎將該實(shí)體與計(jì)數(shù)器相關(guān)聯(lián),以指示多少包正在使用該實(shí)體。添加共享實(shí)體將增加該計(jì)數(shù)器值,而去除則減少計(jì)數(shù)器值;只有當(dāng)計(jì)數(shù)器變?yōu)榱銜r(shí)(即不再有包使用該實(shí)體),才將實(shí)體從終點(diǎn)物理地去除。然后,該方法轉(zhuǎn)到塊321。
現(xiàn)在考慮塊321,具有相應(yīng)條件的動(dòng)作及其評(píng)估結(jié)果記錄在包目錄日志中。在塊333進(jìn)行測(cè)試以確定是否已經(jīng)處理了包的最后一個(gè)動(dòng)作。如果不是,則方法返回塊318,以驗(yàn)證并且可能執(zhí)行下一個(gè)動(dòng)作。相反,當(dāng)已經(jīng)處理了包的最后一個(gè)動(dòng)作時(shí),分發(fā)過(guò)程在最終塊335處結(jié)束。
現(xiàn)在轉(zhuǎn)到圖3b,在終點(diǎn)上運(yùn)行的監(jiān)視器執(zhí)行另一方法300b,該方法開(kāi)始于塊336。監(jiān)視器在塊337循環(huán)等待事件發(fā)生。每當(dāng)檢測(cè)到終點(diǎn)配置變化時(shí),執(zhí)行步驟339-363;相反,如果關(guān)閉終點(diǎn),則該方法在最終塊369結(jié)束。
現(xiàn)在考慮塊339,在相應(yīng)庫(kù)中記錄所發(fā)生的導(dǎo)致終點(diǎn)新配置的任何變化(例如硬件更新);這使監(jiān)視器檢測(cè)硬件參數(shù)列表中的變化以及相關(guān)新值。作為對(duì)此的響應(yīng),監(jiān)視器觸發(fā)對(duì)包目錄的掃描,以標(biāo)識(shí)具有基于由該更新所修改的一或多個(gè)硬件參數(shù)的條件的所有動(dòng)作。
對(duì)于這些動(dòng)作的每一個(gè),在塊342再次評(píng)估相應(yīng)的條件。如果該條件在新配置下變?yōu)橛行?,則在塊345將該動(dòng)作插入添加動(dòng)作列表,然后該方法轉(zhuǎn)到塊348(以下描述)。如果該條件在新配置下不再有效,則在塊351將動(dòng)作插入去除動(dòng)作列表,然后該方法繼續(xù)到塊348。如果評(píng)估結(jié)果為未改變(即條件保持有效或者無(wú)效),則該方法直接進(jìn)入塊348。在判定塊348進(jìn)行測(cè)試以確定是否已經(jīng)處理了最后一個(gè)動(dòng)作。如果不是,則該方法返回塊342以評(píng)估與下一動(dòng)作相關(guān)的條件。
一旦處理了所有動(dòng)作,該方法就進(jìn)入塊357,在其中向源主機(jī)通報(bào)添加動(dòng)作列表與去除動(dòng)作列表。作為對(duì)此的響應(yīng),在塊360建立相應(yīng)的增量包。該增量包的指令部分指明安裝添加動(dòng)作列表的動(dòng)作所要求的實(shí)體,以及解除去除動(dòng)作列表的動(dòng)作;該增量包的數(shù)據(jù)部分嵌入了待安裝在終點(diǎn)上的實(shí)體(由添加動(dòng)作列表指明)?,F(xiàn)在參考?jí)K363,向終點(diǎn)分發(fā)增量包(重復(fù)上述操作)。結(jié)果,與添加動(dòng)作列表相關(guān)的實(shí)體被安裝到終點(diǎn)上;同時(shí),與去除動(dòng)作列表相關(guān)的實(shí)體被刪除(如果這些實(shí)體已經(jīng)被添加到終點(diǎn)上的話),或者從其備份拷貝恢復(fù)這些實(shí)體(如果這些實(shí)體已經(jīng)被去除或者替換為不同的版本的話)。然后,該方法返回塊337,等待新事件發(fā)生。
例如,請(qǐng)考慮指明以下具有相應(yīng)條件的動(dòng)作的包的分發(fā)Action_1添加File_1如果CPU=型號(hào)_1Action_2去除File_2如果RAM≤64M字節(jié)Action_3添加File_3如果RAM≤64M字節(jié)Action_4添加File_4如果RAM>64M字節(jié)假設(shè)該包被分發(fā)給具有不同于型號(hào)_1的CPU以及32M字節(jié)RAM的終點(diǎn),則只有與Action_2和Action_3相關(guān)的條件為真。因此,引擎從終點(diǎn)去除File_2(在制作備份拷貝之后),然后安裝File_3(而File_1與File_4甚至沒(méi)有傳送給終點(diǎn))。
在終點(diǎn)上進(jìn)行硬件更新;該更新涉及安裝新的型號(hào)_1的CPU類型以及安裝一些內(nèi)存使RAM大小變?yōu)?28M字節(jié)。這些變化使Action_1與Action_4的條件變?yōu)檎妫茿ction_2和Action_3的條件不再有效。作為對(duì)此的響應(yīng),向源主機(jī)發(fā)送對(duì)于執(zhí)行Action_1與Action_4以及對(duì)于解除Action_2和Action_3的請(qǐng)求。相應(yīng)地,源主機(jī)建立相應(yīng)的增量包,然后將該增量包分發(fā)給終點(diǎn)。結(jié)果,F(xiàn)ile_2被(從其備份拷貝)恢復(fù),F(xiàn)ile_3被去除;同時(shí)接收并在終點(diǎn)上安裝File_1與File_4。
以下情況下也適用類似的考慮如果執(zhí)行等效方法(例如,使用檢查點(diǎn),在軟件分發(fā)過(guò)程中周期性地寫入該檢查點(diǎn)以使之能夠在終點(diǎn)故障或者重啟之后重新開(kāi)始),如果利用不同的技術(shù)部署包,如果以交易模式分發(fā)包(其中每個(gè)動(dòng)作首先被準(zhǔn)備然后再提交,從而如果在準(zhǔn)備階段出現(xiàn)某種錯(cuò)誤,則使之能夠回滾到一致?tīng)顟B(tài))等等。
更一般地,本發(fā)明提出了一種軟件分發(fā)方法。該方法開(kāi)始的步驟(在源計(jì)算機(jī)上執(zhí)行)為提供包含對(duì)于為實(shí)施相應(yīng)的軟件產(chǎn)品而要在多個(gè)目標(biāo)計(jì)算機(jī)中的每一個(gè)上執(zhí)行的動(dòng)作的指示的包;一或多個(gè)動(dòng)作的條件為目標(biāo)計(jì)算機(jī)的配置。將該包從源計(jì)算機(jī)傳送到目標(biāo)計(jì)算機(jī),并且執(zhí)行符合目標(biāo)計(jì)算機(jī)配置的動(dòng)作。通過(guò)本發(fā)明的方法,檢測(cè)導(dǎo)致目標(biāo)計(jì)算機(jī)新配置的變化。確定用來(lái)實(shí)施符合新配置的軟件產(chǎn)品的修改動(dòng)作;然后執(zhí)行該修改動(dòng)作。
所提出的方案基于支持源計(jì)算機(jī)與目標(biāo)計(jì)算機(jī)之間合作的模型。
本發(fā)明的方法避免了目標(biāo)計(jì)算機(jī)中的不一致性。
具體地講,所提出的方案保證目標(biāo)計(jì)算機(jī)的運(yùn)行不會(huì)受到與其配置不兼容的軟件特征的損害。
具體地講,本發(fā)明的解決方案在高度動(dòng)態(tài)環(huán)境(其中目標(biāo)計(jì)算機(jī)的配置經(jīng)常變化)下尤其有利,甚至不排除在不同應(yīng)用中使用該方案。
上述本發(fā)明的實(shí)施方式還提供了其他優(yōu)點(diǎn)。
具體地講,掃描每個(gè)待分發(fā)給終點(diǎn)的包以標(biāo)識(shí)其配置變化所影響的所有動(dòng)作;再次評(píng)估這些條件,并且執(zhí)行現(xiàn)在符合終點(diǎn)新配置的相應(yīng)動(dòng)作。
通過(guò)這種方式,以非常簡(jiǎn)單的方式確定修改動(dòng)作,而不需要再次評(píng)估包的所有條件。
優(yōu)選地,在包目錄中與分發(fā)時(shí)的相應(yīng)評(píng)估結(jié)果一道記錄包的所有動(dòng)作與條件。
所設(shè)想的解決方案提高了軟件分發(fā)過(guò)程的有效性。
有利的是,為新配置而從源主機(jī)請(qǐng)求安裝在終點(diǎn)的實(shí)體。
所提出的特征避免了終點(diǎn)上存儲(chǔ)空間的浪費(fèi)。
然而,本發(fā)明的解決方案即使在以下情況下也可以執(zhí)行以不同方式定義條件,評(píng)估新配置中每個(gè)包的所有條件,記錄不同信息的日志,在終點(diǎn)上存儲(chǔ)整個(gè)包,在源主機(jī)的控制下確定待執(zhí)行的動(dòng)作等等。
優(yōu)選地,修改動(dòng)作還指明解除不再符合終點(diǎn)新配置的、已執(zhí)行的動(dòng)作。
該附加步驟使之能夠在終點(diǎn)上恢復(fù)一致?tīng)顟B(tài)(具有新配置所需的所有實(shí)體)。
作為進(jìn)一步的改進(jìn),將已執(zhí)行的動(dòng)作所影響的實(shí)體從其備份拷貝恢復(fù)。
因此,可以將在分發(fā)過(guò)程中刪除或者更新的任何實(shí)體恢復(fù)到其原始版本。
可替換地,在不要求任何備份拷貝的情況下解除動(dòng)作,將備份拷貝存儲(chǔ)在其他地方,不能恢復(fù)實(shí)體,或者不以不可解除的方式執(zhí)行動(dòng)作。
在本發(fā)明的優(yōu)選實(shí)施方式中,將添加動(dòng)作列表與去除動(dòng)作列表傳送給源主機(jī),源主機(jī)相應(yīng)地建立增量包以使之執(zhí)行相應(yīng)的修改動(dòng)作。
所提出的解決方案提供了對(duì)在終點(diǎn)上執(zhí)行的所有動(dòng)作的集中控制。使用增量包使之可能防止終點(diǎn)中的任何不一致(確保執(zhí)行添加動(dòng)作列表與去除動(dòng)作列表兩者中的所有動(dòng)作)。另外,可以通過(guò)利用已經(jīng)在源主機(jī)上可得的修復(fù)模塊而實(shí)現(xiàn)該特征。
然而,本發(fā)明的方法還適用于以以下方式執(zhí)行以不同方式執(zhí)行修改動(dòng)作,直接在終點(diǎn)上解除去除動(dòng)作列表的動(dòng)作,甚至在源主機(jī)上提供用來(lái)建立增量包的專門模塊。
有利的是,使用在CD-ROM上提供的計(jì)算機(jī)程序應(yīng)用來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明的解決方案。
該應(yīng)用具有客戶端-服務(wù)器的體系結(jié)構(gòu);具體地講,該應(yīng)用包含安裝在源主機(jī)上的程序以及安裝在每個(gè)終點(diǎn)上的程序。另外,應(yīng)該注意在終點(diǎn)上程序適合于分離地實(shí)現(xiàn),甚至作為獨(dú)立產(chǎn)品投放市場(chǎng)。
可替換地,這些程序在軟盤上提供,并且被預(yù)先加載在硬盤上,或者存儲(chǔ)在任何其他計(jì)算機(jī)可讀介質(zhì)上,并且通過(guò)網(wǎng)絡(luò)(一般為因特網(wǎng))發(fā)送給計(jì)算機(jī),被廣播,或者更一般地以可直接載入計(jì)算機(jī)工作存儲(chǔ)器的任意其他形式提供。然而,根據(jù)本發(fā)明的方法也可以使用以下執(zhí)行具有不同體系結(jié)構(gòu)的應(yīng)用,甚或硬件結(jié)構(gòu)(例如集成在一或多個(gè)半導(dǎo)體材料芯片中)。
自然地,為了滿足本地以及特定需求,本領(lǐng)域技術(shù)人員可以對(duì)上述解決方案進(jìn)行許多修改與變化,但是這些修改與變化都落入權(quán)利要求所限定的范圍內(nèi)。
權(quán)利要求
1.一種軟件分發(fā)方法(300a、300b),包含以下步驟在源計(jì)算機(jī)上提供(306)包含對(duì)于為實(shí)施相應(yīng)的軟件產(chǎn)品而要在多個(gè)目標(biāo)計(jì)算機(jī)中的每一個(gè)上執(zhí)行的動(dòng)作的指示的包,至少一個(gè)所述動(dòng)作的條件為目標(biāo)計(jì)算機(jī)的配置;將該包從源計(jì)算機(jī)傳送(312)到目標(biāo)計(jì)算機(jī);執(zhí)行(315-333)符合目標(biāo)計(jì)算機(jī)配置的動(dòng)作,特征在于以下步驟檢測(cè)(337)導(dǎo)致目標(biāo)計(jì)算機(jī)新配置的變化,確定(339-351)修改動(dòng)作以實(shí)施符合新配置的軟件產(chǎn)品,以及執(zhí)行(357-363)修改動(dòng)作。
2.根據(jù)權(quán)利要求1的軟件分發(fā)方法(300a、300b),其中所述包還包含對(duì)于基于目標(biāo)計(jì)算機(jī)的至少一個(gè)配置參數(shù)的至少一個(gè)條件的指示,每個(gè)條件都與至少一個(gè)動(dòng)作相關(guān),以及其中所述執(zhí)行(315-333)符合目標(biāo)計(jì)算機(jī)配置的動(dòng)作的步驟包含根據(jù)目標(biāo)計(jì)算機(jī)配置執(zhí)行(318)每個(gè)條件的第一評(píng)估,以及當(dāng)?shù)谝辉u(píng)估的相應(yīng)結(jié)果為肯定時(shí)執(zhí)行(324-330)所述與條件相關(guān)的至少一個(gè)動(dòng)作,以及所述確定(339-351)修改動(dòng)作的步驟包含根據(jù)由所述變化影響的至少一個(gè)配置參數(shù)標(biāo)識(shí)(339)條件,根據(jù)新配置執(zhí)行(342)每個(gè)所標(biāo)識(shí)的條件的第二評(píng)估,以及當(dāng)?shù)谝辉u(píng)估的相應(yīng)結(jié)果為否定并且第二評(píng)估的相應(yīng)結(jié)果為肯定時(shí),選擇(345)所述與所標(biāo)識(shí)的條件相關(guān)的至少一個(gè)動(dòng)作。
3.根據(jù)權(quán)利要求2的軟件分發(fā)方法(300a、300b),還包括以下步驟在目標(biāo)計(jì)算機(jī)上存儲(chǔ)(321)對(duì)于所述行為的指示以及對(duì)于具有第一評(píng)估的相應(yīng)結(jié)果的所述至少一個(gè)條件的指示。
4.根據(jù)權(quán)利要求3的軟件分發(fā)方法(300a、300b),其中至少一個(gè)修改動(dòng)作涉及在目標(biāo)計(jì)算機(jī)上安裝相應(yīng)實(shí)體,該方法還包括向源計(jì)算機(jī)請(qǐng)求(357)每個(gè)實(shí)體的步驟。
5.根據(jù)權(quán)利要求2至4中任一項(xiàng)的軟件分發(fā)方法(300a、300b),其中所述確定(339-351)修改動(dòng)作的步驟還包括對(duì)于每一個(gè)所標(biāo)識(shí)的條件,定義(351)至少一個(gè)解除動(dòng)作以在第一評(píng)估的相應(yīng)結(jié)果為肯定并且第二評(píng)估的相應(yīng)結(jié)果為否定時(shí)解除所述與所標(biāo)識(shí)的條件相關(guān)的至少一個(gè)動(dòng)作。
6.根據(jù)權(quán)利要求5的軟件分發(fā)方法(300a、300b),還包括以下步驟在所執(zhí)行的動(dòng)作影響的目標(biāo)計(jì)算機(jī)上制作(327)每個(gè)預(yù)先存在的實(shí)體的備份拷貝,至少一個(gè)解除動(dòng)作涉及恢復(fù)相應(yīng)的已執(zhí)行動(dòng)作所影響的每個(gè)預(yù)先存在實(shí)體的備份拷貝。
7.根據(jù)權(quán)利要求1至6中任一項(xiàng)的軟件分發(fā)方法(300a、300b),其中所述執(zhí)行修改動(dòng)作的步驟(357-363)包括向源計(jì)算機(jī)發(fā)送(357)對(duì)于修改動(dòng)作的指示;建立(360)另一包以使之在目標(biāo)計(jì)算機(jī)上執(zhí)行修改動(dòng)作,以及向目標(biāo)計(jì)算機(jī)發(fā)送(363)該另一包。
8.一種可直接載入數(shù)據(jù)處理系統(tǒng)(100)的工作存儲(chǔ)器(140)的計(jì)算機(jī)程序應(yīng)用(210、225、235、250),當(dāng)該應(yīng)用在該數(shù)據(jù)處理系統(tǒng)上運(yùn)行時(shí),用來(lái)執(zhí)行根據(jù)權(quán)利要求1至7中任一項(xiàng)的方法。
9.一種包含計(jì)算機(jī)可讀介質(zhì)的計(jì)算機(jī)應(yīng)用產(chǎn)品(160),在該產(chǎn)品上存儲(chǔ)了根據(jù)權(quán)利要求8的程序應(yīng)用(210、225、235、250)。
10.一種可直接載入目標(biāo)計(jì)算機(jī)(125)工作存儲(chǔ)器(140)的計(jì)算機(jī)程序(235、250),當(dāng)該程序在目標(biāo)計(jì)算機(jī)上運(yùn)行時(shí),用來(lái)執(zhí)行軟件分發(fā)方法(300a、300b),其中目標(biāo)計(jì)算機(jī)與源計(jì)算機(jī)(105)耦合,源計(jì)算機(jī)提供包含對(duì)于為實(shí)施相應(yīng)的軟件產(chǎn)品而要在目標(biāo)計(jì)算機(jī)上執(zhí)行的動(dòng)作的指示的包,并且其中至少一個(gè)所述動(dòng)作的條件為目標(biāo)計(jì)算機(jī)的配置;所述方法包含以下步驟從源計(jì)算機(jī)接收(312)該包,執(zhí)行(315-333)符合目標(biāo)計(jì)算機(jī)配置的動(dòng)作,特征在于以下步驟檢測(cè)(337)導(dǎo)致目標(biāo)計(jì)算機(jī)新配置的變化,確定(339-351)修改動(dòng)作以實(shí)施符合新配置的軟件產(chǎn)品,以及執(zhí)行(357-363)修改動(dòng)作。
11.一種包含其上存儲(chǔ)了根據(jù)權(quán)利要求10的程序(235、250)的計(jì)算機(jī)可讀介質(zhì)的程序產(chǎn)品(160)。
12.一種軟件分發(fā)系統(tǒng)(100),包含源計(jì)算機(jī)(105)與多個(gè)目標(biāo)計(jì)算機(jī)(125),源計(jì)算機(jī)具有用來(lái)提供包含對(duì)于為實(shí)施相應(yīng)的軟件產(chǎn)品而要在多個(gè)目標(biāo)計(jì)算機(jī)中的每一個(gè)上執(zhí)行的動(dòng)作的指示的包的部件(210),至少一個(gè)所述動(dòng)作的條件為目標(biāo)計(jì)算機(jī)的配置;其中所述系統(tǒng)還包括用于將該包從源計(jì)算機(jī)傳送到目標(biāo)計(jì)算機(jī)的部件(220、230),并且目標(biāo)計(jì)算機(jī)包含用于執(zhí)行符合目標(biāo)計(jì)算機(jī)配置的動(dòng)作的部件(235),特征在于目標(biāo)計(jì)算機(jī)還包括用于檢測(cè)導(dǎo)致目標(biāo)計(jì)算機(jī)新配置的變化的部件(250),用于確定修改動(dòng)作以實(shí)施符合新配置的軟件產(chǎn)品的部件(250),以及用于執(zhí)行修改動(dòng)作的部件(235)。
13.一種用于軟件分發(fā)系統(tǒng)(100)的目標(biāo)計(jì)算機(jī)(125),所述軟件分發(fā)系統(tǒng)包含源計(jì)算機(jī)(105),源計(jì)算機(jī)具有用來(lái)提供包含對(duì)于為實(shí)施相應(yīng)的軟件產(chǎn)品而要在目標(biāo)計(jì)算機(jī)上執(zhí)行的動(dòng)作的指示的包的部件(210),至少一個(gè)所述動(dòng)作的條件為目標(biāo)計(jì)算機(jī)的配置,其中目標(biāo)計(jì)算機(jī)包含用于從源計(jì)算機(jī)接收該包的部件(230),用于執(zhí)行符合目標(biāo)計(jì)算機(jī)配置的動(dòng)作的部件(235),特征在于目標(biāo)計(jì)算機(jī)還包含用于檢測(cè)導(dǎo)致目標(biāo)計(jì)算機(jī)新配置的變化的部件(250),用于確定修改動(dòng)作以實(shí)施符合新配置的軟件產(chǎn)品的部件(250),以及用于執(zhí)行修改動(dòng)作的部件(235)。
全文摘要
提出了一種軟件分發(fā)方法(300b)與相應(yīng)的系統(tǒng)。在軟件分發(fā)應(yīng)用中,在中心站點(diǎn)準(zhǔn)備包含指明為安裝或去除所選擇的軟件產(chǎn)品而要在每一個(gè)目標(biāo)計(jì)算機(jī)上執(zhí)行的動(dòng)作的指令的包;一般地,這些動(dòng)作以對(duì)于目標(biāo)計(jì)算機(jī)的硬件配置為條件。向目標(biāo)計(jì)算機(jī)發(fā)送每個(gè)包,并且解釋相應(yīng)的指令以實(shí)施符合目標(biāo)計(jì)算機(jī)當(dāng)前配置的所希望的軟件產(chǎn)品。在本發(fā)明的解決方案中,監(jiān)視目標(biāo)計(jì)算機(jī)的配置以檢測(cè)(337)任何硬件更新。作為對(duì)此的響應(yīng),目標(biāo)計(jì)算機(jī)生成(339-351)用來(lái)去除不再符合新配置的軟件產(chǎn)品的動(dòng)作列表以及用來(lái)安裝現(xiàn)在符合新配置的動(dòng)作列表。
文檔編號(hào)G06F9/445GK1647038SQ03808218
公開(kāi)日2005年7月27日 申請(qǐng)日期2003年2月13日 優(yōu)先權(quán)日2002年4月11日
發(fā)明者克勞迪奧·馬里內(nèi)利, 盧吉·皮切蒂 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司