專利名稱:管理軟件模塊的管理方法和信息處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種具有由多個軟件模塊構(gòu)成的應(yīng)用程序的信息處理器及其方法。
背景技術(shù):
Java(Java是包括編程語言的軟件技術(shù),其為太陽微系統(tǒng)公司(Sun Microsystems Inc.)在美國的注冊商標(biāo))具有程序可移植性,并提出一種利用該可移植性提供可擴(kuò)展的應(yīng)用程序的技術(shù)(USP 6349408和OSGi服務(wù)平臺規(guī)范發(fā)行版2,OSGi,2001)。根據(jù)該技術(shù),在一個應(yīng)用程序上執(zhí)行程序,因此,與擴(kuò)展應(yīng)用程序的單元中的功能的情況相比,減少了所需硬件資源的數(shù)量。
在OSGi服務(wù)平臺(以下簡稱為OSGi)中,將添加到應(yīng)用程序中的軟件模塊稱為服務(wù)包(bundle),并定義用來管理軟件模塊的生命周期例如服務(wù)包的安裝/啟動/結(jié)束/更新/卸載的規(guī)范。而且,OSGi還具有以下功能當(dāng)應(yīng)用程序停止時,存儲正在被執(zhí)行的每個服務(wù)包的狀態(tài);以及當(dāng)重新啟動應(yīng)用程序時,使每個服務(wù)包的狀態(tài)返回到停止時的狀態(tài)。
傳統(tǒng)地,從操作系統(tǒng)管理軟件的角度來看,軟件模塊被當(dāng)作一個應(yīng)用程序。因此,為了防止一個軟件模塊影響其它軟件模塊的問題,不能使用最初提供給操作系統(tǒng)的軟件分離/執(zhí)行功能(在不同空間中作為進(jìn)程執(zhí)行軟件的功能)。因此,很有可能由于執(zhí)行高級處理而產(chǎn)生問題的可能性很大的軟件模塊會產(chǎn)生導(dǎo)致整個應(yīng)用程序出錯的問題。
由于設(shè)備的硬件資源是充裕的,因此可能將更強(qiáng)的操作系統(tǒng)引入設(shè)備以同時執(zhí)行多個應(yīng)用程序。因此,可能通過執(zhí)行作為獨立應(yīng)用程序(進(jìn)程)的附加功能來解決問題。
然而,用于擴(kuò)展一個應(yīng)用程序的功能的過程和用于擴(kuò)展作為獨立應(yīng)用程序的功能的過程相互之間是不同的。因此,有多個用來管理相同的擴(kuò)展功能的生命周期的過程。而且,在只通過添加應(yīng)用程序來添加功能的情況下,存在用戶可能由于操作方法的改變而弄錯的問題。而且,還存在已購買或開發(fā)的用于功能擴(kuò)展的軟件模塊根本不能使用,從而犧牲軟件資產(chǎn)的繼承性的問題。
發(fā)明內(nèi)容
本發(fā)明是考慮到上述問題而做出的,本發(fā)明的特征是提供一種裝置及其方法,該裝置能夠?qū)⒅付ǖ膽?yīng)用程序作為框架中的不同進(jìn)程來執(zhí)行,其中在該框架中可以在一個進(jìn)程中執(zhí)行多個應(yīng)用程序。
根據(jù)本發(fā)明的一個方面的信息處理方法具有以下步驟,即,一種用于管理軟件模塊的管理方法,該方法包括以下步驟參考步驟,用于當(dāng)啟動軟件模塊時,參考該軟件模塊的屬性;以及啟動步驟,用于在參考步驟中所參考的屬性包括不同進(jìn)程生成屬性的情況下,以在獨立生成的進(jìn)程中執(zhí)行的方式啟動該軟件模塊,其中該不同進(jìn)程生成屬性表示將在不同于所安裝的進(jìn)程的進(jìn)程中執(zhí)行該軟件模塊。
根據(jù)本發(fā)明的一個方面的信息處理器具有以下結(jié)構(gòu),即,具有參考裝置,用于當(dāng)啟動軟件模塊時,參考該軟件模塊的屬性;以及啟動裝置,用于在由參考裝置所參考的屬性包括不同進(jìn)程生成屬性的情況下,以在獨立生成的進(jìn)程中執(zhí)行的方式啟動該軟件模塊,其中該不同進(jìn)程生成屬性表示將在不同于所安裝的進(jìn)程的進(jìn)程中執(zhí)行該軟件模塊。
通過以下結(jié)合附圖的說明,本發(fā)明的其它特征、目的、和優(yōu)點是顯而易見的,其中,相同的附圖標(biāo)記在整個附圖中表示相同或相似的部分。
包含在說明書中并構(gòu)成說明書一部分的附圖,示出了本發(fā)明的實施例,并與說明書一起用來解釋本發(fā)明的原理。
圖1是示出根據(jù)本發(fā)明實施例的計算機(jī)設(shè)備的結(jié)構(gòu)的框圖;圖2使用分層結(jié)構(gòu)示出根據(jù)該實施例由計算機(jī)設(shè)備的控制部分所執(zhí)行的軟件結(jié)構(gòu);圖3是示出根據(jù)該實施例當(dāng)在計算機(jī)設(shè)備中安裝服務(wù)包時所執(zhí)行的處理的流程圖;圖4A示出當(dāng)將被安裝的服務(wù)包文件沒有加密時的形式,圖4B示出說明Jar文件的屬性的清單(manifest)的例子;圖5示出根據(jù)該實施例的服務(wù)包管理對象的結(jié)構(gòu);圖6是示出根據(jù)該實施例的計算機(jī)設(shè)備中的服務(wù)包啟動處理的流程圖;圖7示出說明在該實施例中所執(zhí)行的交互式操作的視圖;圖8是示出根據(jù)該實施例的服務(wù)包停止處理的流程圖;圖9是示出根據(jù)本發(fā)明第一實施例當(dāng)卸載服務(wù)包時所執(zhí)行的處理的流程圖;以及圖10是示出根據(jù)本發(fā)明第二實施例的安裝處理的流程圖。
具體實施例方式
現(xiàn)在將參考附圖來詳細(xì)說明本發(fā)明的優(yōu)選實施例。應(yīng)當(dāng)注意,下面的實施例不限制權(quán)利要求中所闡明的本發(fā)明,并且實施例中所說明的特征的全部組合不是獲得本發(fā)明的必要手段。
第一實施例圖1是示出根據(jù)本發(fā)明實施例的計算機(jī)設(shè)備的結(jié)構(gòu)的框圖,該計算機(jī)設(shè)備是信息處理器例如PC或工作站。
在該圖中,控制器1010具有CPU,以控制整個設(shè)備的操作。主存儲單元1020是由RAM等所構(gòu)成的存儲器,用于臨時存儲各種數(shù)據(jù)或由控制器1010執(zhí)行的軟件(例如,后面將說明的圖3、6、8、和9中的流程圖所表示的軟件)。輔助存儲單元1030是用于永久存儲各種數(shù)據(jù)或由控制器1010執(zhí)行的軟件的存儲器,它由例如硬盤來構(gòu)成。輸入單元1040具有鍵盤、鼠標(biāo)(指示設(shè)備)、觸摸屏、掃描儀等,用于輸入用戶指令、字符數(shù)據(jù)、或圖像數(shù)據(jù)。顯示器1050具有顯示面板例如液晶面板,用于向操作者顯示指令、數(shù)據(jù)內(nèi)容等。網(wǎng)絡(luò)接口單元1060通過網(wǎng)絡(luò)例如LAN執(zhí)行與其它設(shè)備的通信??偩€1070是系統(tǒng)總線,用于連接上述單元,并在這些單元之間交換數(shù)據(jù)和控制信號。
圖2使用分層結(jié)構(gòu)示出根據(jù)該實施例由計算機(jī)設(shè)備的控制器1010執(zhí)行的軟件的結(jié)構(gòu)。
在圖2中,操作系統(tǒng)(OS)2010管理應(yīng)用程序軟件和硬件資源,并在該OS 2010上執(zhí)行各種軟件。附圖標(biāo)記2020表示實現(xiàn)0SGi服務(wù)平臺規(guī)范的平臺,該規(guī)范是以Java語言編寫、并能擴(kuò)展軟件模塊的應(yīng)用程序。Java VM(用于解釋和執(zhí)行Java語言的虛擬機(jī))2030是專用于Java程序的虛擬機(jī),該Java程序用于執(zhí)行平臺2020。附圖標(biāo)記2040表示一組服務(wù)包,其是用Java語言編寫的軟件模塊(以下稱為服務(wù)包),并將在平臺2020上執(zhí)行。附圖標(biāo)記2050表示運行在操作系統(tǒng)2010上的一組其它應(yīng)用程序。操作系統(tǒng)2010將Java VM 2030視為與屬于其它應(yīng)用程序組2050的應(yīng)用程序完全相同的應(yīng)用程序來處理。
圖3是示出根據(jù)本實施例當(dāng)將服務(wù)包2040安裝在計算機(jī)設(shè)備中時所執(zhí)行的處理的流程圖。
圖4A示出當(dāng)將被安裝的服務(wù)包文件沒有加密時的形式,圖4B示出說明Jar文件的屬性的清單的例子。
服務(wù)包文件4010是Java語言的Jar文件格式。該Jar文件是ZIP檔案文件,并由多列文件項4020構(gòu)成。每個文件項4020具有表示幻數(shù)(magic number)4030的字段,該幻數(shù)4030表示文件項的開始;文件項大小4040;文件名大小4050;文件名4060;以及文件內(nèi)容4070。在圖4A中,為了簡化說明,簡化并示出ZIP文件的規(guī)范。
該Jar文件的各種屬性被稱作清單,并被存儲在文件項中。如圖4B所示,該清單的文件名為“META-INF/MANIFEST.MF”。在該清單中,說明了屬性名稱和與屬性名稱成對的屬性值。
在圖4B中,“Bundle-Activator”定義安裝后將被首先啟動的Java類的名稱?!癇undle-Classpath”表示用于搜索該類的Jar文件的搜索順序?!癗eedProcess”表示該服務(wù)包的執(zhí)行將由不同的進(jìn)程來執(zhí)行?!癐mport-Package”定義當(dāng)使用包時從不同服務(wù)包輸出的包?!癐mport-Service”表示將不同服務(wù)包的部分功能提供給其它服務(wù)包。
接著,將參考圖3中的流程圖來說明根據(jù)該實施例在計算機(jī)設(shè)備中安裝服務(wù)包2040的處理。
首先,在步驟S1,判斷從存儲指定要被安裝的文件的同一位置安裝的服務(wù)包是否存在,即,服務(wù)包文件是否已經(jīng)被安裝。如果存在,則處理結(jié)束。否則,程序進(jìn)入步驟S2。在步驟S2,將服務(wù)包文件安裝在平臺2020上,并解密所安裝的加密的服務(wù)包文件4010。用于解密的加密密鑰由平臺2020作為專用密鑰來管理。
接著,在步驟S3,將在步驟S2所解密的服務(wù)包文件4010存儲在用于管理服務(wù)包的目錄中。接著,在步驟S4,生成用于管理平臺2020上的服務(wù)包的服務(wù)包管理對象。
圖5示出根據(jù)該實施例的服務(wù)包管理對象的結(jié)構(gòu)。
在該圖中,服務(wù)包標(biāo)識符5010是用于識別每個服務(wù)包的標(biāo)識符。位置5020是示出該服務(wù)包是從何處安裝的、并由URL來表示的信息。狀態(tài)5030說明該服務(wù)包的狀態(tài)。例如,如果安裝了該服務(wù)包,則設(shè)置為“INSTALLED”,在執(zhí)行該服務(wù)包期間,設(shè)置為“ACTIVE”。屬性列表5040說明該服務(wù)包的屬性。即,存儲圖4B所示的清單文件中所述的屬性。進(jìn)程標(biāo)識符5050是當(dāng)該服務(wù)包被作為不同進(jìn)程執(zhí)行時給出的標(biāo)識符。所述不同進(jìn)程是指將在不同于正在執(zhí)行已安裝該軟件模塊的應(yīng)用程序的進(jìn)程的進(jìn)程上執(zhí)行軟件模塊。
然后,程序進(jìn)入圖3中的步驟S5,服務(wù)包文件4010的清單中所述的屬性被作為哈希表實例設(shè)置在步驟S4生成的服務(wù)包管理對象的屬性列表5040中。使用該哈希表實例來注冊所有的屬性名稱,以便可以使用屬性名稱作為關(guān)鍵字來執(zhí)行搜索。在這種情況下,對服務(wù)包管理對象的狀態(tài)5030設(shè)置表示已經(jīng)安裝了該服務(wù)包的狀態(tài)值(“INSTALLED”)。
通過上述處理,安裝了服務(wù)包2040。這里,將被作為不同進(jìn)程執(zhí)行的服務(wù)包的安裝處理與將在平臺2020上執(zhí)行的服務(wù)包的安裝處理僅在以下點上不同。即,這兩個服務(wù)包相互不同之處僅在于它們是否具有用來指定執(zhí)行將在不同的進(jìn)程中進(jìn)行的“NeedProcess”屬性。
圖6是示出根據(jù)該實施例的計算機(jī)設(shè)備中的服務(wù)包啟動處理的流程圖。
首先,在步驟S11,判斷所指定的服務(wù)包的服務(wù)包管理對象的狀態(tài)5030是否為“ACTIVE”(執(zhí)行期間)。如果狀態(tài)5030為“ACTIVE”,則該服務(wù)包已經(jīng)被執(zhí)行,因此處理結(jié)束。如果狀態(tài)5030不是“ACTIVE”,則程序進(jìn)入步驟S12,判斷是否在服務(wù)包管理對象的屬性列表5040中設(shè)置了指示執(zhí)行將在不同進(jìn)程中進(jìn)行的“NeedProcess”。這里,由于屬性列表5040作為哈希表實例來配置,因此可以通過指定“NeedProcess”屬性的名稱作為關(guān)鍵字來獲得“NeedProcess”屬性值。如果設(shè)置了表示執(zhí)行將在不同進(jìn)程中進(jìn)行的“NeedProcess”屬性,則程序進(jìn)入步驟S13。否則,程序進(jìn)入步驟S16。
在步驟S16,由于將被啟動的服務(wù)包是平臺2020上的正常服務(wù)包,因此對平臺2020上的服務(wù)包執(zhí)行啟動處理。當(dāng)完成該啟動處理時,對服務(wù)包管理對象的狀態(tài)5030設(shè)置表示執(zhí)行正在進(jìn)行的狀態(tài)值“ACTIVE”。將平臺2020本身的進(jìn)程標(biāo)識符設(shè)置為服務(wù)包管理對象的進(jìn)程標(biāo)識符5050。
在將執(zhí)行作為不同進(jìn)程來進(jìn)行的情況下,在步驟S13,平臺2020檢查在步驟S12獲得的“NeedProcess”屬性值,并判斷在將被啟動的服務(wù)包和平臺2020之間是否需要交互式操作。對需要交互式操作的服務(wù)包,必須將“Interactive”定義為“NeedProcess”屬性值。因此,如果被指定為“NeedProcess”屬性的是除“Interactive”之外的屬性,則平臺2020認(rèn)為不需要交互式操作,處理進(jìn)入步驟S15,在該步驟中,服務(wù)包被作為不同的進(jìn)程啟動。將參考圖7來詳細(xì)說明。
另一方面,如果在步驟S13判定需要交互式操作,則程序進(jìn)入步驟S14,在該步驟形成用于交互的通信路徑,并將服務(wù)包作為不同的進(jìn)程啟動。
圖7示出在該實施例中將執(zhí)行的交互式操作的視圖。
在該圖中,假定平臺A 7010為在上述安裝處理中已接收到安裝指令的平臺。附圖標(biāo)記7020表示用于執(zhí)行平臺A 7010的JavaVM A(Java虛擬機(jī)A)。平臺B 7030是在將表示需要交互式操作的“Interactive”指定為平臺A 7010上的服務(wù)包的“NeedProcess”屬性值的情況下,由所指定的平臺A 7010生成的用于交互操作的平臺。附圖標(biāo)記7040表示用于執(zhí)行平臺B 7030的Java VM B(Java虛擬機(jī)B)。盡管服務(wù)包7050被安裝在平臺A 7010上,但是它在不同的進(jìn)程中被執(zhí)行,并被指定成在執(zhí)行期間和平臺A 7010協(xié)同工作。
將服務(wù)包7070作為與用于平臺A 7010的進(jìn)程不同的進(jìn)程來執(zhí)行,并作為在執(zhí)行期間不需要與平臺A 7010協(xié)同工作的服務(wù)包而被指定和安裝。附圖標(biāo)記7060表示用于執(zhí)行服務(wù)包7070的JavaVM C(Java虛擬機(jī)C)。
在這種情況下,在如上所述的步驟S13,將服務(wù)包7050作為與用于平臺A 7010上的服務(wù)包的進(jìn)程不同的進(jìn)程來執(zhí)行,并識別為正被請求執(zhí)行與平臺A 7010的交互式操作。
在這種情況下,如果還沒有構(gòu)造由平臺B 7030所使用的執(zhí)行環(huán)境,則構(gòu)造該執(zhí)行環(huán)境。在所構(gòu)造的執(zhí)行環(huán)境中,將服務(wù)包7050的服務(wù)包標(biāo)識符5010以將其作為關(guān)鍵字的方式存儲在平臺A 7010中。
而且,為了再現(xiàn)當(dāng)停止平臺B 7030時所示的平臺B 7030的狀態(tài),在重新啟動平臺B 7030的情況下,存儲表示安裝了什么服務(wù)包以及在平臺B 7030停止時每個服務(wù)包的狀態(tài)的信息。通過只復(fù)制所存儲的用于重新啟動的信息以及新創(chuàng)建其它信息,可以創(chuàng)建平臺B 7030的執(zhí)行環(huán)境。然后,改變所復(fù)制的用于重新啟動的信息,并且只留下關(guān)于服務(wù)包7050的信息,而刪除關(guān)于其它服務(wù)包的所有信息。即,生成用于僅使服務(wù)包7050被安裝和執(zhí)行的信息。利用該信息,平臺B 7030與Java VM B 7040被一起啟動,其中平臺B 7030從平臺A 7010的角度來看是獨立平臺。從而,僅安裝和實現(xiàn)服務(wù)包7050的獨立平臺B 7030被啟動。
在OSGi中,用于從服務(wù)包來訪問平臺的接口被定義為“BundleContext”,用于從其它服務(wù)包或平臺來訪問服務(wù)包的接口被定義為“Bundle”。
通過基于這兩個接口而改變的接口來執(zhí)行平臺A 7010和平臺B 7030之間的交互,以便可使用用于Java進(jìn)程之間的通信的技術(shù)RMI(遠(yuǎn)程方法調(diào)用)。從而,管理在平臺B 7030上執(zhí)行的服務(wù)包7050,如同在平臺A 7010上執(zhí)行它一樣。
在OSGi規(guī)范中,還定義了用于將服務(wù)包的部分功能提供給其它服務(wù)包的服務(wù)功能。該服務(wù)功能將用于該服務(wù)的接口定義為用于Java的接口,并將用該Java接口實現(xiàn)的服務(wù)對象用注冊表(registry)進(jìn)行注冊。而且,該服務(wù)功能使用該Java接口作為關(guān)鍵字在注冊表中進(jìn)行搜索以接收服務(wù)對象,并利用該服務(wù)。
在該實施例中,由在不同進(jìn)程中執(zhí)行的服務(wù)包提供的服務(wù)或者由在不同進(jìn)程中執(zhí)行的服務(wù)包所利用的服務(wù)執(zhí)行進(jìn)程之間的通信。因此,設(shè)置這樣的限制只以用以實現(xiàn)遠(yuǎn)程接口并且被定義為使所有方法都能夠引起RemoteException的接口為目標(biāo)。
作為服務(wù)包管理對象的進(jìn)程標(biāo)識符5050,設(shè)置識別所啟動的平臺B 7030的進(jìn)程的標(biāo)識符。
在圖7中,服務(wù)包7070在圖6中的步驟S12被判定將在不同進(jìn)程中執(zhí)行,而在步驟S13被判定無需與平臺A 7010進(jìn)行交互。在啟動服務(wù)包7070的情況下,用于啟動平臺A 7010的類路徑被假定為該類路徑,其中向平臺A 7010添加了構(gòu)成服務(wù)包7070的Jar文件。然后,從服務(wù)包管理對象的屬性列表5040獲取被指定為“Bundle-Activator”屬性的類。然后,通過將所獲取的類指定為入口類(entry class)并啟動Java VM C 7060,來啟動服務(wù)包7070。在這種情況下,在被指定為“Bundle-Activator”的類中,必須定義具有以下標(biāo)記的方法。
public static void main(String[]args)在該實施例中,假定用Java語言來編寫服務(wù)包7070。然而,只要是可由操作系統(tǒng)2010來執(zhí)行的格式,可以不用Java語言來編寫。在這種情況下,Jar文件常常不能用作可執(zhí)行的服務(wù)包文件,但可能在作為服務(wù)包安裝的Jar文件中包括可執(zhí)行的文件,并將該可執(zhí)行的文件從Jar文件中取出,并在執(zhí)行時執(zhí)行它。
將所生成的進(jìn)程標(biāo)識符設(shè)置為服務(wù)包管理對象的進(jìn)程標(biāo)識符5050。
可如上所述來啟動安裝在平臺上的服務(wù)包。
接著,將說明當(dāng)停止服務(wù)包時所執(zhí)行的處理。
圖8是示出根據(jù)該實施例的服務(wù)包停止處理的流程圖。
首先,在步驟S21,判斷服務(wù)包管理對象的狀態(tài)5030是否為“ACTIVE”(執(zhí)行期間)。如果不是“ACTIVE”,則假定服務(wù)包管理對象已經(jīng)停止,并結(jié)束處理。如果是“ACTIVE”,則程序進(jìn)入步驟S22,在該步驟判斷是否在服務(wù)包管理對象的屬性列表5040中設(shè)置了“NeedProcess”屬性。如果設(shè)置了“NeedProcess”屬性,則程序進(jìn)入步驟S23,否則,程序進(jìn)入步驟S26。
在步驟S26,由于要被停止的服務(wù)包是正常平臺2020上的服務(wù)包2040(圖2),因此對平臺2020上的服務(wù)包執(zhí)行停止處理。當(dāng)該停止處理結(jié)束時,在服務(wù)包管理對象的狀態(tài)字段5030中設(shè)置表示該服務(wù)包正被停止的狀態(tài)值“INSTALLED”。之后,處理結(jié)束。
同時,在步驟S23,已接收到停止指令的平臺檢查在步驟S22所獲得的“NeedProcess”屬性值,以判斷在正被執(zhí)行的服務(wù)包和平臺之間是否需要交互式操作。如果需要交互式操作,則程序進(jìn)入步驟S24,否則,程序進(jìn)入步驟S25。在步驟S24,已接收到停止指令的平臺(在圖7的例子中為平臺A 7010)通過服務(wù)包管理對象的進(jìn)程標(biāo)識符5050來識別所指定的服務(wù)包已經(jīng)被啟動的平臺(在圖7的例子中為平臺B 7030)。然后,它指示所識別出的平臺執(zhí)行平臺關(guān)閉處理。在該平臺關(guān)閉處理中,運行在該平臺上的服務(wù)包的狀態(tài)被存儲在輔助存儲器1030中,以便在重新啟動時可以恢復(fù)該狀態(tài),停止該平臺,然后程序進(jìn)入步驟S25。在步驟S25,被作為服務(wù)包管理對象的進(jìn)程標(biāo)識符5050而說明的進(jìn)程標(biāo)識符被用來請求操作系統(tǒng)2010結(jié)束由該進(jìn)程標(biāo)識符所識別的進(jìn)程。然后,程序進(jìn)入步驟S26,在該步驟對平臺2020上的服務(wù)包執(zhí)行停止處理。如上所述執(zhí)行該服務(wù)包停止處理。
最后,將說明當(dāng)卸載服務(wù)包時所執(zhí)行的處理。
圖9是示出當(dāng)卸載服務(wù)包時所執(zhí)行的處理的流程圖。
首先,在步驟S31,通過檢查服務(wù)包管理對象的狀態(tài)5030是否為“ACTIVE”,來判斷所指定的服務(wù)包是否已經(jīng)被停止。如果為狀態(tài)5030所設(shè)置的狀態(tài)不是“ACTIVE”,則判定該服務(wù)包已經(jīng)被停止,程序進(jìn)入步驟S33。然而,如果該服務(wù)包正在被執(zhí)行,則程序進(jìn)入步驟S32,在該步驟執(zhí)行參考圖8所述的服務(wù)包停止處理,然后程序進(jìn)入步驟S33。
在步驟S33,判斷在服務(wù)包管理對象的屬性列表5040中是否設(shè)置了“NeedProcess”屬性。如果設(shè)置了“NeedProcess”屬性,則程序進(jìn)入步驟S34。否則,程序進(jìn)入步驟S36。在步驟S34,已接收到卸載指令的平臺檢查在步驟S33獲得的“NeedProcess”屬性值,以判斷在所指定的服務(wù)包和平臺之間是否需要交互式操作。如果需要交互式操作,則程序進(jìn)入步驟S35。否則,程序進(jìn)入步驟S36。在步驟S35,刪除在啟動時為平臺(在圖7的例子中為平臺B7030)生成的執(zhí)行環(huán)境,然后程序進(jìn)入步驟S36,在該步驟,在已接收到卸載指令的平臺上執(zhí)行服務(wù)包的正常卸載處理。在這種情況下,刪除與該服務(wù)包有關(guān)的所有資源例如在安裝時所生成的文件。如上所述來執(zhí)行該服務(wù)包卸載處理。
因此,當(dāng)不同進(jìn)程中的執(zhí)行被指定為服務(wù)包的屬性時,可以使服務(wù)包在不同進(jìn)程中執(zhí)行,以及可以借助于可擴(kuò)展的應(yīng)用程序進(jìn)行管理。
第二實施例接著,將說明本發(fā)明的第二實施例。
該實施例示出了一種方法,該方法即使沒有將應(yīng)用程序安裝在平臺上,而是作為可執(zhí)行的應(yīng)用程序直接安裝在操作系統(tǒng)2010上,也能夠在該平臺上管理該應(yīng)用程序。計算機(jī)設(shè)備的結(jié)構(gòu)、軟件結(jié)構(gòu)、數(shù)據(jù)格式等與上述第一實施例的相同,因此,將省略其說明。
圖10是示出根據(jù)本發(fā)明第二實施例的安裝處理的流程圖,用于執(zhí)行該處理的程序被存儲在主存儲器1020中,并在控制器1010的控制下執(zhí)行該程序。
首先,在步驟S41,判斷從與存儲指定要被安裝的文件的位置相同的位置安裝的服務(wù)包是否存在。如果該服務(wù)包存在,則處理結(jié)束。否則,程序進(jìn)入步驟S42,在該步驟解密將被安裝的數(shù)據(jù)。用于解密的加密密鑰被存儲在平臺中。接著,在步驟S43,判斷存儲指定將被安裝的文件的存儲位置。由于該存儲位置是通過URL來指定的,因此通過檢查關(guān)于該URL的主信息能判斷該存儲位置是否在通過網(wǎng)絡(luò)連接的裝置上。在某些情況下,將被安裝的服務(wù)包的數(shù)據(jù)可以不是作為文件名而是作為數(shù)據(jù)流來移交。在這種情況下,識別出該數(shù)據(jù)不存在于相同裝置內(nèi)。如果在步驟S43判定該數(shù)據(jù)存在于相同裝置內(nèi),則程序進(jìn)入步驟S44。否則,程序進(jìn)入步驟S45。
在步驟S44,判斷所指定的文件是否是服務(wù)包文件。這里,如果該文件是ZIP文件,清單文件項存在,并且服務(wù)包特有的清單頭(manifest header)存在,則該文件被識別為服務(wù)包文件。然后,如果判定該文件為服務(wù)包文件,則程序進(jìn)入步驟S45。否則,程序進(jìn)入步驟S48。
在步驟S45,將解密后的服務(wù)包文件存儲在接收到安裝指令的平臺存儲用于服務(wù)包管理的服務(wù)包文件的目錄中。接著,在步驟S46,生成作為正常服務(wù)包的服務(wù)包管理對象。在這種情況下,狀態(tài)5030被設(shè)置為“INSTALLED”。然后程序進(jìn)入步驟S47。
另一方面,如果在步驟S44該文件不是服務(wù)包文件,則程序進(jìn)入步驟S48,在該步驟,在服務(wù)包管理對象的屬性列表5040中設(shè)置“NeedProcess”屬性,以便其將表示可在操作系統(tǒng)2010上執(zhí)行該服務(wù)包的“Native”作為屬性值。從而,在不與已接收到安裝指令的平臺交互的不同進(jìn)程中執(zhí)行目標(biāo)服務(wù)包。然后處理進(jìn)入步驟S47。在步驟S47,已接收到安裝指令的平臺從在步驟S46或步驟S48創(chuàng)建的服務(wù)包管理對象來創(chuàng)建服務(wù)包對象,并存儲該服務(wù)包對象以便其可被用于服務(wù)包管理。啟動處理、結(jié)束處理、以及服務(wù)包處理的卸載與上述第一實施例中的相同。
因此,可能在平臺A 7010上管理為操作系統(tǒng)2010安裝的應(yīng)用程序。
已經(jīng)詳細(xì)說明了本發(fā)明的實施例。本發(fā)明可應(yīng)用于由多個設(shè)備構(gòu)成的系統(tǒng)或可應(yīng)用于由單個設(shè)備構(gòu)成的裝置。
包括以下情況通過將用于實現(xiàn)上述實施例的功能的軟件程序直接或遠(yuǎn)程地提供給系統(tǒng)或裝置,并通過該系統(tǒng)或裝置的計算機(jī)來讀取并執(zhí)行所提供的程序代碼,來實現(xiàn)本發(fā)明。在這種情況下,只要提供程序的功能,形式不局限于程序。因此,安裝在計算機(jī)上以由計算機(jī)實現(xiàn)本發(fā)明的功能和處理的程序代碼本身也實現(xiàn)了本發(fā)明。即,本發(fā)明包括用于實現(xiàn)本發(fā)明的功能和處理的計算機(jī)程序本身。在這種情況下,只要提供程序的功能,該程序可以是任何形式,例如目標(biāo)代碼、由解釋程序執(zhí)行的程序、或向操作系統(tǒng)提供的腳本數(shù)據(jù)。
作為用來提供該程序的存儲介質(zhì)有例如軟盤、硬盤、光盤、磁光盤、MO、CD-ROM、CD-R、CD-RW、磁帶、非易失型存儲卡、ROM、以及DVD(DVD-ROM和DVD-R)等。另外,作為提供該程序的另一方法,還可能通過使用客戶計算機(jī)的瀏覽器連接到因特網(wǎng)的網(wǎng)頁,從該網(wǎng)頁將本發(fā)明的計算機(jī)程序或包括自動安裝功能的壓縮文件下載到存儲介質(zhì)例如硬盤上。還可能將構(gòu)成本發(fā)明的程序的程序代碼分成多個文件,以從不同網(wǎng)頁下載每個文件。即,本發(fā)明的權(quán)利要求也覆蓋使多個用戶能夠下載實現(xiàn)本發(fā)明的功能和處理的程序文件的WWW服務(wù)器。
而且,還可以加密本發(fā)明的程序,將其存儲在存儲介質(zhì)例如CD-ROM上并將該CD-ROM分發(fā)給用戶,以使?jié)M足預(yù)定條件的用戶能夠通過因特網(wǎng)從網(wǎng)頁下載用于解密的密鑰信息,使用該密鑰信息來執(zhí)行所加密的程序,將該程序安裝在計算機(jī)中,并實現(xiàn)該程序。
而且,除了通過由計算機(jī)執(zhí)行所讀取的程序來實現(xiàn)上述實施例的功能的情況之外,通過運行在計算機(jī)上的操作系統(tǒng)等基于該程序的指令執(zhí)行部分或全部實際處理,也可以實現(xiàn)上述實施例的功能。
而且,通過設(shè)置在插入計算機(jī)中的功能擴(kuò)展板或與計算機(jī)連接的功能擴(kuò)展單元上的CPU等,基于從存儲介質(zhì)中讀取并被寫入設(shè)置在功能擴(kuò)展板或功能擴(kuò)展單元上的存儲器中的程序的指令,執(zhí)行部分或全部實際處理,也可以實現(xiàn)上述實施例的功能。
盡管基于優(yōu)選實施例說明了本發(fā)明,但是本發(fā)明不局限于這些實施例,在權(quán)利要求書范圍內(nèi),可能做出各種改變。
權(quán)利要求
1.一種用于管理軟件模塊的管理方法,該方法包括以下步驟參考步驟,用于在啟動軟件模塊時參考該軟件模塊的屬性;以及啟動步驟,用于在所述參考步驟中所參考的屬性包括不同進(jìn)程生成屬性的情況下,以在獨立生成的進(jìn)程中執(zhí)行的方式啟動該軟件模塊,其中該不同進(jìn)程生成屬性表示將在不同于所安裝的進(jìn)程的進(jìn)程中執(zhí)行該軟件模塊。
2.根據(jù)權(quán)利要求1所述的用于管理軟件模塊的管理方法,其特征在于,還包括設(shè)置步驟,用于在安裝了該軟件模塊的情況下,設(shè)置該軟件模塊的屬性。
3.根據(jù)權(quán)利要求1所述的用于管理軟件模塊的管理方法,其特征在于,在所述參考步驟中所參考的屬性包括進(jìn)程間交互屬性的情況下,使該軟件模塊與作為不同進(jìn)程被啟動的軟件模塊交互,其中該進(jìn)程間交互屬性表示安裝該軟件模塊的進(jìn)程的應(yīng)用程序和在獨立生成的進(jìn)程中執(zhí)行的軟件模塊將相互交互。
4.根據(jù)權(quán)利要求1所述的用于管理軟件模塊的管理方法,其特征在于,還包括指定步驟,用于對作為與管理軟件模塊的應(yīng)用程序不同的應(yīng)用程序而安裝的應(yīng)用程序,指定作為在不同進(jìn)程中執(zhí)行的軟件模塊的屬性,其中由軟件管理來管理該被指定了屬性的應(yīng)用程序。
5.一種信息處理器,包括參考裝置,用于當(dāng)啟動軟件模塊時,參考該軟件模塊的屬性;以及啟動裝置,用于在由所述參考裝置所參考的屬性包括不同進(jìn)程生成屬性的情況下,以在獨立生成的進(jìn)程中執(zhí)行的方式啟動該軟件模塊,其中該不同進(jìn)程生成屬性表示將在不同于所安裝的進(jìn)程的進(jìn)程中執(zhí)行該軟件模塊。
6.根據(jù)權(quán)利要求5所述的信息處理器,其特征在于,還包括設(shè)置裝置,用于在安裝了該軟件模塊的情況下,設(shè)置該軟件模塊的屬性。
7.根據(jù)權(quán)利要求5所述的信息處理器,其特征在于,在由所述參考裝置所參考的屬性包括進(jìn)程間交互屬性的情況下,所述啟動裝置使該軟件模塊與將作為不同進(jìn)程被啟動的軟件模塊交互,其中該進(jìn)程間交互屬性表示安裝該軟件模塊的進(jìn)程的應(yīng)用程序和在獨立生成的進(jìn)程中執(zhí)行的軟件模塊將相互交互。
8.根據(jù)權(quán)利要求5所述的信息處理器,其特征在于,還包括指定裝置,用于對作為與管理軟件模塊的應(yīng)用程序不同的應(yīng)用程序而安裝的應(yīng)用程序,指定作為在不同進(jìn)程中執(zhí)行的軟件模塊的屬性,其中由軟件管理來管理該被指定了屬性的應(yīng)用程序。
全文摘要
一種管理軟件模塊的管理方法和信息處理器。在啟動軟件模塊時參考該軟件模塊的屬性,并且在所參考的屬性包括不同進(jìn)程生成屬性的情況下,啟動該軟件模塊,以便在獨立生成的進(jìn)程中執(zhí)行它,其中該不同進(jìn)程生成屬性表示將在不同于所安裝的進(jìn)程的進(jìn)程中執(zhí)行該軟件模塊。
文檔編號G06F9/46GK1786915SQ20051012779
公開日2006年6月14日 申請日期2005年12月7日 優(yōu)先權(quán)日2004年12月7日
發(fā)明者牛久豐彥 申請人:佳能株式會社