專利名稱:安裝設備和安裝方法
技術領域:
本發明總的來說涉及一種安裝設備和安裝方法,尤其涉及一種用于將多個軟件程序連續安裝到計算機中的技術。
背景技術:
近年來,普遍做法是通過CD-ROM等可交換介質或因特網等網絡系統發布程序文件和數據文件。在這種情況下,通常將被稱為安裝程序(installer)的程序附加到發布目標程序。該安裝程序在發布目的地將所發布的文件復制到與計算機系統連接的硬盤等的存儲裝置中,從而使得可在該計算機系統中執行所發布的程序。該安裝程序還具有自動調整操作系統上的必要設置的功能。
專利文獻1(日本特開平10-027090號公報)通過準備安裝程序可執行文件和存儲安裝所需的信息的數據文件作為單獨文件,來創建安裝程序。通過僅重寫數據文件而不改變安裝程序可執行文件,來創建專用于特定軟件的安裝程序。該技術簡化了安裝程序創建過程。
近年來,隨著軟件規模的增大,將軟件分成多個組件并獨立開發各組件也已成為普遍做法。該開發方法的優點是不必使所有組件之間的開發和市場發布的日程相匹配。然而,為了提高該開發方法的效率,還獨立開發各組件的安裝程序。
例如,假定軟件A包含調用組件B和C的代碼。如果軟件A以及組件B和C不具有單獨的安裝程序,則創建同時安裝它們的單個安裝程序。如果修改了組件C,則需要修改整個安裝程序。因此,即使對于軟件A和組件B的未修改的代碼,也需要重新發布修改后的安裝程序。
在為了避免該問題通常所使用的技術中,在上面的例子中獨立設置軟件A的安裝程序、組件B的安裝程序和組件C的安裝程序。另外,同時發布用于連續執行多個軟件安裝程序的被稱為主安裝程序的程序。
該主安裝程序連續啟動多個安裝程序的某些系統顯示窗口以允許用戶選擇待安裝的軟件。例如,顯示使用戶選擇是否將各軟件程序安裝到計算機上的窗口。例如,不需要全景圖像合成的用戶可以省略全景圖像合成軟件的安裝。
圖24示出軟件選擇窗口的例子。復選框區域2401使用戶選擇各軟件的安裝執行/不執行。用戶可以通過單擊該區域來選擇軟件。軟件名稱顯示區域2402顯示軟件名稱。盤容量顯示區域2403顯示軟件安裝所需的盤容量。在此顯示軟件所需的盤容量的總和。軟件說明文本區域2404顯示對從軟件列表中選擇的軟件的說明。
通過上述主安裝程序顯示該窗口。例如,如果某軟件安裝所需的盤容量改變,則主安裝程序顯示的信息也需要改變。主安裝程序必須始終掌握各軟件的最新信息,并將該信息連續更新成最新版本。這需要開發者花費巨大勞力。
例如,為了在主安裝程序執行多個軟件安裝程序的系統中僅提取特定軟件并將該軟件發布給用戶,需要將該主安裝程序附加到該軟件。然而,該主安裝程序不是為安裝單個軟件設計的,因此需要為單個軟件安裝修改主安裝程序。
上述連續啟動多個安裝程序的系統還存在其它問題。由于該系統連續執行多個安裝處理,因此直到完成整個安裝處理為止需要較長時間。在許多情況下,主安裝程序向用戶示出安裝處理的進度狀態。
例如,傳統上,控制整個安裝處理的主安裝程序使各軟件的安裝程序顯示安裝的進度狀態,然而不顯示整個安裝處理的進度狀態。用戶可以掌握各軟件的安裝處理的進度狀態,但卻不清楚整個安裝處理的進度狀態。
專利文獻2(日本專利號03578135)提出了一種用于解決該問題的技術。將待安裝的驅動程序的總數用100%來表示,用待安裝的驅動程序的數量對100%進行分割。當實際開始安裝時,基于所安裝的驅動程序的數量,進度狀態向100%靠近。這樣,基于驅動程序的數量表示裝置驅動程序的整個安裝處理的進度狀態。該提案允許用戶基于驅動程序的數量了解整個安裝處理的進度狀態。
然而,該提案具有以下問題。僅在少數情況下待安裝的軟件具有相同大小。由于軟件程序間進度程度不同,因而有時不可能通過軟件程序的數量準確示出整個安裝處理的進度狀態。
發明內容
考慮到上述問題做出了本發明,并且本發明的目的是即使當修改了要安裝的多個軟件程序中的一個軟件程序時,也不需要更新主安裝程序。
本發明的另一目的是即使當提取和發布了多個軟件程序中的一個軟件程序時,也不需要修改主安裝程序。
本發明的又一目的是在連續安裝多個軟件程序時,以用戶可容易識別的形式,顯示整個安裝處理的進度狀態。
為了解決上述問題和實現這些目的,根據本發明的第一方面,提供一種用于安裝多個程序的安裝設備,該設備包括第一存儲部件,用于為各程序存儲相互對應的安裝設置文件和安裝目標文件;讀取部件,用于根據一個安裝可執行文件,讀取多個程序的安裝設置文件;以及第二存儲部件,用于根據安裝可執行文件和安裝設置文件,按順序存儲與安裝設置文件相對應的安裝目標文件。
根據本發明的第二方面,提供一種用于安裝多個程序的方法,該方法包括第一存儲步驟,用于為各程序存儲相互對應的安裝設置文件和安裝目標文件;讀取步驟,用于根據一個安裝可執行文件,讀出多個程序的安裝設置文件;以及第二存儲步驟,用于根據安裝可執行文件和安裝設置文件,按順序存儲與安裝設置文件相對應的安裝目標文件。
通過以下參照附圖對典型實施例的說明,本發明的其它特征顯而易見。
圖1A是示出根據本發明實施例的系統結構的圖;圖1B是示出圖1A中所示的計算機系統配置的框圖;圖2是示出記錄在光盤106上的程序和數據文件的結構的例子的圖;圖3是示出根據該實施例的系統的整個軟件安裝處理的流程圖;圖4是示出根據該實施例的記錄在光盤106上的安裝程序運行設置文件202的部分記載的圖;圖5是詳細示出根據該實施例的系統的軟件安裝處理的步驟S302中的軟件列表生成處理的流程圖;圖6是示出通過使用圖4中的安裝程序運行設置文件202對圖2中的文件夾結構執行圖5中的軟件列表生成處理而生成的軟件列表的例子的圖;圖7是詳細示出根據該實施例的系統的軟件安裝處理的步驟S303中的軟件選擇窗口顯示處理的流程圖;
圖8是示出另一光盤107的文件夾結構的圖;圖9是示出作為軟件安裝設置文件的例子的軟件安裝設置文件210的圖;圖10是示出作為軟件安裝設置文件的另一例子的軟件安裝設置文件216的圖;圖11是示出作為軟件安裝設置文件的又一例子的軟件安裝設置文件809的圖;圖12是示出通過使用圖4中的運行設置文件202對圖8中的文件夾結構執行圖5中的軟件列表生成處理而生成的軟件列表的例子的圖;圖13是示出通過使用圖12中的軟件列表執行圖7中的處理而顯示的軟件選擇窗口的圖;圖14是詳細示出步驟S305中的安裝進度窗口初始化處理的流程圖;圖15是示出通過在圖13中的軟件選擇窗口上選擇所有軟件程序并執行圖14中所述的安裝進度窗口初始化處理而顯示的安裝進度窗口的例子的圖;圖16是示出通過在圖13中的軟件選擇窗口上取消軟件A的選擇并執行圖14中所述的安裝進度窗口初始化處理而顯示的安裝進度窗口的例子的圖;圖17A是詳細示出步驟S309中的安裝執行處理的流程圖;圖17B是詳細示出步驟S309中的安裝執行處理的流程圖;圖18是示出根據圖17A和17B中的處理在軟件A的安裝過程中的安裝進度窗口的圖;圖19是示出當在步驟S1701中開始安裝組件D時所顯示的安裝進度窗口的圖;圖20是示出根據圖17A和17B中的處理在組件D的安裝過程中的安裝進度窗口的圖;圖21是示出操作系統中所保持的且用于安裝處理的文件參考計數數據庫的內部結構的圖;圖22是示出通過圖14中的安裝處理所創建的安裝日志的一部分的圖;圖23是詳細示出根據該實施例的卸載處理的流程圖;以及圖24是示出傳統軟件的軟件選擇窗口的圖。
具體實施例方式
以下將參照附圖詳細說明本發明的優選實施例。
圖1A是示出根據本發明實施例的系統結構的圖。
在該系統中,顯示器102、光盤驅動器103、硬盤104、以及鼠標105與計算機101連接。可交換光盤106記錄程序和數據。計算機101執行從插入光盤驅動器103的光盤106讀出的程序。計算機101在所連接的顯示器102上進行繪制以向系統用戶顯示確認消息或通知他/她系統狀態。系統用戶可以通過使用鼠標105對顯示器102上所顯示的確認消息做出應答。計算機101可以根據程序內容,將記錄在光盤106上的數據復制到硬盤104或重寫記錄在硬盤104中的數據。在該系統中,光盤106是可交換的。例如,還可使用另一光盤107。
圖1B是示出圖1A中所示的計算機系統配置的框圖。
參照圖1B,中央處理單元(CPU)3001控制整個計算機系統。只讀存儲器(ROM)3002存儲不需改變的程序和參數。隨機存取存儲器(RAM)3003臨時存儲從例如外部裝置提供的程序和數據。外部存儲裝置3004包括固定安裝在計算機101中的硬盤和存儲卡、以及可從計算機101拆卸的軟盤(floppy disk,FD)、緊湊型光盤(compact disk,CD)等光盤、磁卡、光卡和IC卡以及存儲卡。外部存儲裝置3004還包括圖1A中所示的光盤驅動器103和硬盤104。接口3005與根據用戶操作輸入數據的指示裝置和鍵盤等輸入裝置3009連接。輸入裝置3009包括圖1A中所示的鼠標105。接口3006與顯示器102連接以顯示計算機101所保持的數據和所提供的數據。網絡接口3007與因特網等網絡線路3011連接。圖像輸入接口3008將圖像數據從數字照相機或掃描儀等圖像輸入裝置3012輸入到計算機101。系統總線3013連接單元3001~3008以使它們可進行通信。
圖2是示出記錄在光盤106上的程序和數據文件的結構的例子的圖。
在光盤106上,存在記錄于該光盤上的作為唯一可執行文件的安裝程序可執行文件201和用以控制該安裝程序可執行文件的運行細節的安裝程序運行設置文件202。以下有時將安裝程序可執行文件201稱為主安裝程序。在光盤106上還存在應用程序文件夾203和組件文件夾204。應用程序文件夾203包含文件夾205。組件文件夾204包含四個子文件夾206~209。
文件夾205包含安裝軟件A所需的數據和信息。更具體地,文件夾205包含軟件安裝設置文件210和作為安裝目標的軟件配置文件211。文件夾206~208分別包含安裝軟件A的組件B、C和D所需的數據和信息。
更具體地,文件夾206包含軟件安裝設置文件212和軟件配置文件213。
文件夾207包含軟件安裝設置文件214和軟件配置文件215。
文件夾208包含軟件安裝設置文件216和軟件配置文件217。
文件夾209包含安裝使軟件A的組件B運行所需要的子組件E所需的數據和信息。更具體地,文件夾209包含軟件安裝設置文件218和軟件配置文件219。
當在該系統上執行記錄在該實施例的光盤106上的安裝程序可執行文件201時,軟件A、軟件A的組件B、C和D、以及組件B的子組件E被安裝到硬盤104中。
圖3是示出該系統的整個軟件安裝處理的流程圖。
在步驟S301,初始化安裝程序可執行文件。CPU 3001根據安裝程序可執行文件201的內容讀出安裝程序運行設置文件202,并初始化安裝處理。
在步驟S302,生成軟件列表。CPU 3001讀出記錄在光盤106上的多個軟件安裝設置文件,并根據這些軟件安裝設置文件的內容生成軟件列表。
在步驟S303,顯示軟件選擇窗口。CPU 3001基于在步驟S302生成的軟件列表,在顯示器102上顯示軟件選擇窗口。系統用戶可以在該窗口上選擇安裝目標軟件。
在步驟S304,顯示安裝確認窗口。CPU 3001在顯示器102上顯示安裝所需的許可協議的文本,以僅允許同意該許可協議的用戶執行安裝。
在步驟S305,CPU 3001初始化安裝進度窗口。
在步驟S306,CPU 3001檢查是否安裝了在步驟S302中所生成的軟件列表中的所有軟件。如果在步驟S306中為是,則處理進入步驟S310。如果仍有未處理的軟件,則處理進入步驟S307。
在步驟S307,CPU 3001確認是否在軟件選擇窗口上選擇了正處理的軟件。CPU 3001在步驟S308中判斷該結果。如果選擇該軟件,則處理進入步驟S309。如果不選擇該軟件,則處理返回到步驟S306以處理軟件列表中的下一個軟件。
在步驟S309,CPU 3001讀出正處理的軟件的軟件安裝設置文件,基于所記載的內容將軟件配置文件復制到硬盤104中,并將安裝處理內容記錄到日志上。
在該實施例中,通過以上述方式重復執行步驟S306~S309中的處理,可以通過使用一個安裝可執行文件來安裝多個所選擇的軟件程序。
當安裝了所有軟件程序時,執行步驟S310。CPU 3001基于直到前一步驟為止的各軟件的安裝結果,在顯示器102上顯示安裝結果輸出窗口。當用戶在該窗口上進行完成操作時,該系統的軟件安裝處理結束。
圖4是示出根據該實施例的記錄在光盤106上的安裝程序運行設置文件202的部分記載的圖。安裝程序運行設置文件202包含文件部分401和文件夾部分402。文件夾部分402包含搜索目標文件名403和搜索目標文件夾列404。搜索目標文件表示可由安裝程序可執行文件201(主安裝程序)安裝的所有文件。在軟件列表生成處理(下面說明)中,從光盤106搜索該搜索目標文件。這是因為光盤106不總是記錄所有可由主安裝程序安裝的多個軟件文件。因此,為了生成僅包括記錄在光盤106上的軟件文件的列表,執行上述搜索處理。
圖5是詳細示出該系統的軟件安裝處理的步驟S302中的軟件列表生成處理的流程圖。
在步驟S501,從光盤106搜索將被添加到軟件列表的軟件安裝設置文件。更具體地,CPU搜索安裝程序運行設置文件202的文件部分401中所記載的所有文件和文件夾部分402中所記載的搜索目標文件夾列404中所包括的文件夾。搜索目標包括具有與搜索目標文件名403相匹配的名稱的文件。將在光盤106上所找到的文件添加到軟件列表。
在步驟S502,CPU判斷是否為軟件列表中的所有軟件安裝設置文件獲取了排序關鍵字(sort key)。如果對所有軟件程序完成了該處理,則處理進入步驟S507。如果仍有未處理的軟件,則處理進入步驟S503以檢查軟件安裝設置文件的內容。
在步驟S504,獲取檢查結果。如果該文件不存在,或如果該文件存在但在文件格式或內容上有問題,則處理進入步驟S506以從軟件列表刪除該軟件。如果該文件沒有問題,則處理進入步驟S505以從軟件安裝設置文件獲取用于對軟件列表進行排序的“排序關鍵字”字符串,并將該軟件記錄在軟件列表中。然后,處理返回到步驟S502以處理下一個軟件。
當處理了所有軟件程序時,在步驟S507,基于所獲取的軟件的排序關鍵字字符串,即通過比較字符串的字符碼并按照大小的升序對字符碼進行排序,來確定軟件列表中軟件程序的順序。該順序被記錄在軟件列表中,并且處理進入步驟S508。在從步驟S508開始的處理中,根據所記錄的順序,即軟件程序的升序,執行軟件處理。
在步驟S508,CPU確認軟件列表中的所有軟件程序是否都已經過了父軟件搜索(parent software search)。如果該處理結束,則CPU完成軟件列表生成處理。如果仍有未經過搜索的軟件,則處理進入步驟S509。
在步驟S509~S515,在軟件列表中搜索第n個軟件的父軟件。
在步驟S509,初始化變量。獲取第n個軟件的排序關鍵字字符串,并且將1設置給循環變量i。在步驟S510,比較循環變量i和n以判斷是否i=n。如果i=n,則未找到第n個軟件的父軟件。在步驟S514,在軟件列表的“父軟件”項中寫入0。結束第n個軟件的父軟件搜索處理,并且處理返回到步驟S508。如果i≠n,則在步驟S511獲取軟件列表中的第i個軟件的排序關鍵字字符串。在步驟S512,CPU判斷在前綴搜索(prefix search)時第n個軟件的關鍵字字符串是否與第i個軟件的關鍵字字符串相匹配。也就是說,CPU判斷第n個軟件的關鍵字字符串的頭是否與第i個軟件的關鍵字字符串相匹配。如果字符串不匹配,則在步驟S513使循環變量i增加1,并且處理返回到步驟S510。如果字符串相匹配,則在步驟S515將i寫入軟件列表的“父軟件”項中。結束第n個軟件的父軟件搜索處理,并且處理返回到步驟S508。
圖6是示出通過使用圖4中的安裝程序運行設置文件202對圖2中的文件夾結構執行圖5中的軟件列表生成處理而生成的軟件列表的例子的圖。
該軟件列表包含用作軟件的軟件安裝設置文件的名稱列的文件名列601和用作軟件安裝設置文件中所記載的排序關鍵字列的排序關鍵字列602。該軟件列表還包含作為軟件列表生成處理的結果的序列列603和表示父軟件的父軟件列604。文件名列601包含圖2中的文件夾結構中所包括的軟件安裝設置文件。該軟件列表不包含任何在圖4中的安裝程序運行設置文件202的文件部分401中所記載的、但實際未包括在圖2中的文件夾結構中的文件。
序列列603基于排序關鍵字列602的值確定軟件程序的順序。在圖2所示的文件夾結構中,將1設置給軟件A,2設置給軟件A的組件B,3設置給軟件A的組件B的子組件E,4設置給軟件A的組件C,5設置給軟件A的組件D。在父軟件列604中,對軟件A記錄0,而對其余組件記錄1。在這種情況下,“1”表示在序列列中的值為“1”的軟件A。
圖7是詳細示出該系統的軟件安裝處理的步驟S303中的軟件選擇窗口顯示處理的流程圖。
在步驟S701,CPU對軟件列表中不具有父軟件的軟件程序,即用作父軟件的軟件程序的數量n進行計數。在步驟S702,CPU判斷是否n=0。如果n=0,則在軟件列表中不存在用作父軟件的軟件。在步驟S703,輸出出錯消息,并中斷安裝處理。如果n≠0,則處理進入步驟S704。
在步驟S704,CPU判斷是否n=1。如果n=1,則在軟件列表中僅存在一個用作父軟件的軟件。因此,不必顯示軟件選擇對話框。如果n=1,則結束選擇窗口顯示處理,并且處理進入接著的確認窗口顯示處理(步驟S304)。
如果n>1,則處理進入步驟S705以初始化軟件選擇窗口。從步驟S706開始,在軟件選擇窗口上顯示軟件列表中所包括的所有軟件程序。
在步驟S706,CPU判斷是否處理了所有軟件程序。如果該處理結束,則選擇窗口顯示處理完成。如果仍有未處理的軟件,則在步驟S707從記錄在軟件列表中的軟件安裝設置文件中獲取將在軟件安裝時呈現給用戶的信息。在該實施例中,獲取關于軟件名稱、軟件版本號、代表軟件的圖標、軟件的詳細說明和安裝軟件所需的盤容量等的多條信息。
在步驟S708,CPU檢查記錄在軟件列表中的“父軟件”信息是否為0。如果對“父軟件”記錄除0以外的信息,則處理進入步驟S712。如果“父軟件”為0,也就是說,不存在父軟件,則處理進入步驟S709。
在步驟S709,在所顯示的軟件選擇窗口上將新的軟件行添加到末尾。在步驟S710,在步驟S709中所添加的軟件行的開頭顯示復選框。在步驟S711,在步驟S707中所獲取的各類信息中,將除關于安裝所需的盤容量的信息以外的多條信息繪制在步驟S709中所添加的軟件行中。
在步驟S712,在軟件選擇窗口中繪制軟件容量。更具體地,將當前正處理的軟件的盤容量添加到在軟件選擇窗口中最后的軟件行的末尾處所記載的軟件的盤容量,并且更新繪制。當更新完成時,處理返回到步驟S706。
在具有圖2中所示的文件夾結構的光盤中,僅軟件A具有“父軟件”的0。在這種情況下,當執行圖7中的處理時,作為步驟S703中的處理結果,在軟件選擇窗口顯示處理中什么也不顯示,并且處理進入接著的確認窗口顯示處理。
圖8是示出另一光盤107的文件夾結構的圖。
通過向光盤106的結構添加幾個文件夾和文件,獲得光盤107的結構。安裝程序可執行文件201、安裝程序運行設置文件202、應用程序文件夾203、組件文件夾204和文件夾205~209與光盤106中的相同。軟件安裝設置文件210、212、214、216和218以及軟件配置文件211、213、215、217和219也與光盤106中的相同。
在光盤107中,應用程序文件夾203包括包含安裝軟件F所需的數據和信息的文件夾801。文件夾801包含軟件安裝設置文件802和作為安裝目標的軟件配置文件803。組件文件夾204包括包含安裝組件G所需的數據和信息的文件夾804。文件夾804包含軟件安裝設置文件805和作為安裝目標的軟件配置文件806。
在與應用程序文件夾203和組件文件夾204相同的層上,存在用以存儲附加軟件的附加應用程序文件夾807。附加應用程序文件夾807包括包含安裝軟件H所需的數據和信息的文件夾808。除軟件安裝設置文件809和軟件配置文件810以外,文件夾808還包含外部安裝程序可執行文件811和外部安裝程序配置文件812。
圖9是示出作為軟件安裝設置文件的例子的軟件安裝設置文件210的圖。
軟件安裝設置文件210是文本文件,包括概要部分901、排序部分902、信息部分903、安裝目的地指定部分904、進度信息部分905、以及文件部分906。
概要部分901記載安裝程序類型。在軟件安裝設置文件210中,將“標準(NORMAL)”指定為表示標準安裝程序的類型。
排序部分902記載在軟件列表生成處理中使用的排序關鍵字。在軟件安裝設置文件210中,指定“SoftA”。
信息部分903記載將在軟件選擇窗口上顯示的軟件信息。該部分記載軟件名稱907、軟件版本號908、光盤上代表軟件的圖標的位置909、以及軟件的詳細說明910。還記載軟件的盤容量911和光盤上軟件說明圖像的位置912。
安裝目的地指定部分904在硬盤104上指定軟件安裝目的地的位置。
進度信息部分905記載顯示安裝進度窗口所使用的信息。更具體地,該部分記載分割進度條所使用的軟件安裝量及其單位。該部分還記載用作各文件的安裝量的參考,以在各軟件安裝期間的每一文件復制中,使進度條前進的文件安裝單位。在軟件安裝設置文件210中,使用大小來表示軟件安裝量,并且將100指定為軟件A的安裝量。另外,使用安裝時間來表示各文件的安裝量。
文件部分906記載待安裝的文件列。各文件項都記載復制目的地文件名913、軟件配置文件壓縮文件名914、復制源文件名915、以及文件安裝量916。
圖10是示出作為軟件安裝設置文件的另一例子的軟件安裝設置文件216的圖。
與圖9中的軟件安裝設置文件210一樣,軟件安裝設置文件216也是文本文件。類似地,軟件安裝設置文件216包括概要部分1001、排序部分1002、信息部分1003、安裝目的地指定部分1004、進度信息部分1005、以及文件部分1006。
概要部分1001將“標準”記載為安裝程序類型。
排序部分1002指定“SoftA-CompD”。
信息部分1003記載軟件名稱1007、軟件版本號1008、光盤上代表軟件的圖標的位置1009、以及軟件的詳細說明1010。還記載軟件的盤容量1011和光盤上軟件說明圖像的位置1012。
安裝目的地指定部分1004在硬盤104上指定軟件安裝目的地的位置。
與圖9中的軟件安裝設置文件210不同,進度信息部分1005的記載省略了軟件安裝量及其單位。進度信息部分1005記載了使用大小作為各文件的安裝量。
文件部分1006在各文件項中都記載了復制目的地文件名1013、軟件配置文件壓縮文件名1014、復制源文件名1015、以及文件安裝量1016。注意,將值“0”記載為文件安裝量1016以表示省略記載。
圖11是示出作為軟件安裝設置文件的又一例子的軟件安裝設置文件809的圖。
與圖9中的軟件安裝設置文件210一樣,軟件安裝設置文件809也是文本文件。類似地,軟件安裝設置文件809包括概要部分1101、排序部分1102、信息部分1103、以及進度信息部分1104。不包括安裝目的地指定部分或文件部分。軟件安裝設置文件809還包括外部軟件部分1105。
概要部分1101記載表示啟動外部安裝程序的類型的“外部(EXTERNAL)”。
排序部分1102指定“SoftH”。
信息部分1103記載軟件名稱1106、軟件版本號1107、光盤上代表軟件的圖標的位置1108、以及軟件的詳細說明1109。還記載軟件的盤容量1110和光盤上軟件說明圖像的位置1111。
進度信息部分1104記載軟件安裝量及其單位。
外部軟件部分1105記載光盤上作為啟動目標的外部軟件的位置。
圖12是示出通過使用圖4中的運行設置文件202對圖8中的文件夾結構執行圖5中的軟件列表生成處理而生成的軟件列表的例子的圖。
該軟件列表包括用作軟件的軟件安裝設置文件的名稱列的文件名列1201和用作軟件安裝設置文件中所記載的排序關鍵字列的排序關鍵字列1202。該軟件列表還包含作為軟件列表生成處理的結果的序列列1203和表示父軟件的父軟件列1204。
文件名列1201包含圖8中的文件夾結構中所包括的軟件安裝設置文件。基于排序關鍵字列1202中的值來確定序列列1203。在這種情況下,將1設置給軟件A,2設置給軟件A的組件B,3設置給軟件A的組件B的子組件E,4設置給軟件A的組件C,5設置給軟件A的組件D。另外,將6設置給軟件F,7設置給軟件F的組件G,8設置給軟件H。在父軟件列1204中,對沒有父軟件的軟件A、F和H記錄0。另一方面,對以軟件A為父軟件的組件B、C、D和E記錄1,對以軟件F為父軟件的組件G記錄6。
圖13是示出通過使用圖12中的軟件列表執行圖7中的處理而顯示的軟件選擇窗口的圖。
軟件選擇窗口包括復選框區域1301、軟件圖標區域1302、軟件名稱區域1303、以及軟件版本號區域1304。軟件選擇窗口還包括軟件說明文本區域1305和軟件盤容量區域1306。
在該選擇窗口上僅顯示軟件列表中不具有父軟件的軟件的名稱。顯示了圖12的軟件列表中的三個軟件A、F和H的名稱。
在圖7的步驟S710中在復選框區域1301中繪制與軟件相對應的復選框。以如下方式繪制軟件圖標區域1302、軟件名稱區域1303、軟件版本號區域1304、以及軟件說明文本區域1305。也就是說,在圖7的步驟S711中,通過使用從各軟件的軟件安裝設置文件中讀出的信息,來繪制這些區域。
軟件盤容量區域1306顯示以下容量。在圖7的步驟S712中,將從各行的軟件的軟件安裝設置文件中讀出的所需盤容量的值加到以該行的軟件為父軟件的所有軟件的所需盤容量上。將總和顯示在軟件盤容量區域1306中。更具體地,軟件盤容量區域1306中軟件A的行的盤容量區域1307顯示以下值。將軟件A本身的盤容量加上以軟件A為父軟件的軟件即組件B、C、D和E的盤容量,并顯示該總和。類似地,軟件F的行的盤容量區域1308顯示軟件F本身的盤容量和以軟件F為父軟件的組件G的盤容量的總和。因為沒有以軟件H為父軟件的軟件,所以軟件H的行的盤容量區域1309顯示軟件H的盤容量。
圖14是詳細示出步驟S305中的安裝進度窗口初始化處理的流程圖。
在安裝進度窗口初始化處理中,首先,計算所有軟件程序的安裝量。然后,根據該安裝量分割安裝進度窗口上的進度條。
在步驟S1401,CPU檢查是否獲取了所有軟件程序的安裝量。如果獲取了安裝量,則處理進入步驟S1406。如果仍有獲取安裝量的軟件,則處理進入步驟S1402。
在步驟S1402,CPU檢查在軟件選擇窗口上是選擇正處理的軟件還是選擇正處理的軟件的父軟件。如果選擇正處理的軟件,則處理進入步驟S1403。如果不選擇正處理的軟件,則認為軟件安裝量為0,并且處理返回到步驟S1401以獲取下一個軟件的安裝量。
在步驟S1403,從軟件的軟件安裝設置文件獲取該軟件的安裝量。在步驟S1404,CPU判斷軟件安裝量獲取是否成功。如果成功,則處理返回到步驟S1401以獲取下一個軟件的安裝量。如果獲取失敗,即如果軟件安裝設置文件沒有對軟件安裝量的記載,則處理進入步驟S1405。獲取軟件安裝設置文件中所記載的各軟件配置文件的安裝量。將所有文件的安裝量的總和當作該軟件的安裝量。處理返回到步驟S1401以獲取下一個軟件的安裝量。
在步驟S1406,對直到此時所獲取的軟件安裝量求和以獲得所有軟件的總安裝量。
在步驟S1407,在安裝進度窗口上將所有軟件的總安裝量定義為進度條的100%,并且基于各軟件的安裝量分割進度條。在步驟S1408,記錄當前時間。使用該時間來計算安裝經過的時間以計算估計剩余時間。當結束上述處理時,CPU完成安裝進度窗口初始化處理。
圖15是示出通過在圖13中的軟件選擇窗口上選擇所有軟件程序并執行圖14中所述的安裝進度窗口初始化處理而顯示的安裝進度窗口的例子的圖。
在該窗口中存在軟件說明圖像顯示區域1501、進度條1502、剩余軟件計數顯示區域1503、以及估計剩余時間顯示區域1504。軟件說明圖像顯示區域1501顯示用于解釋軟件內容的圖像。在剛初始化之后,該區域是空白的。
進度條1502被分成八個區域1505~1512。這些區域對應于包括在圖8所示的文件夾結構中的八個軟件,即軟件A、組件B、組件E、組件C、組件D、軟件F、組件G 以及軟件H。在該例子中,將40%、12%、4%、12%、12%、8%、4%和8%(總共100%)分配給各個區域。剩余軟件計數顯示區域1503在軟件安裝過程中顯示剩余軟件程序的數量。在剛初始化之后,該區域顯示進度條的分割數量,即“8”。估計剩余時間顯示區域1504在軟件安裝過程中顯示估計剩余安裝時間。在剛初始化之后,該區域顯示“初始化進行中”。
圖16是示出通過在圖13中的軟件選擇窗口上取消軟件A的選擇并執行圖14中所述的安裝進度窗口初始化處理而顯示的安裝進度窗口的例子的圖。
該窗口結構與圖15所示的例子中的幾乎相同。存在軟件說明圖像顯示區域1601、進度條1602、剩余軟件計數顯示區域1603、以及估計剩余時間顯示區域1604。作為不同點,進度條1602被分成三個區域1605、1606和1607。這三個區域分別對應于軟件F、組件G和軟件H。在該例子中,將40%、20%和40%(總共100%)分配給各個區域。由于在圖13中所示的軟件選擇窗口上取消了軟件A的選擇,因而將軟件A及其組件B、C、D和E的安裝量計算為0。為此,分配進度條中0%的區域。也就是說,不分配區域。
圖17A和17B是詳細示出步驟S309中的安裝執行處理的流程圖。
在步驟S1701,CPU初始化安裝進度窗口中的軟件說明圖像顯示區域。更具體地,CPU讀出軟件安裝設置文件中所記載的軟件說明圖像,并將該軟件說明圖像顯示在安裝進度窗口中的軟件說明圖像顯示區域中。
在步驟S1702,CPU判斷軟件安裝設置文件中所記載的安裝程序類型是否表示啟動外部安裝程序的類型。如果是啟動外部安裝程序的類型,則在步驟S1703中CPU啟動軟件安裝設置文件中所指定的外部軟件,并等待軟件的結束。在步驟S1705,將剩余軟件程序的數量減1。該軟件的安裝處理結束,并且處理進入下一個軟件的安裝處理。
如果軟件安裝設置文件中所記載的安裝程序類型不表示啟動外部安裝程序的類型,則處理進入步驟S1704。在步驟S1704,CPU檢查是否安裝了軟件安裝設置文件中的所有文件。如果安裝了所有文件,則處理進入步驟S1705,以將安裝進度窗口上的剩余軟件計數顯示區域1603中的值減1,并更新該值。該軟件的安裝處理結束,并且處理進入下一個軟件的安裝處理。如果仍未安裝所有文件,則處理進入步驟S1706,以從軟件安裝設置文件讀出下一個文件安裝指令。
在步驟S1707,CPU將讀出的文件安裝指令中所記載的復制源文件從光盤106或107上的軟件配置文件復制到硬盤104上的臨時工作文件夾。
在步驟S1708,CPU檢查所讀出的文件安裝指令中所記載的復制目的地文件的存在。如果復制目的地文件不存在,則在步驟S1710,將復制到臨時工作文件夾的復制源文件復制到復制目的地文件,并且處理進入步驟S1711。
如果復制目的地文件存在,則在步驟S1709,將復制到臨時工作文件夾的復制源文件與現有復制目的地文件進行比較。如果復制源文件較新,則在步驟S1710,將復制到臨時工作文件夾的復制源文件復制到復制目的地文件,并且處理進入步驟S1711。如果復制目的地文件較新,則處理進入步驟S1711而不復制該文件。
在步驟S1711,將操作系統所保持的文件參考計數數據庫中的復制目的地文件參考計數加1。
在步驟S1712,刪除在步驟S1707中復制到臨時工作文件夾的復制源文件。
在步驟S1713,CPU檢查正安裝的軟件在軟件列表中是否具有父軟件。如果該軟件沒有父軟件,則在步驟S1714中,CPU向操作系統發出指令,以將“安裝了復制目的地文件”另外記錄在正安裝的軟件的安裝日志中。然后,處理進入步驟S1716。
如果該軟件具有父軟件,則在步驟S1715中,CPU向操作系統發出指令,以將“安裝了復制目的地文件”另外記錄在該父軟件的安裝日志中。然后,處理進入步驟S1716。
在步驟S1716,CPU檢查所讀出的文件安裝指令是否包含對文件安裝量的記載。如果記載了文件安裝量,則在步驟S1719,CPU獲取該文件安裝量。在步驟S1721,CPU獲得該軟件中所包含的所有文件的安裝量的總和,并使用該總和作為軟件的安裝量來進行步驟S1723中的計算。
如果在步驟S1716中CPU判斷出所讀出的文件安裝指令不包含對文件安裝量的記載,則處理進入步驟S1717。
在步驟S1717,CPU確認軟件安裝設置文件中所記載的文件安裝單位是否為文件大小。如果是文件大小,則即使當軟件安裝設置文件不包含文件安裝量時,也通過使用文件大小作為安裝量來執行處理。更具體地,在步驟S1718,獲取文件大小作為文件安裝量。在步驟S1721,獲得該軟件中所包含的所有文件的安裝量的總和。使用該總和作為軟件的安裝量來進行步驟S1723中的計算。
如果在步驟S1717中CPU判斷出軟件安裝設置文件中所記載的文件安裝單位不是文件大小,則處理進入步驟S1720。在步驟S1720,將文件安裝量設置成1。在步驟S1722,將該軟件中所包含的文件數量定義為該軟件的安裝量,并用其進行步驟S1723中的計算。
在步驟S1723,CPU計算復制文件時進度條的進度量。更具體地,計算在圖14中的安裝進度窗口初始化處理中所分割的與該軟件相對應的區域的、在上述步驟中所計算的(文件安裝量/軟件安裝量)的比。
在步驟S1724,進度條前進在步驟S1723中所計算的量。
當步驟S1724中的處理結束時,在步驟S1725中,CPU檢查進度條的當前位置是否表示低于整個區域5%的量。如果該量低于5%,則在步驟S1727中,在安裝進度窗口的估計剩余時間顯示區域中顯示“計算進行中”,并且處理返回到步驟S1701。
如果該量等于或高于5%,則在步驟S1726中,在安裝進度窗口的估計剩余時間顯示區域中顯示估計剩余時間。更具體地,基于當前時間和安裝進度窗口初始化處理的時間,獲得開始安裝后的經過時間T。基于進度條的當前比P%,將T×(100-P)/P作為估計剩余時間顯示。然后,處理返回到步驟S1701。
以下通過使用在軟件選擇對話框上選擇所有軟件程序后軟件A的安裝例子,來說明根據圖17A和17B中所示的處理在安裝過程中的進度條的進度。
已參照圖9說明了軟件A的軟件安裝設置文件210。
如圖12所示,軟件A是軟件列表中的第一項。在開始軟件A的安裝處理前,安裝進度窗口具有圖15中所示的狀態。首先,開始圖9中文件部分906的開頭處所記載的文件MainExecFile.exe的處理。
在直到步驟S1714的文件復制處理結束后,處理進入步驟S1716。軟件安裝設置文件210包含對文件MainExecFile.exe的安裝量的記載。為此,在步驟S1719獲取該文件的安裝量(4)。
在步驟S1721,獲得該軟件中所包含的所有文件的安裝量的總和(4+1=5)。在步驟S1723,計算在復制文件MainExecFile.exe時的進度量。在該實施例中,分配給軟件A的進度條區域為40%,如圖15中所示。進度條以(文件安裝量/軟件安裝量)的比即4/5=0.8前進。在步驟S1724,進度條前進40%×0.8=32%。如果直到該時間點為止的文件復制需要T=32秒,則在步驟S1726中,將32×(100-32)/32=68秒作為估計剩余時間顯示在安裝進度窗口的估計剩余時間顯示區域中。圖18示出此時在安裝進度窗口上的顯示。
還將說明組件D的處理。
已參照圖10說明了組件D的軟件安裝設置文件216。
圖19示出當在步驟S1701中開始組件D的安裝時所顯示的窗口。如圖12所示,組件D是軟件列表中的第五項。因此,在安裝了第一到第四軟件之后,進度條表示68%。
首先,開始圖10中的文件部分1006的開頭處所記載的文件ComponentDMain.dll的處理。在完成直到步驟S1714的文件復制處理之后,處理進入步驟S1716。在軟件安裝設置文件216中,文件ComponentDMain.dll的安裝量為0。也就是說,沒有對安裝量的記載。因此,處理進入步驟S1717。由于文件安裝單位是文件大小,因而在步驟S1718中獲取文件ComponentDMain.dll的文件大小。在步驟S1721,獲取光盤106中所記載的所有文件的文件大小,并對該文件大小求和以獲得軟件安裝量。在步驟S1723,計算在復制文件ComponentDMain.dll時的進度量。假定文件ComponentDMain.dll的大小為20MB,并且CompShare.lib的大小為10MB。在該實施例中,如圖15所示,分配給組件D的進度條區域為12%。進度條以(文件安裝量/軟件安裝量)的比即20/30=0.67前進。在步驟S1724,進度條前進12%×0.67=8%,并表示76%。如果直到該時間點為止的文件復制需要T=38秒,則在步驟S1726,將38×(100-76)/76=12秒作為估計剩余時間顯示在安裝進度窗口的估計剩余時間顯示區域中。圖20示出此時在安裝進度窗口上的顯示。
使與正安裝的組件相對應的進度條區域閃爍或改變該區域的顏色以明確表示“進行中”、或對各組件的進度條區域分配不同顏色可以有效地使用戶識別顯示。
圖21是示出操作系統中所保持的且用于安裝處理的文件參考計數數據庫的內部結構的圖。
數據庫的各記錄都具有文件名字段2101和與文件名相對應的參考計數字段2102。當安裝程序請求增加已具有記錄的文件的參考計數時,將參考計數字段的值加1。如果安裝程序請求增加沒有記錄的文件的參考計數,則重新創建記錄,并且將參考計數字段的值加1。如果安裝程序請求減小文件的參考計數,則減小該文件的記錄。
如果作為該減小的結果參考計數字段為0或更小,則自動刪除該記錄。
在該實施例中,通過使用操作系統的功能來實現參考計數數據庫。然而,通過其它方法計算參考計數可以獲得與上述相同的效果。參考計數是引入以防止錯誤卸載多個軟件程序共享的文件的機制。如果可獲得相同的效果,本發明不局限于使用參考計數。
圖22是示出通過圖14中的安裝處理所創建的安裝日志的一部分的圖。
安裝日志記錄通過安裝程序安裝哪個軟件的哪個文件、以及文件的安裝順序。在該實施例中,安裝日志是文本文件。該文本文件被分成針對軟件的部分,并以時間順序記載所安裝的文件。例如,圖22中的部分2201記錄用于安裝軟件A和以軟件A作為父軟件的其它軟件的文件列。類似地,部分2202記錄用于安裝軟件F和以軟件F作為父軟件的其它軟件的文件列。
每一部分包括部分名稱和文件列。例如,部分2201包括標題2203和文件列2204。文件列2204以安裝的順序,記錄用于安裝軟件A和以軟件A作為父軟件的其它軟件的文件列。
圖23是詳細示出根據該實施例的卸載處理的流程圖。
在步驟S2301,執行卸載處理初始化處理。更具體地,為了卸載軟件,將作為卸載目標的軟件的標識符給予用于執行卸載的程序,即卸載程序。在步驟S2301獲取該標識符。
在步驟S2302,顯示使用戶檢查是否執行卸載的消息,以要求用戶進行輸入。如果用戶輸入取消,則什么也不執行而結束卸載處理。如果用戶輸入確定,則處理進入步驟S2303以開始卸載處理。
在步驟S2303,CPU獲取該軟件的安裝日志的最新項作為卸載目標。在步驟S2304,CPU判斷是否獲取了該軟件的安裝日志。如果沒有獲取日志,也就是說,如果該軟件的安裝日志為空,則處理進入步驟S2310。如果獲取了安裝日志,則在步驟S2305,CPU就目標文件參考計數詢問參考計數數據庫。
在步驟S2306,CPU確認返回值是否為1。如果該值為1,則在步驟S2307刪除目標文件,并且處理進入步驟S2308。如果從參考計數數據庫返回的值大于1,則處理在不刪除該文件的情況下進入步驟S2308。
在步驟S2308,將目標文件的參考計數減1。在步驟S2309,從安裝日志刪除所處理的安裝日志項,并且處理返回到步驟S2303。
在步驟S2310,向用戶顯示表示卸載處理結束的消息。當完成消息顯示時,結束卸載處理。
其它實施例還可以通過以下方法獲得該實施例的目的。將記錄實現上述實施例的功能的軟件程序代碼的存儲介質(或記錄介質)提供給系統或設備。該系統或設備的計算機(或CPU或MPU)讀出并執行存儲在該存儲介質中的程序代碼。在這種情況下,從該存儲介質讀出的程序代碼本身實現上述實施例的功能。存儲該程序代碼的存儲介質構成本發明。不僅通過使計算機執行讀出的程序代碼來實現上述實施例的功能。本發明還包含以下配置。運行在計算機上的操作系統(OS)基于該程序代碼的指令,執行全部或部分實際處理,從而實現上述實施例的功能。
本發明還包含以下配置。將從該存儲介質讀出的程序代碼寫入插入計算機的功能擴展卡或與計算機連接的功能擴展單元的存儲器中。該功能擴展卡或功能擴展單元的CPU基于該程序代碼的指令,執行全部或部分實際處理,從而實現上述實施例的功能。
應用本發明的存儲介質存儲與上述過程相對應的程序代碼。
作為本發明的另一特征,存儲介質可以是圖1A中所示的光盤106或107、或能夠交換或發布的卡狀存儲介質。
盡管參照典型實施例說明了本發明,但是應該理解,本發明不局限于所公開的典型實施例。以下權利要求書的范圍符合最寬的解釋,以包含所有這類修改和等同結構和功能。
權利要求
1.一種用于安裝多個程序的安裝設備,其包括第一存儲部件,用于為各程序存儲相互對應的安裝設置文件和安裝目標文件;讀取部件,用于根據一個安裝可執行文件,讀取所述多個程序的所述安裝設置文件;以及第二存儲部件,用于根據所述安裝可執行文件和所述安裝設置文件,按順序存儲與所述安裝設置文件相對應的所述安裝目標文件。
2.根據權利要求1所述的安裝設備,其特征在于,還包括生成部件,用于根據由所述讀取部件讀取的所述安裝設置文件,生成顯示多個程序的列表窗口;以及顯示控制部件,用于顯示由所述生成部件生成的所述列表窗口。
3.根據權利要求2所述的安裝設備,其特征在于,所述列表窗口包括各程序的選擇允許/禁止設置、圖標、名稱、版本號、說明和盤容量中的至少一個。
4.根據權利要求1所述的安裝設備,其特征在于,還包括獲取部件,用于根據由所述讀取部件讀出的所述安裝設置文件,獲取各程序的安裝目標文件的數量和各安裝目標文件的文件大小;計算部件,用于計算由所述獲取部件獲取的所述文件大小的總和;確定部件,用于基于由所述獲取部件獲取的所述文件數量和由所述計算部件計算出的所述總和,來確定各程序的安裝進度量;以及更新部件,用于每當所述第二存儲部件存儲所述安裝目標文件時,基于由所述確定部件確定的所述安裝進度量,來更新安裝進度狀態。
5.根據權利要求4所述的安裝設備,其特征在于,還包括通知部件,該通知部件用于將由所述更新部件更新后的所述安裝進度狀態通知給用戶。
6.一種用于安裝多個程序的方法,其包括第一存儲步驟,用于為各程序存儲相互對應的安裝設置文件和安裝目標文件;讀取步驟,用于根據一個安裝可執行文件,讀出所述多個程序的所述安裝設置文件;以及第二存儲步驟,用于根據所述安裝可執行文件和所述安裝設置文件,按順序存儲與所述安裝設置文件相對應的所述安裝目標文件。
全文摘要
一種安裝設備和安裝方法。本發明的目的是即使當修改了要安裝的多個軟件程序中的一個軟件程序時,也不需要更新主安裝程序。將均具有安裝設置文件的多個軟件程序安裝到計算機中的安裝方法,通過連續讀出多個軟件程序的安裝設置文件的內容,連續安裝該多個軟件程序,其中該安裝設置文件記載用于安裝該軟件的處理內容。
文檔編號G06F9/445GK101017437SQ20071000288
公開日2007年8月15日 申請日期2007年2月9日 優先權日2006年2月9日
發明者熊谷篤, 宮崎成幸 申請人:佳能株式會社