以下に添付図面を参照して、システムおよび情報処理方法の実施形態を詳細に説明する。
(第1の実施形態)
図1は、第1の実施形態に係る情報処理システムの一例構成を示す。図1において、クライアント側におけるパーソナルコンピュータなどの情報処理装置10(以下、クライアントPC10)と、画像機器201および202とが、LAN(Local Area Network)といったネットワーク22により互いに通信可能に接続される。図1の例では、画像機器201および202は、それぞれプリンタ装置およびMFP(Multi Function Printer)とされている。なお、MFPは、プリンタ機能、スキャナ機能、コピー機能およびFAX機能といった複数の機能を1の筐体で実現した、多機能画像機器である。
クライアントPC10は、画像機器201および202を制御するためのドライバプログラムが搭載される。クライアントPC10は、複数機能を備えるMFPである画像機器202に対しては、機能毎にドライバが搭載される。クライアントPC10は、搭載されたドライバプログラムにより、ネットワーク22を介して画像機器201および202を制御することができる。
また、クライアントPC10は、ドライバプログラムにより制御される画像機器201および202を、より便利に利用するためのアプリケーションプログラムであるユーティリティプログラムをさらに搭載することができる。なお、煩雑さを避けるため、以降、特に記載の無い限り、単にプログラムと記述した場合には、これらドライバプログラム、または、アプリケーションプログラムを指すものとする。
クライアントPC10は、ルータ21を介して、例えばインターネットといった外部のネットワーク30に接続される。ネットワーク30に対し、動的サーバ40および静的サーバ41を含むサーバシステム400が接続される。クライアントPC10は、ネットワーク30を介してサーバシステム400に接続し、これら動的サーバ40および静的サーバ41と互いに通信可能とされる。
静的サーバ41は、クライアントPC10に搭載するためのドライバプログラムやアプリケーションプログラムが予め定められた格納場所に配置されて格納される。静的サーバ41に格納されるドライバプログラムやアプリケーションプログラムは、クライアントPC10に搭載される対応するプログラムと置き換える、例えば当該プログラムに対してバージョンがより新しいドライバそのものであってもよいし、プログラムを構成するためのモジュールであってもよい。これに限らず、静的サーバ41に格納されるプログラムは、プログラムの更新部分のみを含むモジュールであってもよい。以下では、これらプログラムや、プログラムを構成するためのモジュールを、適宜、プログラムオブジェクトと呼ぶ。
動的サーバ40は、データベースを有し、外部からのクエリを受け付けてデータベースに対する検索を実行し、検索の結果として、静的サーバ41に格納されるプログラムを示すプログラム情報を返す。プログラム情報は、当該プログラムが静的サーバ41に格納される格納場所を示す情報(取得先情報)と、当該プログラムの種類を示す情報とを少なくとも含む。プログラム情報は、プログラム情報に対する情報であるメタ情報をさらに含むことができる。
なお、図1の例では、ネットワーク22に2台の画像機器201および202が接続され、クライアントPC10がこれら画像機器201および202を制御するように示したが、これはこの例に限定されない。すなわち、クライアントPC10は、ネットワーク22に接続される2台の画像機器201および202のうち一方のみを制御してもよいし、ネットワーク22に対して1台の例えば画像機器201のみが接続されていてもよい。また、ネットワーク22に対して3台以上の画像機器201、202、…が接続され、クライアントPC10がこの3台以上の画像機器201、202、…の一部または全てを制御可能としてもよい。
また、図1の例では、ネットワーク22に対して1台のクライアントPC10が接続されているように示されているが、これはこの例に限定されない。すなわち、ネットワーク22に対して、画像機器201および202を制御可能な複数のクライアントPC10が接続されていてもよい。
さらに、図1では、動的サーバ40と静的サーバ41とがそれぞれ個別のサーバ装置であるように示したが、これはこの例に限定されない。例えば、サーバシステム400を1台のサーバ装置にて構成し、動的サーバ40と静的サーバ41とをこのサーバ装置上の別個の機能として構成してもよい。サーバシステム400を複数のサーバ装置を連携させて構成し、動的サーバ40と静的サーバ41とをサーバシステム400が含む複数のサーバ装置に分散させて構成してもよい。さらに、静的サーバ41は、ドライバプログラムやアプリケーションプログラムの格納場所が一意に指定可能であれば、一連のシステムとして構成する必要は無い。
図2は、動的サーバ40および静的サーバ41を個別のサーバ装置で構成した場合の、動的サーバ40および静的サーバ41に共通して適用可能なサーバ装置の一例の構成を示す。ここでは、説明のため、特に記載の無い限り、動的サーバ40および静的サーバ41を、サーバ装置として纏めて説明する。
図2に示されるサーバ装置は、CPU(Central Processing Unit)411と、ROM(Read Only Memory)412と、RAM413と、ストレージ414と、通信I/F415とを含み、これら各部がバス410により互いに通信可能に接続されている。
ストレージ414は、例えばハードディスクドライブや、フラッシュメモリといった不揮発性の半導体メモリであって、CPU411上で動作するプログラムや各種データが格納される。また、ストレージ414は、当該サーバ装置が動的サーバ40である場合には、上述したデータベースを記憶し、当該サーバ装置が静的サーバ41である場合には、上述したドライバプログラムやアプリケーションプログラムがプログラムオブジェクトとして記憶される。
CPU411は、ROM412やストレージ414から読み出したプログラムに従い、RAM413をワークメモリとして用いて、サーバ装置の全体の動作を制御する。通信I/F415は、CPU411の指示に従い、ネットワーク30を介した通信を制御する。
サーバ装置の構成は、図2の例に限られず、例えば一般的なコンピュータと同様に、CPU411により生成された画面情報に従った画面をディスプレイに表示させる表示制御部や、外部機器との間でのデータの入出力を行うデータI/F、ユーザ入力を受け付ける入力デバイスをさらに含んでいてもよい。
図3は、第1の実施形態に係るサーバシステム400の機能を説明するための一例の機能ブロック図である。サーバシステム400は、第1記憶部420と、第2記憶部421と、通信部422と、第1特定部423と、第1提供部424と、第2特定部425と、第2提供部426とを含む。
これら第1記憶部420、第2記憶部421、通信部422、第1特定部423、第1提供部424、第2特定部425および第2提供部426のうち、第1特定部423、第1提供部424、第2特定部425および第2提供部426は、動的サーバ40が保持または生成する情報とし、例えばクライアントPC10上における対応するプログラムの実行によりそれぞれの機能が実現される。また、第1記憶部420および第2記憶部421は、それぞれ、動的サーバ40および静的サーバ41の各CPU411上で動作するプログラムにより構成される。
これに限らず、これら第1記憶部420、第2記憶部421、通信部422、第1特定部423、第1提供部424、第2特定部425および第2提供部426を、動的サーバ40および静的サーバ41の各CPU411上で動作するプログラムにより構成されるようにしてもよい。
第1記憶部420は、静的サーバ41において、クライアントPC10に搭載するための第1のプログラムである複数種類のドライバプログラムやアプリケーションプログラムのプログラムオブジェクトや、これらドライバプログラムやアプリケーションプログラムをクライアントPC10にインストールするための各インストーラプログラム(第2のプログラム)のプログラムオブジェクトの、所定の格納場所への格納および当該格納場所からの読み出しを制御する記憶手段である。第1記憶部420は、例えば、これらのプログラムオブジェクトを、静的サーバ41が備えるストレージ414に格納する。
第2記憶部421は、動的サーバ40において、データベースへの情報の格納およびデータベースからの情報の読み出し(検索)を制御する。例えば、第2記憶部421は、外部からのクエリに従いデータベースを検索し、検索の結果として、上述したプログラム情報を取得する。第2記憶部421は、このデータベースを、例えば動的サーバ40が備えるストレージ414に格納する。
通信部422は、ネットワーク30を介したクライアントPC10との通信を制御する。
第1特定部423は、クライアントPC10から送信された、クライアントPC10の情報に基づき、クライアントPC10に提供するインストーラプログラムを特定するために用いられる。第1提供部424は、第1特定部423で特定されたインストーラプログラムをクライアントPC10に提供するために用いられる。第2特定部425は、クライアントPC10上で上述のインストーラプログラムが実行されることによりクライアントPC10から送信された情報に基づき、複数種類のドライバプログラムやアプリケーションプログラムのうちクライアントPC10に提供するプログラムを特定するために用いられる。第2提供部426は、第2特定部424で特定されたプログラムをクライアントPC10に提供するために用いられる。
図4は、第1の実施形態に適用可能なクライアントPC10の一例の構成を示す。クライアントPC10は、CPU(Central Processing Unit)51と、ROM(Read Only Memory)52と、RAM(Random Access Memory)53と、ストレージ54と、表示制御部55と、入出力I/F57と、通信I/F59とがバス50を介して互いに通信可能に接続されている。
CPU51は、ROM52やストレージ54に予め記憶されるプログラムに従い、RAM53をワークメモリとして用いて、このクライアントPC10の全体の動作を制御する。ストレージ54は、ハードディスクドライブや不揮発性の半導体メモリ(フラッシュメモリ)からなり、CPU51が動作するためのプログラムや、各種データが格納される。
表示制御部55は、CPU51によりプログラムに従い生成された表示制御信号を、ディスプレイ56で表示可能な表示信号に変換してディスプレイ56に供給する。ディスプレイ56は、例えばLCD(Liquid Crystal Display)を表示デバイスとして用い、表示制御部55から供給された表示信号に従った画面を表示デバイスに表示させる。
入出力I/F57は、外部機器との間で通信を行うインタフェースである。図4の例では、入出力I/F57に対して、外部機器としてキーボードやポインティングデバイス(マウスなど)を含む操作部58が接続されている。入出力I/F57は、これに限らず、CD(Compact Disk)やDVD(Digital Versatile Disk)といったディスク記憶媒体からのデータの読み出しなどを行うドライブ装置や、不揮発性の半導体メモリなどのストレージを接続してもよい。入出力I/F57としては、例えばUSB(Universal Serial Bus)を用いることができる。
通信I/F59は、TCP/IP(Transmission Control Protocol/Internet Protocol)など所定のプロトコルを用いてネットワーク30を介した通信を制御する。
図5は、第1の実施形態に係るクライアントPC10の機能を説明するための一例の機能ブロック図である。図5において、クライアントPC10は、表示部101と、入力部102と、記憶部103と、通信部104と、OS(Operating System)110と、インストーラ111と、ドライバ群120と、アプリケーション群121とを有する。
クライアントPC10において、表示部101、入力部102、記憶部103および通信部104は、CPU51で動作するプログラムにより構成される。これに限らず、表示部101、入力部102、記憶部103および通信部104のうち一部または全部を、互いに協働するハードウェアによって構成してもよい。
表示部101は、指示に従い、ディスプレイ56への表示を行うための表示情報を生成する。表示制御部55は、表示部101に生成された表示情報に基づき、ディスプレイ56に表示情報に従った表示を行うための表示信号を生成してディスプレイ56に対して出力する。入力部102は、操作部58から出力されるユーザ操作に応じた信号を受け付ける。記憶部103は、ストレージ54やRAM53にデータを記憶させる。通信部104は、通信I/F59による通信を制御する。
ドライバ群120は、1以上のドライバプログラム1201、1202、…を含むことができる。また、アプリケーション群121は、1以上のアプリケーションプログラム1211、1212、…を含むことができる。図5において、ドライバプログラム1201、1202、…は、ドライバ#1、ドライバ#2、…としても示されている。同様に、アプリケーションプログラム1211、1212、…は、アプリケーション#1、アプリケーション#2、…としても示されている。
各ドライバプログラム1201、1202、…は、OS110がクライアントPC10に接続される外部機器を制御する際に、OS110と当該外部機器との間の仲介を行う機能をCPU51に実行させる。また、各ドライバプログラム1201、1202、…は、クライアントPC10から外部機器を使用する際に、ユーザに対して適切なUI(User Interface)を提供する。各ドライバプログラム1201、1202、…は、例えば外部機器の機種および機能毎に用意され、クライアントPC10にインストールされる。
各アプリケーションプログラム1211、1212、…は、例えば外部機器をより便利に利用可能とするためのユーティリティプログラムである。例えば、外部機器が被投射媒体に画像を投射するプロジェクタである場合に、クライアントPC10の表示画面のプロジェクタによる投射や、クライアントPC10からプロジェクタの設定を行うためのプロジェクションアプリケーションを各アプリケーションプログラム1211、1212、…に適用することができる。また、外部機器が板書した情報を画像データとして表示する電子黒板である場合に、電子黒板に対するユーザ操作(板書など)を行うことで生成した画像等のクライアントPC10での閲覧や、クライアントPC10から電子黒板に対する諸設定を行うための電子黒板ビューアアプリケーションを、各アプリケーションプログラム1211、1212、…に適用することができる。さらに、MFPやプリンタ装置などの画像形成装置の操作画面をクライアントPC10上で実現し、クライアントPC10から画像形成装置の設定や操作を行うための画像形成装置操作アプリケーションプログラムを、各アプリケーションプログラム1211、1212、…に適用することができる。さらにまた、画像機器201、202、…が、クライアントPC10またはネットワーク30とWiFi(登録商標)などの無線通信を介して通信を行う場合に、無線通信の設定を行うための通信設定ツールを各アプリケーションプログラム1211、1212、…に適用することができる。これに限らず、各アプリケーションプログラム1211、1212、…は、クライアントPC10において一般的に用いられるアプリケーションプログラムであってもよい。
インストーラ111は、ドライバ群120に含まれる各ドライバプログラム1201、1202、…、および、アプリケーション群121に含まれる各アプリケーションプログラム1211、1212、…を当該クライアントPC10にインストールする。また、インストーラ111は、これら各ドライバプログラム1201、1202、…、および、各アプリケーションプログラム1211、1212、…を更新するためのプログラムをインストールする。
図6は、第1の実施形態に係るインストーラ111の機能を説明するための一例の機能ブロック図である。インストーラ111は、UI部1110と、インストーラ管理部1111と、インストール対象となるプログラムの種類に応じた各インストーラ1112、1113および1114とを含むプログラムである。
図6の例では、各インストーラ1112、1113および1114のうちインストーラ1112は、アプリケーションプログラムをインストールするアプリケーションインストーラである。また、インストーラ1113は、プリンタ機能を制御するためのプリンタドライバプログラムをインストールするプリンタドライバインストーラである。さらに、インストーラ1114は、スキャナ機能を制御するためのスキャナドライバプログラムをインストールするスキャナドライバインストーラである。プログラムの種類に応じてインストールの手順が異なるため、プログラム種類に応じたインストーラが用意される。
ここで、インストーラ1112、1113および1114によるインストール処理について、概略的に説明する。
アプリケーションプログラムのインストール処理を実行するインストーラ1112について説明する。アプリケーションプログラムは、比較的狭い範囲の仕事を想定して、ユーザの特定の要求に近接して作成されたプログラムであって、一般的には、プリンタやスキャナといった、クライアントPC10に対する外部装置の直接的な制御は、行わない。
インストーラ1112が実行するアプリケーションプログラムのインストール処理は、アプリケーションプログラムを構成する各ファイルを、クライアントPC10上に作成した所定のフォルダに格納する処理と、OSがWindows(登録商標)の場合にはレジストリの初期設定およびスタートメニューへの登録とを含む。なお、アプリケーションプログラムの構成ファイルの格納フォルダは、OSにより用意されたフォルダ(OSがWindows(登録商標)の場合フォルダ「Program Files」)を用いることができる。これに限らず、クライアントPC10に作成した任意のフォルダに構成ファイルを格納してもよい。
プリンタドライバプログラムのインストール処理を実行するインストーラ1113について説明する。インストーラ1113が実行するプリンタドライバのインストール処理は、プリンタドライバを構成する各ファイルを、クライアントPC10上にOSが定めたフォルダに格納する処理と、印刷ポートの設定と、論理プリンタキューの作成と、OSがWindows(登録商標)の場合にはレジストリの初期設定とを含む。なお、論理プリンタキューの作成処理は、例えばインストールされるプリンタドライバに対応するプリンタを示すアイコンの作成処理を含む。
スキャナドライバプログラムのインストール処理を実行するインストーラ1114について説明する。インストーラ1114が実行するスキャナドライバのインストール処理は、スキャナドライバを構成する各ファイルを、クライアントPC10上にOSが定めたフォルダに格納する処理と、スキャンポートの設定処理とを含む。
図7は、各インストーラ1112、1113および1114の機能を説明するための一例の機能ブロック図である。ここでは、インストーラ1112、1113および1114を、インストーラ1112で代表させて説明する。インストーラ1112は、デバイス情報処理部1120およびインストール処理部1121を含む。
デバイス情報処理部1120は、クライアントPC10にネットワーク22を介して接続される各デバイス(図1の例では画像機器201および202)からデバイス情報を取得し、取得したデバイス情報をサーバシステム400に送信する第1の処理手段である。インストール処理部1121は、サーバシステム400から受け取ったドライバプログラムやアプリケーションプログラムをクライアントPC10にインストールする処理を実行する第2の処理手段である。
図6において、UI部1110は、インストーラ111の動作にあたって、ユーザに対して表示や入力インタフェースなどUIを提供する。
インストーラ管理部1111は、クライアントPC10に対するドライバプログラムやアプリケーションプログラムのインストールの制御および管理を行う。詳細は後述するが、インストーラ管理部1111は、通信部104を介して、動的サーバ40に対してクライアントPC10の情報を含むクエリを送信する。そして、インストーラ管理部1111は、このクエリに応じて動的サーバ40から返された、インストール対象であるプログラムを示すプログラム情報を取得し、取得したプログラム情報に従い、静的サーバ41からプログラム(プログラムオブジェクト)を取得する。また、インストーラ管理部1111は、取得したプログラム情報に基づき、プログラムのインストールに用いるインストーラを、インストーラ1112、1113および1114から選択し、選択したインストーラにプログラムのインストールを実行させる。すなわち、インストーラ管理部1111は、プログラム情報を取得するプログラム情報取得部と、プログラムを取得するプログラム取得部と、インストール処理を制御するインストール制御部との機能を備える。
上述したインストーラ111に含まれるUI部1110と、インストーラ管理部1111と、各インストーラ1112、1113および1114とは、CPU51上で動作するプログラムによって実現される。なお、インストーラ111は、当初UI部1110およびインストーラ管理部1111のみで構成され、後に、各インストーラ1112、1113および1114を追加するようにもできる。このプログラムは、通信I/F59が通信可能なネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成される。また、このプログラムを、ネットワーク経由で提供または配布するように構成してもよい。
これに限らず、このプログラムは、インストール可能な形式または実行可能な形式のファイルでCD(Compact Disk)、DVD(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供してもよい。この場合、例えば入出力I/F57に接続された外部のドライブ装置やコンピュータを介して、プログラムがクライアントPC10に供給される。
これに限らず、プログラムは、ROM52やストレージ54に予め記憶させて提供してもよい。
プログラムは、例えば、上述した各部(UI部1110、インストーラ管理部1111、各インストーラ1112、1113および1114)を含むモジュール構成となっており、実際のハードウェアとしてはCPU51が例えばストレージ54から当該プログラムを読み出して実行することにより上記各部が主記憶装置(例えばRAM53)上にロードされ、各部が主記憶装置上に生成されるようになっている。
図8は、第1の実施形態に係る動的サーバ40が有するデータベースにおけるレコードの一例の構成を示す。データベースの1のレコードは、1のプログラムに対応し、少なくとも、インストーラ111がインストール対象とするプログラムに関する情報であるプログラム情報と、プログラムがインストール可能な情報処理装置に関する情報であるシステム情報とを含む。
図8において、レコードの各項目のうち「ID」、「表示名」、「バージョン」、「更新日時」、「サイズ」、「インストーラ識別名」、「メタデータ」および「リソース位置」は、そのレコードが対応するプログラムに関するプログラム情報に含まれる。
「ID」は、プログラム情報に対応するプログラムを識別する識別情報であり、例えば当該プログラムの種類を示す。「表示名」は、このプログラム情報に示されるプログラムを例えば表示部101により表示させる場合に用いる名前である。「バージョン」および「更新日時」は、プログラム情報に対応するプログラムのバージョン情報および更新日時情報である。「サイズ」は、このプログラム情報に対応するプログラムのデータサイズを示す。
「インストーラ識別名」は、このプログラム情報が対応するプログラムのインストールを実行すべきインストーラを識別する識別名である。「メタデータ」は、このプログラム情報に対する情報(メタ情報)を取得する取得先を示す情報(URL(Uniform Resource Locator)など)である。「リソース位置」は、このプログラム情報に対応するプログラム(プログラムオブジェクト)を取得する取得先を示す情報(URLなど)を示す。「リソース位置」としては、例えば、静的サーバ41が含むURLが用いられる。「メタデータ」についても同様に、静的サーバ41が含むURLが用いられる。
一方、図8において、レコードの各項目のうち「OSバージョン」、「アーキテクチャ」、「ロケール」および「機種特定情報」は、そのレコードのプログラムが対応可能なシステムのシステム情報を示す。「OSバージョン」および「アーキテクチャ」は、それぞれ、プログラムをインストール可能なOSのバージョンおよびアーキテクチャを示す。「ロケール」は、プログラムをインストールする際に用いる言語などのロケール情報である。
また、「機種特定情報」は、そのレコードが対応する外部機器の機種を特定する情報である。「機種特定情報」としては、プラグアンドプレイ技術で用いられる、ベンダと機種とを識別するための識別情報であるPnP−ID(Plug and Play-ID)を用いることができる。
次に、第1の実施形態に係るドライバプログラムおよびアプリケーションプログラムのインストール手順について、図9を用いて概略的に説明する。なお、図9において、上述した図1、図5および図6と共通する部分には同一の符号を付して、詳細な説明を省略する。図9に示されるインストール手順は、例えば、クライアントPC10に対するユーザ操作に従い開始される。
インストール手順が開始されると、インストーラ111は、先ず、クライアントPC10が接続されるセグメント内のネットワーク22に接続される外部機器(画像機器201、202、…)を探索し(ステップS1)、探索された外部機器から、当該外部機器の機種を特定する機種特定情報を取得する(ステップS2)。インストーラ111は、外部機器の探索の手段として、例えばBonjour(登録商標)や、SNMP(Simple Network Management Protocol)を利用することができる。
また、インストーラ111は、機種特定情報として、例えばPnP−IDを取得する。インストーラ111は、例えば、外部機器の探索時に取得される、当該外部機器のIP(Internet Protocol)アドレスといったネットワーク識別子を利用して、SNMPやWSD(Web Services for Devices)といったプロトコルを利用して、外部機器からPnP−IDを取得する。
図9の例では、インストーラ111は、ネットワーク22から外部機器としてプリンタ装置である画像機器201と、MFPである画像機器202とを探索し、これらの機種特定情報を取得している。
インストーラ111は、ステップS1およびステップS2にて取得した機種特定情報の一覧(デバイス一覧)を表示部101により表示させ、ユーザに提示する(ステップS3)。実際には、表示部101は、機種特定情報に対応する表示名をユーザに提示する。ユーザは、この表示部101により表示された機種特定情報一覧に応じて入力部102を操作して、ドライバまたはアプリケーションを取得する外部機器を選択する。入力部102から、選択された外部機器の機種特定情報がインストーラ111に返される(ステップS4)。
インストーラ111は、OS110から、プログラムをインストールする際に用いる情報を取得する(ステップS5)。例えば、インストーラ111は、OS110から、OSのバージョン情報などOSを識別するためのOS識別情報を取得する。また、インストーラ111は、ステップS5で、OS110からロケール情報などの情報も取得する。
インストーラ111は、ステップS4で取得した、選択された外部機器の機種特定情報と、ステップS5で取得した少なくともOS識別情報とを組み合わせて、クライアントPC10にインストール可能なプログラムの検索を要求するクエリを生成し、ステップS6で動的サーバ40に送信する(送信手段、第1の処理手段)。動的サーバ40は、インストーラ111から送信されたクエリに従いデータベースに対して検索処理を実行し、クエリに対応するプログラム情報を出力する(第1の特定手段、第2の特定手段)。動的サーバ40は、クエリに対応するプログラム情報が複数検索された場合には、この複数のプログラム情報を出力する。ステップS7で、動的サーバ40は、検索されたプログラム情報の一覧を、クエリの送信元であるインストーラ111に送信する(第1の提供手段、第2の提供手段)。
インストーラ111は、動的サーバ40から送信されたプログラム情報に、メタ情報の取得先を示す情報が含まれる場合、当該取得先からメタ情報を取得する(ステップS8)。この例では、メタ情報が静的サーバ41に格納されているものとして説明している。
インストーラ111は、ステップS7で動的サーバ40から取得されたプログラム情報と、インストーラ111によりクライアントPC10に既にインストールされているプログラムの情報とに基づき、クライアントPC10にインストール可能なプログラムの一覧を作成する。また、インストーラ111は、動的サーバ40から取得されたプログラム情報と、インストーラ111によりクライアントPC10にインストール済みのプログラムの情報とに基づき、インストール済みのプログラムを更新可能なプログラムの一覧を作成し、インストール可能なプログラムの一覧に加えてもよい。
インストーラ111は、作成したインストール可能なプログラムの一覧を表示部101により表示させ、ユーザに提示する(ステップS9)。ユーザは、この表示部101により表示されたプログラムの一覧に応じて入力部102を操作して、インストールまたは更新を行うプログラムを選択する。入力部102から、選択されたプログラムを示す情報がインストーラ111に渡される(ステップS10)。
インストーラ111は、ステップS10で渡された、選択されたプログラムを示す情報に対応するプログラム情報に含まれるプログラムの取得先を示す情報に従い、静的サーバ41からプログラムを取得する(ステップS11)。そして、ステップS12で、インストーラ111は、静的サーバ41から取得したプログラムをクライアントPC10にインストールする(第2の処理手段)。このとき、インストーラ111は、プログラム情報に基づきインストールするプログラムの種類を判定し、インストーラ1112、1113および1114のうち判定されたプログラムの種類に合致したインストーラを選択し、プログラムのインストールを選択したインストーラに実行させる。
このように、第1の実施形態によれば、インストーラ111は、外部機器の機種特定情報とOSを識別するOS識別情報とに基づき、動的サーバ40からインストール可能なプログラムを示すプログラム情報を取得する。そして、プログラム情報に含まれる、プログラムの種類を示す情報に従い当該プログラムのインストールに用いるインストーラを選択している。そのため、1のインストーラ111による共通した動作により、種類の異なる複数のプログラムをインストールすることが可能となる。
次に、第1の実施形態に係るインストール処理をより詳細に説明する。図10は、第1の実施形態に係るインストール処理を示す一例のフローチャートである。この図10のフローチャートによる各処理は、インストーラ111により実行される。ステップS100で、インストーラ111は、ネットワーク22を介した外部機器の探索および動的サーバ40に対するクエリを実行し、クライアントPC10にインストール可能なプログラムを示すプログラム情報の一覧を取得する。
インストーラ111は、変数iを値0に初期化する(ステップS101)。なお、ステップS100で取得したプログラム情報の総数を値jとする。
以降、ステップS102〜ステップS108の処理は、ステップS100で取得した全てのプログラム情報について実行される。なお、以下では、i番目のプログラム情報をプログラム情報(i)として記述する。
インストーラ111は、ステップS102で値iを1だけインクリメントし、ステップS103で、プログラム情報(i)がメタデータ(メタ情報)を含むか否かを判定する。インストーラ111は、プログラム情報(i)がメタデータを含まないと判定した場合、処理をステップS105に移行させる。一方、インストーラ111は、プログラム情報(i)がメタデータを含むと判定した場合、処理をステップS104に移行させ、プログラム情報(i)の記述に基づき、静的サーバ41からメタデータを取得する。メタデータを取得したインストーラ111は、処理をステップS105に移行させる。
ステップS105で、インストーラ111は、プログラム情報(i)が示すプログラムが、ドライバプログラムやアプリケーションプログラムといったプログラムのインストールを実行するためのインストーラであるか否かを判定する。ここでは、インストーラ111は、プログラム情報(i)が示すプログラムが、インストーラ111に含まれる各インストーラ1112、1113および1114の何れかであるか否かを判定する。インストーラ111は、プログラム情報(i)が示すプログラムがインストーラであると判定した場合、処理をステップS106に移行させる。
ステップS106で、インストーラ111は、各インストーラ1112、1113および1114のうちプログラム情報(i)に示されるインストーラを、プログラム情報(i)に示される取得先情報に従い静的サーバ41から取得する。そして、次のステップS107で、インストーラ111は、ステップS106で取得したインストーラをクライアントPC10にインストールし、インストーラの更新を行う。
一方、ステップS105で、インストーラ111は、プログラム情報(i)が示すプログラムがインストーラではないと判定した場合、処理をステップS109に移行させる。ステップS109で、インストーラ111は、プログラム情報(i)に示されるインストーラに対してプログラム情報(i)を渡し、インストール可能なプログラムの情報を取得するように要求する。
ここで、インストーラ111は、ステップS104でメタデータを取得している場合、取得したメタデータをプログラム情報(i)と共に当該インストーラに渡す。当該インストーラは、プログラム情報(i)がメタデータを含んでおらずメタデータを取得していない場合、プログラム情報(i)に含まれる表示名を、インストール可能なプログラムの情報として取得する。また、当該インストーラは、ステップS104でメタデータを取得している場合、メタデータに従い、インストール可能なプログラムの情報を取得する。次のステップS110で、インストーラ111は、ステップS109で取得したプログラムの情報を、ユーザに提示するための、インストール可能なプログラムのリストに登録する。
ステップS107またはステップS110の処理の後、インストーラ111は、処理をステップS108に移行させる。ステップS108で、インストーラ111は、変数iとプログラム情報の総数の値jとが一致するか否かを判定する。変数iと値jとが一致する場合、ステップS100で取得された全てのプログラム情報について処理が終了したと判断できる。インストーラ111は、変数iと値jとが一致しないと判定した場合、処理をステップS102に戻して変数iを1だけインクリメントして、次のプログラム情報(i)に対する処理を実行する。
一方、インストーラ111は、変数iと値jとが一致すると判定した場合、処理をステップS111に移行させる。ステップS111で、インストーラ111は、上述したステップS110でプログラムの情報が登録される、ユーザ提示用のインストール可能なプログラムのリストから、更新不要のプログラムを削除する。
例えば、インストーラ111は、リストに登録された第1のプログラムのバージョン情報を取得し、クライアントPC10に既にインストールされている、第1のプログラムに対応する第2のプログラムのバージョン情報と、第1のプログラムのバージョン情報とを比較する。そして、インストーラ111は、第1のプログラムのバージョン情報が第2のプログラムのバージョン情報よりも新しいバージョンを示していない場合に、当該第1のプログラムが更新不要のプログラムであると判定して、当該第1のプログラムをリストから削除する。
次のステップS112で、インストーラ111は、ユーザ提示用のインストール可能なプログラムのリストを、例えば表示部101により表示させ、ユーザに提示する。ステップS113で、インストーラ111は、表示部101へのインストール可能なプログラムのリストの表示に応じてユーザに選択されたプログラムを、クライアントPC10にインストールし、図10のフローチャートによる一連の処理を終了させる。
図11は、第1の実施形態に係るインストール処理における情報処理システム全体での処理の例を示すシーケンス図である。なお、図11において、上述した図1、図5および図6と共通する部分には同一の符号を付して、詳細な説明を省略する。また、以下では、アプリケーションプログラムのインストールを行うインストーラ1112をAPインストーラ1112、プリンタドライバプログラムのインストールを行うインストーラ1113をPDインストーラ1113、スキャナドライバプログラムのインストールを行うインストーラ1114をSDインストーラ1114として説明する。
例えば、クライアントPC10に対するユーザ操作により、インストーラ111の起動が指示される。この起動指示は、インストーラ111のUI部1110に通知される(ステップS200)。UI部1110は、インストーラ管理部1111に対して、クライアントPC10と同一セグメント内のネットワーク22に接続される外部機器のディスカバリを指示する(ステップS201)。インストーラ管理部1111は、この指示に応じて、例えばBonjour(登録商標)やSNMPを用いてネットワーク22に対して外部機器探索の動作を行う(ステップS202)。
インストーラ管理部1111は、外部機器探索による検出結果を受け取ると(ステップS203)、検出された外部機器(画像機器201、202、…とする)に対して機種特定情報を要求する(ステップS204)。インストーラ管理部1111は、この要求に応じて各外部機器から送信された機種特定情報を受け取る(ステップS205)。インストーラ管理部1111は、受け取った各外部機器の機種特定情報に基づき、外部機器を選択するための機器一覧の表示をUI部1110に対して指示する(ステップS206)。UI部1110は、この指示に応じて、機器一覧表示画面を作成し、表示部101に渡す。
表示部101は、UI部1110から渡された機器一覧表示画面をディスプレイ56に表示させる。より具体的には、表示部101は、機器一覧表示画面を表示させるための表示制御信号を生成して、表示制御部55に渡す。表示制御部55は、渡された表示制御信号に基づき表示信号を生成してディスプレイ56に対して出力する。これにより、ディスプレイ56に、機器一覧表示画面が表示される。
図12は、第1の実施形態に係る機器一覧表示画面の例を示す。図12において、機器一覧表示画面200は、表示領域201とボタン204とが配置される。また、表示領域201は、ステップS205で取得された機種特定情報のリストを示すリスト表示202と、リスト表示202に表示される機器に対応する機種を選択するための選択入力部203とが配置される。この例では、選択入力部203は、複数の項目を選択状態にすることが可能なチェックボックスが適用されている。ボタン204は、操作することで選択入力部203に対する選択入力が確定される。
機器一覧表示画面200に応じたユーザ操作により、機種が選択されると(ステップS207)、UI部1110は、選択された機種に対応するプログラム情報を取得するように、インストーラ管理部1111に指示する(ステップS208)。インストーラ管理部1111は、この指示に従い、OS110に対してOS情報の取得を要求する(ステップS209)。OS110は、この要求に応じてOS情報を返す(ステップS210)。OS情報としては、OSのバージョン、アーキテクチャおよびロケールを示す情報が含まれる。OS情報は、OS名を示す情報をさらに含んでいてもよい。
次に、インストーラ管理部1111は、ステップS204およびステップS205で取得した機種特定情報と、ステップS209およびステップS210で取得したOS情報とに基づき、プログラム情報の一覧を取得するためのクエリを作成して動的サーバ40に送信する(ステップS211)。動的サーバ40は、このクエリに従いデータベースを検索し、検索して得られたプログラム情報の一覧をインストーラ管理部1111に返す(ステップS212)。
図13は、第1の実施形態に適用可能な、インストーラ管理部1111が作成しステップS211で動的サーバ40に送信されるクエリの一例を示す。なお、図13および以下の同様のデータ例を示す図において、特に記載のない限り、各行の先頭の数字は説明のための行番号を示し、続くコロン(:)でデータ本体を示すコードと区別されている。また、各実施形態の中で例示される各コードは、プログラミング言語として一般的に用いられるC言語の記法を模した疑似コードである。
図13において、クエリは、最も外側の括弧「{」および「}」に挟まれた記述のうち、当該括弧「{」の直下の第1行目(行番号「2」)から第3行目(行番号「4」)の間に、項目「peripheral」として外部機器の情報が記述されることが示される。図13の例では、項目「peripheral」においてさらに括弧「{」および「}」で挟まれて、PnP−IDによる機種特定情報「MFP Model A」が記述されている。
また、クエリは、第4行目〜第8行目(行番号「5」〜「9」)の間に、項目「system」としてOS情報が記述されることが示される。図13の例では、項目「system」においてさらに括弧「{」および「}」で挟まれて、当該括弧から第1行目(行番号「6」)の項目「version」に値「6.1.7601.65536」としてOSバージョンが、第2行目(行番号「7」)に項目「architecture」に値「x64」としてOSのアーキテクチャが、第3行目(行番号「8」)に項目「locale」に値「ja-JP」としてロケール情報が、それぞれ記述されている。
動的サーバ40は、このクエリに従い図8を用いて説明したデータベースを検索し、クエリに記述される各情報に合致するレコードを抽出する。図8のデータベースの例では、動的サーバ40は、クエリに記述される各情報と、レコードの項目「OSバージョン」、「アーキテクチャ」、「ロケール」および「機種特定情報」に記述される各情報とが一致するレコードを抽出する。そして、動的サーバ40は、抽出したレコードにおける項目「ID」、「表示名」、「バージョン」、「更新日時」、「サイズ」、「インストーラ識別名」、「メタデータ」および「リソース位置」の各情報を、プログラム情報としてインストーラ管理部1111に送信する。動的サーバ40は、クエリに従い複数のレコードが抽出された場合、抽出された複数のレコードの各項目の情報を、レコード毎のプログラム情報の一覧としてインストーラ管理部1111に送信する。
図14は、第1の実施形態に係る、動的サーバ40から送信されるプログラム情報一覧の例を示す。図14に例示されるように、プログラム情報一覧は、行番号「1」および「68」の行の最も外側の括弧「[」および「]」に挟まれる内側の各括弧「{」および「}」内に、それぞれ1個のプログラム情報が記述される。図14の例では、プログラム情報一覧は、行番号「2」〜「11」の行において、括弧「{」および「}」に挟まれてプログラム情報(1)が記述され、以降同様に、行番号「12」〜「21」、行番号「22」〜「30」、行番号「31」〜「39」、行番号「40」〜「48」、行番号「49」〜「58」および行番号「59」〜「67」の行に、それぞれプログラム情報(2)〜(7)が記述されている。
それぞれのプログラム情報(i)は、括弧「{」および「}」の間に、動的サーバ40のレコードの各項目「ID」、「表示名」、「バージョン」、「更新日時」、「サイズ」、「インストーラ識別名」、「メタデータ」および「リソース位置」に対応する各項目「id」、「name」、「version」、「date」(「published_date」)、「size」、「installer」、「metadata_url」および「download_url」が記述される。
図14の例では、プログラム情報(1)は、括弧内の第1行目(行番号「3」)の項目「id」が値「mfp_modela_printer_pcl」とされてプログラムの種類が示される。第2行目(行番号「4」)の項目「name」が値「MFP Model A Printer Driver PCL」として記述される。括弧内の第3行目(行番号「5」)の項目「version」が値「1.2.0.0」、第4行目(行番号「6」)の項目「date」が値「2014-02-11」として記述される。また、第5行目(行番号「7」)の項目「size」が値「12000」として記述される。
プログラム情報(1)において、括弧内の第6行目(行番号「8」)の項目「installer」が値「printer_driver_installer」として記述され、このプログラム情報(1)に記述されるプログラムに対応するインストーラがPDインストーラ1113である旨が示される。さらに、括弧内の第7行目(行番号「9」)の項目「metadata_url」が値「https://example.com/mfp_modela_printer_pcl/metadata.json」、第8行目(行番号「10」)の項目「download_url」が値「https://example.com/mfp_modela_printer_pcl/object.zip」として記述され、それぞれメタデータの取得先のURLと、インストールするプログラムを構成するためのプログラムオブジェクトの取得先のURLとが示される。
図14において、行番号「12」〜「21」の行のプログラム情報(2)は、項目「id」が値「mfp_modela_printer_ps」、項目「name」が値「MFP Model A Printer Driver Postscript」、項目「version」が値「1.0.0.0」、項目「date」が値「2014-01-01」、項目「size」が値「6000」として記述されている。また、項目「installer」が値「printer_driver_installer」として記述され、このプログラム情報(2)に記述されるプログラムに対応するインストーラがPDインストーラ1113である旨が示される。さらに、プログラム情報(2)において、項目「metadata_url」および項目「download_url」に、それぞれメタデータおよびプログラムオブジェクトの取得先のURLが記述されている。
行番号「22」〜「30」の行のプログラム情報(3)は、項目「id」が値「mfp_modela_scanner」、項目「name」が値「MFP Model A Scanner Driver」、項目「version」が値「1.0.0.0」、項目「date」が値「2014-01-01」、項目「size」が値「5000」として記述されている。また、項目「installer」が値「scanner_driver_installer」として記述され、このプログラム情報(3)に記述されるプログラムに対応するインストーラがSDインストーラ1114である旨が示される。さらに、プログラム情報(3)において、項目「download_url」にプログラムオブジェクトの取得先のURLが記述されている。また、この例では、プログラム情報(3)には、メタデータの取得先のURLが記述される項目「metadata_url」が省略されている。
以下同様にして、各プログラム情報(4)〜(7)の情報が項目毎に記述される。そして、項目「installer」の値により、プログラム情報(4)〜(7)に記述されるプログラムに対応するインストーラが、それぞれAPインストーラ1112、PDインストーラ1113、SDインストーラ1114およびインストーラ管理部1111の何れに対応するかが示される。図14の例では、項目「installer」の値に基づき、プログラム情報(1)、(2)、(4)および(5)に記述されるプログラムがPDインストーラ1113に対応することが分かる。また、プログラム情報(3)に記述されるプログラムがSDインストーラ1114に対応し、プログラム情報(6)に記述されるプログラムがAPインストーラ1112に対応することが分かる。
ここで、図14においてプログラム情報(7)は、項目「installer」が値「installer_manager」となっており、項目「id」に示されるプログラムがインストーラ管理部1111にインストールまたは更新されることが示されている。
なお、各プログラム情報(i)において、項目「metadata_url」は、省略することができる。図14の例では、プログラム情報(3)、(4)、(5)および(7)がメタデータを持っておらず、項目「metadata_url」が省略されている。また、項目「installer」が値「installer_manager」であるプログラム情報(7)は、項目「id」の値を、当該プログラム情報(7)が示すプログラムインストーラがインストール対象とする他のプログラムのプログラム情報における項目「installer」の値と対応する値とするとよい。
インストーラ管理部1111は、プログラム情報の一覧を動的サーバ40から受け取ると、総数jの各プログラム情報(i)に対し、図10のフローチャートのステップS102〜ステップS110の処理に従い、以下のステップS213〜ステップS220の処理を実行する。
すなわち、インストーラ管理部1111は、図10のステップS103に従いi番目のプログラム情報(i)について、メタデータを含むか否かを判定する。プログラム情報(i)に項目「metadata_url」が記述される場合に、当該プログラム情報(i)がメタデータを含むと判定する。インストーラ管理部1111は、プログラム情報(i)がメタデータを含むと判定した場合、プログラム情報(i)の項目「metadata_url」に記述されるメタデータの取得先のURLに従い、例えば静的サーバ41に対してメタデータを要求する(ステップS213)。静的サーバ41は、この要求に応じて、メタデータをインストーラ管理部1111に送信する(ステップS214)。
図14の例では、プログラム情報(1)は、項目「metadata_url」が記述されており、メタデータを含んでいることが分かる。インストーラ管理部1111は、静的サーバ41に対し、このプログラム情報(1)内の項目「metadata_url」の値「https://example.com/mfp_modela_printer_pcl/metadata.json」に示されるURLのメタデータを要求する。
ここで、メタデータについて説明する。図15および図16は、第1の実施形態に係るメタデータの構成の例を示す。メタデータは、対応するインストーラの種類によって形式が定められる。図15は、サブ機器の識別情報が記述されるメタデータの例である。図15に例示されるメタデータは、例えば、PDインストーラ1113やSDインストーラ1114といった、外部機器を制御するためのドライバのインストーラに適用できる。
ここで、サブ機種について説明する。サブ機種は、1の機種特定情報を持つ外部機器において、仕様が微小に異なるため複数の機種に分けられた各機種を指す。例えば、プリンタ装置やMFPでは、フィニッシャなど部分の構成が少し異なる程度の仕様の差異がある複数の機種が1の機種特定情報(PnP−IDなど)を持つことがある。また、この1の機種特定情報を持つ複数の機種を、1のドライバプログラムでサポートすることがある。さらに、ドライバプログラムのインストール時にこの複数の機種から選択された機種に応じて、UIの構成を変更したい場合がある。
図15の例では、1の機種特定情報に示されるメタデータにおいて、行番号「2」の行に記述される項目「model_names」により、当該行の括弧「[」から対応する括弧「]」の間にサブ機種を識別するための識別情報(サブ機種識別情報と呼ぶ)が記述されることが示される。サブ機種識別情報は、この括弧「[」および「]」の間に複数を記述することができる。PDインストーラ1113やSDインストーラ1114は、1のプログラムオブジェクトとしては1つであるが、当該プログラムオブジェクトに対応するプログラム情報の記述に従いこのサブ機種識別情報を含むメタデータを参照することで、1の機種特定情報を用いて複数のサブ機種を識別することができる。
図16は、アプリケーションプログラムのインストールに関する情報が記述されるメタデータの例を示す。図16に例示されるメタデータは、アプリケーションプログラムのインストールを行うAPインストーラ1112に適用できる。アプリケーションプログラムは、インストールされる際に、OS110が管理する管理領域に対して所定の情報が格納される。図16に例示されるメタデータは、このOS110の管理領域に格納するための情報が記述される。例えば、APインストーラ1112は、このメタデータを含むプログラム情報が示すアプリケーションプログラムをクライアントPC10にインストールする際に、このメタデータに記述される各情報に基づき、OS110の管理情報に初期設定を書き込む。
なお、OS110の管理領域は、例えばOS110が米マイクロソフト社が提供するWindows(登録商標)である場合、レジストリを適用できる。
図11の説明に戻り、インストーラ管理部1111は、プログラム情報(i)に従い、インストール可能なプログラムの一覧をAPインストーラ1112、PDインストーラ1113およびSDインストーラ1114に対して要求する(ステップS215〜ステップS220)。
例えば、インストーラ管理部1111は、プログラム情報(i)の項目「installer」が値「application_installer」であれば、当該プログラム情報(i)に対応するインストーラがAPインストーラ1112であると判定する。したがって、インストーラ管理部1111は、APインストーラ1112に対して、プログラム情報の各項目「id」、「name」、「version」、「date」、「size」、「installer」および「download_url」の情報を渡して、インストール可能なプログラムの一覧を要求する(ステップS215)。インストーラ管理部1111は、プログラム情報(i)が項目「metadata_url」を含む場合は、ステップS213およびステップS214で取得したメタデータも、APインストーラ1112に渡す。
APインストーラ1112は、渡された各情報に基づき、インストール可能なプログラムのリストをインストーラ管理部1111に返す(ステップS216)。この例では、APインストーラ1112は、メタデータが渡されている場合であっても、プログラム情報の項目「name」に記述される情報をインストール可能なプログラムの情報としてインストーラ管理部1111に返す。
より具体的には、図14の例において行番号「49」〜「58」の行に記述されるプログラム情報(6)の項目「installer」が値「application_installer」とされ、このプログラム情報に対応するインストーラがAPインストーラ1112であることが示される。インストーラ管理部1111は、この項目「installer」の値に基づき、このプログラム情報の各項目の値をAPインストーラ1112に渡す。APインストーラ1112は、インストール可能なプログラムの情報として、プログラム情報の項目「name」の値「MFP Management Utility」を、そのままインストーラ管理部1111に返す。
また例えば、インストーラ管理部1111は、プログラム情報(i)の項目「installer」が値「printer_driver_installer」であれば、当該プログラム情報(i)に対応するインストーラがPDインストーラ1113であると判定する。したがって、インストーラ管理部1111は、PDインストーラ1113に対して、プログラム情報の各項目「id」、「name」、「version」、「date」、「size」、「installer」および「download_url」の情報を渡して、インストール可能なプログラムの一覧を要求する(ステップS217)。インストーラ管理部1111は、プログラム情報(i)に項目「metadata_url」が記述されている場合は、ステップS213およびステップS214で取得したこのプログラム情報(i)に対応するメタデータも、PDインストーラ1113に渡す。
PDインストーラ1113は、渡された各情報に基づき、インストール可能なプログラムのリストをインストーラ管理部1111に返す(ステップS218)。PDインストーラ1113は、メタデータが渡されている場合、メタデータに記述されるサブ機種識別情報を取得し、取得したサブ機種識別情報をインストール可能なプログラムの情報としてインストーラ管理部1111に返す。
より具体的には、図14の例において行番号「2」〜「11」の行に記述されるプログラム情報(1)の項目「installer」が値「printer_driver_installer」とされ、このプログラム情報に対応するインストーラがPDインストーラ1113であることが示される。インストーラ管理部1111は、この項目「installer」の値「printer_driver_installer」に基づき、このプログラム情報の各項目の値をPDインストーラ1113に渡す。また、この例では、プログラム情報(1)に項目「metadata_url」が記述されているので、インストーラ管理部1111は、ステップS213およびステップS214により取得した当該プログラム情報に対応するメタデータを、さらにPDインストーラ1113に渡す。
PDインストーラ1113は、インストーラ管理部1111からプログラム情報と共にメタデータが渡された場合、メタデータにおける項目「model_names」の記述に基づきサブ機種識別情報を取得する。例えば、PDインストーラ1113が図15に例示したメタデータを渡された場合、項目「model_names」について括弧「[」および「]」に挟まれた部分に記述される値「MFP Model A type 1 Printer Driver PCL」、「MFP Model A type 2 Printer Driver PCL」および「MFP Model A type 3 Printer Driver PCL」を、インストール可能なプログラムの情報としてインストーラ管理部1111に返す。
さらに例えば、インストーラ管理部1111は、プログラム情報(i)の項目「installer」が値「scanner_driver_installer」であれば、SDインストーラ1114に対して、プログラム情報の各項目「id」、「name」、「version」、「date」、「size」、「installer」および「download_url」の情報を渡して、インストール可能なプログラムの一覧を要求する(ステップS219)。インストーラ管理部1111は、プログラム情報(i)に項目「metadata_url」が記述されている場合は、ステップS213およびステップS214で取得したメタデータも、SDインストーラ1114に渡す。
SDインストーラ1114は、渡された各情報に基づき、インストール可能なプログラムのリストをインストーラ管理部1111に返す(ステップS220)。SDインストーラ1114は、メタデータが渡されている場合、メタデータに記述されるサブ機種識別情報を取得し、取得したサブ機種識別情報をインストール可能なプログラムの情報としてインストーラ管理部1111に返す。
より具体的には、図14の例において行番号「22」〜「30」の行に記述されるプログラム情報の項目「installer」が値「scanner_driver_installer」とされ、このプログラム情報に対応するインストーラがSDインストーラ1114であることが示される。インストーラ管理部1111は、この項目「installer」の値に基づき、このプログラム情報の各項目の値をSDインストーラ1114に渡す。
この例では、プログラム情報(3)に項目「metadata_url」が記述されていないので、SDインストーラ1114は、プログラム情報(3)の項目「name」の値「MFP Model A Scanner Driver」を、インストール可能なプログラムの情報としてそのままインストーラ管理部1111に渡す。
インストーラ管理部1111は、上述のステップS213〜ステップS220の処理を、プログラム情報一覧に含まれる全てのプログラム情報(i)について実行する。このとき、ステップS213およびステップS214、ステップS215およびステップS216、ステップS217およびステップS218、ならびに、ステップS219およびステップS220の各組の処理は、図10のフローチャートにおけるステップS102〜ステップS110の処理に従い、プログラム情報(i)の記述に基づき選択的に実行される。
なお、プログラム情報(i)の項目「installer」が値「installer_manager」であれば、当該プログラム情報(i)がAPインストーラ1112、PDインストーラ1113およびSDインストーラ1114といった、インストーラを対象としている。この場合、インストーラ管理部1111は、図10のフローチャートにおけるステップS106およびステップS107の処理に従い、インストーラの更新処理を行う。
一例として、図14の行番号「59」〜「67」の行に記述されるプログラム情報(7)は、項目「installer」が値「installer_manager」とされ、このプログラム情報(7)がインストーラに対応することが示される。プログラム情報(7)がAPインストーラ1112、PDインストーラ1113およびSDインストーラ1114のうち何れのインストーラに対応するかは、例えば項目「id」や項目「name」の値に基づき判定することができる。図14の例では、プログラム情報(7)において項目「id」および「name」がそれぞれ値「printer_driver_installer」および「Printer Driver Installer」となっており、当該プログラム情報(7)がPDインストーラ1113に対応することが分かる。
インストーラ管理部1111は、プログラム情報(7)の項目「installer」と、項目「id」および「name」の値に基づきこのプログラム情報(7)がPDインストーラ1113に対応すると判定した場合、プログラム情報(7)に基づきPDインストーラ1113を更新するか否かを判定する(ステップS222)。例えば、インストーラ管理部1111は、後述する方法により、クライアントPC10に既にインストールされているPDインストーラ1113のバージョン情報と、プログラム情報(7)の項目「version」の値に示されるバージョン情報とを比較する。インストーラ管理部1111は、比較の結果、プログラム情報(7)の項目「version」に示されるバージョン情報が、既にインストールされているPDインストーラ1113のバージョン情報よりも新しいバージョンを示している場合に、PDインストーラ1113の更新を実行する。
この場合、インストーラ管理部1111は、プログラム情報(7)の項目「download_url」の値「https://example.com/printer_driver_installer/object.zip」に従い、静的サーバ41に対してPDインストーラ1113を更新するためのプログラムオブジェクトを要求する(ステップS223)。静的サーバ41は、この要求に応じてPDインストーラ1113を更新するためのプログラムオブジェクトをインストーラ管理部1111に返す(ステップS224)。
インストーラ管理部1111は、PDインストーラ1113を更新するためのプログラムオブジェクトを取得すると、クライアントPC10上でのPDインストーラ1113の動作を停止させる(ステップS225)。そして、インストーラ管理部1111は、ステップS224で取得したプログラムオブジェクトを用いたインストール処理を実行し、PDインストーラ1113を更新する(ステップS226)。この例では、インストーラ管理部1111は、プログラムオブジェクトを用いて新たなPDインストーラ1113を生成し、生成したPDインストーラ1113により既にインストールされているPDインストーラ1113を上書きすることで、PDインストーラ1113の更新を行う。
インストーラ管理部1111は、PDインストーラ1113の更新が完了すると、更新されたPDインストーラ1113を起動させる(ステップS227)。
このステップS222〜ステップS227で説明したインストーラの更新処理は、ユーザには不可視の状態で実行される。また、このインストーラの更新処理は、ステップS213〜ステップS220のインストール可能なプログラムの一覧を取得する処理と並列的に実行させることが可能である。
一方、インストーラ管理部1111は、プログラム情報一覧に含まれる全てのプログラム情報(i)についてステップS213〜ステップS220の処理が終了したと判定すると、ステップS216、ステップS218およびステップS220で取得したインストール可能なプログラムの一覧から、更新不要、すなわちインストールの実行が不要なプログラムを削除する(図10のステップS111参照)。
インストーラ管理部1111は、インストール可能なプログラムの一覧に含まれる各プログラムの情報およびバージョン情報を、プログラム情報一覧から取得する。また、インストーラ管理部1111は、APインストーラ1112、PDインストーラ1113およびSDインストーラ1114によりクライアントPC10に既にインストールされている各プログラムの情報およびバージョン情報を取得する。プログラムの情報としては、プログラム情報一覧における項目「name」の情報を用いることができる。インストール済みのプログラムについては、項目「name」の情報およびバージョン情報は、所定の記憶領域、例えばOS110の管理領域またはインストーラ111が管理する記憶領域に記憶されているものとする。
なお、プログラム情報(i)からメタデータにより参照されるサブ機種については、項目「model_names」の情報を、プログラムの識別情報として用いることができる。
インストーラ管理部1111は、インストール済みの各プログラムと、インストール可能なプログラムの一覧に含まれる各プログラムとについて、項目「name」の情報が互いに対応するプログラム間でバージョン情報を比較する。インストーラ管理部1111は、比較の結果、インストール可能なプログラムの一覧に含まれる各プログラムのうち、インストール済みの対応するプログラムに対してバージョンが古いか、または、バージョンが一致するプログラムを、更新不要のプログラムであると判定する。インストーラ管理部1111は、インストール可能なプログラムの一覧から、更新不要のプログラムの情報を削除する。
また、インストーラ管理部1111は、インストール可能なプログラムの一覧に含まれる各プログラムのうち、クライアントPC10に未だインストールされていないプログラムについては、インストール可能なプログラムの一覧に残す。
図17を用いて、第1の実施形態に係る、インストーラ管理部1111によるインストール対象のプログラムの判定方法についてより具体的に説明する。インストーラ管理部1111は、図17に例示されるように、各プログラムについて、導入済みバージョンと最新バージョンとを比較して、当該プログラムのインストールが可であるか、不要であるかを判定する。
図17において、項目「プログラム」は、図14のプログラム情報一覧に含まれる各プログラム情報と、プログラム情報に含まれるメタデータから参照される各サブ機種識別情報とを示す。項目「導入済みバージョン」は、クライアントPC10にインストール済みの対応するプログラムのバージョン情報を示す。項目「最新バージョン」は、動的サーバ40から取得した各プログラム情報に含まれるバージョン情報を示す。また、項目「判断結果」は、インストーラ管理部1111によるプログラムの更新(インストール)が可(YES)であるか、不要(NO)であるかの判定結果を示す。
なお、導入済みバージョンの値は、例えば、そのプログラムがインストーラ管理部1111の制御に従いクライアントPC10にインストールされた際に、プログラムの識別情報と関連付けてインストーラ管理部1111が自身の管理する記憶領域や、OS110の管理領域に記憶しているものとする。
図17において、1〜3行目は、図14におけるプログラム情報(1)に記述されるメタデータを参照して得られる3のサブ機種識別情報に関して、それぞれ導入済みバージョンおよび最新バージョンのバージョン情報が示されている。これら3のサブ機種識別情報の最新バージョンのバージョン情報は、当該プログラム情報(1)に対応するプログラムオブジェクトのバージョン情報の値「1.2.0.0」が共通して用いられている。また、クライアントPC10には、3のサブ機種識別情報のうち2番目のサブ機種識別情報に対応する、バージョン情報の値「1.1.0.0」のドライバプログラムのみがインストールされている。
ここで、1番目および3番目のサブ機種識別情報に対応するドライバプログラムは、クライアントPC10にインストールされていない。また、3のサブ機種識別情報のうちインストール済みの2番目のサブ機種識別情報に対応するドライバプログラムの導入済みバージョンの値「1.1.0.0」は、新バージョンの値「1.2.0.0」よりも古いバージョンを示している。したがって、インストーラ管理部1111は、これら3のサブ機種識別情報それぞれのドライバプログラムは、プログラムの更新またはインストールが可であると判定する。
図17において、第4行目〜第6行目は、図14におけるプログラム情報(3)〜(5)について、それぞれ導入済みバージョン情報および最新バージョン情報が示されている。この例では、プログラム情報(3)〜(5)に対応する各ドライバプログラムは、既にクライアントPC10にインストールされており、インストール済みの各ドライバプログラムの導入済みバージョンは、それぞれ値「1.0.0.0」、「1.0.0.0」および「2.1.0.0」となっている。これに対して、プログラム情報(3)〜(5)に記述される各ドライバプログラムの最新バージョンは、それぞれ値「1.0.0.0」、「1.0.0.0」および「2.1.0.0」であり、現バージョン情報と一致する。したがって、インストーラ管理部1111は、これらプログラム情報(3)〜(5)に対応する各ドライバプログラムのクライアントPC10へのインストールが不要であると判定する。
図17において、第7行目および第8行目は、図14におけるプログラム情報(6)および(7)について、それぞれ導入済みバージョンおよび最新バージョンのバージョン情報が示されている。この例では、プログラム情報(6)に対応するプログラム(アプリケーションプログラム)は、クライアントPC10にインストールされていない。また、プログラム情報(7)に対応するプログラム(PDドライバ1113)は、最新バージョンが値「2.0.0.0」であるのに対し、クライアントPC10に既にインストールされている当該プログラムの導入済みバージョンは、値「1.0.0.0」であり、最新バージョンよりも古いバージョンである。したがって、インストーラ管理部1111は、これらプログラム情報(6)および(7)に対応する各プログラムのクライアントPC10へのインストールが可であると判定する。
図11の説明に戻り、インストーラ管理部1111は、更新またはインストール不要のプログラムの情報が削除されたインストール可能なプログラムの一覧の情報の情報をUI部1110に渡し、インストール可能なプログラムの一覧の表示をUI部1110に対して指示する(ステップS221)。UI部1110は、この指示に応じて、インストーラ管理部1111から渡された情報に基づきインストール可能なプログラムの一覧表示画面を作成し、表示部101に渡す。
図18は、第1の実施形態に係る、インストール可能なプログラムの一覧表示画面の例を示す。図18において、一覧表示画面210は、表示領域211とボタン216とが配置される。また、表示領域211は、リスト表示部212と、現バージョン表示部213と、新バージョン表示部214と、選択入力部215とが配置される。
リスト表示部212は、ステップS221でインストーラ管理部1111から渡されたインストール可能なプログラムの一覧に含まれるプログラムのリストが表示される。現バージョン表示部213および新バージョン表示部214は、それぞれ、リスト表示部212に表示されるプログラムの導入済みバージョンと、最新バージョンとが表示される。リスト表示部212に表示されるプログラムのうち、クライアントPC10にインストールされていないプログラムについては、図18に例示するように、未インストールを示す情報を現バージョン表示部213に表示させると好ましい。選択入力部215は、リスト表示部212に表示されるプログラムを選択する。この例では、選択入力部215は、チェックボックスが適用されている。ボタン216は、操作することで選択入力部215に対する選択入力が確定される。
図18の例では、上述した図17において判断結果が「YES」となっているプログラムのリストがリスト表示部212に表示されている。ここで、上述したように、ステップS222〜ステップS227におけるインストーラの更新処理はユーザに対して不可視の状態で実行される。そのため、例えばAPインストーラ1112、PDインストーラ1113およびSDインストーラ1114といったインストーラがインストール可であっても、当該インストーラの情報は、リスト表示部212に表示されない。
図11の説明に戻り、一覧表示画面210に応じたユーザ操作により、インストールを実行するプログラムが選択され、選択したプログラムのインストールがUI部1110に対して指示される(ステップS228)。UI部1110は、この指示に応じて、選択されたプログラムを示す情報をインストーラ管理部1111に渡し、選択されたプログラムのインストールの実行をインストーラ管理部1111に指示する(ステップS229)。
インストーラ管理部1111は、この指示に応じて、選択されたプログラム毎にプログラム情報(i)を参照して、インストールの対象となるプログラム情報(i)における項目「download_url」の値に従い静的サーバ41に対してプログラムオブジェクトを要求する(ステップS230)。静的サーバ41は、この要求に応じてプログラムオブジェクトをインストーラ管理部1111に送信する(ステップS231)。
インストーラ管理部1111は、静的サーバ41から送信されたプログラムオブジェクトについて、APインストーラ1112、PDインストーラ1113およびSDインストーラ1114のうち、インストール対象となっているプログラム情報(i)の項目「installer」の値に応じたインストーラに対して、インストール処理を実行させる。
例えば、インストーラ管理部1111は、インストール対象となっているプログラム情報(i)における項目「installer」の値がAPインストーラ1112を示す値「application_installer」である場合、静的サーバ41から取得したプログラムオブジェクトによるインストール処理を、APインストーラ1112に指示する(ステップS232)。APインストーラ1112は、この指示に応じて、当該プログラム情報(i)の各項目の値を参照して、当該プログラムオブジェクトによるインストール処理を実行する(ステップS233)。OS110がWindows(登録商標)の場合、このインストール処理は、レジストリの初期設定を含む。
また、APインストーラ1112は、インストール対象となっているプログラム情報(i)が図16に示したようなメタデータを含む場合、メタデータに記述される情報に従いOS110の管理領域に対して初期設定を書き込む処理も行う。APインストーラ1112は、インストール処理が完了すると、処理が完了した旨をインストーラ管理部1111に通知する(ステップS234)。
また例えば、インストーラ管理部1111は、インストール対象となっているプログラム情報(i)における項目「installer」の値がPDインストーラ1113を示す値「printer_driver_installer」である場合、静的サーバ41から取得したプログラムオブジェクトによるインストール処理を、PDインストーラ1113に指示する(ステップS235)。PDインストーラ1113は、この指示に応じて、当該プログラム情報(i)の各項目の値を参照して、当該プログラムオブジェクトによるインストール処理を実行する。PDインストーラ1113は、インストール処理が完了すると、その旨をインストーラ管理部1111に通知する(ステップS236)。
同様に、インストーラ管理部1111は、インストール対象となっているプログラム情報(i)における項目「installer」の値がSDインストーラ1114を示す値「scanner_driver_installer」である場合、静的サーバ41から取得したプログラムオブジェクトによるインストール処理を、SDインストーラ1114に指示する(ステップS237)。SDインストーラ1114は、この指示に応じて、当該プログラム情報(i)の各項目の値を参照して、当該プログラムオブジェクトによるインストール処理を実行する。SDインストーラ1114は、インストール処理が完了すると、その旨をインストーラ管理部1111に通知する(ステップS238)。
インストーラ管理部1111は、ステップS229で指示された全てのプログラムについてインストール完了の通知を取得すると、インストール処理が完了した旨をUI部1110に通知する(ステップS240)。UI部1110は、この通知に応じて、インストール処理の完了を示す完了通知画面を作成し、表示部101に渡す。
図19は、第1の実施形態に係る完了通知画面の例を示す。図19において、完了通知画面220は、表示領域221とボタン224とが配置される。また、表示領域221は、リスト表示部222と、バージョン表示部223とが配置される。
リスト表示部222は、上述のステップS234、ステップS236およびステップS238においてインストール処理の完了通知を取得したプログラムのリストが表示される。なお、例えばAPインストーラ1112、PDインストーラ1113およびSDインストーラ1114といったインストーラの更新処理が行われた場合であっても、更新されたインストーラの情報は、リスト表示部222に表示されない。バージョン表示部223は、リスト表示部222に表示される各プログラムのバージョン情報が表示される。ボタン224は、操作することで一連のインストール処理が終了される。
(第2の実施形態)
次に、第2の実施形態について説明する。上述した第1の実施形態では、インストーラ111が既に対応している種類のプログラムについて、インストールまたは更新を実行していた。これに対して、第2の実施形態では、インストーラ111が未対応の種類のプログラムのインストールを実行可能としている。
なお、第2の実施形態において、情報処理システム、クライアントPC10およびインストーラ111の構成は、上述した第1の実施形態で図1〜図6などを用いて説明した構成をそのまま適用可能なので、ここでの説明を省略する。また、以下では、適宜、「インストーラ111が未対応の種類のプログラム」を「新たな種類のプログラム」と呼び、新たな種類のプログラムをインストールするために用いるインストーラを、「新たな種類のインストーラ」と呼ぶ。
図20は、第2の実施形態に係るインストール処理を示す一例のフローチャートである。この図20のフローチャートによる各処理は、インストーラ111により実行される。なお、図20において、上述した図10のフローチャートと共通する処理には同一の符号を付して、詳細な説明を省略する。具体的には、図20のフローチャートは、図10のフローチャートに対してステップS1200〜ステップS1203の処理が追加されている。
インストーラ111は、図10のフローチャートと同様にしてステップS100でプログラム情報一覧を動的サーバ40から取得する。そして、インストーラ111は、ステップS102〜ステップS110の処理を、プログラム情報一覧に含まれるプログラム情報(i)毎に実行する。
インストーラ111は、ステップS105で、プログラム情報(i)が示すプログラムがインストーラであるか否かを判定する。インストーラ111は、プログラム情報(i)が示すプログラムがインストーラではないと判定した場合、上述と同様にして、処理をステップS109に移行させる。
インストーラ111は、ステップS109で、プログラム情報(i)に示されるインストーラに対してプログラム情報(i)を渡し、インストール可能なプログラムの情報の取得を行う。ここで、プログラム情報(i)に係るプログラムが新たな種類のプログラムである場合、インストーラ111は、新たな種類のプログラムをインストールするための新たな種類のインストーラを含んでいないことになる。この場合、インストーラ111は、例えば、プログラム情報(i)に含まれる表示名(項目「name」の値)を抽出して、インストール可能なプログラムの情報として取得する。
一方、インストーラ111は、プログラム情報(i)が示すプログラムがインストーラであると判定した場合、処理をステップS1200に移行させる。ステップS1200で、インストーラ111は、プログラム情報(i)が示すインストーラがクライアントPC10に既に導入済みのインストーラであるか否かを判定する。
例えば、インストーラ111は、プログラム情報(i)における項目「installer」の値を参照し、この値がインストーラ111に既に含まれる各インストーラに対応するか否かを判定する。インストーラ111は、項目「installer」の値がインストーラ111に既に含まれる各インストーラに対応する場合、プログラム情報(i)が示すインストーラ111がクライアントPC10に既に導入済みのインストーラであると判定する。
インストーラ111は、プログラム情報(i)が示すインストーラが導入済みのインストーラであると判定した場合、処理をステップS106に移行させ、プログラム情報(i)が示すインストーラを取得し、ステップS107で、取得したインストーラによりこの導入済みのインストーラを更新する。そして、処理をステップS108に移行させる。
一方、インストーラ111は、プログラム情報(i)が示すインストーラが未導入のインストーラ、すなわち新たな種類のインストーラであると判定した場合、処理をステップS108に移行させる。すなわち、インストーラ111は、この段階では、新たな種類のインストーラの取得およびインストールを行わない。
インストーラ111は、ステップS102〜ステップS110の処理を、プログラム情報一覧に含まれる全てのプログラム情報(i)について実行し、処理をステップS111に移行させる。ステップS111で、インストーラ111は、上述と同様にして、更新不要プログラムをユーザ提示用のインストール可能なプログラムのリストから削除する。インストーラ111は、次のステップS112で、更新不要プログラムが削除されたインストール可能なプログラムのリストをユーザに提示する。インストーラ111は、例えば図18に示した一覧表示画面210を表示部101により表示させて、インストール可能なプログラムのリストをユーザに提示する。このインストール可能なプログラムのリストは、新たな種類のプログラムの情報を含むことができる。
次のステップS1201で、インストーラ111は、提示したインストール可能なプログラムのリストから、インストール対象のプログラムをユーザが選択したか否かを判定する。インストーラ111は、例えば、一覧表示画面210においてインストールを指示するボタン216が操作された場合に、ユーザによる選択が行われたと判定する。インストーラ111は、ユーザによる選択が行われていないと判定すると、処理をステップS1201に戻す。
インストーラ111は、ユーザがインストール対象のプログラムを選択したと判定した場合、処理をステップS1202に移行させる。ステップS1202で、インストーラ111は、ユーザに選択されたプログラムのインストールに、新たな種類のインストーラが必要か否かを判定する。インストーラ111は、新たな種類のインストーラが必要ではないと判定した場合、処理をステップS113に移行させる。
例えば、インストーラ111は、選択された各プログラムについて、それぞれ対応するプログラム情報の項目「installer」の値を取得する。インストーラ111は、取得した値がインストーラ111に含まれる各インストーラ1112、1113および1114のうち何れを示しているかを調べる。その結果、インストーラ111は、取得した値が各インストーラ1112、1113および1114のうち何れも示していないとされた場合に、当該プログラム情報が対応するプログラムが新たな種類のプログラムであって、インストールには新たな種類のインストーラが必要であると判定する。
インストーラ111は、ステップS1202で、新たな種類のインストーラが必要であると判定した場合、処理をステップS1203に移行させる。ステップS1203で、インストーラ111は、新たな種類のインストーラを取得し、取得したインストーラのインストールを実行する。
インストーラ111は、新たな種類のインストーラを、例えば以下の方法で取得する。インストーラ111は、プログラム情報一覧に含まれる全てのプログラム情報から、項目「installer」が値「installer_manager」である第1のプログラム情報を選択し、選択した第1のプログラム情報から項目「id」の値を取得する。インストーラ111は、取得した項目「id」の値が、新たな種類のプログラムに対応する第2のプログラム情報の項目「installer」の値に対応する場合に、第1のプログラム情報が、第2のプログラム情報が対応する新たな種類のプログラムをインストールするための新たな種類のインストーラに対応すると判定する。そして、インストーラ111は、第1のプログラム情報の記述に従い新たな種類のインストーラを取得し、取得した新たな種類のインストーラをクライアントPC10にインストールする。
ステップS113で、インストーラ111は、ユーザに選択されたプログラムをクライアントPC10にインストールする。この場合、新たな種類のインストーラが既にインストールされているので、新たな種類のプログラムのインストール処理も実行可能となっている。インストーラ111は、選択された全てのプログラムのインストールが完了すると、図20のフローチャートによる一連の処理を終了させる。
第2の実施形態に係るインストール処理について、より具体的な例を用いて説明する。インストーラ111は、上述と同様に、それぞれアプリケーションプログラム、プリンタドライバプログラムおよびスキャナドライバプログラムをインストールするインストーラ1112、1113および1114を、初期状態において含んでいるものとする。
図21は、第2の実施形態の処理を説明するための、新たな種類のプログラムのプログラム情報と、新たな種類のインストーラのプログラム情報とを含むプログラム情報一覧の例を示す。図21の例では、プログラム情報一覧は、行番号「2」〜「10」の行において、括弧「{」および「}」に挟まれてプログラム情報(1)が記述され、行番号「11」〜「19」の行にプログラム情報(2)が記述されている。
図21において、プログラム情報(1)は、ポートモニタプログラム(以下、ポートモニタと呼ぶ)に関するもので、項目「id」が値「portmonitor_filter_a」とされてプログラムの種類が示され、項目「name」が値「PortMonitor Filter A」となっている。また、項目「installer」が値「portmonitor_installer」とされ、このプログラム情報(1)に対応するプログラムのインストールには、ポートモニタインストーラ(以下、PMインストーラと呼ぶ)が用いられることが分かる。
図21において、プログラム情報(2)は、項目「installer」が値「installer_manager」となっており、プログラムのインストールを行うインストーラであることが示される。また、プログラム情報(2)は、項目「id」が値「portmonitor_installer」とされ、ポートモニタのインストールに対応するPMインストーラであることが示される。
PMインストーラは、初期状態のインストーラ111には導入されていない、新たな種類のインストーラである。また、この新たな種類のインストーラであるPMインストーラにインストールされるプログラム情報(1)に対応するポートモニタは、新たな種類のプログラムである。
インストーラ111は、この図21に例示するプログラム情報一覧をステップS100で取得したものとする。この場合、インストーラ111は、プログラム情報(1)については、図20のフローチャートにおいて、ステップS105でプログラム情報(1)が示すプログラムがインストーラではないと判定し、ステップS109で、プログラム情報(1)についてインストール可能なプログラムの情報を取得する。
この例では、プログラム情報(1)は、メタデータを含んでいないため、インストーラ111は、プログラム情報(1)に含まれる表示名、すなわち項目「name」の値「PortMonitor Filter A」を、インストール可能なプログラムの情報として取得する。そして、ステップS110で、インストーラ111は、ステップS109で取得したプログラムの情報を、ユーザに提示するための、インストール可能なプログラムのリストに登録する。
一方、インストーラ111は、プログラム情報(2)については、図20のステップS105でプログラム情報(2)が示すプログラムがインストーラであると判定する。そして、インストーラ111は、処理をステップS1200に移行させて、プログラム情報(2)が示すインストーラがインストーラ111に導入済みか否かを判定する。図21の例では、プログラム情報(2)が示すインストーラがPMインストーラである。したがって、インストーラ111は、プログラム情報(2)が示すインストーラがインストーラ111に導入されていないと判定し、図20のステップS106およびステップS107の処理をスキップして、処理をステップS108に移行させる。
プログラム情報一覧に含まれる全てのプログラム情報(i)についての処理が終了すると、インストーラ111は、処理をステップS111に移行させる。ステップS111で、インストーラ111は、ユーザ提示用のインストール可能なプログラムのリストから、更新不要のプログラムを削除する。
具体的には、インストーラ111は、プログラム情報(1)およびプログラム情報(2)のそれぞれについて、図22に例示されるように導入済みバージョンと最新バージョンとを比較する。この場合、プログラム情報(1)が示す新たな種類のプログラムは、クライアントPC10にインストールされていないので、インストール可とされる。同様に、プログラム情報(2)が示す新たな種類のインストーラは、インストーラ111に導入されていないので、インストール可とされる。
インストーラ111は、次のステップS112で、インストール可能なプログラムのリストを表示部101により表示させる。この例の場合、図23に示されるように、一覧表示画面210内のリスト表示部212に対して、新たな種類のプログラムを示す情報として、プログラム情報(1)の項目「name」に記述される値「PortMonitor Filter A」が表示される。また、プログラム情報(2)に対応するプログラムはインストーラであるため、リスト表示部212には表示されない。
図23の一覧表示画面210において、新たな種類のプログラムであるポートモニタを示す「PortMonitor Filter A」がチェックされ、ボタン216が操作されると、処理がステップS1202に移行される。上述したステップS1200の判定に従いステップS106およびステップS107がスキップされているので、ポートモニタをインストールするためのPMインストーラは、未だインストーラ111に導入されていない。したがって、インストーラ111は、ステップS1203で、プログラム情報(2)の記述に従い静的サーバ41からPMインストーラを取得してインストールし、インストーラ111に導入する。
図24は、第2の実施形態に係る、図6で示したインストーラ111に、新たな種類のインストーラであるPMインストーラを追加してインストールした例を示す。なお、図24において、上述した図6と共通する部分には同一の符号を付して、詳細な説明を省略する。
図24において、インストーラ111aは、図6のインストーラ111におけるUI部1110およびインストーラ管理部1111と、APインストーラ1112、PDインストーラ1113およびSDインストーラ1114とを含む構成に対し、さらに、PMインストーラ1115が追加されて導入されている。インストーラ111aは、PMインストーラ1115が追加導入されたことで、図20のステップS113において、クライアントPC10に対するポートモニタのインストールを実行することができる。
第2の実施形態によれば、インストーラ111は、プログラムのインストールに際して導入されていないインストーラが必要な場合に、未導入のインストーラを導入できるようにしている。これにより、インストーラ111の対応可能なプログラムの種類を増やすことができ、インストーラ111の機能を拡張できる。
(第3の実施形態)
次に、第3の実施形態について説明する。上述した第1および第2の実施形態では、動的サーバ40および静的サーバ41との通信は、インストーラ管理部1111のみが行っていた。これに対して、第3の実施形態では、インストーラ管理部1111に加え、各インストーラ(例えばAPインストーラ1112、PDインストーラ1113およびSDインストーラ1114)も、プログラム情報を取得するプログラム情報取得部と、プログラムを取得するプログラム取得部と、インストール処理を制御するインストール制御部との機能を備える。すなわち、第3の実施形態に係る各インストーラは、動的サーバ40および静的サーバ41と通信を行い、プログラム情報、メタデータ、プログラムオブジェクトなどを取得することができる。これにより、各インストーラは、インストール対象のプログラムをインストールするためにさらに他のプログラムが必要である場合に、当該他のプログラムを容易に取得でき、プログラムのインストール処理を効率的に実行可能となる。
図25は、第3の実施形態に係るインストーラの一例の構成を示す。図25において、インストーラ111bは、図6を用いて説明した第1の実施形態に係るインストーラ111と同様に、UI部2110とインストーラ管理部2111と各インストーラとを含む。図25の例では、各インストーラは、APインストーラ2112と、PDインストーラ2113と、SDインストーラ2114と、PMインストーラ2115とを含んでいる。
なお、以下では、特に記載の無い限り、あるプログラムをインストールする際に必要となる他のプログラムを、関連プログラムと呼ぶ。また、インストーラ111bが包括する各インストーラを、適宜、プログラムインストーラと呼んで、インストーラ111bと区別する。図25の例では、APインストーラ2112、PDインストーラ2113、SDインストーラ2114およびPMインストーラ2115を総称する際に、プログラムインストーラの用語を用いる。
第3の実施形態に係るインストーラ111bが含むUI部2110、インストーラ管理部2111および各プログラムインストーラは、図6に示したインストーラ111が含む各プログラムインストーラと、一部の機能が異なる。
例えば、PDインストーラ2113は、対応する機種のプリンタドライバプログラム(以下、プリンタドライバ)のクライアントPC10に対するインストール処理を実行する。より具体的には、PDインストーラ2113は、プリンタドライバをクライアントPC10にインストールし、インストールしたプリンタドライバがクライアントPC10において使用する印刷ポートを設定する。また、PDインストーラ2113は、論理プリンタキューの作成と、インストールされたプリンタドライバに関する情報のクライアントPC10への登録処理などを行う。
SDインストーラ2114は、対応する機種のスキャナドライバプログラム(以下、スキャナドライバ)をクライアントPC10にインストールする処理を実行する。より具体的には、SDインストーラ2114は、スキャナドライバをクライアントPC10にインストールし、インストールしたスキャナドライバがクライアントPC10において使用するスキャンポートを設定する。
また、PMインストーラ2115は、インストール対象のクライアントPC10における各種ポートをモニタするポートモニタプログラム(ポートモニタ)をインストールする。ポートモニタは、クライアントPC10においてポートを利用する関連プログラム(例えばプリンタドライバやスキャナドライバ)がインストールされる際に、事前にインストールされている必要がある。
さらに、第3の実施形態に係るPDインストーラ2113、SDインストーラ2114およびPMインストーラ2115は、各ドライバまたはモニタをインストールするクライアントPC10と同一セグメント内のネットワーク22に接続される各外部機器のディスカバリと、ディスカバリにより検出された外部機器の機器情報の取得と、クライアントPC10のOS情報の取得と、動的サーバ40に対するクエリ発行と、静的サーバ41に対するメタデータおよびプログラムオブジェクト(ドライバプログラム、モニタプログラム本体)の取得要求とを実行する。
なお、APインストーラ2112は、クライアントPC10に対する通常のアプリケーションプログラム(以下、アプリケーション)のインストール処理を実行する。APインストーラ2112がインストールを行うアプリケーションは、上述の第1の実施形態において説明した、プロジェクションアプリケーション、電子黒板ビューアアプリケーション、画像形成装置操作アプリケーションおよび通信設定ツールを含む。
上述したプリンタドライバ、スキャナドライバおよびポートモニタは、それぞれOSにより規定される場所および方法に従いクライアントPC10にインストールされる点で、通常のアプリケーションとは区別される。例えば、通常のアプリケーションは、OSにより指定される場所および方法でインストールされるようにしてもよいし、当該アプリケーション独自の場所および方法でインストールされるようにもできる。
第3の実施形態に係るインストーラ111bは、各プログラムインストーラ(図25の例ではAPインストーラ2112、PDインストーラ2113、SDインストーラ2114およびPMインストーラ2115)を予め含まない状態としてクライアントPC10にインストールすることができる。図26は、第3の実施形態に係る、各プログラムインストーラを含まないインストーラ111bの一例の構成を示す。図26において、インストーラ111bは、UI部2110およびインストーラ管理部2111のみが含まれている。
ところで、インストーラ管理部2111がプログラムインストーラのインストールを行う際に、インストール対象のプログラムインストーラが他のプログラムインストーラを必要とする場合がある。第3の実施形態では、このような場合において、インストール対象のプログラムインストーラが当該他のプログラムインストーラを取得し実行させることを可能としている。これにより、インストール処理に係るユーザの負担が軽減され、また、より柔軟なインストール処理が可能となる。
一例として、図26の各プログラムインストーラを含まない状態のインストーラ111bによって、あるプリンタ装置に対応するプリンタドライバをクライアントPC10にインストールする場合について考える。この場合、インストーラ管理部2111は、UI部2110からの指示に応じて、当該プリンタドライバをクライアントPC10にインストールするためのPDインストーラ2113を、ネットワーク30を介して取得する。また、インストーラ管理部2111は、当該プリンタドライバに対応するユーティリティプログラムをインストールするためのAPインストーラ2112を、ネットワーク30を介して取得する。
インストーラ管理部2111は、取得したAPインストーラ2112を起動させてアプリケーションをクライアントPC10にインストールする。
また、インストーラ管理部2111は、取得したPDインストーラ2113を起動させて、プリンタドライバのクライアントPC10に対するインストール処理を開始する。このとき、上述したように、プリンタドライバのインストールの際には、当該プリンタドライバが利用するポートの設定を予め行う必要がある。そこで、第3の実施形態においては、PDインストーラ2113は、ポートのモニタを行うポートモニタをインストールするためのPMインストーラ2115をネットワーク30を介して取得して起動させ、ポートモニタをクライアントPC10にインストールさせる。PDインストーラ2113は、ポートモニタのインストール処理の完了後、プリンタドライバのインストールを実行する。
図27は、第3の実施形態に係る、図26の状態のインストーラ111bに対して上述のプリンタドライバのインストール処理を実行した結果の例を示す。プリンタドライバのインストールに伴い、APインストーラ2112およびPDインストーラ2113と共に、PMインストーラ2115がクライアントPC10にインストールされ、インストーラ111b内に含まれている。
このように、第3の実施形態では、PDインストーラ2113によるプリンタドライバのインストール処理の際に、プリンタドライバの関連プログラムが自動的にインストールされる。そのため、ドライバプログラムのインストール処理をより容易に行うことができ、複数の異なるドライバプログラムをインストールする場合であっても、インストール処理を簡便に実行することが可能となる。
次に、図28および図29のフローチャートを用いて、第3の実施形態に係るインストール処理をより詳細に説明する。
先ず、図28のフローチャートによる処理について説明する。図28は、インストーラ管理部2111による各プログラムインストーラ(例えばAPインストーラ2112、PDインストーラ2113、SDインストーラ2114およびPMインストーラ2115のうち1以上のインストーラ)のインストール処理の例を示す。図28のフローチャートにおける各処理は、インストーラ111b、より詳細には、インストーラ111bに含まれるUI部2110およびインストーラ管理部2111により実行される。
ステップS300で、インストーラ管理部2111は、ネットワーク22を介した外部機器の探索および動的サーバ40に対するクエリを実行し、クライアントPC10にインストール可能なプログラムインストーラを示すインストーラ情報の一覧を取得する。
インストーラ111bにおいて、インストーラ管理部2111は、変数iを値0に初期化する(ステップS301)。なお、ステップS300で取得したインストーラ情報の総数を値jとする。
以降、ステップS302〜ステップS305の処理は、ステップS300で取得した全てのインストーラ情報について実行される。なお、以下では、i番目のインストーラ情報をインストーラ情報(i)として記述する。
インストーラ管理部2111は、ステップS302で値iを1だけインクリメントし、ステップS303で、インストーラ情報(i)がメタデータ(メタ情報)を含むか否かを判定する。インストーラ管理部2111は、インストーラ情報(i)がメタデータを含まないと判定した場合、処理をステップS305に移行させる。一方、インストーラ管理部2111は、インストーラ情報(i)がメタデータを含むと判定した場合、処理をステップS304に移行させ、インストーラ情報(i)の記述に基づき、静的サーバ41からメタデータを取得する。メタデータを取得したインストーラ管理部2111は、処理をステップS305に移行させる。
ステップS305で、インストーラ管理部2111は、変数iとインストーラ情報の総数の値jとが一致するか否かを判定する。インストーラ管理部2111は、変数iと値jとが一致する場合、ステップS300で取得された全てのインストーラ情報について処理が終了したと判断して、処理をステップS306に移行させる。一方、インストーラ管理部2111は、変数iと値jとが一致しないと判定した場合、処理をステップS302に戻して変数iを1だけインクリメントして、次のインストーラ情報(i)に対する処理を実行する。
ステップS306で、インストーラ管理部2111は、インストーラ情報の一覧を、UI部2110により表示部101により表示させてユーザに提示する。ユーザは、このインストーラ情報の一覧から、クライアントPC10にインストールしたい1つ以上のプログラムインストーラを選択することが可能であるものとする。
次のステップS307で、インストーラ管理部2111は、ユーザに提示したインストーラ情報の一覧に対するユーザによるユーザの選択入力を待機する。インストーラ管理部2111は、UI部2110から通知が無く、ユーザによる選択入力がなされていないと判定した場合、処理をステップS307に戻す。一方、インストーラ管理部2111は、UI部2110からの通知に従いユーザによる選択入力があったと判定した場合、処理をステップS308に移行させる。
インストーラ管理部2111は、変数kを値0に初期化する(ステップS308)。なお、ステップS307においてユーザに選択されたインストーラ情報の総数を値lとする。インストーラ管理部2111は、UI部2110からのユーザ選択入力の通知によりこの選択されたインストーラ情報の総数の値lを受け取る。
以降、ステップS309〜ステップS312の処理は、ステップS307でUI部2110から通知された全てのインストーラ情報について実行される。
インストーラ管理部2111は、ステップS309で値kを1だけインクリメントし、次のステップS310で、k番目のインストーラ情報の記述に基づき、k番目のインストーラ情報に対応するインストーラプログラムのプログラムオブジェクト(k)を静的サーバ41から取得する。次のステップS311で、インストーラ管理部2111は、ステップS310で取得したプログラムオブジェクト(k)によるインストーラプログラムをクライアントPC10にインストールする。
次のステップS312で、インストーラ管理部2111は、変数kとインストーラ情報の総数の値lとが一致するか否かを判定する。変数kと値lとが一致しないと判定した場合、インストーラ管理部2111は、処理をステップS309に戻す。一方、変数kと値lとが一致すると判定した場合、インストーラ管理部2111は、ステップS307でUI部2110から通知された全てのインストーラ情報について処理が終了したと判断し、図28のフローチャートによる一連の処理を終了させる。
図29のフローチャートによる処理について説明する。図29は、各インストーラによる、関連プログラムのインストール処理の例を示す。この図29のフローチャートによる処理は、上述した図28のフローチャートによる処理によりクライアントPC10にインストールされた各プログラムインストーラのうち、ドライバプログラムをインストールするためのプログラムインストーラが1つ起動されることで開始される。図25の例では、例えばPDインストーラ2113およびSDインストーラ2114のうち何れかが起動されることで、図29のフローチャートの処理が開始される。以下では、起動されたプログラムインストーラを対象プログラムインストーラとする。
ステップS320で、対象プログラムインストーラは、ネットワーク22を介した外部機器の探索および動的サーバ40に対するクエリを実行し、対象プログラムインストーラに対応するドライバプログラムの情報であるドライバ情報を取得する。対象プログラムインストーラが複数のドライバプログラムに対応する場合、対象プログラムインストーラは、ドライバ情報の一覧を取得する。次のステップS321で、対象プログラムインストーラは、ステップS320で取得されたドライバ情報一覧に含まれるドライバ情報がメタデータを持っている場合、静的サーバ41からそのメタデータを取得する。
次のステップS322で、対象プログラムインストーラは、ステップS320で取得したドライバ情報の一覧を、UI部2110により表示部101に表示させてユーザに提示する。ユーザは、このドライバ情報の一覧から、クライアントPC10にインストールしたい1以上のドライバプログラムを選択可能であるものとする。
次のステップS323で、対象プログラムインストーラは、ユーザに提示したドライバ情報の一覧に対するユーザによるユーザの選択入力を待機する。対象プログラムインストーラは、UI部2110から通知が無く、ユーザによる選択入力がなされていないと判定した場合、処理をステップS323に戻す。一方、対象プログラムインストーラは、UI部2110からの通知に従いユーザによる選択入力があったと判定した場合、処理をステップS324に移行させる。
対象プログラムインストーラは、変数mを値0に初期化する(ステップS324)。なお、ステップS323においてユーザに選択されたドライバ情報(ドライバプログラム)の総数を値nとする。対象プログラムインストーラは、UI部2110からのユーザ選択入力の通知により、この選択されたドライバ情報の総数の値nを受け取る。
次のステップS325で、対象プログラムインストーラは、ステップS323において選択されたドライバ情報に基づき、自身のアップデートが必要か否かを判定する。例えば、対象プログラムインストーラは、自身のインストーラ情報に含まれるバージョン情報と、選択されたドライバ情報に含まれるバージョン情報とを比較して、自身のアップデートが必要か否かを判定する。対象プログラムインストーラは、自身のアップデートが不要であると判定した場合、処理をステップS329に移行させる。
一方、対象プログラムインストーラは、ステップS325で、自身のアップデートが必要であると判定した場合、インストーラ管理部2111に対して自身のアップデートを指示する。処理はステップS326に移行され、インストーラ管理部2111は、動的サーバ40から対象プログラムインストーラのアップデートプログラムの情報を取得する。さらに、インストーラ管理部2111は、当該アップデートプログラム情報がメタデータを含む場合、そのメタデータを静的サーバ41から取得する(ステップS327)。
次のステップS328で、インストーラ管理部2111は、現在の対象プログラムインストーラの動作を停止させ、当該対象プログラムインストーラのアップデートを実行し、更新された対象プログラムインストーラをクライアントPC10にインストールする。
例えば、インストーラ管理部2111は、ステップS326およびステップS327で取得したアップデートプログラム情報およびメタデータに基づき、静的サーバ41からアップデートプログラムのプログラムオブジェクトを取得する。インストーラ管理部2111は、現在の対象プログラムインストーラの動作を停止させた後、取得したアップデートプログラムのプログラムオブジェクトによるプログラムインストーラをクライアントPC10にインストールし、更新された対象プログラムインストーラとする。
インストーラ管理部2111は、対象プログラムインストーラのアップデート処理が完了すると、新たな対象プログラムインストーラを起動させる。
以降、ステップS329〜ステップS341の処理は、ステップS323でUI部2110から通知された全てのインストーラ情報について実行される。
対象プログラムインストーラは、ステップS329で値mを1だけインクリメントし、次のステップS330で、ドライバ情報(m)のドライバプログラムが関連プログラムを必要とするか否かを判定する。対象プログラムインストーラは、関連プログラムが不要であると判定した場合、処理をステップS339に移行させる。
対象プログラムインストーラは、ステップS330で、ドライバ情報(m)のドライバプログラムが関連プログラムを必要とすると判定した場合、処理をステップS331に移行させ、当該関連プログラムがクライアントPC10にインストール済みであるか否かを判定する。対象プログラムインストーラは、関連プログラムがインストール済みであると判定した場合、処理をステップS339に移行させる。対象プログラムインストーラは、関連プログラムが未だインストールされていないと判定した場合、処理をステップS332に移行させる。
ステップS332で、対象プログラムインストーラは、関連プログラムをインストールするためのインストーラプログラム(関連プログラムインストーラと呼ぶ)がクライアントPC10にインストール済みであるか否かを判定する。対象プログラムインストーラは、関連プログラムインストーラがインストール済みであると判定した場合、処理をステップS335に移行させる。対象プログラムインストーラは、関連プログラムインストーラが未だインストールされていないと判定した場合、処理をステップS333に移行させる。
ステップS333で、対象プログラムインストーラは、例えば静的サーバ41から関連プログラムインストーラを取得する。例えば、対象プログラムインストーラは、動的サーバ40に対するクエリを実行して関連プログラムインストーラの情報の一覧を取得し、取得した関連プログラムインストーラ情報に基づき静的サーバ41からメタデータを取得する。そして、対象プログラムインストーラは、取得した関連プログラムインストーラ情報およびメタデータに基づき静的サーバ41から関連プログラムインストーラのプログラムオブジェクトを取得する。
次のステップS334で、対象プログラムインストーラは、ステップS333で取得した関連プログラムインストーラのプログラムオブジェクトにより、関連プログラムインストーラをクライアントPC10にインストールする。対象プログラムインストーラは、インストールが完了すると、関連プログラムインストーラを起動させる。
起動された関連プログラムインストーラは、次のステップS335で、動的サーバ40に対してクエリを実行して、関連プログラムのプログラム情報を取得する。関連プログラムインストーラは、関連プログラムのプログラム情報に基づき、当該関連プログラムがメタデータを持っている場合、そのメタデータを静的サーバ41から取得する(ステップS336)。
次のステップS337で、関連プログラムインストーラは、取得した関連プログラムのプログラム情報とメタデータとに基づき静的サーバ41から当該関連プログラムのプログラムオブジェクトを取得する。そして、関連プログラムインストーラは、次のステップS338で、取得した関連プログラムのプログラムオブジェクトにより関連プログラムをクライアントPC10にインストールする。
次のステップS339で、対象プログラムインストーラは、ドライバ情報(m)のドライバプログラムのプログラムオブジェクトを静的サーバ41から取得する。そして、次のステップS340で、対象プログラムインストーラは、ステップS339で取得したプログラムオブジェクトにより、ドライバ情報(m)のドライバプログラムをクライアントPC10にインストールする。
次のステップS341で、対象プログラムインストーラは、変数mとユーザに選択されたドライバ情報の総数の値nとが一致するか否かを判定する。変数mと値nとが一致しないと判定した場合、対象プログラムインストーラは、処理をステップS329に戻す。一方、変数mと値nとが一致すると判定した場合、対象プログラムインストーラは、ステップS323でUI部2110から通知された全てのドライバ情報について処理が終了したと判断し、図29のフローチャートによる一連の処理を終了させる。
図30Aおよび図30Bは、第3の実施形態に係るインストール処理における情報処理システム全体での処理の例を示すシーケンス図である。なお、図30Aおよび図30Bにおいて、上述した図1、図5および図25と共通する部分には同一の符号を付して、詳細な説明を省略する。また、図30Aおよび図30Bに記載の符号「A」〜「I」は、図30Aおよび図30B間で対応する符号に処理が移行することを示している。
以下では、クライアントPC10にプリンタドライバを新規にインストールする場合を例にとって説明する。ここで、クライアントPC10には、当該プリンタドライバをインストールするためのPDインストーラ2113が未だインストールされていないものとする。また、当該プリンタドライバをインストールする際には、ポートモニタが必要とされ、ポートモニタおよびポートモニタをインストールするPMインストーラ2115も、クライアントPC10にはインストールされていないものとする。
例えば、クライアントPC10に対するユーザ操作により、インストーラ111bの起動が指示される。この起動指示は、インストーラ111bのUI部2110に通知される(ステップS400)。UI部2110は、インストーラ管理部2111に対して、クライアントPC10と同一セグメント内のネットワーク22に接続される外部機器のディスカバリを指示する(ステップS401)。インストーラ管理部2111は、ステップS402で、この指示に応じて、ネットワーク30に対して外部機器探索の動作(ディスカバリ)を行う。
インストーラ管理部2111は、外部機器探索による検出結果を受け取ると(ステップS403)、検出された外部機器(画像機器201、202、…)に対して機種特定情報を要求する(ステップS404)。インストーラ管理部2111は、この要求に応じて各外部機器から送信された機種特定情報を受け取る(ステップS405)。インストーラ管理部2111は、受け取った各外部機器の機種特定情報に基づき、外部機器を選択するための機器一覧の表示をUI部2110に対して指示する(ステップS406)。UI部2110は、この指示に応じて、例えば上述した機器一覧表示画面を作成し、表示部101に渡す。機器一覧表示画面としては、図12に示した機器一覧表示画面200を適用することができる。
機器一覧表示画面に応じたユーザ操作により、機種特定情報が選択されると(ステップS407)、UI部2110は、選択された機種特定情報に対応するインストーラ情報を取得するように、インストーラ管理部2111に指示する(ステップS408)。インストーラ管理部2111は、この指示に従い、OS110に対してOS情報の取得を要求する(ステップS409)。OS110は、この要求に応じてOS情報を返す(ステップS410)。
次に、インストーラ管理部2111は、ステップS404およびステップS405で取得した機種特定情報と、ステップS409およびステップS410で取得したOS情報とに基づき、ステップS411で、インストーラ情報の一覧を取得するためのクエリを作成して動的サーバ40に送信する(送信手段、第1の処理手段)。動的サーバ40は、ステップS412で、このクエリに従いデータベースを検索し、検索して得られたインストーラ情報の一覧をインストーラ管理部2111に返す(第1の特定手段)。
図31は、第3の実施形態に適用可能な、インストーラ管理部2111が作成しステップS411で動的サーバ40に送信されるクエリの一例を示す。図31に示されるクエリにおいて、第3行目〜第10行目は、図13に示したクエリの第2行目〜第9行目と同等であり、機器特定情報「MFP Model A」と、OS情報とが記述されている。一方、図31のクエリでは、図13のクエリに対して第2行目の項目「installer」が追加されており、この項目「installer」の値として、インストーラ管理部2111自身を示す値「installer_manager」が記述されている。この項目「installer」の記述により、動的サーバ40は、インストーラとしてインストーラ管理部2111が指定されているプログラムインストーラを選択して取得することができる。
動的サーバ40は、第1の実施形態と同様に、このクエリに従い図8を用いて説明したデータベースを検索し、クエリに記述される各情報に合致するレコードを抽出する。動的サーバ40は、クエリに従い複数のレコードが抽出された場合、抽出された複数のレコードの各項目の情報を、レコード毎のインストーラ情報の一覧としてインストーラ管理部2111に送信する(第1の提供手段)。
図32は、第3の実施形態に係る、動的サーバ40から送信されるインストーラ情報一覧の例を示す。図32に示されるように、インストーラ情報一覧は、図14のプログラム情報と同様に、行番号「1」および「38」の行の最も外側の括弧「[」および「]」に挟まれる内側の各括弧「{」および「}」内に、それぞれ1個のインストーラ情報が記述される。図32の例では、4つのインストーラ情報(1)〜(4)が記述されている。
また、図32の例では、それぞれのインストーラ情報は、図14に示した各プログラム情報から項目「metadata_url」が省略された構成となっている。これに限らず、図14と同様に、図32のインストーラ情報に対して項目「metadata_url」を追加してもよい。
さらに、図32の例では、各インストーラ情報の最初の行の(第3行目、第12行目、第21行目および第30行目)の項目「id」は、プログラムの種類が示され、この例では、それぞれプログラムインストーラを示す値が記述されている。例えば、図32において、第1のインストーラ情報(1)では、項目「id」が値「printer_driver_installer」とされ(第3行目参照)、PDインストーラ2113のインストーラ情報であることが示されている。また、第2のインストーラ情報(2)では、項目「id」が値「portmonitor_installer」とされ(第12行目参照)、PMインストーラ2115のインストーラ情報であることが示されている。
以下同様に、第3および第4のインストーラ情報(3)および(4)では、それぞれAPインストーラ2112およびSDインストーラ2114のインストーラ情報であることが示されている(第21行目および第30行目)。
また、各インストーラ情報(1)〜(4)において、それぞれ項目「installer」が値「installer_manager」とされており、各インストーラ情報(1)〜(4)に記述されるプログラムインストーラがインストーラ管理部2111にインストールされることが示される。
ステップS413で、インストーラ管理部2111は、上述したステップS412で取得したインストーラ情報一覧に基づき、静的サーバ41に対してメタデータを要求する。静的サーバ41は、この要求に応じて、メタデータをインストーラ管理部2111に送信する(ステップS414)。なお、図32の例では、インストーラ情報一覧にメタデータの所在を示す情報が含まれていないため、インストーラ管理部2111は、メタデータの要求を行わない。
インストーラ管理部2111は、ステップS412で取得されたインストーラ情報一覧と、ステップS414で取得されたメタデータとに基づき、インストール可能なプログラムインストーラの一覧の表示をUI部2110に対して指示する(ステップS415)。UI部2110は、この指示に応じて、インストーラ管理部2111から渡された情報に基づきインストール可能なプログラムインストーラの一覧表示画面を生成し、表示部101に渡す。
図33は、第3の実施形態に係る、インストール可能なプログラムインストーラの一覧表示画面の例を示す。図33において、一覧表示画面2210は、表示領域2211とボタン2216とが配置される。また、表示領域2211は、リスト表示部2212と、現バージョン表示部2213と、新バージョン表示部2214と、選択入力部2215とが配置される。
リスト表示部2212は、ステップS415でインストーラ管理部2111から渡されたインストール可能なプログラムインストーラの一覧に含まれるプログラムインストーラのリストが表示される。現バージョン表示部2213および新バージョン表示部2214は、それぞれ、リスト表示部2212に表示されるプログラムインストーラの導入済みバージョンと、最新バージョンとが表示される。リスト表示部2212に表示されるプログラムインストーラのうち、クライアントPC10にインストールされていないプログラムインストーラについては、例えば未インストールを示す情報が現バージョン表示部2213に表示される。
選択入力部2215は、リスト表示部2212に表示されるプログラムインストーラから、インストール対象のプログラムインストーラを選択するために設けられる。この例では、選択入力部2215は、チェックボックスが適用されている。ボタン2216は、操作することで選択入力部2215に対する選択入力が確定される。
ここでは、図33に例示されるように、PDインストーラ2113と、APインストーラ2112とがインストール対象のプログラムインストーラとして選択されているものとする。
図30Aの説明に戻り、一覧表示画面2210に応じたユーザ操作により、インストールを実行するプログラムインストーラが選択され、選択したプログラムインストーラのインストールがUI部2110に対して指示される(ステップS416)。UI部2110は、この指示に応じて、選択されたプログラムインストーラを示す情報をインストーラ管理部2111に渡し、選択されたプログラムインストーラのインストールの実行をインストーラ管理部2111に指示する(ステップS417)。
インストーラ管理部2111は、この指示に応じて、選択されたプログラムインストーラ毎にインストーラ情報(i)を参照して、インストールの対象となるインストーラ情報(i)における項目「download_url」の値に従い静的サーバ41に対してプログラムオブジェクトを要求する(ステップS418)。静的サーバ41は、この要求に応じてプログラムオブジェクトをインストーラ管理部2111に送信する(ステップS419)。この例では、一覧表示画面2210で選択されたPDインストーラ2113およびAPインストーラ2112のプログラムオブジェクトがそれぞれインストーラ管理部2111に送信される。
インストーラ管理部2111は、ステップS419で取得したプログラムオブジェクトにより、PDインストーラ2113のインストールと、APインストーラ2112のインストールとを実行する(ステップS420およびステップS421)。
ステップS400からこのステップS421までの処理が、上述した図28のフローチャートの処理に対応する。
ステップS422以下に、PDインストーラ2113が起動された場合の処理について説明する。上述したように、PDインストーラ2113がドライバプログラムをインストールする際には、関連プログラムとしてポートモニタプログラムが必要とされるが、クライアントPC10には、当初、ポートモニタプログラムと、ポートモニタプログラムをインストールするためのPMインストーラ2115がインストールされていない。
ステップS422で、例えばクライアントPC10に対するユーザ操作により、PDインストーラ2113の起動が指示され、起動指示がPDインストーラ2113に通知される(ステップS423)。この通知に応じて、PDインストーラ2113に対して外部機器のディスカバリが指示される(ステップS424)。PDインストーラ2113は、ディスカバリ指示に従い、クライアントPC10と同一セグメント内のネットワーク22に接続される外部機器探索を実行する(ステップS425)。
PDインストーラ2113は、外部機器探索による検出結果を受け取ると(ステップS426)、検出された外部機器(画像機器201、202、…)に対して機種特定情報を要求する(ステップS427)。PDインストーラ2113は、この要求に応じて各外部機器から送信された機種特定情報を受け取る(ステップS428)。PDインストーラ2113は、受け取った各外部機器の機種特定情報に基づき、機器一覧情報を生成する(ステップS429)。
PDインストーラ2113は、生成した機器一覧情報をUI部2110に渡し、外部機器を選択するための機器一覧の表示をUI部2110に指示する(ステップS430)。UI部2110は、この指示に応じて、機器一覧表示画面を作成し、表示部101に渡す。ここでの機器一覧表示画面は、例えば図12を用いて説明した機器一覧表示画面200と同様の画面を適用できる。
機器一覧表示画面に応じたユーザ操作により、機種が選択されると(ステップS431)、UI部2110は、選択された機種に対応するドライバ情報を取得するように、PDインストーラ2113に指示する(ステップS432)。PDインストーラ2113は、この指示に従いドライバ情報の取得処理を開始する(ステップS433)。PDインストーラ2113は、先ず、OS110に対してOS情報の取得を要求する(ステップS434)。OS110は、この要求に応じてOS情報を返す(ステップS435)。
次に、PDインストーラ2113は、ステップS427およびステップS428で取得した機種特定情報と、ステップS434およびステップS435で取得したOS情報とに基づき、ドライバ情報の一覧を取得するためのクエリを作成して動的サーバ40に送信する(ステップS436)。動的サーバ40は、ステップS437で、このクエリに従いデータベースを検索し、検索して得られたドライバ情報の一覧をPDインストーラ2113に返す(第2の特定手段)。
図34は、第3の実施形態に適用可能な、PDインストーラ2113が作成しステップS436で動的サーバ40に送信されるクエリの一例を示す。図34のクエリでは、図13で示したクエリに対して第2行目の項目「installer」が追加されており、この項目「installer」の値として、PDインストーラ2113自身を示す値「printer_driver_installer」が記述されている。これにより、動的サーバ40は、インストーラとしてPDインストーラ2113が指定されているプログラムインストーラを選択して取得することができる。
図35は、第3の実施形態に係る、ステップS437でPDインストーラ2113に返される、ドライバ情報の一覧の例を示す。図35において、ドライバ情報一覧は、図14で示したドライバ情報一覧に対応し、各項目「id」、「name」、「version」、「date」、「size」、「installer」、「metadata_url」および「download_url」を含む。
PDインストーラ2113は、ステップS437で動的サーバ40から返されたプログラム情報一覧における項目「metadata_url」の値に従い、静的サーバ41に対してメタデータを要求する(ステップS438)。静的サーバ41は、この要求に応じてメタデータをPDインストーラ2113に送信する(ステップS439)。
図36は、第3の実施形態に適用可能な、ステップS439でPDインストーラ2113に送信されるメタデータの例を示す。図36の例では、メタデータは、上述した図15と同様に、サブ機器の識別情報が記述される(第2行目〜第6行目)。図36のメタデータは、図15の構成に対して、項目「requirement」が追加されている。
項目「requirement」は、このメタデータに対応するプログラムを利用するために必要な情報が記述される。図36の例では、項目「requirment」は、それぞれプログラムの種類を示す値「printer_driver_installer」と値「portmonitor_filter_a」とを含む。さらに、値「printer_driver_installer」は、値「version: 2.0.0.0」と関連付けられ、値「portmonitor_filter_a」は、値「version: 1.0.0.0」と、値「installer: portmonitor_installer」とに関連付けられる。
すなわち、このメタデータに対応するプログラムを利用するためには、値「printer_driver_installer」と、値「printer_driver_installer」に関連付けられる値とに従い、バージョンが「2.0.0.0」以上のPDインストーラ2113が必要であることが示される。また、当該プログラムを利用するためには、値「portmonitor_filter_a」と、値「portmonitor_filter_a」に関連付けられる値に従い、関連プログラムとしてのバージョンが「1.0.0.0」以上のポートモニタフィルタプログラムと、当該ポートモニタフィルタプログラムをインストールするためのPMインストーラ2115とが必要であることが示される。
PDインストーラ2113は、ステップS435で取得したOS情報と、ステップS437で取得したドライバ情報一覧と、ステップS439で取得したメタデータとに基づき、インストール可能なドライバプログラムの一覧情報を生成する(ステップS440)。PDインストーラ2113は、生成したドライバプログラム一覧情報をUI部2110に渡し、インストールするドライバプログラムを選択するためのドライバ一覧の表示をUI部2110に指示する(ステップS441)。UI部2110は、この指示に応じて、ドライバ一覧表示画面を作成し、表示部101に渡す。
図37は、第3の実施形態に適用可能なドライバ一覧表示画面の例を示す。図37に示されるドライバ一覧表示画面2220は、上述した図35のドライバ情報一覧と、図36のメタデータとに基づく。すなわち、ドライバ一覧表示画面2220は、ドライバ情報一覧に含まれる項目「metadata_url」に従いステップS438およびステップS439で取得したメタデータ(図36参照)に記述される各サブ機器にそれぞれ対応するドライバプログラムを選択するように構成されている。
より具体的には、ドライバ一覧表示画面2220は、表示領域2221とボタン2226とが配置される。また、表示領域2221は、リスト表示部2222と、現バージョン表示部2223と、新バージョン表示部2224と、選択入力部2225とが配置される。
リスト表示部2222は、インストール可能なドライバプログラムの一覧が表示される。この例では、ステップS438およびステップS439で取得したメタデータ(図36参照)に記述される各サブ機器にそれぞれ対応するドライバプログラムが一覧で表示されている。現バージョン表示部2223および新バージョン表示部2224は、それぞれ、リスト表示部2222に表示されるドライバプログラムの導入済みバージョンと、最新バージョンとが表示される。リスト表示部2222に表示されるドライバプログラムのうち、クライアントPC10にインストールされていないドライバプログラムについては、例えば未インストールを示す情報が現バージョン表示部2223に表示される。
選択入力部2225は、リスト表示部2222に表示されるドライバプログラムから、インストール対象のプログラムインストーラを選択するために設けられる。この例では、選択入力部2225は、チェックボックスが適用されている。ボタン2226は、操作することで選択入力部2225に対する選択入力が確定される。
ここでは、図37に例示されるように、サブ機器に対応するドライバプログラムのうち1つがインストール対象のドライバプログラムとして選択されているものとする。
説明は図30Bのシーケンス図に移り、ドライバ一覧表示画面2220に応じたユーザ操作により、インストールを実行するドライバプログラムが選択され、選択したドライバプログラムのインストールがUI部2110に対して指示される(ステップS450)。UI部2110は、この指示に応じて、選択されたドライバプログラムを示す情報をPDインストーラ2113に渡し、選択されたドライバプログラムのインストールの実行をPDインストーラ2113に指示する(ステップS451)。
PDインストーラ2113は、この指示に応じて、自身のアップデートが必要か否かを確認する(ステップS452)。例えば、PDインストーラ2113は、ステップS439で取得したメタデータに含まれる、PDインストーラ2113に要求されるバージョンの情報と、自身のバージョンとを比較して、自身のアップデートの要否を判定する。
この例では、図32に示されるインストーラ情報一覧と、図36に示されるメタデータとに基づき、PDインストーラ2113自身のバージョンが「1.0.0.0」であるのに対して、選択されたドライバプログラムのインストールに際して要求されるPDインストーラ2113のバージョンが「2.0.0.0」であるため、PDインストーラ2113のアップデートが必要であることが分かる。そのため、PDインストーラ2113は、インストーラ管理部2111に対して、PDインストーラ2113自身のアップデートを要求する(ステップS453)。
インストーラ管理部2111は、PDインストーラ2113からのアップデート要求に応じて、自身に対してインストーラ情報の取得を指示する(ステップS454)。インストーラ管理部2111は、上述したステップS409〜ステップS414の処理と同様にして、OS情報を取得し(ステップS455、ステップS456)、動的サーバ40に対して図31で示したクエリを送信する(ステップS457)。動的サーバ40は、このクエリに従いデータベースを検索し、検索結果としてインストーラ情報を得る(第2の提供手段)。インストーラ管理部2111は、動的サーバ40からインストーラ情報の一覧を取得し(ステップS458)、静的サーバ41からメタデータを取得する(ステップS459、ステップS460)。
図38は、第3の実施形態に係る、ステップS458で動的サーバ40から取得するインストーラ情報一覧の例を示す。図38のインストーラ情報一覧の構成は、図32を用いて構成したインストーラ情報一覧と同様なので、ここでの詳細な説明を省略する。図38の例では、第2行目〜第10行目に項目「id」の、プログラムの種類を示す値「printer_driver_installer」と、第5行目の項目「version」と、第9行目の項目「download_url」の各値により、バージョンが「2.0.0.0」のPDインストーラ2113が項目「download_url」に記述される場所にあることが分かる。
インストーラ管理部2111は、これら取得された各値に基づき、静的サーバ41からPDインストーラ2113をアップデートするためのプログラムオブジェクトを取得する。
インストーラ管理部2111は、インストーラ情報一覧およびメタデータが取得されると、現在起動されているPDインストーラ2113を停止させる(ステップS461)。その後、インストーラ管理部2111は、静的サーバ41から取得したPDインストーラ2113をアップデートするためのプログラムオブジェクトにより、PDインストーラ2113をアップデートする。例えば、インストーラ管理部2111は、当該プログラムオブジェクトにより既存のPDインストーラ2113を上書きすることで、PDインストーラ2113のアップデートを実行する(ステップS462)。
インストーラ管理部2111は、アップデートされて更新されたPDインストーラ2113を起動させる(ステップS463)。ここで、起動されたPDインストーラ2113は、ステップS439でインストーラ管理部2111に取得されたメタデータにおける、関連プログラムを示す値「installer: portmonitor_installer」の記述(図36参照)に従い、PMインストーラ2115のインストールをインストーラ管理部2111に指示する(ステップS464)。インストーラ管理部2111は、この指示に従い、ステップS458で取得したインストーラ情報一覧に基づき、静的サーバ41からPMインストーラ2115のプログラムオブジェクトを取得する(ステップS465、ステップS466)。
図38の例では、第11行目〜第19行目に、項目「id」が値「portmonitor_installer」とされ、PMインストーラ2115に関する情報が記述されている。インストーラ管理部2111は、項目「download_url」の値に従い、静的サーバ41からPMインストーラ2115のプログラムオブジェクトを取得する。
インストーラ管理部2111は、ステップS466で取得したプログラムオブジェクトによりPMインストーラ2115をクライアントPC10にインストールする(ステップS467)。インストーラ管理部2111は、PMインストーラ2115のインストールが完了すると、インストール完了をPDインストーラ2113に通知する(ステップS468)。
PDインストーラ2113は、インストーラ管理部2111からPMインストーラ2115のインストール完了通知を受け取ると、ステップS439でPDインストーラ2113に取得されたメタデータにおける、関連プログラムを示す値「portmonitor_filter_a」の記述(図36参照)に従い、PMインストーラ2115にポートモニタのインストールを指示する(ステップS469)。PMインストーラ2115は、この指示に応じて、ポートモニタのインストール処理を開始する。
すなわち、PMインストーラ2115は、例えば上述したステップS433〜ステップS439と同様にして、ポートモニタのインストール指示に応じて、自身に対してドライバ情報の取得を指示する(ステップS470)。PMインストーラ2115は、この指示に従い、OS情報を取得し(ステップS471、ステップS472)、動的サーバ40に対してクエリを送信する(ステップS473)。
図39は、第3の実施形態に適用可能な、PMインストーラ2115が作成しステップS473で動的サーバ40に送信されるクエリの一例を示す。図39のクエリでは、図34で示したクエリの第2行目が項目「installer」から項目「id」に変更されている点を除き、図34のクエリと共通する。図39のクエリでは、この項目「id」が値「portmonitor_filter_a」とされ、このクエリにより取得するドライバ情報が一意に識別される。このように、クエリに項目「id」を指定した場合、この項目「id」の値が一致するドライバ情報がクエリの結果として返される。
PMインストーラ2115は、このクエリに応じて動的サーバ40から送信されたドライバ情報一覧を取得する(ステップS474)。図40は、第3の実施形態に係る、ステップS474で取得したドライバ情報一覧の例を示す。図40の例では、ドライバ情報一覧は、図35で示したプログラム情報一覧と同様に、各項目「id」、「name」、「version」、「date」、「size」、「installer」、「metadata_url」および「download_url」を含む。
PMインストーラ2115は、取得したドライバ情報一覧に基づき静的サーバ41からメタデータを取得する(ステップS475、ステップS476)。そして、PMインストーラ2115は、それぞれ取得したドライバ情報一覧およびメタデータに従い静的サーバ41からポートモニタのプログラムオブジェクトを取得し(ステップS477、ステップS478)、ポートモニタをPC10にインストールする(ステップS479)。
PMインストーラ2115は、ポートモニタのインストールが完了すると、インストール完了をPDインストーラ2113に通知する(ステップS480)。PDインストーラ2113は、この通知に応じて、上述したステップS436〜ステップS439で取得したドライバ情報一覧およびメタデータに基づき、静的サーバ41からプリンタドライバのプログラムオブジェクトを取得する(ステップS481、ステップS482)。そして、PDインストーラ2113は、取得したプログラムオブジェクトによりプリンタドライバをクライアントPC10にインストールする(ステップS483)。
PDインストーラ2113は、プリンタドライバのインストールが完了すると、その旨をUI部2110に通知する(ステップS484)。例えば、UI部2110は、インストール完了通知に応じて例えば表示部101によりプリンタドライバのインストール処理が完了した旨を表示させる。
ステップS484までの処理が完了した後、例えば、ユーザがクライアントPC10に搭載される文書アプリケーションプログラムにおいて、プリンタドライバ「MFP Model A type1 Printer Driver PCL」(図35および図37参照)に対して印刷要求を行ったものとする。この場合、プリンタドライバ「MFP Model A type1 Printer Driver PCL」は、当該プリンタドライバ「MFP Model A type1 Printer Driver PCL」が対応する機器で処理可能な印刷データを生成し、ステップS469〜ステップS480の処理によりインストールされたポートモニタ「Port Monitor Filer A」を用いて、対応する機器に印刷データの印刷指示を送信することが可能となる。
なお、上述の各実施形態は、本発明の好適な実施の例ではあるが、これに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。