(57)【要約】  プログラム情報取得ステップにより、プログラム情報を取得する（Ｓ６、Ｓ７）。プログラム情報は、プログラムの種類を示す情報と、プログラムの取得先を示す情報とを少なくとも含む。プログラム取得ステップにより、プログラム情報に従ってプログラムを取得する（Ｓ１１）。インストール制御ステップにより、プログラム取得ステップで取得されたプログラムのインストールを、プログラムの種類を示す情報に従って実行する（Ｓ１２）。
2016035801.tif 000002
【特許請求の範囲】
【請求項１】
端末と、前記端末がネットワークを介して接続するデバイスに対する処理を実行するための第１のプログラムの提供を行い、１以上の前記端末と前記ネットワークを介して接続可能な情報処理装置とを含むシステムであって、
前記情報処理装置は、
１以上の前記第１のプログラムを記憶し、それぞれ、前記端末によって実行されることにより、前記デバイスに関するデバイス情報を前記情報処理装置に送信し、前記情報処理装置から提供された前記第１のプログラムを前記端末にインストールするための１以上の複数の第２のプログラムを記憶する記憶手段と、
前記端末から受信した該端末に関する端末情報に基づいて、該端末に提供する前記第２のプログラムを特定する第１の特定手段と、
前記第１の特定手段によって特定された前記第２のプログラムを前記端末に提供する第１の提供手段と、
前記第２のプログラムが前記端末によって実行されることにより、該端末から受信したデバイス情報に基づいて、該端末に提供する前記第１のプログラムを特定する第２の特定手段と、
前記第２の特定手段によって特定された前記第１のプログラムを前記端末に提供する第２の提供手段と
を備え、
前記端末は、
前記情報処理装置に前記端末情報を送信する送信手段と、
前記デバイス情報を取得し、取得した該デバイス情報を前記情報処理装置に送信する処理を行う第１の処理手段と、
前記情報処理装置から提供された前記第１のプログラムを前記端末にインストールする処理を行う第２の処理手段と
を備えるシステム。
【請求項２】
前記第１の処理手段および前記第２の処理手段は、前記情報処理装置から前記端末に提供された前記第２のプログラムが該端末上で動作されることで該端末上に形成される
請求項１に記載のシステム。
【請求項３】
前記端末は、
前記情報処理装置から提供された前記第２のプログラムが、前記第１のプログラムの種類に応じて該第１のプログラムのインストールを実行するインストーラ手段の機能を前記端末に実行させるためのインストーラプログラムであり、且つ、該インストーラプログラムに対応する該インストーラ手段の機能が前記端末に含まれていない場合に、ユーザ指示に応じて該インストーラブログラムのインストールを実行する制御手段をさらに備える
請求項１または請求項２に記載のシステム。
【請求項４】
前記デバイス情報は、該デバイス情報に含まれる種類を示す情報に応じて形式が定められた、該デバイス情報に対するメタ情報を示す情報をさらに含み、
前記第１の処理手段は、
前記デバイス情報に基づき前記メタ情報を取得し、
前記第２の処理手段は、
前記第１の処理手段に取得された前記メタ情報に従い、前記情報処理装置から提供された前記第１のプログラムのインストールを実行する
ことを特徴とする請求項１乃至請求項３の何れか１項に記載のシステム。
【請求項５】
前記メタ情報は、複数の前記第１のプログラムを示す情報が含まれ、
前記第１の処理手段は、
前記メタ情報に含まれる複数の前記第１のプログラムを示す情報に基づき選択されたプログラムを取得する
請求項４に記載のシステム。
【請求項６】
前記第１のプログラムは、外部機器を制御するためのドライバの機能を前記端末に実行させるためのドライバプログラムであって、
前記メタ情報は、前記ドライバプログラムが対応する機種のサブ機種を示す情報を含み、
前記第１の処理手段は、
前記メタ情報に含まれる前記サブ機種について前記第１のプログラムを取得する
請求項４または請求項５に記載のシステム。
【請求項７】
前記デバイス情報は、プログラムのバージョンを示すバージョン情報をさらに含み、
前記第２の処理手段は、
前記第１の処理手段で取得された第１のプログラムに対応するデバイス情報に含まれる前記バージョン情報が示す第１のバージョンと、前記端末に既にインストールされている第１のプログラムのうち、該取得された第１のプログラムと対応する第１のプログラムの第２のバージョンとを比較し、該第１のバージョンが該第２のバージョンよりも新しいバージョンである場合に、該取得された第１のプログラムのインストールを実行する
請求項１乃至請求項６の何れか１項に記載のシステム。
【請求項８】
前記第２の処理手段は、
前記第１の処理手段により取得された前記デバイス情報を表示部に表示させ、該表示部の表示に応じて選択されたデバイス情報に対応する前記第１のプログラムのインストールを実行する
請求項１乃至請求項７の何れか１項に記載のシステム。
【請求項９】
前記端末は、
外部機器の機種を識別する機種識別情報と、前記端末上で動作するオペレーションシステムを識別するシステム識別情報とを取得する識別情報取得手段をさらに有し、
前記第１の処理手段は、
前記デバイス情報を前記機種識別情報と前記システム識別情報とに基づき取得し、前記機種識別情報を示す情報を表示部に表示させ、取得された前記機種識別情報のうち、該表示部の表示に応じて選択された機種識別情報に対応する該デバイス情報を取得する
請求項１乃至請求項８の何れか１項に記載のシステム。
【請求項１０】
前記デバイス情報は、前記第１のプログラムのインストールに必要な関連プログラムを示す関連プログラム情報をさらに含み、
前記第２の処理手段は、
前記関連プログラム情報に基づき取得される前記関連プログラムをインストールするための処理を実行する
請求項１に記載のシステム。
【請求項１１】
前記第２の処理手段は、
他の前記第２の処理手段から実行される
ことを特徴とする請求項１０に記載のシステム。
【請求項１２】
端末と、前記端末がネットワークを介して接続するデバイスに対する処理を実行するための第１のプログラムの提供を行い、１以上の前記端末と前記ネットワークを介して接続可能な情報処理装置とを含むシステムの情報処理方法であって、
前記端末から受信した該端末に関する端末情報に基づいて、該端末に提供する、該端末によって実行されることにより、前記デバイスに関するデバイス情報を前記情報処理装置に送信し、前記情報処理装置から提供された前記第１のプログラムを前記端末にインストールするための第２のプログラムを特定する第１の特定ステップと、
前記第１の特定ステップによって特定された前記第２のプログラムを前記端末に提供する第１の提供ステップと、
前記第２のプログラムが前記端末によって実行されることにより、該端末から受信したデバイス情報に基づいて、該端末に提供する前記第１のプログラムを特定する第２の特定ステップと、
前記第２の特定ステップによって特定された前記第１のプログラムを前記端末に提供する第２の提供ステップと、
前記情報処理装置に前記端末情報を送信する送信ステップと、
前記デバイス情報を取得し、取得した該デバイス情報を前記情報処理装置に送信する処理を行う第１の処理ステップと、
前記情報処理装置から提供された前記第１のプログラムを前記端末にインストールする処理を行う第２の処理ステップと
を備える情報処理方法。
【請求項１３】
プログラムの種類を示す情報と該プログラムの取得先を示す情報とを少なくとも含むプログラム情報を取得するプログラム情報取得ステップと、
前記プログラム情報に従いプログラムを取得するプログラム取得ステップと、
前記プログラム取得ステップで取得されたプログラムのインストールを、前記種類を示す情報に従い実行するインストール制御ステップと
をコンピュータに実行させるためのプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項１４】
前記インストール制御ステップは、
プログラムの種類に応じてプログラムのインストールを実行するインストーラ部を前記プログラム情報に含まれる種類を示す情報に従い選択し、選択した該インストーラ部に前記インストールを実行させる
請求項１３に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項１５】
前記インストール制御ステップは、
前記プログラム取得ステップで取得されたプログラムが前記インストーラ部の機能を前記コンピュータに実行させるためのインストーラプログラムである場合に、該インストーラプログラムのインストールを実行して前記インストーラ部の機能を前記コンピュータに実行可能とさせる
ことを特徴とする請求項１４に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム、情報処理方法および記憶媒体に関する。
【背景技術】
【０００２】
プリンタ装置といった画像機器をパーソナルコンピュータといった情報処理装置から使用可能とするためには、情報処理装置に対して画像機器を制御するためのドライバプログラムをインストールする必要がある。従来から、画像機器の機種識別情報と、情報処理装置のＯＳ(Operating  System)などのシステム環境情報とを収集し、収集した情報に基づきドライバプログラムを検索して取得してインストールするインストーラが知られている。【０００３】
例えば、特許文献１には、クライアントのシステム情報を取得し、取得したシステム情報と、プリンタ情報記憶部に記憶される印刷装置の固有情報とに基づき使用可能なプリンタドライバを取得し、プリンタドライバを固有情報に基づきインストールするインストール情報をクライアントに送信するようにした技術が開示されている。【０００４】
このようなインストーラを用いることで、ユーザは、画像機器と、ＯＳ(Operating  System)などの情報処理装置のシステム環境とに適したドライバプログラムのインストールを容易に実行することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、画像機器に対して、その画像機器をより便利に利用するための、例えばユーティリティプログラムといったアプリケーションプログラムが提供されることがある。このようなアプリケーションプログラムは、一般的には、ドライバプログラムとは別途に提供され、そのインストール方法も、それぞれ異なる。また、ドライバプログラムとアプリケーションプログラムは、取得先も互いに異なることが一般的であった。【０００６】
従来では、このような、インストール方法が異なる複数のプログラムを、１つのインストーラで取得しインストールすることが困難であった。そのため、ユーザは、１台の画像機器に対して、ドライバプログラムやユーティリティプログラムを一々取得し、さらに、それぞれ対応するインストーラを用いてインストールする必要があり、手順が煩雑となっていたという問題点があった。【０００７】
本発明は、上記を鑑みてなされたものであって、インストール方法の異なる複数のプログラムのインストールを容易とすることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、端末と、端末がネットワークを介して接続するデバイスに対する処理を実行するための第１のプログラムの提供を行い、１以上の端末とネットワークを介して接続可能な情報処理装置とを含むシステムであって、情報処理装置は、１以上の第１のプログラムを記憶し、それぞれ、端末によって実行されることにより、デバイスに関するデバイス情報を情報処理装置に送信し、情報処理装置から提供された第１のプログラムを端末にインストールするための１以上の複数の第２のプログラムを記憶する記憶手段と、端末から受信した端末に関する端末情報に基づいて、端末に提供する第２のプログラムを特定する第１の特定手段と、第１の特定手段によって特定された第２のプログラムを端末に提供する第１の提供手段と、第２のプログラムが端末によって実行されることにより、端末から受信したデバイス情報に基づいて、端末に提供する第１のプログラムを特定する第２の特定手段と、第２の特定手段によって特定された第１のプログラムを端末に提供する第２の提供手段とを備え、端末は、情報処理装置に端末情報を送信する送信手段と、デバイス情報を取得し、取得したデバイス情報を情報処理装置に送信する処理を行う第１の処理手段と、情報処理装置から提供された第１のプログラムを端末にインストールする処理を行う第２の処理手段とを備える。
【発明の効果】
【０００９】
本発明によれば、インストール方法の異なる複数のプログラムのインストールが容易となる効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施形態に係る情報処理システムの一例構成を示すブロック図である。
【図２】図２は、第１の実施形態に適用可能なサーバ装置の一例の構成を示すブロック図である。
【図３】図３は、第１の実施形態に係るサーバシステムの機能を説明するための一例の機能ブロック図である。
【図４】図４は、第１の実施形態に適用可能なクライアントＰＣの一例の構成を示すブロック図である。
【図５】図５は、第１の実施形態に係るクライアントＰＣの機能を説明するための一例の機能ブロック図である。
【図６】図６は、第１の実施形態に係るインストーラの機能を説明するための一例の機能ブロック図である。
【図７】図７は、第１の実施形態に係る、インストール対象のプログラム種類に応じたインストール処理を行うインストーラの機能を説明するための一例の機能ブロック図である。
【図８】図８は、第１の実施形態に係る動的サーバが有するデータベースにおけるレコードの一例の構成を示す図である。
【図９】図９は、第１の実施形態に係るインストール手順を概略的に説明するための図である。
【図１０】図１０は、第１の実施形態に係るインストール処理を示す一例のフローチャートである。
【図１１】図１１は、第１の実施形態に係るインストール処理における情報処理システム全体での処理の例を示すシーケンス図である。
【図１２】図１２は、第１の実施形態に係る機器一覧表示画面の例を示す図である。
【図１３】図１３は、第１の実施形態に適用可能な、動的サーバに送信するためのクエリの一例を示す図である。
【図１４】図１４は、第１の実施形態に係る、動的サーバから送信されるプログラム情報一覧の例を示す図である。
【図１５】図１５は、第１の実施形態に係るメタデータの構成の例を示す図である。
【図１６】図１６は、第１の実施形態に係るメタデータの構成の例を示す図である。
【図１７】図１７は、第１の実施形態に係る、インストール対象のプログラムの判定方法について説明するための図である。
【図１８】図１８は、第１の実施形態に係る、インストール可能なプログラムの一覧表示画面の例を示す図である。
【図１９】図１９は、第１の実施形態に係る完了通知画面の例を示す図である。
【図２０】図２０は、第２の実施形態に係るインストール処理を示す一例のフローチャートである。
【図２１】図２１は、第２の実施形態の処理を説明するためのプログラム情報一覧の例を示す図である。
【図２２】図２２は、第２の実施形態に係る、インストール対象のプログラムの判定方法について説明するための図である。
【図２３】図２３は、第２の実施形態に係る、インストール可能なプログラムの一覧表示画面の例を示す図である。
【図２４】図２４は、第２の実施形態に係る、新たな種類のインストーラが追加されたインストーラを説明するための図である。
【図２５】図２５は、第３の実施形態に係るインストーラの一例の構成を示すブロック図である。
【図２６】図２６は、第３の実施形態に係る、各プログラムインストーラを含まないインストーラの一例の構成を示すブロック図である。
【図２７】図２７は、第３の実施形態に係る、各プログラムインストーラを含まない状態のインストーラに対してプリンタドライバのインストール処理を実行した結果の例を示すブロック図である。
【図２８】図２８は、第３の実施形態に係るインストール処理をより詳細に説明するための一例のフローチャートである。
【図２９】図２９は、第３の実施形態に係るインストール処理をより詳細に説明するための一例のフローチャートである。
【図３０Ａ】図３０Ａは、第３の実施形態に係るインストール処理における情報処理システム全体での処理の例を示すシーケンス図である。
【図３０Ｂ】図３０Ｂは、第３の実施形態に係るインストール処理における情報処理システム全体での処理の例を示すシーケンス図である。
【図３１】図３１は、第３の実施形態に適用可能な、インストーラ管理部が作成し動的サーバに送信されるクエリの一例を示す図である。
【図３２】図３２は、第３の実施形態に係る、動的サーバから送信されるインストーラ情報一覧の例を示す図である。
【図３３】図３３は、第３の実施形態に係る、インストール可能なプログラムインストーラの一覧表示画面の例を示す図である。
【図３４】図３４は、第３の実施形態に適用可能な、ＰＤインストーラが作成し動的サーバに送信されるクエリの一例を示す図である。
【図３５】図３５は、第３の実施形態に係る、ＰＤインストーラに返されるドライバ情報の一覧の例を示す図である。
【図３６】図３６は、第３の実施形態に適用可能な、ＰＤインストーラに送信されるメタデータの例を示す図である。
【図３７】図３７は、第３の実施形態に適用可能なドライバ一覧表示画面の例を示す図である。
【図３８】図３８は、第３の実施形態に係る、動的サーバから取得するインストーラ情報一覧の例を示す図である。
【図３９】図３９は、第３の実施形態に適用可能な、ＰＭインストーラが作成して動的サーバに送信されるクエリの一例を示す図である。
【図４０】図４０は、第３の実施形態に係る、ドライバ情報一覧の例を示す図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、システム、情報処理方法および記憶媒体の実施形態を詳細に説明する。
【００１２】
（第１の実施形態）
図１は、第１の実施形態に係る情報処理システムの一例構成を示す。図１において、クライアント側におけるパーソナルコンピュータなどの情報処理装置１０（以下、クライアントＰＣ１０）と、画像機器２０1および２０2とが、ＬＡＮ(Local  Area  Network)といったネットワーク２２により互いに通信可能に接続される。図１の例では、画像機器２０1および２０2は、それぞれプリンタ装置およびＭＦＰ(Multi  Function  Printer)とされている。なお、ＭＦＰは、プリンタ機能、スキャナ機能、コピー機能およびＦＡＸ機能といった複数の機能を１の筐体で実現した、多機能画像機器である。
【００１３】
クライアントＰＣ１０は、画像機器２０1および２０2を制御するためのドライバプログラムが搭載される。クライアントＰＣ１０は、複数機能を備えるＭＦＰである画像機器２０2に対しては、機能毎にドライバが搭載される。クライアントＰＣ１０は、搭載されたドライバプログラムにより、ネットワーク２２を介して画像機器２０1および２０2を制御することができる。
【００１４】
また、クライアントＰＣ１０は、ドライバプログラムにより制御される画像機器２０1および２０2を、より便利に利用するためのアプリケーションプログラムであるユーティリティプログラムをさらに搭載することができる。なお、煩雑さを避けるため、以降、特に記載の無い限り、単にプログラムと記述した場合には、これらドライバプログラム、または、アプリケーションプログラムを指すものとする。
【００１５】
クライアントＰＣ１０は、ルータ２１を介して、例えばインターネットといった外部のネットワーク３０に接続される。ネットワーク３０に対し、動的サーバ４０および静的サーバ４１を含むサーバシステム４００が接続される。クライアントＰＣ１０は、ネットワーク３０を介してサーバシステム４００に接続し、これら動的サーバ４０および静的サーバ４１と互いに通信可能とされる。
【００１６】
静的サーバ４１は、クライアントＰＣ１０に搭載するためのドライバプログラムやアプリケーションプログラムが予め定められた格納場所に配置されて格納される。静的サーバ４１に格納されるドライバプログラムやアプリケーションプログラムは、クライアントＰＣ１０に搭載される対応するプログラムと置き換える、例えば当該プログラムに対してバージョンがより新しいドライバそのものであってもよいし、プログラムを構成するためのモジュールであってもよい。これに限らず、静的サーバ４１に格納されるプログラムは、プログラムの更新部分のみを含むモジュールであってもよい。以下では、これらプログラムや、プログラムを構成するためのモジュールを、適宜、プログラムオブジェクトと呼ぶ。
【００１７】
動的サーバ４０は、データベースを有し、外部からのクエリを受け付けてデータベースに対する検索を実行し、検索の結果として、静的サーバ４１に格納されるプログラムを示すプログラム情報を返す。プログラム情報は、当該プログラムが静的サーバ４１に格納される格納場所を示す情報（取得先情報）と、当該プログラムの種類を示す情報とを少なくとも含む。プログラム情報は、プログラム情報に対する情報であるメタ情報をさらに含むことができる。
【００１８】
なお、図１の例では、ネットワーク２２に２台の画像機器２０1および２０2が接続され、クライアントＰＣ１０がこれら画像機器２０1および２０2を制御するように示したが、これはこの例に限定されない。すなわち、クライアントＰＣ１０は、ネットワーク２２に接続される２台の画像機器２０1および２０2のうち一方のみを制御してもよいし、ネットワーク２２に対して１台の例えば画像機器２０1のみが接続されていてもよい。また、ネットワーク２２に対して３台以上の画像機器２０1、２０2、…が接続され、クライアントＰＣ１０がこの３台以上の画像機器２０1、２０2、…の一部または全てを制御可能としてもよい。
【００１９】
また、図１の例では、ネットワーク２２に対して１台のクライアントＰＣ１０が接続されているように示されているが、これはこの例に限定されない。すなわち、ネットワーク２２に対して、画像機器２０1および２０2を制御可能な複数のクライアントＰＣ１０が接続されていてもよい。
【００２０】
さらに、図１では、動的サーバ４０と静的サーバ４１とがそれぞれ個別のサーバ装置であるように示したが、これはこの例に限定されない。例えば、サーバシステム４００を１台のサーバ装置にて構成し、動的サーバ４０と静的サーバ４１とをこのサーバ装置上の別個の機能として構成してもよい。サーバシステム４００を複数のサーバ装置を連携させて構成し、動的サーバ４０と静的サーバ４１とをサーバシステム４００が含む複数のサーバ装置に分散させて構成してもよい。さらに、静的サーバ４１は、ドライバプログラムやアプリケーションプログラムの格納場所が一意に指定可能であれば、一連のシステムとして構成する必要は無い。
【００２１】
図２は、動的サーバ４０および静的サーバ４１を個別のサーバ装置で構成した場合の、動的サーバ４０および静的サーバ４１に共通して適用可能なサーバ装置の一例の構成を示す。ここでは、説明のため、特に記載の無い限り、動的サーバ４０および静的サーバ４１を、サーバ装置として纏めて説明する。
【００２２】
図２に示されるサーバ装置は、ＣＰＵ(Central  Processing  Unit)４１１と、ＲＯＭ(Read  Only  Memory)４１２と、ＲＡＭ４１３と、ストレージ４１４と、通信Ｉ／Ｆ４１５とを含み、これら各部がバス４１０により互いに通信可能に接続されている。
【００２３】
ストレージ４１４は、例えばハードディスクドライブや、フラッシュメモリといった不揮発性の半導体メモリであって、ＣＰＵ４１１上で動作するプログラムや各種データが格納される。また、ストレージ４１４は、当該サーバ装置が動的サーバ４０である場合には、上述したデータベースを記憶し、当該サーバ装置が静的サーバ４１である場合には、上述したドライバプログラムやアプリケーションプログラムがプログラムオブジェクトとして記憶される。
【００２４】
ＣＰＵ４１１は、ＲＯＭ４１２やストレージ４１４から読み出したプログラムに従い、ＲＡＭ４１３をワークメモリとして用いて、サーバ装置の全体の動作を制御する。通信Ｉ／Ｆ４１５は、ＣＰＵ４１１の指示に従い、ネットワーク３０を介した通信を制御する。
【００２５】
サーバ装置の構成は、図２の例に限られず、例えば一般的なコンピュータと同様に、ＣＰＵ４１１により生成された画面情報に従った画面をディスプレイに表示させる表示制御部や、外部機器との間でのデータの入出力を行うデータＩ／Ｆ、ユーザ入力を受け付ける入力デバイスをさらに含んでいてもよい。
【００２６】
図３は、第１の実施形態に係るサーバシステム４００の機能を説明するための一例の機能ブロック図である。サーバシステム４００は、第１記憶部４２０と、第２記憶部４２１と、通信部４２２と、第１特定部４２３と、第１提供部４２４と、第２特定部４２５と、第２提供部４２６とを含む。
【００２７】
これら第１記憶部４２０、第２記憶部４２１、通信部４２２、第１特定部４２３、第１提供部４２４、第２特定部４２５および第２提供部４２６のうち、第１特定部４２３、第１提供部４２４、第２特定部４２５および第２提供部４２６は、動的サーバ４０が保持または生成する情報とし、例えばクライアントＰＣ１０上における対応するプログラムの実行によりそれぞれの機能が実現される。また、第１記憶部４２０および第２記憶部４２１は、それぞれ、動的サーバ４０および静的サーバ４１の各ＣＰＵ４１１上で動作するプログラムにより構成される。
【００２８】
これに限らず、これら第１記憶部４２０、第２記憶部４２１、通信部４２２、第１特定部４２３、第１提供部４２４、第２特定部４２５および第２提供部４２６を、動的サーバ４０および静的サーバ４１の各ＣＰＵ４１１上で動作するプログラムにより構成されるようにしてもよい。
【００２９】
第１記憶部４２０は、静的サーバ４１において、クライアントＰＣ１０に搭載するための第１のプログラムである複数種類のドライバプログラムやアプリケーションプログラムのプログラムオブジェクトや、これらドライバプログラムやアプリケーションプログラムをクライアントＰＣ１０にインストールするための各インストーラプログラム（第２のプログラム）のプログラムオブジェクトの、所定の格納場所への格納および当該格納場所からの読み出しを制御する記憶手段である。第１記憶部４２０は、例えば、これらのプログラムオブジェクトを、静的サーバ４１が備えるストレージ４１４に格納する。
【００３０】
第２記憶部４２１は、動的サーバ４０において、データベースへの情報の格納およびデータベースからの情報の読み出し（検索）を制御する。例えば、第２記憶部４２１は、外部からのクエリに従いデータベースを検索し、検索の結果として、上述したプログラム情報を取得する。第２記憶部４２１は、このデータベースを、例えば動的サーバ４０が備えるストレージ４１４に格納する。
【００３１】
通信部４２２は、ネットワーク３０を介したクライアントＰＣ１０との通信を制御する。
【００３２】
第１特定部４２３は、クライアントＰＣ１０から送信された、クライアントＰＣ１０の情報に基づき、クライアントＰＣ１０に提供するインストーラプログラムを特定するために用いられる。第１提供部４２４は、第１特定部４２３で特定されたインストーラプログラムをクライアントＰＣ１０に提供するために用いられる。第２特定部４２５は、クライアントＰＣ１０上で上述のインストーラプログラムが実行されることによりクライアントＰＣ１０から送信された情報に基づき、複数種類のドライバプログラムやアプリケーションプログラムのうちクライアントＰＣ１０に提供するプログラムを特定するために用いられる。第２提供部４２６は、第２特定部４２４で特定されたプログラムをクライアントＰＣ１０に提供するために用いられる。
【００３３】
図４は、第１の実施形態に適用可能なクライアントＰＣ１０の一例の構成を示す。クライアントＰＣ１０は、ＣＰＵ(Central  Processing  Unit)５１と、ＲＯＭ(Read  Only  Memory)５２と、ＲＡＭ(Random  Access  Memory)５３と、ストレージ５４と、表示制御部５５と、入出力Ｉ／Ｆ５７と、通信Ｉ／Ｆ５９とがバス５０を介して互いに通信可能に接続されている。
【００３４】
ＣＰＵ５１は、ＲＯＭ５２やストレージ５４に予め記憶されるプログラムに従い、ＲＡＭ５３をワークメモリとして用いて、このクライアントＰＣ１０の全体の動作を制御する。ストレージ５４は、ハードディスクドライブや不揮発性の半導体メモリ（フラッシュメモリ）からなり、ＣＰＵ５１が動作するためのプログラムや、各種データが格納される。
【００３５】
表示制御部５５は、ＣＰＵ５１によりプログラムに従い生成された表示制御信号を、ディスプレイ５６で表示可能な表示信号に変換してディスプレイ５６に供給する。ディスプレイ５６は、例えばＬＣＤ(Liquid  Crystal  Display)を表示デバイスとして用い、表示制御部５５から供給された表示信号に従った画面を表示デバイスに表示させる。
【００３６】
入出力Ｉ／Ｆ５７は、外部機器との間で通信を行うインタフェースである。図４の例では、入出力Ｉ／Ｆ５７に対して、外部機器としてキーボードやポインティングデバイス（マウスなど）を含む操作部５８が接続されている。入出力Ｉ／Ｆ５７は、これに限らず、ＣＤ(Compact  Disk)やＤＶＤ(Digital  Versatile  Disk)といったディスク記憶媒体からのデータの読み出しなどを行うドライブ装置や、不揮発性の半導体メモリなどのストレージを接続してもよい。入出力Ｉ／Ｆ５７としては、例えばＵＳＢ(Universal  Serial  Bus)を用いることができる。
【００３７】
通信Ｉ／Ｆ５９は、ＴＣＰ／ＩＰ(Transmission  Control  Protocol/Internet  Protocol)など所定のプロトコルを用いてネットワーク３０を介した通信を制御する。
【００３８】
図５は、第１の実施形態に係るクライアントＰＣ１０の機能を説明するための一例の機能ブロック図である。図５において、クライアントＰＣ１０は、表示部１０１と、入力部１０２と、記憶部１０３と、通信部１０４と、ＯＳ(Operating  System)１１０と、インストーラ１１１と、ドライバ群１２０と、アプリケーション群１２１とを有する。
【００３９】
クライアントＰＣ１０において、表示部１０１、入力部１０２、記憶部１０３および通信部１０４は、ＣＰＵ５１で動作するプログラムにより構成される。これに限らず、表示部１０１、入力部１０２、記憶部１０３および通信部１０４のうち一部または全部を、互いに協働するハードウェアによって構成してもよい。
【００４０】
表示部１０１は、指示に従い、ディスプレイ５６への表示を行うための表示情報を生成する。表示制御部５５は、表示部１０１に生成された表示情報に基づき、ディスプレイ５６に表示情報に従った表示を行うための表示信号を生成してディスプレイ５６に対して出力する。入力部１０２は、操作部５８から出力されるユーザ操作に応じた信号を受け付ける。記憶部１０３は、ストレージ５４やＲＡＭ５３にデータを記憶させる。通信部１０４は、通信Ｉ／Ｆ５９による通信を制御する。
【００４１】
ドライバ群１２０は、１以上のドライバプログラム１２０1、１２０2、…を含むことができる。また、アプリケーション群１２１は、１以上のアプリケーションプログラム１２１1、１２１2、…を含むことができる。図５において、ドライバプログラム１２０1、１２０2、…は、ドライバ＃１、ドライバ＃２、…としても示されている。同様に、アプリケーションプログラム１２１1、１２１2、…は、アプリケーション＃１、アプリケーション＃２、…としても示されている。
【００４２】
各ドライバプログラム１２０1、１２０2、…は、ＯＳ１１０がクライアントＰＣ１０に接続される外部機器を制御する際に、ＯＳ１１０と当該外部機器との間の仲介を行う機能をＣＰＵ５１に実行させる。また、各ドライバプログラム１２０1、１２０2、…は、クライアントＰＣ１０から外部機器を使用する際に、ユーザに対して適切なＵＩ(User  Interface)を提供する。各ドライバプログラム１２０1、１２０2、…は、例えば外部機器の機種および機能毎に用意され、クライアントＰＣ１０にインストールされる。
【００４３】
各アプリケーションプログラム１２１1、１２１2、…は、例えば外部機器をより便利に利用可能とするためのユーティリティプログラムである。例えば、外部機器が被投射媒体に画像を投射するプロジェクタである場合に、クライアントＰＣ１０の表示画面のプロジェクタによる投射や、クライアントＰＣ１０からプロジェクタの設定を行うためのプロジェクションアプリケーションを各アプリケーションプログラム１２１1、１２１2、…に適用することができる。また、外部機器が板書した情報を画像データとして表示する電子黒板である場合に、電子黒板に対するユーザ操作（板書など）を行うことで生成した画像等のクライアントＰＣ１０での閲覧や、クライアントＰＣ１０から電子黒板に対する諸設定を行うための電子黒板ビューアアプリケーションを、各アプリケーションプログラム１２１1、１２１2、…に適用することができる。さらに、ＭＦＰやプリンタ装置などの画像形成装置の操作画面をクライアントＰＣ１０上で実現し、クライアントＰＣ１０から画像形成装置の設定や操作を行うための画像形成装置操作アプリケーションプログラムを、各アプリケーションプログラム１２１1、１２１2、…に適用することができる。さらにまた、画像機器２０1、２０2、…が、クライアントＰＣ１０またはネットワーク３０とＷｉＦｉ（登録商標）などの無線通信を介して通信を行う場合に、無線通信の設定を行うための通信設定ツールを各アプリケーションプログラム１２１1、１２１2、…に適用することができる。これに限らず、各アプリケーションプログラム１２１1、１２１2、…は、クライアントＰＣ１０において一般的に用いられるアプリケーションプログラムであってもよい。
【００４４】
インストーラ１１１は、ドライバ群１２０に含まれる各ドライバプログラム１２０1、１２０2、…、および、アプリケーション群１２１に含まれる各アプリケーションプログラム１２１1、１２１2、…を当該クライアントＰＣ１０にインストールする。また、インストーラ１１１は、これら各ドライバプログラム１２０1、１２０2、…、および、各アプリケーションプログラム１２１1、１２１2、…を更新するためのプログラムをインストールする。
【００４５】
図６は、第１の実施形態に係るインストーラ１１１の機能を説明するための一例の機能ブロック図である。インストーラ１１１は、ＵＩ部１１１０と、インストーラ管理部１１１１と、インストール対象となるプログラムの種類に応じた各インストーラ１１１２、１１１３および１１１４とを含むプログラムである。
【００４６】
図６の例では、各インストーラ１１１２、１１１３および１１１４のうちインストーラ１１１２は、アプリケーションプログラムをインストールするアプリケーションインストーラである。また、インストーラ１１１３は、プリンタ機能を制御するためのプリンタドライバプログラムをインストールするプリンタドライバインストーラである。さらに、インストーラ１１１４は、スキャナ機能を制御するためのスキャナドライバプログラムをインストールするスキャナドライバインストーラである。プログラムの種類に応じてインストールの手順が異なるため、プログラム種類に応じたインストーラが用意される。
【００４７】
ここで、インストーラ１１１２、１１１３および１１１４によるインストール処理について、概略的に説明する。
【００４８】
アプリケーションプログラムのインストール処理を実行するインストーラ１１１２について説明する。アプリケーションプログラムは、比較的狭い範囲の仕事を想定して、ユーザの特定の要求に近接して作成されたプログラムであって、一般的には、プリンタやスキャナといった、クライアントＰＣ１０に対する外部装置の直接的な制御は、行わない。
【００４９】
インストーラ１１１２が実行するアプリケーションプログラムのインストール処理は、アプリケーションプログラムを構成する各ファイルを、クライアントＰＣ１０上に作成した所定のフォルダに格納する処理と、ＯＳがＷｉｎｄｏｗｓ（登録商標）の場合にはレジストリの初期設定およびスタートメニューへの登録とを含む。なお、アプリケーションプログラムの構成ファイルの格納フォルダは、ＯＳにより用意されたフォルダ（ＯＳがＷｉｎｄｏｗｓ（登録商標）の場合フォルダ「Program  Files」）を用いることができる。これに限らず、クライアントＰＣ１０に作成した任意のフォルダに構成ファイルを格納してもよい。
【００５０】
プリンタドライバプログラムのインストール処理を実行するインストーラ１１１３について説明する。インストーラ１１１３が実行するプリンタドライバのインストール処理は、プリンタドライバを構成する各ファイルを、クライアントＰＣ１０上にＯＳが定めたフォルダに格納する処理と、印刷ポートの設定と、論理プリンタキューの作成と、ＯＳがＷｉｎｄｏｗｓ（登録商標）の場合にはレジストリの初期設定とを含む。なお、論理プリンタキューの作成処理は、例えばインストールされるプリンタドライバに対応するプリンタを示すアイコンの作成処理を含む。
【００５１】
スキャナドライバプログラムのインストール処理を実行するインストーラ１１１４について説明する。インストーラ１１１４が実行するスキャナドライバのインストール処理は、スキャナドライバを構成する各ファイルを、クライアントＰＣ１０上にＯＳが定めたフォルダに格納する処理と、スキャンポートの設定処理とを含む。
【００５２】
図７は、各インストーラ１１１２、１１１３および１１１４の機能を説明するための一例の機能ブロック図である。ここでは、インストーラ１１１２、１１１３および１１１４を、インストーラ１１１２で代表させて説明する。インストーラ１１１２は、デバイス情報処理部１１２０およびインストール処理部１１２１を含む。
【００５３】
デバイス情報処理部１１２０は、クライアントＰＣ１０にネットワーク２２を介して接続される各デバイス（図１の例では画像機器２０1および２０2）からデバイス情報を取得し、取得したデバイス情報をサーバシステム４００に送信する第１の処理手段である。インストール処理部１１２１は、サーバシステム４００から受け取ったドライバプログラムやアプリケーションプログラムをクライアントＰＣ１０にインストールする処理を実行する第２の処理手段である。
【００５４】
図６において、ＵＩ部１１１０は、インストーラ１１１の動作にあたって、ユーザに対して表示や入力インタフェースなどＵＩを提供する。
【００５５】
インストーラ管理部１１１１は、クライアントＰＣ１０に対するドライバプログラムやアプリケーションプログラムのインストールの制御および管理を行う。詳細は後述するが、インストーラ管理部１１１１は、通信部１０４を介して、動的サーバ４０に対してクライアントＰＣ１０の情報を含むクエリを送信する。そして、インストーラ管理部１１１１は、このクエリに応じて動的サーバ４０から返された、インストール対象であるプログラムを示すプログラム情報を取得し、取得したプログラム情報に従い、静的サーバ４１からプログラム（プログラムオブジェクト）を取得する。また、インストーラ管理部１１１１は、取得したプログラム情報に基づき、プログラムのインストールに用いるインストーラを、インストーラ１１１２、１１１３および１１１４から選択し、選択したインストーラにプログラムのインストールを実行させる。すなわち、インストーラ管理部１１１１は、プログラム情報を取得するプログラム情報取得部と、プログラムを取得するプログラム取得部と、インストール処理を制御するインストール制御部との機能を備える。
【００５６】
上述したインストーラ１１１に含まれるＵＩ部１１１０と、インストーラ管理部１１１１と、各インストーラ１１１２、１１１３および１１１４とは、ＣＰＵ５１上で動作するプログラムによって実現される。なお、インストーラ１１１は、当初ＵＩ部１１１０およびインストーラ管理部１１１１のみで構成され、後に、各インストーラ１１１２、１１１３および１１１４を追加するようにもできる。このプログラムは、通信Ｉ／Ｆ５９が通信可能なネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成される。また、このプログラムを、ネットワーク経由で提供または配布するように構成してもよい。
【００５７】
これに限らず、このプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ(Compact  Disk)、ＤＶＤ(Digital  Versatile  Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供してもよい。この場合、例えば入出力Ｉ／Ｆ５７に接続された外部のドライブ装置やコンピュータを介して、プログラムがクライアントＰＣ１０に供給される。
【００５８】
これに限らず、プログラムは、ＲＯＭ５２やストレージ５４に予め記憶させて提供してもよい。
【００５９】
プログラムは、例えば、上述した各部（ＵＩ部１１１０、インストーラ管理部１１１１、各インストーラ１１１２、１１１３および１１１４）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ５１が例えばストレージ５４から当該プログラムを読み出して実行することにより上記各部が主記憶装置（例えばＲＡＭ５３）上にロードされ、各部が主記憶装置上に生成されるようになっている。
【００６０】
図８は、第１の実施形態に係る動的サーバ４０が有するデータベースにおけるレコードの一例の構成を示す。データベースの１のレコードは、１のプログラムに対応し、少なくとも、インストーラ１１１がインストール対象とするプログラムに関する情報であるプログラム情報と、プログラムがインストール可能な情報処理装置に関する情報であるシステム情報とを含む。
【００６１】
図８において、レコードの各項目のうち「ＩＤ」、「表示名」、「バージョン」、「更新日時」、「サイズ」、「インストーラ識別名」、「メタデータ」および「リソース位置」は、そのレコードが対応するプログラムに関するプログラム情報に含まれる。
【００６２】
「ＩＤ」は、プログラム情報に対応するプログラムを識別する識別情報であり、例えば当該プログラムの種類を示す。「表示名」は、このプログラム情報に示されるプログラムを例えば表示部１０１により表示させる場合に用いる名前である。「バージョン」および「更新日時」は、プログラム情報に対応するプログラムのバージョン情報および更新日時情報である。「サイズ」は、このプログラム情報に対応するプログラムのデータサイズを示す。
【００６３】
「インストーラ識別名」は、このプログラム情報が対応するプログラムのインストールを実行すべきインストーラを識別する識別名である。「メタデータ」は、このプログラム情報に対する情報（メタ情報）を取得する取得先を示す情報（ＵＲＬ(Uniform  Resource  Locator)など）である。「リソース位置」は、このプログラム情報に対応するプログラム（プログラムオブジェクト）を取得する取得先を示す情報（ＵＲＬなど）を示す。「リソース位置」としては、例えば、静的サーバ４１が含むＵＲＬが用いられる。「メタデータ」についても同様に、静的サーバ４１が含むＵＲＬが用いられる。
【００６４】
一方、図８において、レコードの各項目のうち「ＯＳバージョン」、「アーキテクチャ」、「ロケール」および「機種特定情報」は、そのレコードのプログラムが対応可能なシステムのシステム情報を示す。「ＯＳバージョン」および「アーキテクチャ」は、それぞれ、プログラムをインストール可能なＯＳのバージョンおよびアーキテクチャを示す。「ロケール」は、プログラムをインストールする際に用いる言語などのロケール情報である。
【００６５】
また、「機種特定情報」は、そのレコードが対応する外部機器の機種を特定する情報である。「機種特定情報」としては、プラグアンドプレイ技術で用いられる、ベンダと機種とを識別するための識別情報であるＰｎＰ−ＩＤ(Plug  and  Play-ID)を用いることができる。
【００６６】
次に、第１の実施形態に係るドライバプログラムおよびアプリケーションプログラムのインストール手順について、図９を用いて概略的に説明する。なお、図９において、上述した図１、図５および図６と共通する部分には同一の符号を付して、詳細な説明を省略する。図９に示されるインストール手順は、例えば、クライアントＰＣ１０に対するユーザ操作に従い開始される。
【００６７】
インストール手順が開始されると、インストーラ１１１は、先ず、クライアントＰＣ１０が接続されるセグメント内のネットワーク２２に接続される外部機器（画像機器２０1、２０2、…）を探索し（ステップＳ１）、探索された外部機器から、当該外部機器の機種を特定する機種特定情報を取得する（ステップＳ２）。インストーラ１１１は、外部機器の探索の手段として、例えばＢｏｎｊｏｕｒ（登録商標）や、ＳＮＭＰ(Simple  Network  Management  Protocol)を利用することができる。
【００６８】
また、インストーラ１１１は、機種特定情報として、例えばＰｎＰ−ＩＤを取得する。インストーラ１１１は、例えば、外部機器の探索時に取得される、当該外部機器のＩＰ(Internet  Protocol)アドレスといったネットワーク識別子を利用して、ＳＮＭＰやＷＳＤ(Web  Services  for  Devices)といったプロトコルを利用して、外部機器からＰｎＰ−ＩＤを取得する。
【００６９】
図９の例では、インストーラ１１１は、ネットワーク２２から外部機器としてプリンタ装置である画像機器２０1と、ＭＦＰである画像機器２０2とを探索し、これらの機種特定情報を取得している。
【００７０】
インストーラ１１１は、ステップＳ１およびステップＳ２にて取得した機種特定情報の一覧（デバイス一覧）を表示部１０１により表示させ、ユーザに提示する（ステップＳ３）。実際には、表示部１０１は、機種特定情報に対応する表示名をユーザに提示する。ユーザは、この表示部１０１により表示された機種特定情報一覧に応じて入力部１０２を操作して、ドライバまたはアプリケーションを取得する外部機器を選択する。入力部１０２から、選択された外部機器の機種特定情報がインストーラ１１１に返される（ステップＳ４）。
【００７１】
インストーラ１１１は、ＯＳ１１０から、プログラムをインストールする際に用いる情報を取得する（ステップＳ５）。例えば、インストーラ１１１は、ＯＳ１１０から、ＯＳのバージョン情報などＯＳを識別するためのＯＳ識別情報を取得する。また、インストーラ１１１は、ステップＳ５で、ＯＳ１１０からロケール情報などの情報も取得する。
【００７２】
インストーラ１１１は、ステップＳ４で取得した、選択された外部機器の機種特定情報と、ステップＳ５で取得した少なくともＯＳ識別情報とを組み合わせて、クライアントＰＣ１０にインストール可能なプログラムの検索を要求するクエリを生成し、ステップＳ６で動的サーバ４０に送信する（送信手段、第１の処理手段）。動的サーバ４０は、インストーラ１１１から送信されたクエリに従いデータベースに対して検索処理を実行し、クエリに対応するプログラム情報を出力する（第１の特定手段、第２の特定手段）。動的サーバ４０は、クエリに対応するプログラム情報が複数検索された場合には、この複数のプログラム情報を出力する。ステップＳ７で、動的サーバ４０は、検索されたプログラム情報の一覧を、クエリの送信元であるインストーラ１１１に送信する（第１の提供手段、第２の提供手段）。
【００７３】
インストーラ１１１は、動的サーバ４０から送信されたプログラム情報に、メタ情報の取得先を示す情報が含まれる場合、当該取得先からメタ情報を取得する（ステップＳ８）。この例では、メタ情報が静的サーバ４１に格納されているものとして説明している。
【００７４】
インストーラ１１１は、ステップＳ７で動的サーバ４０から取得されたプログラム情報と、インストーラ１１１によりクライアントＰＣ１０に既にインストールされているプログラムの情報とに基づき、クライアントＰＣ１０にインストール可能なプログラムの一覧を作成する。また、インストーラ１１１は、動的サーバ４０から取得されたプログラム情報と、インストーラ１１１によりクライアントＰＣ１０にインストール済みのプログラムの情報とに基づき、インストール済みのプログラムを更新可能なプログラムの一覧を作成し、インストール可能なプログラムの一覧に加えてもよい。
【００７５】
インストーラ１１１は、作成したインストール可能なプログラムの一覧を表示部１０１により表示させ、ユーザに提示する（ステップＳ９）。ユーザは、この表示部１０１により表示されたプログラムの一覧に応じて入力部１０２を操作して、インストールまたは更新を行うプログラムを選択する。入力部１０２から、選択されたプログラムを示す情報がインストーラ１１１に渡される（ステップＳ１０）。
【００７６】
インストーラ１１１は、ステップＳ１０で渡された、選択されたプログラムを示す情報に対応するプログラム情報に含まれるプログラムの取得先を示す情報に従い、静的サーバ４１からプログラムを取得する（ステップＳ１１）。そして、ステップＳ１２で、インストーラ１１１は、静的サーバ４１から取得したプログラムをクライアントＰＣ１０にインストールする（第２の処理手段）。このとき、インストーラ１１１は、プログラム情報に基づきインストールするプログラムの種類を判定し、インストーラ１１１２、１１１３および１１１４のうち判定されたプログラムの種類に合致したインストーラを選択し、プログラムのインストールを選択したインストーラに実行させる。
【００７７】
このように、第１の実施形態によれば、インストーラ１１１は、外部機器の機種特定情報とＯＳを識別するＯＳ識別情報とに基づき、動的サーバ４０からインストール可能なプログラムを示すプログラム情報を取得する。そして、プログラム情報に含まれる、プログラムの種類を示す情報に従い当該プログラムのインストールに用いるインストーラを選択している。そのため、１のインストーラ１１１による共通した動作により、種類の異なる複数のプログラムをインストールすることが可能となる。
【００７８】
次に、第１の実施形態に係るインストール処理をより詳細に説明する。図１０は、第１の実施形態に係るインストール処理を示す一例のフローチャートである。この図１０のフローチャートによる各処理は、インストーラ１１１により実行される。ステップＳ１００で、インストーラ１１１は、ネットワーク２２を介した外部機器の探索および動的サーバ４０に対するクエリを実行し、クライアントＰＣ１０にインストール可能なプログラムを示すプログラム情報の一覧を取得する。
【００７９】
インストーラ１１１は、変数ｉを値０に初期化する（ステップＳ１０１）。なお、ステップＳ１００で取得したプログラム情報の総数を値ｊとする。
【００８０】
以降、ステップＳ１０２〜ステップＳ１０８の処理は、ステップＳ１００で取得した全てのプログラム情報について実行される。なお、以下では、ｉ番目のプログラム情報をプログラム情報（ｉ）として記述する。
【００８１】
インストーラ１１１は、ステップＳ１０２で値ｉを１だけインクリメントし、ステップＳ１０３で、プログラム情報（ｉ）がメタデータ（メタ情報）を含むか否かを判定する。インストーラ１１１は、プログラム情報（ｉ）がメタデータを含まないと判定した場合、処理をステップＳ１０５に移行させる。一方、インストーラ１１１は、プログラム情報（ｉ）がメタデータを含むと判定した場合、処理をステップＳ１０４に移行させ、プログラム情報（ｉ）の記述に基づき、静的サーバ４１からメタデータを取得する。メタデータを取得したインストーラ１１１は、処理をステップＳ１０５に移行させる。
【００８２】
ステップＳ１０５で、インストーラ１１１は、プログラム情報（ｉ）が示すプログラムが、ドライバプログラムやアプリケーションプログラムといったプログラムのインストールを実行するためのインストーラであるか否かを判定する。ここでは、インストーラ１１１は、プログラム情報（ｉ）が示すプログラムが、インストーラ１１１に含まれる各インストーラ１１１２、１１１３および１１１４の何れかであるか否かを判定する。インストーラ１１１は、プログラム情報（ｉ）が示すプログラムがインストーラであると判定した場合、処理をステップＳ１０６に移行させる。
【００８３】
ステップＳ１０６で、インストーラ１１１は、各インストーラ１１１２、１１１３および１１１４のうちプログラム情報（ｉ）に示されるインストーラを、プログラム情報（ｉ）に示される取得先情報に従い静的サーバ４１から取得する。そして、次のステップＳ１０７で、インストーラ１１１は、ステップＳ１０６で取得したインストーラをクライアントＰＣ１０にインストールし、インストーラの更新を行う。
【００８４】
一方、ステップＳ１０５で、インストーラ１１１は、プログラム情報（ｉ）が示すプログラムがインストーラではないと判定した場合、処理をステップＳ１０９に移行させる。ステップＳ１０９で、インストーラ１１１は、プログラム情報（ｉ）に示されるインストーラに対してプログラム情報（ｉ）を渡し、インストール可能なプログラムの情報を取得するように要求する。
【００８５】
ここで、インストーラ１１１は、ステップＳ１０４でメタデータを取得している場合、取得したメタデータをプログラム情報（ｉ）と共に当該インストーラに渡す。当該インストーラは、プログラム情報（ｉ）がメタデータを含んでおらずメタデータを取得していない場合、プログラム情報（ｉ）に含まれる表示名を、インストール可能なプログラムの情報として取得する。また、当該インストーラは、ステップＳ１０４でメタデータを取得している場合、メタデータに従い、インストール可能なプログラムの情報を取得する。次のステップＳ１１０で、インストーラ１１１は、ステップＳ１０９で取得したプログラムの情報を、ユーザに提示するための、インストール可能なプログラムのリストに登録する。
【００８６】
ステップＳ１０７またはステップＳ１１０の処理の後、インストーラ１１１は、処理をステップＳ１０８に移行させる。ステップＳ１０８で、インストーラ１１１は、変数ｉとプログラム情報の総数の値ｊとが一致するか否かを判定する。変数ｉと値ｊとが一致する場合、ステップＳ１００で取得された全てのプログラム情報について処理が終了したと判断できる。インストーラ１１１は、変数ｉと値ｊとが一致しないと判定した場合、処理をステップＳ１０２に戻して変数ｉを１だけインクリメントして、次のプログラム情報（ｉ）に対する処理を実行する。
【００８７】
一方、インストーラ１１１は、変数ｉと値ｊとが一致すると判定した場合、処理をステップＳ１１１に移行させる。ステップＳ１１１で、インストーラ１１１は、上述したステップＳ１１０でプログラムの情報が登録される、ユーザ提示用のインストール可能なプログラムのリストから、更新不要のプログラムを削除する。
【００８８】
例えば、インストーラ１１１は、リストに登録された第１のプログラムのバージョン情報を取得し、クライアントＰＣ１０に既にインストールされている、第１のプログラムに対応する第２のプログラムのバージョン情報と、第１のプログラムのバージョン情報とを比較する。そして、インストーラ１１１は、第１のプログラムのバージョン情報が第２のプログラムのバージョン情報よりも新しいバージョンを示していない場合に、当該第１のプログラムが更新不要のプログラムであると判定して、当該第１のプログラムをリストから削除する。
【００８９】
次のステップＳ１１２で、インストーラ１１１は、ユーザ提示用のインストール可能なプログラムのリストを、例えば表示部１０１により表示させ、ユーザに提示する。ステップＳ１１３で、インストーラ１１１は、表示部１０１へのインストール可能なプログラムのリストの表示に応じてユーザに選択されたプログラムを、クライアントＰＣ１０にインストールし、図１０のフローチャートによる一連の処理を終了させる。
【００９０】
図１１は、第１の実施形態に係るインストール処理における情報処理システム全体での処理の例を示すシーケンス図である。なお、図１１において、上述した図１、図５および図６と共通する部分には同一の符号を付して、詳細な説明を省略する。また、以下では、アプリケーションプログラムのインストールを行うインストーラ１１１２をＡＰインストーラ１１１２、プリンタドライバプログラムのインストールを行うインストーラ１１１３をＰＤインストーラ１１１３、スキャナドライバプログラムのインストールを行うインストーラ１１１４をＳＤインストーラ１１１４として説明する。
【００９１】
例えば、クライアントＰＣ１０に対するユーザ操作により、インストーラ１１１の起動が指示される。この起動指示は、インストーラ１１１のＵＩ部１１１０に通知される（ステップＳ２００）。ＵＩ部１１１０は、インストーラ管理部１１１１に対して、クライアントＰＣ１０と同一セグメント内のネットワーク２２に接続される外部機器のディスカバリを指示する（ステップＳ２０１）。インストーラ管理部１１１１は、この指示に応じて、例えばＢｏｎｊｏｕｒ（登録商標）やＳＮＭＰを用いてネットワーク２２に対して外部機器探索の動作を行う（ステップＳ２０２）。
【００９２】
インストーラ管理部１１１１は、外部機器探索による検出結果を受け取ると（ステップＳ２０３）、検出された外部機器（画像機器２０1、２０2、…とする）に対して機種特定情報を要求する（ステップＳ２０４）。インストーラ管理部１１１１は、この要求に応じて各外部機器から送信された機種特定情報を受け取る（ステップＳ２０５）。インストーラ管理部１１１１は、受け取った各外部機器の機種特定情報に基づき、外部機器を選択するための機器一覧の表示をＵＩ部１１１０に対して指示する（ステップＳ２０６）。ＵＩ部１１１０は、この指示に応じて、機器一覧表示画面を作成し、表示部１０１に渡す。
【００９３】
表示部１０１は、ＵＩ部１１１０から渡された機器一覧表示画面をディスプレイ５６に表示させる。より具体的には、表示部１０１は、機器一覧表示画面を表示させるための表示制御信号を生成して、表示制御部５５に渡す。表示制御部５５は、渡された表示制御信号に基づき表示信号を生成してディスプレイ５６に対して出力する。これにより、ディスプレイ５６に、機器一覧表示画面が表示される。
【００９４】
図１２は、第１の実施形態に係る機器一覧表示画面の例を示す。図１２において、機器一覧表示画面２００は、表示領域２０１とボタン２０４とが配置される。また、表示領域２０１は、ステップＳ２０５で取得された機種特定情報のリストを示すリスト表示２０２と、リスト表示２０２に表示される機器に対応する機種を選択するための選択入力部２０３とが配置される。この例では、選択入力部２０３は、複数の項目を選択状態にすることが可能なチェックボックスが適用されている。ボタン２０４は、操作することで選択入力部２０３に対する選択入力が確定される。
【００９５】
機器一覧表示画面２００に応じたユーザ操作により、機種が選択されると（ステップＳ２０７）、ＵＩ部１１１０は、選択された機種に対応するプログラム情報を取得するように、インストーラ管理部１１１１に指示する（ステップＳ２０８）。インストーラ管理部１１１１は、この指示に従い、ＯＳ１１０に対してＯＳ情報の取得を要求する（ステップＳ２０９）。ＯＳ１１０は、この要求に応じてＯＳ情報を返す（ステップＳ２１０）。ＯＳ情報としては、ＯＳのバージョン、アーキテクチャおよびロケールを示す情報が含まれる。ＯＳ情報は、ＯＳ名を示す情報をさらに含んでいてもよい。
【００９６】
次に、インストーラ管理部１１１１は、ステップＳ２０４およびステップＳ２０５で取得した機種特定情報と、ステップＳ２０９およびステップＳ２１０で取得したＯＳ情報とに基づき、プログラム情報の一覧を取得するためのクエリを作成して動的サーバ４０に送信する（ステップＳ２１１）。動的サーバ４０は、このクエリに従いデータベースを検索し、検索して得られたプログラム情報の一覧をインストーラ管理部１１１１に返す（ステップＳ２１２）。
【００９７】
図１３は、第１の実施形態に適用可能な、インストーラ管理部１１１１が作成しステップＳ２１１で動的サーバ４０に送信されるクエリの一例を示す。なお、図１３および以下の同様のデータ例を示す図において、特に記載のない限り、各行の先頭の数字は説明のための行番号を示し、続くコロン（：）でデータ本体を示すコードと区別されている。また、各実施形態の中で例示される各コードは、プログラミング言語として一般的に用いられるＣ言語の記法を模した疑似コードである。
【００９８】
図１３において、クエリは、最も外側の括弧「｛」および「｝」に挟まれた記述のうち、当該括弧「｛」の直下の第１行目（行番号「２」）から第３行目（行番号「４」）の間に、項目「peripheral」として外部機器の情報が記述されることが示される。図１３の例では、項目「peripheral」においてさらに括弧「｛」および「｝」で挟まれて、ＰｎＰ−ＩＤによる機種特定情報「MFP  Model  A」が記述されている。
【００９９】
また、クエリは、第４行目〜第８行目（行番号「５」〜「９」）の間に、項目「system」としてＯＳ情報が記述されることが示される。図１３の例では、項目「system」においてさらに括弧「｛」および「｝」で挟まれて、当該括弧から第１行目（行番号「６」）の項目「version」に値「6.1.7601.65536」としてＯＳバージョンが、第２行目（行番号「７」）に項目「architecture」に値「x64」としてＯＳのアーキテクチャが、第３行目（行番号「８」）に項目「locale」に値「ja-JP」としてロケール情報が、それぞれ記述されている。
【０１００】
動的サーバ４０は、このクエリに従い図８を用いて説明したデータベースを検索し、クエリに記述される各情報に合致するレコードを抽出する。図８のデータベースの例では、動的サーバ４０は、クエリに記述される各情報と、レコードの項目「ＯＳバージョン」、「アーキテクチャ」、「ロケール」および「機種特定情報」に記述される各情報とが一致するレコードを抽出する。そして、動的サーバ４０は、抽出したレコードにおける項目「ＩＤ」、「表示名」、「バージョン」、「更新日時」、「サイズ」、「インストーラ識別名」、「メタデータ」および「リソース位置」の各情報を、プログラム情報としてインストーラ管理部１１１１に送信する。動的サーバ４０は、クエリに従い複数のレコードが抽出された場合、抽出された複数のレコードの各項目の情報を、レコード毎のプログラム情報の一覧としてインストーラ管理部１１１１に送信する。
【０１０１】
図１４は、第１の実施形態に係る、動的サーバ４０から送信されるプログラム情報一覧の例を示す。図１４に例示されるように、プログラム情報一覧は、行番号「１」および「６８」の行の最も外側の括弧「［」および「］」に挟まれる内側の各括弧「｛」および「｝」内に、それぞれ１個のプログラム情報が記述される。図１４の例では、プログラム情報一覧は、行番号「２」〜「１１」の行において、括弧「｛」および「｝」に挟まれてプログラム情報（１）が記述され、以降同様に、行番号「１２」〜「２１」、行番号「２２」〜「３０」、行番号「３１」〜「３９」、行番号「４０」〜「４８」、行番号「４９」〜「５８」および行番号「５９」〜「６７」の行に、それぞれプログラム情報（２）〜（７）が記述されている。
【０１０２】
それぞれのプログラム情報（ｉ）は、括弧「｛」および「｝」の間に、動的サーバ４０のレコードの各項目「ＩＤ」、「表示名」、「バージョン」、「更新日時」、「サイズ」、「インストーラ識別名」、「メタデータ」および「リソース位置」に対応する各項目「id」、「name」、「version」、「date」（「published_date」）、「size」、「installer」、「metadata_url」および「download_url」が記述される。
【０１０３】
図１４の例では、プログラム情報（１）は、括弧内の第１行目（行番号「３」）の項目「id」が値「mfp_modela_printer_pcl」とされてプログラムの種類が示される。第２行目（行番号「４」）の項目「name」が値「MFP  Model  A  Printer  Driver  PCL」として記述される。括弧内の第３行目（行番号「５」）の項目「version」が値「1.2.0.0」、第４行目（行番号「６」）の項目「date」が値「2014-02-11」として記述される。また、第５行目（行番号「７」）の項目「size」が値「12000」として記述される。
【０１０４】
プログラム情報（１）において、括弧内の第６行目（行番号「８」）の項目「installer」が値「printer_driver_installer」として記述され、このプログラム情報（１）に記述されるプログラムに対応するインストーラがＰＤインストーラ１１１３である旨が示される。さらに、括弧内の第７行目（行番号「９」）の項目「metadata_url」が値「https://example.com/mfp_modela_printer_pcl/metadata.json」、第８行目（行番号「１０」）の項目「download_url」が値「https://example.com/mfp_modela_printer_pcl/object.zip」として記述され、それぞれメタデータの取得先のＵＲＬと、インストールするプログラムを構成するためのプログラムオブジェクトの取得先のＵＲＬとが示される。
【０１０５】
図１４において、行番号「１２」〜「２１」の行のプログラム情報（２）は、項目「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」として記述され、このプログラム情報（２）に記述されるプログラムに対応するインストーラがＰＤインストーラ１１１３である旨が示される。さらに、プログラム情報（２）において、項目「metadata_url」および項目「download_url」に、それぞれメタデータおよびプログラムオブジェクトの取得先のＵＲＬが記述されている。
【０１０６】
行番号「２２」〜「３０」の行のプログラム情報（３）は、項目「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」として記述され、このプログラム情報（３）に記述されるプログラムに対応するインストーラがＳＤインストーラ１１１４である旨が示される。さらに、プログラム情報（３）において、項目「download_url」にプログラムオブジェクトの取得先のＵＲＬが記述されている。また、この例では、プログラム情報（３）には、メタデータの取得先のＵＲＬが記述される項目「metadata_url」が省略されている。
【０１０７】
以下同様にして、各プログラム情報（４）〜（７）の情報が項目毎に記述される。そして、項目「installer」の値により、プログラム情報（４）〜（７）に記述されるプログラムに対応するインストーラが、それぞれＡＰインストーラ１１１２、ＰＤインストーラ１１１３、ＳＤインストーラ１１１４およびインストーラ管理部１１１１の何れに対応するかが示される。図１４の例では、項目「installer」の値に基づき、プログラム情報（１）、（２）、（４）および（５）に記述されるプログラムがＰＤインストーラ１１１３に対応することが分かる。また、プログラム情報（３）に記述されるプログラムがＳＤインストーラ１１１４に対応し、プログラム情報（６）に記述されるプログラムがＡＰインストーラ１１１２に対応することが分かる。
【０１０８】
ここで、図１４においてプログラム情報（７）は、項目「installer」が値「installer_manager」となっており、項目「id」に示されるプログラムがインストーラ管理部１１１１にインストールまたは更新されることが示されている。
【０１０９】
なお、各プログラム情報（ｉ）において、項目「metadata_url」は、省略することができる。図１４の例では、プログラム情報（３）、（４）、（５）および（７）がメタデータを持っておらず、項目「metadata_url」が省略されている。また、項目「installer」が値「installer_manager」であるプログラム情報（７）は、項目「id」の値を、当該プログラム情報（７）が示すプログラムインストーラがインストール対象とする他のプログラムのプログラム情報における項目「installer」の値と対応する値とするとよい。
【０１１０】
インストーラ管理部１１１１は、プログラム情報の一覧を動的サーバ４０から受け取ると、総数ｊの各プログラム情報（ｉ）に対し、図１０のフローチャートのステップＳ１０２〜ステップＳ１１０の処理に従い、以下のステップＳ２１３〜ステップＳ２２０の処理を実行する。
【０１１１】
すなわち、インストーラ管理部１１１１は、図１０のステップＳ１０３に従いｉ番目のプログラム情報（ｉ）について、メタデータを含むか否かを判定する。プログラム情報（ｉ）に項目「metadata_url」が記述される場合に、当該プログラム情報（ｉ）がメタデータを含むと判定する。インストーラ管理部１１１１は、プログラム情報（ｉ）がメタデータを含むと判定した場合、プログラム情報（ｉ）の項目「metadata_url」に記述されるメタデータの取得先のＵＲＬに従い、例えば静的サーバ４１に対してメタデータを要求する（ステップＳ２１３）。静的サーバ４１は、この要求に応じて、メタデータをインストーラ管理部１１１１に送信する（ステップＳ２１４）。
【０１１２】
図１４の例では、プログラム情報（１）は、項目「metadata_url」が記述されており、メタデータを含んでいることが分かる。インストーラ管理部１１１１は、静的サーバ４１に対し、このプログラム情報（１）内の項目「metadata_url」の値「https://example.com/mfp_modela_printer_pcl/metadata.json」に示されるＵＲＬのメタデータを要求する。
【０１１３】
ここで、メタデータについて説明する。図１５および図１６は、第１の実施形態に係るメタデータの構成の例を示す。メタデータは、対応するインストーラの種類によって形式が定められる。図１５は、サブ機器の識別情報が記述されるメタデータの例である。図１５に例示されるメタデータは、例えば、ＰＤインストーラ１１１３やＳＤインストーラ１１１４といった、外部機器を制御するためのドライバのインストーラに適用できる。
【０１１４】
ここで、サブ機種について説明する。サブ機種は、１の機種特定情報を持つ外部機器において、仕様が微小に異なるため複数の機種に分けられた各機種を指す。例えば、プリンタ装置やＭＦＰでは、フィニッシャなど部分の構成が少し異なる程度の仕様の差異がある複数の機種が１の機種特定情報（ＰｎＰ−ＩＤなど）を持つことがある。また、この１の機種特定情報を持つ複数の機種を、１のドライバプログラムでサポートすることがある。さらに、ドライバプログラムのインストール時にこの複数の機種から選択された機種に応じて、ＵＩの構成を変更したい場合がある。
【０１１５】
図１５の例では、１の機種特定情報に示されるメタデータにおいて、行番号「２」の行に記述される項目「model_names」により、当該行の括弧「［」から対応する括弧「］」の間にサブ機種を識別するための識別情報（サブ機種識別情報と呼ぶ）が記述されることが示される。サブ機種識別情報は、この括弧「［」および「］」の間に複数を記述することができる。ＰＤインストーラ１１１３やＳＤインストーラ１１１４は、１のプログラムオブジェクトとしては１つであるが、当該プログラムオブジェクトに対応するプログラム情報の記述に従いこのサブ機種識別情報を含むメタデータを参照することで、１の機種特定情報を用いて複数のサブ機種を識別することができる。
【０１１６】
図１６は、アプリケーションプログラムのインストールに関する情報が記述されるメタデータの例を示す。図１６に例示されるメタデータは、アプリケーションプログラムのインストールを行うＡＰインストーラ１１１２に適用できる。アプリケーションプログラムは、インストールされる際に、ＯＳ１１０が管理する管理領域に対して所定の情報が格納される。図１６に例示されるメタデータは、このＯＳ１１０の管理領域に格納するための情報が記述される。例えば、ＡＰインストーラ１１１２は、このメタデータを含むプログラム情報が示すアプリケーションプログラムをクライアントＰＣ１０にインストールする際に、このメタデータに記述される各情報に基づき、ＯＳ１１０の管理情報に初期設定を書き込む。
【０１１７】
なお、ＯＳ１１０の管理領域は、例えばＯＳ１１０が米マイクロソフト社が提供するＷｉｎｄｏｗｓ（登録商標）である場合、レジストリを適用できる。
【０１１８】
図１１の説明に戻り、インストーラ管理部１１１１は、プログラム情報（ｉ）に従い、インストール可能なプログラムの一覧をＡＰインストーラ１１１２、ＰＤインストーラ１１１３およびＳＤインストーラ１１１４に対して要求する（ステップＳ２１５〜ステップＳ２２０）。
【０１１９】
例えば、インストーラ管理部１１１１は、プログラム情報（ｉ）の項目「installer」が値「application_installer」であれば、当該プログラム情報（ｉ）に対応するインストーラがＡＰインストーラ１１１２であると判定する。したがって、インストーラ管理部１１１１は、ＡＰインストーラ１１１２に対して、プログラム情報の各項目「id」、「name」、「version」、「date」、「size」、「installer」および「download_url」の情報を渡して、インストール可能なプログラムの一覧を要求する（ステップＳ２１５）。インストーラ管理部１１１１は、プログラム情報（ｉ）が項目「metadata_url」を含む場合は、ステップＳ２１３およびステップＳ２１４で取得したメタデータも、ＡＰインストーラ１１１２に渡す。
【０１２０】
ＡＰインストーラ１１１２は、渡された各情報に基づき、インストール可能なプログラムのリストをインストーラ管理部１１１１に返す（ステップＳ２１６）。この例では、ＡＰインストーラ１１１２は、メタデータが渡されている場合であっても、プログラム情報の項目「name」に記述される情報をインストール可能なプログラムの情報としてインストーラ管理部１１１１に返す。
【０１２１】
より具体的には、図１４の例において行番号「４９」〜「５８」の行に記述されるプログラム情報（６）の項目「installer」が値「application_installer」とされ、このプログラム情報に対応するインストーラがＡＰインストーラ１１１２であることが示される。インストーラ管理部１１１１は、この項目「installer」の値に基づき、このプログラム情報の各項目の値をＡＰインストーラ１１１２に渡す。ＡＰインストーラ１１１２は、インストール可能なプログラムの情報として、プログラム情報の項目「name」の値「MFP  Management  Utility」を、そのままインストーラ管理部１１１１に返す。
【０１２２】
また例えば、インストーラ管理部１１１１は、プログラム情報（ｉ）の項目「installer」が値「printer_driver_installer」であれば、当該プログラム情報（ｉ）に対応するインストーラがＰＤインストーラ１１１３であると判定する。したがって、インストーラ管理部１１１１は、ＰＤインストーラ１１１３に対して、プログラム情報の各項目「id」、「name」、「version」、「date」、「size」、「installer」および「download_url」の情報を渡して、インストール可能なプログラムの一覧を要求する（ステップＳ２１７）。インストーラ管理部１１１１は、プログラム情報（ｉ）に項目「metadata_url」が記述されている場合は、ステップＳ２１３およびステップＳ２１４で取得したこのプログラム情報（ｉ）に対応するメタデータも、ＰＤインストーラ１１１３に渡す。
【０１２３】
ＰＤインストーラ１１１３は、渡された各情報に基づき、インストール可能なプログラムのリストをインストーラ管理部１１１１に返す（ステップＳ２１８）。ＰＤインストーラ１１１３は、メタデータが渡されている場合、メタデータに記述されるサブ機種識別情報を取得し、取得したサブ機種識別情報をインストール可能なプログラムの情報としてインストーラ管理部１１１１に返す。
【０１２４】
より具体的には、図１４の例において行番号「２」〜「１１」の行に記述されるプログラム情報（１）の項目「installer」が値「printer_driver_installer」とされ、このプログラム情報に対応するインストーラがＰＤインストーラ１１１３であることが示される。インストーラ管理部１１１１は、この項目「installer」の値「printer_driver_installer」に基づき、このプログラム情報の各項目の値をＰＤインストーラ１１１３に渡す。また、この例では、プログラム情報（１）に項目「metadata_url」が記述されているので、インストーラ管理部１１１１は、ステップＳ２１３およびステップＳ２１４により取得した当該プログラム情報に対応するメタデータを、さらにＰＤインストーラ１１１３に渡す。
【０１２５】
ＰＤインストーラ１１１３は、インストーラ管理部１１１１からプログラム情報と共にメタデータが渡された場合、メタデータにおける項目「model_names」の記述に基づきサブ機種識別情報を取得する。例えば、ＰＤインストーラ１１１３が図１５に例示したメタデータを渡された場合、項目「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」を、インストール可能なプログラムの情報としてインストーラ管理部１１１１に返す。
【０１２６】
さらに例えば、インストーラ管理部１１１１は、プログラム情報（ｉ）の項目「installer」が値「scanner_driver_installer」であれば、ＳＤインストーラ１１１４に対して、プログラム情報の各項目「id」、「name」、「version」、「date」、「size」、「installer」および「download_url」の情報を渡して、インストール可能なプログラムの一覧を要求する（ステップＳ２１９）。インストーラ管理部１１１１は、プログラム情報（ｉ）に項目「metadata_url」が記述されている場合は、ステップＳ２１３およびステップＳ２１４で取得したメタデータも、ＳＤインストーラ１１１４に渡す。
【０１２７】
ＳＤインストーラ１１１４は、渡された各情報に基づき、インストール可能なプログラムのリストをインストーラ管理部１１１１に返す（ステップＳ２２０）。ＳＤインストーラ１１１４は、メタデータが渡されている場合、メタデータに記述されるサブ機種識別情報を取得し、取得したサブ機種識別情報をインストール可能なプログラムの情報としてインストーラ管理部１１１１に返す。
【０１２８】
より具体的には、図１４の例において行番号「２２」〜「３０」の行に記述されるプログラム情報の項目「installer」が値「scanner_driver_installer」とされ、このプログラム情報に対応するインストーラがＳＤインストーラ１１１４であることが示される。インストーラ管理部１１１１は、この項目「installer」の値に基づき、このプログラム情報の各項目の値をＳＤインストーラ１１１４に渡す。
【０１２９】
この例では、プログラム情報（３）に項目「metadata_url」が記述されていないので、ＳＤインストーラ１１１４は、プログラム情報（３）の項目「name」の値「MFP  Model  A  Scanner  Driver」を、インストール可能なプログラムの情報としてそのままインストーラ管理部１１１１に渡す。
【０１３０】
インストーラ管理部１１１１は、上述のステップＳ２１３〜ステップＳ２２０の処理を、プログラム情報一覧に含まれる全てのプログラム情報（ｉ）について実行する。このとき、ステップＳ２１３およびステップＳ２１４、ステップＳ２１５およびステップＳ２１６、ステップＳ２１７およびステップＳ２１８、ならびに、ステップＳ２１９およびステップＳ２２０の各組の処理は、図１０のフローチャートにおけるステップＳ１０２〜ステップＳ１１０の処理に従い、プログラム情報（ｉ）の記述に基づき選択的に実行される。
【０１３１】
なお、プログラム情報（ｉ）の項目「installer」が値「installer_manager」であれば、当該プログラム情報（ｉ）がＡＰインストーラ１１１２、ＰＤインストーラ１１１３およびＳＤインストーラ１１１４といった、インストーラを対象としている。この場合、インストーラ管理部１１１１は、図１０のフローチャートにおけるステップＳ１０６およびステップＳ１０７の処理に従い、インストーラの更新処理を行う。
【０１３２】
一例として、図１４の行番号「５９」〜「６７」の行に記述されるプログラム情報（７）は、項目「installer」が値「installer_manager」とされ、このプログラム情報（７）がインストーラに対応することが示される。プログラム情報（７）がＡＰインストーラ１１１２、ＰＤインストーラ１１１３およびＳＤインストーラ１１１４のうち何れのインストーラに対応するかは、例えば項目「id」や項目「name」の値に基づき判定することができる。図１４の例では、プログラム情報（７）において項目「id」および「name」がそれぞれ値「printer_driver_installer」および「Printer  Driver  Installer」となっており、当該プログラム情報（７）がＰＤインストーラ１１１３に対応することが分かる。
【０１３３】
インストーラ管理部１１１１は、プログラム情報（７）の項目「installer」と、項目「id」および「name」の値に基づきこのプログラム情報（７）がＰＤインストーラ１１１３に対応すると判定した場合、プログラム情報（７）に基づきＰＤインストーラ１１１３を更新するか否かを判定する（ステップＳ２２２）。例えば、インストーラ管理部１１１１は、後述する方法により、クライアントＰＣ１０に既にインストールされているＰＤインストーラ１１１３のバージョン情報と、プログラム情報（７）の項目「version」の値に示されるバージョン情報とを比較する。インストーラ管理部１１１１は、比較の結果、プログラム情報（７）の項目「version」に示されるバージョン情報が、既にインストールされているＰＤインストーラ１１１３のバージョン情報よりも新しいバージョンを示している場合に、ＰＤインストーラ１１１３の更新を実行する。
【０１３４】
この場合、インストーラ管理部１１１１は、プログラム情報（７）の項目「download_url」の値「https://example.com/printer_driver_installer/object.zip」に従い、静的サーバ４１に対してＰＤインストーラ１１１３を更新するためのプログラムオブジェクトを要求する（ステップＳ２２３）。静的サーバ４１は、この要求に応じてＰＤインストーラ１１１３を更新するためのプログラムオブジェクトをインストーラ管理部１１１１に返す（ステップＳ２２４）。
【０１３５】
インストーラ管理部１１１１は、ＰＤインストーラ１１１３を更新するためのプログラムオブジェクトを取得すると、クライアントＰＣ１０上でのＰＤインストーラ１１１３の動作を停止させる（ステップＳ２２５）。そして、インストーラ管理部１１１１は、ステップＳ２２４で取得したプログラムオブジェクトを用いたインストール処理を実行し、ＰＤインストーラ１１１３を更新する（ステップＳ２２６）。この例では、インストーラ管理部１１１１は、プログラムオブジェクトを用いて新たなＰＤインストーラ１１１３を生成し、生成したＰＤインストーラ１１１３により既にインストールされているＰＤインストーラ１１１３を上書きすることで、ＰＤインストーラ１１１３の更新を行う。
【０１３６】
インストーラ管理部１１１１は、ＰＤインストーラ１１１３の更新が完了すると、更新されたＰＤインストーラ１１１３を起動させる（ステップＳ２２７）。
【０１３７】
このステップＳ２２２〜ステップＳ２２７で説明したインストーラの更新処理は、ユーザには不可視の状態で実行される。また、このインストーラの更新処理は、ステップＳ２１３〜ステップＳ２２０のインストール可能なプログラムの一覧を取得する処理と並列的に実行させることが可能である。
【０１３８】
一方、インストーラ管理部１１１１は、プログラム情報一覧に含まれる全てのプログラム情報（ｉ）についてステップＳ２１３〜ステップＳ２２０の処理が終了したと判定すると、ステップＳ２１６、ステップＳ２１８およびステップＳ２２０で取得したインストール可能なプログラムの一覧から、更新不要、すなわちインストールの実行が不要なプログラムを削除する（図１０のステップＳ１１１参照）。
【０１３９】
インストーラ管理部１１１１は、インストール可能なプログラムの一覧に含まれる各プログラムの情報およびバージョン情報を、プログラム情報一覧から取得する。また、インストーラ管理部１１１１は、ＡＰインストーラ１１１２、ＰＤインストーラ１１１３およびＳＤインストーラ１１１４によりクライアントＰＣ１０に既にインストールされている各プログラムの情報およびバージョン情報を取得する。プログラムの情報としては、プログラム情報一覧における項目「name」の情報を用いることができる。インストール済みのプログラムについては、項目「name」の情報およびバージョン情報は、所定の記憶領域、例えばＯＳ１１０の管理領域またはインストーラ１１１が管理する記憶領域に記憶されているものとする。
【０１４０】
なお、プログラム情報（ｉ）からメタデータにより参照されるサブ機種については、項目「model_names」の情報を、プログラムの識別情報として用いることができる。
【０１４１】
インストーラ管理部１１１１は、インストール済みの各プログラムと、インストール可能なプログラムの一覧に含まれる各プログラムとについて、項目「name」の情報が互いに対応するプログラム間でバージョン情報を比較する。インストーラ管理部１１１１は、比較の結果、インストール可能なプログラムの一覧に含まれる各プログラムのうち、インストール済みの対応するプログラムに対してバージョンが古いか、または、バージョンが一致するプログラムを、更新不要のプログラムであると判定する。インストーラ管理部１１１１は、インストール可能なプログラムの一覧から、更新不要のプログラムの情報を削除する。
【０１４２】
また、インストーラ管理部１１１１は、インストール可能なプログラムの一覧に含まれる各プログラムのうち、クライアントＰＣ１０に未だインストールされていないプログラムについては、インストール可能なプログラムの一覧に残す。
【０１４３】
図１７を用いて、第１の実施形態に係る、インストーラ管理部１１１１によるインストール対象のプログラムの判定方法についてより具体的に説明する。インストーラ管理部１１１１は、図１７に例示されるように、各プログラムについて、導入済みバージョンと最新バージョンとを比較して、当該プログラムのインストールが可であるか、不要であるかを判定する。
【０１４４】
図１７において、項目「プログラム」は、図１４のプログラム情報一覧に含まれる各プログラム情報と、プログラム情報に含まれるメタデータから参照される各サブ機種識別情報とを示す。項目「導入済みバージョン」は、クライアントＰＣ１０にインストール済みの対応するプログラムのバージョン情報を示す。項目「最新バージョン」は、動的サーバ４０から取得した各プログラム情報に含まれるバージョン情報を示す。また、項目「判断結果」は、インストーラ管理部１１１１によるプログラムの更新（インストール）が可（ＹＥＳ）であるか、不要（ＮＯ）であるかの判定結果を示す。
【０１４５】
なお、導入済みバージョンの値は、例えば、そのプログラムがインストーラ管理部１１１１の制御に従いクライアントＰＣ１０にインストールされた際に、プログラムの識別情報と関連付けてインストーラ管理部１１１１が自身の管理する記憶領域や、ＯＳ１１０の管理領域に記憶しているものとする。
【０１４６】
図１７において、１〜３行目は、図１４におけるプログラム情報（１）に記述されるメタデータを参照して得られる３のサブ機種識別情報に関して、それぞれ導入済みバージョンおよび最新バージョンのバージョン情報が示されている。これら３のサブ機種識別情報の最新バージョンのバージョン情報は、当該プログラム情報（１）に対応するプログラムオブジェクトのバージョン情報の値「1.2.0.0」が共通して用いられている。また、クライアントＰＣ１０には、３のサブ機種識別情報のうち２番目のサブ機種識別情報に対応する、バージョン情報の値「1.1.0.0」のドライバプログラムのみがインストールされている。
【０１４７】
ここで、１番目および３番目のサブ機種識別情報に対応するドライバプログラムは、クライアントＰＣ１０にインストールされていない。また、３のサブ機種識別情報のうちインストール済みの２番目のサブ機種識別情報に対応するドライバプログラムの導入済みバージョンの値「1.1.0.0」は、新バージョンの値「1.2.0.0」よりも古いバージョンを示している。したがって、インストーラ管理部１１１１は、これら３のサブ機種識別情報それぞれのドライバプログラムは、プログラムの更新またはインストールが可であると判定する。
【０１４８】
図１７において、第４行目〜第６行目は、図１４におけるプログラム情報（３）〜（５）について、それぞれ導入済みバージョン情報および最新バージョン情報が示されている。この例では、プログラム情報（３）〜（５）に対応する各ドライバプログラムは、既にクライアントＰＣ１０にインストールされており、インストール済みの各ドライバプログラムの導入済みバージョンは、それぞれ値「1.0.0.0」、「1.0.0.0」および「2.1.0.0」となっている。これに対して、プログラム情報（３）〜（５）に記述される各ドライバプログラムの最新バージョンは、それぞれ値「1.0.0.0」、「1.0.0.0」および「2.1.0.0」であり、現バージョン情報と一致する。したがって、インストーラ管理部１１１１は、これらプログラム情報（３）〜（５）に対応する各ドライバプログラムのクライアントＰＣ１０へのインストールが不要であると判定する。
【０１４９】
図１７において、第７行目および第８行目は、図１４におけるプログラム情報（６）および（７）について、それぞれ導入済みバージョンおよび最新バージョンのバージョン情報が示されている。この例では、プログラム情報（６）に対応するプログラム（アプリケーションプログラム）は、クライアントＰＣ１０にインストールされていない。また、プログラム情報（７）に対応するプログラム（ＰＤドライバ１１１３）は、最新バージョンが値「2.0.0.0」であるのに対し、クライアントＰＣ１０に既にインストールされている当該プログラムの導入済みバージョンは、値「1.0.0.0」であり、最新バージョンよりも古いバージョンである。したがって、インストーラ管理部１１１１は、これらプログラム情報（６）および（７）に対応する各プログラムのクライアントＰＣ１０へのインストールが可であると判定する。
【０１５０】
図１１の説明に戻り、インストーラ管理部１１１１は、更新またはインストール不要のプログラムの情報が削除されたインストール可能なプログラムの一覧の情報の情報をＵＩ部１１１０に渡し、インストール可能なプログラムの一覧の表示をＵＩ部１１１０に対して指示する（ステップＳ２２１）。ＵＩ部１１１０は、この指示に応じて、インストーラ管理部１１１１から渡された情報に基づきインストール可能なプログラムの一覧表示画面を作成し、表示部１０１に渡す。
【０１５１】
図１８は、第１の実施形態に係る、インストール可能なプログラムの一覧表示画面の例を示す。図１８において、一覧表示画面２１０は、表示領域２１１とボタン２１６とが配置される。また、表示領域２１１は、リスト表示部２１２と、現バージョン表示部２１３と、新バージョン表示部２１４と、選択入力部２１５とが配置される。
【０１５２】
リスト表示部２１２は、ステップＳ２２１でインストーラ管理部１１１１から渡されたインストール可能なプログラムの一覧に含まれるプログラムのリストが表示される。現バージョン表示部２１３および新バージョン表示部２１４は、それぞれ、リスト表示部２１２に表示されるプログラムの導入済みバージョンと、最新バージョンとが表示される。リスト表示部２１２に表示されるプログラムのうち、クライアントＰＣ１０にインストールされていないプログラムについては、図１８に例示するように、未インストールを示す情報を現バージョン表示部２１３に表示させると好ましい。選択入力部２１５は、リスト表示部２１２に表示されるプログラムを選択する。この例では、選択入力部２１５は、チェックボックスが適用されている。ボタン２１６は、操作することで選択入力部２１５に対する選択入力が確定される。
【０１５３】
図１８の例では、上述した図１７において判断結果が「ＹＥＳ」となっているプログラムのリストがリスト表示部２１２に表示されている。ここで、上述したように、ステップＳ２２２〜ステップＳ２２７におけるインストーラの更新処理はユーザに対して不可視の状態で実行される。そのため、例えばＡＰインストーラ１１１２、ＰＤインストーラ１１１３およびＳＤインストーラ１１１４といったインストーラがインストール可であっても、当該インストーラの情報は、リスト表示部２１２に表示されない。
【０１５４】
図１１の説明に戻り、一覧表示画面２１０に応じたユーザ操作により、インストールを実行するプログラムが選択され、選択したプログラムのインストールがＵＩ部１１１０に対して指示される（ステップＳ２２８）。ＵＩ部１１１０は、この指示に応じて、選択されたプログラムを示す情報をインストーラ管理部１１１１に渡し、選択されたプログラムのインストールの実行をインストーラ管理部１１１１に指示する（ステップＳ２２９）。
【０１５５】
インストーラ管理部１１１１は、この指示に応じて、選択されたプログラム毎にプログラム情報（ｉ）を参照して、インストールの対象となるプログラム情報（ｉ）における項目「download_url」の値に従い静的サーバ４１に対してプログラムオブジェクトを要求する（ステップＳ２３０）。静的サーバ４１は、この要求に応じてプログラムオブジェクトをインストーラ管理部１１１１に送信する（ステップＳ２３１）。
【０１５６】
インストーラ管理部１１１１は、静的サーバ４１から送信されたプログラムオブジェクトについて、ＡＰインストーラ１１１２、ＰＤインストーラ１１１３およびＳＤインストーラ１１１４のうち、インストール対象となっているプログラム情報（ｉ）の項目「installer」の値に応じたインストーラに対して、インストール処理を実行させる。
【０１５７】
例えば、インストーラ管理部１１１１は、インストール対象となっているプログラム情報（ｉ）における項目「installer」の値がＡＰインストーラ１１１２を示す値「application_installer」である場合、静的サーバ４１から取得したプログラムオブジェクトによるインストール処理を、ＡＰインストーラ１１１２に指示する（ステップＳ２３２）。ＡＰインストーラ１１１２は、この指示に応じて、当該プログラム情報（ｉ）の各項目の値を参照して、当該プログラムオブジェクトによるインストール処理を実行する（ステップＳ２３３）。ＯＳ１１０がＷｉｎｄｏｗｓ（登録商標）の場合、このインストール処理は、レジストリの初期設定を含む。
【０１５８】
また、ＡＰインストーラ１１１２は、インストール対象となっているプログラム情報（ｉ）が図１６に示したようなメタデータを含む場合、メタデータに記述される情報に従いＯＳ１１０の管理領域に対して初期設定を書き込む処理も行う。ＡＰインストーラ１１１２は、インストール処理が完了すると、処理が完了した旨をインストーラ管理部１１１１に通知する（ステップＳ２３４）。
【０１５９】
また例えば、インストーラ管理部１１１１は、インストール対象となっているプログラム情報（ｉ）における項目「installer」の値がＰＤインストーラ１１１３を示す値「printer_driver_installer」である場合、静的サーバ４１から取得したプログラムオブジェクトによるインストール処理を、ＰＤインストーラ１１１３に指示する（ステップＳ２３５）。ＰＤインストーラ１１１３は、この指示に応じて、当該プログラム情報（ｉ）の各項目の値を参照して、当該プログラムオブジェクトによるインストール処理を実行する。ＰＤインストーラ１１１３は、インストール処理が完了すると、その旨をインストーラ管理部１１１１に通知する（ステップＳ２３６）。
【０１６０】
同様に、インストーラ管理部１１１１は、インストール対象となっているプログラム情報（ｉ）における項目「installer」の値がＳＤインストーラ１１１４を示す値「scanner_driver_installer」である場合、静的サーバ４１から取得したプログラムオブジェクトによるインストール処理を、ＳＤインストーラ１１１４に指示する（ステップＳ２３７）。ＳＤインストーラ１１１４は、この指示に応じて、当該プログラム情報（ｉ）の各項目の値を参照して、当該プログラムオブジェクトによるインストール処理を実行する。ＳＤインストーラ１１１４は、インストール処理が完了すると、その旨をインストーラ管理部１１１１に通知する（ステップＳ２３８）。
【０１６１】
インストーラ管理部１１１１は、ステップＳ２２９で指示された全てのプログラムについてインストール完了の通知を取得すると、インストール処理が完了した旨をＵＩ部１１１０に通知する（ステップＳ２４０）。ＵＩ部１１１０は、この通知に応じて、インストール処理の完了を示す完了通知画面を作成し、表示部１０１に渡す。
【０１６２】
図１９は、第１の実施形態に係る完了通知画面の例を示す。図１９において、完了通知画面２２０は、表示領域２２１とボタン２２４とが配置される。また、表示領域２２１は、リスト表示部２２２と、バージョン表示部２２３とが配置される。
【０１６３】
リスト表示部２２２は、上述のステップＳ２３４、ステップＳ２３６およびステップＳ２３８においてインストール処理の完了通知を取得したプログラムのリストが表示される。なお、例えばＡＰインストーラ１１１２、ＰＤインストーラ１１１３およびＳＤインストーラ１１１４といったインストーラの更新処理が行われた場合であっても、更新されたインストーラの情報は、リスト表示部２２２に表示されない。バージョン表示部２２３は、リスト表示部２２２に表示される各プログラムのバージョン情報が表示される。ボタン２２４は、操作することで一連のインストール処理が終了される。
【０１６４】
（第２の実施形態）
次に、第２の実施形態について説明する。上述した第１の実施形態では、インストーラ１１１が既に対応している種類のプログラムについて、インストールまたは更新を実行していた。これに対して、第２の実施形態では、インストーラ１１１が未対応の種類のプログラムのインストールを実行可能としている。
【０１６５】
なお、第２の実施形態において、情報処理システム、クライアントＰＣ１０およびインストーラ１１１の構成は、上述した第１の実施形態で図１〜図６などを用いて説明した構成をそのまま適用可能なので、ここでの説明を省略する。また、以下では、適宜、「インストーラ１１１が未対応の種類のプログラム」を「新たな種類のプログラム」と呼び、新たな種類のプログラムをインストールするために用いるインストーラを、「新たな種類のインストーラ」と呼ぶ。
【０１６６】
図２０は、第２の実施形態に係るインストール処理を示す一例のフローチャートである。この図２０のフローチャートによる各処理は、インストーラ１１１により実行される。なお、図２０において、上述した図１０のフローチャートと共通する処理には同一の符号を付して、詳細な説明を省略する。具体的には、図２０のフローチャートは、図１０のフローチャートに対してステップＳ１２００〜ステップＳ１２０３の処理が追加されている。
【０１６７】
インストーラ１１１は、図１０のフローチャートと同様にしてステップＳ１００でプログラム情報一覧を動的サーバ４０から取得する。そして、インストーラ１１１は、ステップＳ１０２〜ステップＳ１１０の処理を、プログラム情報一覧に含まれるプログラム情報（ｉ）毎に実行する。
【０１６８】
インストーラ１１１は、ステップＳ１０５で、プログラム情報（ｉ）が示すプログラムがインストーラであるか否かを判定する。インストーラ１１１は、プログラム情報（ｉ）が示すプログラムがインストーラではないと判定した場合、上述と同様にして、処理をステップＳ１０９に移行させる。
【０１６９】
インストーラ１１１は、ステップＳ１０９で、プログラム情報（ｉ）に示されるインストーラに対してプログラム情報（ｉ）を渡し、インストール可能なプログラムの情報の取得を行う。ここで、プログラム情報（ｉ）に係るプログラムが新たな種類のプログラムである場合、インストーラ１１１は、新たな種類のプログラムをインストールするための新たな種類のインストーラを含んでいないことになる。この場合、インストーラ１１１は、例えば、プログラム情報（ｉ）に含まれる表示名（項目「name」の値）を抽出して、インストール可能なプログラムの情報として取得する。
【０１７０】
一方、インストーラ１１１は、プログラム情報（ｉ）が示すプログラムがインストーラであると判定した場合、処理をステップＳ１２００に移行させる。ステップＳ１２００で、インストーラ１１１は、プログラム情報（ｉ）が示すインストーラがクライアントＰＣ１０に既に導入済みのインストーラであるか否かを判定する。
【０１７１】
例えば、インストーラ１１１は、プログラム情報（ｉ）における項目「installer」の値を参照し、この値がインストーラ１１１に既に含まれる各インストーラに対応するか否かを判定する。インストーラ１１１は、項目「installer」の値がインストーラ１１１に既に含まれる各インストーラに対応する場合、プログラム情報（ｉ）が示すインストーラ１１１がクライアントＰＣ１０に既に導入済みのインストーラであると判定する。
【０１７２】
インストーラ１１１は、プログラム情報（ｉ）が示すインストーラが導入済みのインストーラであると判定した場合、処理をステップＳ１０６に移行させ、プログラム情報（ｉ）が示すインストーラを取得し、ステップＳ１０７で、取得したインストーラによりこの導入済みのインストーラを更新する。そして、処理をステップＳ１０８に移行させる。
【０１７３】
一方、インストーラ１１１は、プログラム情報（ｉ）が示すインストーラが未導入のインストーラ、すなわち新たな種類のインストーラであると判定した場合、処理をステップＳ１０８に移行させる。すなわち、インストーラ１１１は、この段階では、新たな種類のインストーラの取得およびインストールを行わない。
【０１７４】
インストーラ１１１は、ステップＳ１０２〜ステップＳ１１０の処理を、プログラム情報一覧に含まれる全てのプログラム情報（ｉ）について実行し、処理をステップＳ１１１に移行させる。ステップＳ１１１で、インストーラ１１１は、上述と同様にして、更新不要プログラムをユーザ提示用のインストール可能なプログラムのリストから削除する。インストーラ１１１は、次のステップＳ１１２で、更新不要プログラムが削除されたインストール可能なプログラムのリストをユーザに提示する。インストーラ１１１は、例えば図１８に示した一覧表示画面２１０を表示部１０１により表示させて、インストール可能なプログラムのリストをユーザに提示する。このインストール可能なプログラムのリストは、新たな種類のプログラムの情報を含むことができる。
【０１７５】
次のステップＳ１２０１で、インストーラ１１１は、提示したインストール可能なプログラムのリストから、インストール対象のプログラムをユーザが選択したか否かを判定する。インストーラ１１１は、例えば、一覧表示画面２１０においてインストールを指示するボタン２１６が操作された場合に、ユーザによる選択が行われたと判定する。インストーラ１１１は、ユーザによる選択が行われていないと判定すると、処理をステップＳ１２０１に戻す。
【０１７６】
インストーラ１１１は、ユーザがインストール対象のプログラムを選択したと判定した場合、処理をステップＳ１２０２に移行させる。ステップＳ１２０２で、インストーラ１１１は、ユーザに選択されたプログラムのインストールに、新たな種類のインストーラが必要か否かを判定する。インストーラ１１１は、新たな種類のインストーラが必要ではないと判定した場合、処理をステップＳ１１３に移行させる。
【０１７７】
例えば、インストーラ１１１は、選択された各プログラムについて、それぞれ対応するプログラム情報の項目「installer」の値を取得する。インストーラ１１１は、取得した値がインストーラ１１１に含まれる各インストーラ１１１２、１１１３および１１１４のうち何れを示しているかを調べる。その結果、インストーラ１１１は、取得した値が各インストーラ１１１２、１１１３および１１１４のうち何れも示していないとされた場合に、当該プログラム情報が対応するプログラムが新たな種類のプログラムであって、インストールには新たな種類のインストーラが必要であると判定する。
【０１７８】
インストーラ１１１は、ステップＳ１２０２で、新たな種類のインストーラが必要であると判定した場合、処理をステップＳ１２０３に移行させる。ステップＳ１２０３で、インストーラ１１１は、新たな種類のインストーラを取得し、取得したインストーラのインストールを実行する。
【０１７９】
インストーラ１１１は、新たな種類のインストーラを、例えば以下の方法で取得する。インストーラ１１１は、プログラム情報一覧に含まれる全てのプログラム情報から、項目「installer」が値「installer_manager」である第１のプログラム情報を選択し、選択した第１のプログラム情報から項目「id」の値を取得する。インストーラ１１１は、取得した項目「id」の値が、新たな種類のプログラムに対応する第２のプログラム情報の項目「installer」の値に対応する場合に、第１のプログラム情報が、第２のプログラム情報が対応する新たな種類のプログラムをインストールするための新たな種類のインストーラに対応すると判定する。そして、インストーラ１１１は、第１のプログラム情報の記述に従い新たな種類のインストーラを取得し、取得した新たな種類のインストーラをクライアントＰＣ１０にインストールする。
【０１８０】
ステップＳ１１３で、インストーラ１１１は、ユーザに選択されたプログラムをクライアントＰＣ１０にインストールする。この場合、新たな種類のインストーラが既にインストールされているので、新たな種類のプログラムのインストール処理も実行可能となっている。インストーラ１１１は、選択された全てのプログラムのインストールが完了すると、図２０のフローチャートによる一連の処理を終了させる。
【０１８１】
第２の実施形態に係るインストール処理について、より具体的な例を用いて説明する。インストーラ１１１は、上述と同様に、それぞれアプリケーションプログラム、プリンタドライバプログラムおよびスキャナドライバプログラムをインストールするインストーラ１１１２、１１１３および１１１４を、初期状態において含んでいるものとする。
【０１８２】
図２１は、第２の実施形態の処理を説明するための、新たな種類のプログラムのプログラム情報と、新たな種類のインストーラのプログラム情報とを含むプログラム情報一覧の例を示す。図２１の例では、プログラム情報一覧は、行番号「２」〜「１０」の行において、括弧「｛」および「｝」に挟まれてプログラム情報（１）が記述され、行番号「１１」〜「１９」の行にプログラム情報（２）が記述されている。
【０１８３】
図２１において、プログラム情報（１）は、ポートモニタプログラム（以下、ポートモニタと呼ぶ）に関するもので、項目「id」が値「portmonitor_filter_a」とされてプログラムの種類が示され、項目「name」が値「PortMonitor  Filter  A」となっている。また、項目「installer」が値「portmonitor_installer」とされ、このプログラム情報（１）に対応するプログラムのインストールには、ポートモニタインストーラ（以下、ＰＭインストーラと呼ぶ）が用いられることが分かる。
【０１８４】
図２１において、プログラム情報（２）は、項目「installer」が値「installer_manager」となっており、プログラムのインストールを行うインストーラであることが示される。また、プログラム情報（２）は、項目「id」が値「portmonitor_installer」とされ、ポートモニタのインストールに対応するＰＭインストーラであることが示される。
【０１８５】
ＰＭインストーラは、初期状態のインストーラ１１１には導入されていない、新たな種類のインストーラである。また、この新たな種類のインストーラであるＰＭインストーラにインストールされるプログラム情報（１）に対応するポートモニタは、新たな種類のプログラムである。
【０１８６】
インストーラ１１１は、この図２１に例示するプログラム情報一覧をステップＳ１００で取得したものとする。この場合、インストーラ１１１は、プログラム情報（１）については、図２０のフローチャートにおいて、ステップＳ１０５でプログラム情報（１）が示すプログラムがインストーラではないと判定し、ステップＳ１０９で、プログラム情報（１）についてインストール可能なプログラムの情報を取得する。
【０１８７】
この例では、プログラム情報（１）は、メタデータを含んでいないため、インストーラ１１１は、プログラム情報（１）に含まれる表示名、すなわち項目「name」の値「PortMonitor  Filter  A」を、インストール可能なプログラムの情報として取得する。そして、ステップＳ１１０で、インストーラ１１１は、ステップＳ１０９で取得したプログラムの情報を、ユーザに提示するための、インストール可能なプログラムのリストに登録する。
【０１８８】
一方、インストーラ１１１は、プログラム情報（２）については、図２０のステップＳ１０５でプログラム情報（２）が示すプログラムがインストーラであると判定する。そして、インストーラ１１１は、処理をステップＳ１２００に移行させて、プログラム情報（２）が示すインストーラがインストーラ１１１に導入済みか否かを判定する。図２１の例では、プログラム情報（２）が示すインストーラがＰＭインストーラである。したがって、インストーラ１１１は、プログラム情報（２）が示すインストーラがインストーラ１１１に導入されていないと判定し、図２０のステップＳ１０６およびステップＳ１０７の処理をスキップして、処理をステップＳ１０８に移行させる。
【０１８９】
プログラム情報一覧に含まれる全てのプログラム情報（ｉ）についての処理が終了すると、インストーラ１１１は、処理をステップＳ１１１に移行させる。ステップＳ１１１で、インストーラ１１１は、ユーザ提示用のインストール可能なプログラムのリストから、更新不要のプログラムを削除する。
【０１９０】
具体的には、インストーラ１１１は、プログラム情報（１）およびプログラム情報（２）のそれぞれについて、図２２に例示されるように導入済みバージョンと最新バージョンとを比較する。この場合、プログラム情報（１）が示す新たな種類のプログラムは、クライアントＰＣ１０にインストールされていないので、インストール可とされる。同様に、プログラム情報（２）が示す新たな種類のインストーラは、インストーラ１１１に導入されていないので、インストール可とされる。
【０１９１】
インストーラ１１１は、次のステップＳ１１２で、インストール可能なプログラムのリストを表示部１０１により表示させる。この例の場合、図２３に示されるように、一覧表示画面２１０内のリスト表示部２１２に対して、新たな種類のプログラムを示す情報として、プログラム情報（１）の項目「name」に記述される値「PortMonitor  Filter  A」が表示される。また、プログラム情報（２）に対応するプログラムはインストーラであるため、リスト表示部２１２には表示されない。
【０１９２】
図２３の一覧表示画面２１０において、新たな種類のプログラムであるポートモニタを示す「PortMonitor  Filter  A」がチェックされ、ボタン２１６が操作されると、処理がステップＳ１２０２に移行される。上述したステップＳ１２００の判定に従いステップＳ１０６およびステップＳ１０７がスキップされているので、ポートモニタをインストールするためのＰＭインストーラは、未だインストーラ１１１に導入されていない。したがって、インストーラ１１１は、ステップＳ１２０３で、プログラム情報（２）の記述に従い静的サーバ４１からＰＭインストーラを取得してインストールし、インストーラ１１１に導入する。
【０１９３】
図２４は、第２の実施形態に係る、図６で示したインストーラ１１１に、新たな種類のインストーラであるＰＭインストーラを追加してインストールした例を示す。なお、図２４において、上述した図６と共通する部分には同一の符号を付して、詳細な説明を省略する。
【０１９４】
図２４において、インストーラ１１１ａは、図６のインストーラ１１１におけるＵＩ部１１１０およびインストーラ管理部１１１１と、ＡＰインストーラ１１１２、ＰＤインストーラ１１１３およびＳＤインストーラ１１１４とを含む構成に対し、さらに、ＰＭインストーラ１１１５が追加されて導入されている。インストーラ１１１ａは、ＰＭインストーラ１１１５が追加導入されたことで、図２０のステップＳ１１３において、クライアントＰＣ１０に対するポートモニタのインストールを実行することができる。
【０１９５】
第２の実施形態によれば、インストーラ１１１は、プログラムのインストールに際して導入されていないインストーラが必要な場合に、未導入のインストーラを導入できるようにしている。これにより、インストーラ１１１の対応可能なプログラムの種類を増やすことができ、インストーラ１１１の機能を拡張できる。
【０１９６】
（第３の実施形態）
次に、第３の実施形態について説明する。上述した第１および第２の実施形態では、動的サーバ４０および静的サーバ４１との通信は、インストーラ管理部１１１１のみが行っていた。これに対して、第３の実施形態では、インストーラ管理部１１１１に加え、各インストーラ（例えばＡＰインストーラ１１１２、ＰＤインストーラ１１１３およびＳＤインストーラ１１１４）も、プログラム情報を取得するプログラム情報取得部と、プログラムを取得するプログラム取得部と、インストール処理を制御するインストール制御部との機能を備える。すなわち、第３の実施形態に係る各インストーラは、動的サーバ４０および静的サーバ４１と通信を行い、プログラム情報、メタデータ、プログラムオブジェクトなどを取得することができる。これにより、各インストーラは、インストール対象のプログラムをインストールするためにさらに他のプログラムが必要である場合に、当該他のプログラムを容易に取得でき、プログラムのインストール処理を効率的に実行可能となる。
【０１９７】
図２５は、第３の実施形態に係るインストーラの一例の構成を示す。図２５において、インストーラ１１１ｂは、図６を用いて説明した第１の実施形態に係るインストーラ１１１と同様に、ＵＩ部２１１０とインストーラ管理部２１１１と各インストーラとを含む。図２５の例では、各インストーラは、ＡＰインストーラ２１１２と、ＰＤインストーラ２１１３と、ＳＤインストーラ２１１４と、ＰＭインストーラ２１１５とを含んでいる。
【０１９８】
なお、以下では、特に記載の無い限り、あるプログラムをインストールする際に必要となる他のプログラムを、関連プログラムと呼ぶ。また、インストーラ１１１ｂが包括する各インストーラを、適宜、プログラムインストーラと呼んで、インストーラ１１１ｂと区別する。図２５の例では、ＡＰインストーラ２１１２、ＰＤインストーラ２１１３、ＳＤインストーラ２１１４およびＰＭインストーラ２１１５を総称する際に、プログラムインストーラの用語を用いる。
【０１９９】
第３の実施形態に係るインストーラ１１１ｂが含むＵＩ部２１１０、インストーラ管理部２１１１および各プログラムインストーラは、図６に示したインストーラ１１１が含む各プログラムインストーラと、一部の機能が異なる。
【０２００】
例えば、ＰＤインストーラ２１１３は、対応する機種のプリンタドライバプログラム（以下、プリンタドライバ）のクライアントＰＣ１０に対するインストール処理を実行する。より具体的には、ＰＤインストーラ２１１３は、プリンタドライバをクライアントＰＣ１０にインストールし、インストールしたプリンタドライバがクライアントＰＣ１０において使用する印刷ポートを設定する。また、ＰＤインストーラ２１１３は、論理プリンタキューの作成と、インストールされたプリンタドライバに関する情報のクライアントＰＣ１０への登録処理などを行う。
【０２０１】
ＳＤインストーラ２１１４は、対応する機種のスキャナドライバプログラム（以下、スキャナドライバ）をクライアントＰＣ１０にインストールする処理を実行する。より具体的には、ＳＤインストーラ２１１４は、スキャナドライバをクライアントＰＣ１０にインストールし、インストールしたスキャナドライバがクライアントＰＣ１０において使用するスキャンポートを設定する。
【０２０２】
また、ＰＭインストーラ２１１５は、インストール対象のクライアントＰＣ１０における各種ポートをモニタするポートモニタプログラム（ポートモニタ）をインストールする。ポートモニタは、クライアントＰＣ１０においてポートを利用する関連プログラム（例えばプリンタドライバやスキャナドライバ）がインストールされる際に、事前にインストールされている必要がある。
【０２０３】
さらに、第３の実施形態に係るＰＤインストーラ２１１３、ＳＤインストーラ２１１４およびＰＭインストーラ２１１５は、各ドライバまたはモニタをインストールするクライアントＰＣ１０と同一セグメント内のネットワーク２２に接続される各外部機器のディスカバリと、ディスカバリにより検出された外部機器の機器情報の取得と、クライアントＰＣ１０のＯＳ情報の取得と、動的サーバ４０に対するクエリ発行と、静的サーバ４１に対するメタデータおよびプログラムオブジェクト（ドライバプログラム、モニタプログラム本体）の取得要求とを実行する。
【０２０４】
なお、ＡＰインストーラ２１１２は、クライアントＰＣ１０に対する通常のアプリケーションプログラム（以下、アプリケーション）のインストール処理を実行する。ＡＰインストーラ２１１２がインストールを行うアプリケーションは、上述の第１の実施形態において説明した、プロジェクションアプリケーション、電子黒板ビューアアプリケーション、画像形成装置操作アプリケーションおよび通信設定ツールを含む。
【０２０５】
上述したプリンタドライバ、スキャナドライバおよびポートモニタは、それぞれＯＳにより規定される場所および方法に従いクライアントＰＣ１０にインストールされる点で、通常のアプリケーションとは区別される。例えば、通常のアプリケーションは、ＯＳにより指定される場所および方法でインストールされるようにしてもよいし、当該アプリケーション独自の場所および方法でインストールされるようにもできる。
【０２０６】
第３の実施形態に係るインストーラ１１１ｂは、各プログラムインストーラ（図２５の例ではＡＰインストーラ２１１２、ＰＤインストーラ２１１３、ＳＤインストーラ２１１４およびＰＭインストーラ２１１５）を予め含まない状態としてクライアントＰＣ１０にインストールすることができる。図２６は、第３の実施形態に係る、各プログラムインストーラを含まないインストーラ１１１ｂの一例の構成を示す。図２６において、インストーラ１１１ｂは、ＵＩ部２１１０およびインストーラ管理部２１１１のみが含まれている。
【０２０７】
ところで、インストーラ管理部２１１１がプログラムインストーラのインストールを行う際に、インストール対象のプログラムインストーラが他のプログラムインストーラを必要とする場合がある。第３の実施形態では、このような場合において、インストール対象のプログラムインストーラが当該他のプログラムインストーラを取得し実行させることを可能としている。これにより、インストール処理に係るユーザの負担が軽減され、また、より柔軟なインストール処理が可能となる。
【０２０８】
一例として、図２６の各プログラムインストーラを含まない状態のインストーラ１１１ｂによって、あるプリンタ装置に対応するプリンタドライバをクライアントＰＣ１０にインストールする場合について考える。この場合、インストーラ管理部２１１１は、ＵＩ部２１１０からの指示に応じて、当該プリンタドライバをクライアントＰＣ１０にインストールするためのＰＤインストーラ２１１３を、ネットワーク３０を介して取得する。また、インストーラ管理部２１１１は、当該プリンタドライバに対応するユーティリティプログラムをインストールするためのＡＰインストーラ２１１２を、ネットワーク３０を介して取得する。
【０２０９】
インストーラ管理部２１１１は、取得したＡＰインストーラ２１１２を起動させてアプリケーションをクライアントＰＣ１０にインストールする。
【０２１０】
また、インストーラ管理部２１１１は、取得したＰＤインストーラ２１１３を起動させて、プリンタドライバのクライアントＰＣ１０に対するインストール処理を開始する。このとき、上述したように、プリンタドライバのインストールの際には、当該プリンタドライバが利用するポートの設定を予め行う必要がある。そこで、第３の実施形態においては、ＰＤインストーラ２１１３は、ポートのモニタを行うポートモニタをインストールするためのＰＭインストーラ２１１５をネットワーク３０を介して取得して起動させ、ポートモニタをクライアントＰＣ１０にインストールさせる。ＰＤインストーラ２１１３は、ポートモニタのインストール処理の完了後、プリンタドライバのインストールを実行する。
【０２１１】
図２７は、第３の実施形態に係る、図２６の状態のインストーラ１１１ｂに対して上述のプリンタドライバのインストール処理を実行した結果の例を示す。プリンタドライバのインストールに伴い、ＡＰインストーラ２１１２およびＰＤインストーラ２１１３と共に、ＰＭインストーラ２１１５がクライアントＰＣ１０にインストールされ、インストーラ１１１ｂ内に含まれている。
【０２１２】
このように、第３の実施形態では、ＰＤインストーラ２１１３によるプリンタドライバのインストール処理の際に、プリンタドライバの関連プログラムが自動的にインストールされる。そのため、ドライバプログラムのインストール処理をより容易に行うことができ、複数の異なるドライバプログラムをインストールする場合であっても、インストール処理を簡便に実行することが可能となる。
【０２１３】
次に、図２８および図２９のフローチャートを用いて、第３の実施形態に係るインストール処理をより詳細に説明する。
【０２１４】
先ず、図２８のフローチャートによる処理について説明する。図２８は、インストーラ管理部２１１１による各プログラムインストーラ（例えばＡＰインストーラ２１１２、ＰＤインストーラ２１１３、ＳＤインストーラ２１１４およびＰＭインストーラ２１１５のうち１以上のインストーラ）のインストール処理の例を示す。図２８のフローチャートにおける各処理は、インストーラ１１１ｂ、より詳細には、インストーラ１１１ｂに含まれるＵＩ部２１１０およびインストーラ管理部２１１１により実行される。
【０２１５】
ステップＳ３００で、インストーラ管理部２１１１は、ネットワーク２２を介した外部機器の探索および動的サーバ４０に対するクエリを実行し、クライアントＰＣ１０にインストール可能なプログラムインストーラを示すインストーラ情報の一覧を取得する。
【０２１６】
インストーラ１１１ｂにおいて、インストーラ管理部２１１１は、変数ｉを値０に初期化する（ステップＳ３０１）。なお、ステップＳ３００で取得したインストーラ情報の総数を値ｊとする。
【０２１７】
以降、ステップＳ３０２〜ステップＳ３０５の処理は、ステップＳ３００で取得した全てのインストーラ情報について実行される。なお、以下では、ｉ番目のインストーラ情報をインストーラ情報（ｉ）として記述する。
【０２１８】
インストーラ管理部２１１１は、ステップＳ３０２で値ｉを１だけインクリメントし、ステップＳ３０３で、インストーラ情報（ｉ）がメタデータ（メタ情報）を含むか否かを判定する。インストーラ管理部２１１１は、インストーラ情報（ｉ）がメタデータを含まないと判定した場合、処理をステップＳ３０５に移行させる。一方、インストーラ管理部２１１１は、インストーラ情報（ｉ）がメタデータを含むと判定した場合、処理をステップＳ３０４に移行させ、インストーラ情報（ｉ）の記述に基づき、静的サーバ４１からメタデータを取得する。メタデータを取得したインストーラ管理部２１１１は、処理をステップＳ３０５に移行させる。
【０２１９】
ステップＳ３０５で、インストーラ管理部２１１１は、変数ｉとインストーラ情報の総数の値ｊとが一致するか否かを判定する。インストーラ管理部２１１１は、変数ｉと値ｊとが一致する場合、ステップＳ３００で取得された全てのインストーラ情報について処理が終了したと判断して、処理をステップＳ３０６に移行させる。一方、インストーラ管理部２１１１は、変数ｉと値ｊとが一致しないと判定した場合、処理をステップＳ３０２に戻して変数ｉを１だけインクリメントして、次のインストーラ情報（ｉ）に対する処理を実行する。
【０２２０】
ステップＳ３０６で、インストーラ管理部２１１１は、インストーラ情報の一覧を、ＵＩ部２１１０により表示部１０１により表示させてユーザに提示する。ユーザは、このインストーラ情報の一覧から、クライアントＰＣ１０にインストールしたい１つ以上のプログラムインストーラを選択することが可能であるものとする。
【０２２１】
次のステップＳ３０７で、インストーラ管理部２１１１は、ユーザに提示したインストーラ情報の一覧に対するユーザによるユーザの選択入力を待機する。インストーラ管理部２１１１は、ＵＩ部２１１０から通知が無く、ユーザによる選択入力がなされていないと判定した場合、処理をステップＳ３０７に戻す。一方、インストーラ管理部２１１１は、ＵＩ部２１１０からの通知に従いユーザによる選択入力があったと判定した場合、処理をステップＳ３０８に移行させる。
【０２２２】
インストーラ管理部２１１１は、変数ｋを値０に初期化する（ステップＳ３０８）。なお、ステップＳ３０７においてユーザに選択されたインストーラ情報の総数を値ｌとする。インストーラ管理部２１１１は、ＵＩ部２１１０からのユーザ選択入力の通知によりこの選択されたインストーラ情報の総数の値ｌを受け取る。
【０２２３】
以降、ステップＳ３０９〜ステップＳ３１２の処理は、ステップＳ３０７でＵＩ部２１１０から通知された全てのインストーラ情報について実行される。
【０２２４】
インストーラ管理部２１１１は、ステップＳ３０９で値ｋを１だけインクリメントし、次のステップＳ３１０で、ｋ番目のインストーラ情報の記述に基づき、ｋ番目のインストーラ情報に対応するインストーラプログラムのプログラムオブジェクト（ｋ）を静的サーバ４１から取得する。次のステップＳ３１１で、インストーラ管理部２１１１は、ステップＳ３１０で取得したプログラムオブジェクト（ｋ）によるインストーラプログラムをクライアントＰＣ１０にインストールする。
【０２２５】
次のステップＳ３１２で、インストーラ管理部２１１１は、変数ｋとインストーラ情報の総数の値ｌとが一致するか否かを判定する。変数ｋと値ｌとが一致しないと判定した場合、インストーラ管理部２１１１は、処理をステップＳ３０９に戻す。一方、変数ｋと値ｌとが一致すると判定した場合、インストーラ管理部２１１１は、ステップＳ３０７でＵＩ部２１１０から通知された全てのインストーラ情報について処理が終了したと判断し、図２８のフローチャートによる一連の処理を終了させる。
【０２２６】
図２９のフローチャートによる処理について説明する。図２９は、各インストーラによる、関連プログラムのインストール処理の例を示す。この図２９のフローチャートによる処理は、上述した図２８のフローチャートによる処理によりクライアントＰＣ１０にインストールされた各プログラムインストーラのうち、ドライバプログラムをインストールするためのプログラムインストーラが１つ起動されることで開始される。図２５の例では、例えばＰＤインストーラ２１１３およびＳＤインストーラ２１１４のうち何れかが起動されることで、図２９のフローチャートの処理が開始される。以下では、起動されたプログラムインストーラを対象プログラムインストーラとする。
【０２２７】
ステップＳ３２０で、対象プログラムインストーラは、ネットワーク２２を介した外部機器の探索および動的サーバ４０に対するクエリを実行し、対象プログラムインストーラに対応するドライバプログラムの情報であるドライバ情報を取得する。対象プログラムインストーラが複数のドライバプログラムに対応する場合、対象プログラムインストーラは、ドライバ情報の一覧を取得する。次のステップＳ３２１で、対象プログラムインストーラは、ステップＳ３２０で取得されたドライバ情報一覧に含まれるドライバ情報がメタデータを持っている場合、静的サーバ４１からそのメタデータを取得する。
【０２２８】
次のステップＳ３２２で、対象プログラムインストーラは、ステップＳ３２０で取得したドライバ情報の一覧を、ＵＩ部２１１０により表示部１０１に表示させてユーザに提示する。ユーザは、このドライバ情報の一覧から、クライアントＰＣ１０にインストールしたい１以上のドライバプログラムを選択可能であるものとする。
【０２２９】
次のステップＳ３２３で、対象プログラムインストーラは、ユーザに提示したドライバ情報の一覧に対するユーザによるユーザの選択入力を待機する。対象プログラムインストーラは、ＵＩ部２１１０から通知が無く、ユーザによる選択入力がなされていないと判定した場合、処理をステップＳ３２３に戻す。一方、対象プログラムインストーラは、ＵＩ部２１１０からの通知に従いユーザによる選択入力があったと判定した場合、処理をステップＳ３２４に移行させる。
【０２３０】
対象プログラムインストーラは、変数ｍを値０に初期化する（ステップＳ３２４）。なお、ステップＳ３２３においてユーザに選択されたドライバ情報（ドライバプログラム）の総数を値ｎとする。対象プログラムインストーラは、ＵＩ部２１１０からのユーザ選択入力の通知により、この選択されたドライバ情報の総数の値ｎを受け取る。
【０２３１】
次のステップＳ３２５で、対象プログラムインストーラは、ステップＳ３２３において選択されたドライバ情報に基づき、自身のアップデートが必要か否かを判定する。例えば、対象プログラムインストーラは、自身のインストーラ情報に含まれるバージョン情報と、選択されたドライバ情報に含まれるバージョン情報とを比較して、自身のアップデートが必要か否かを判定する。対象プログラムインストーラは、自身のアップデートが不要であると判定した場合、処理をステップＳ３２９に移行させる。
【０２３２】
一方、対象プログラムインストーラは、ステップＳ３２５で、自身のアップデートが必要であると判定した場合、インストーラ管理部２１１１に対して自身のアップデートを指示する。処理はステップＳ３２６に移行され、インストーラ管理部２１１１は、動的サーバ４０から対象プログラムインストーラのアップデートプログラムの情報を取得する。さらに、インストーラ管理部２１１１は、当該アップデートプログラム情報がメタデータを含む場合、そのメタデータを静的サーバ４１から取得する（ステップＳ３２７）。
【０２３３】
次のステップＳ３２８で、インストーラ管理部２１１１は、現在の対象プログラムインストーラの動作を停止させ、当該対象プログラムインストーラのアップデートを実行し、更新された対象プログラムインストーラをクライアントＰＣ１０にインストールする。
【０２３４】
例えば、インストーラ管理部２１１１は、ステップＳ３２６およびステップＳ３２７で取得したアップデートプログラム情報およびメタデータに基づき、静的サーバ４１からアップデートプログラムのプログラムオブジェクトを取得する。インストーラ管理部２１１１は、現在の対象プログラムインストーラの動作を停止させた後、取得したアップデートプログラムのプログラムオブジェクトによるプログラムインストーラをクライアントＰＣ１０にインストールし、更新された対象プログラムインストーラとする。
【０２３５】
インストーラ管理部２１１１は、対象プログラムインストーラのアップデート処理が完了すると、新たな対象プログラムインストーラを起動させる。
【０２３６】
以降、ステップＳ３２９〜ステップＳ３４１の処理は、ステップＳ３２３でＵＩ部２１１０から通知された全てのインストーラ情報について実行される。
【０２３７】
対象プログラムインストーラは、ステップＳ３２９で値ｍを１だけインクリメントし、次のステップＳ３３０で、ドライバ情報（ｍ）のドライバプログラムが関連プログラムを必要とするか否かを判定する。対象プログラムインストーラは、関連プログラムが不要であると判定した場合、処理をステップＳ３３９に移行させる。
【０２３８】
対象プログラムインストーラは、ステップＳ３３０で、ドライバ情報（ｍ）のドライバプログラムが関連プログラムを必要とすると判定した場合、処理をステップＳ３３１に移行させ、当該関連プログラムがクライアントＰＣ１０にインストール済みであるか否かを判定する。対象プログラムインストーラは、関連プログラムがインストール済みであると判定した場合、処理をステップＳ３３９に移行させる。対象プログラムインストーラは、関連プログラムが未だインストールされていないと判定した場合、処理をステップＳ３３２に移行させる。
【０２３９】
ステップＳ３３２で、対象プログラムインストーラは、関連プログラムをインストールするためのインストーラプログラム（関連プログラムインストーラと呼ぶ）がクライアントＰＣ１０にインストール済みであるか否かを判定する。対象プログラムインストーラは、関連プログラムインストーラがインストール済みであると判定した場合、処理をステップＳ３３５に移行させる。対象プログラムインストーラは、関連プログラムインストーラが未だインストールされていないと判定した場合、処理をステップＳ３３３に移行させる。
【０２４０】
ステップＳ３３３で、対象プログラムインストーラは、例えば静的サーバ４１から関連プログラムインストーラを取得する。例えば、対象プログラムインストーラは、動的サーバ４０に対するクエリを実行して関連プログラムインストーラの情報の一覧を取得し、取得した関連プログラムインストーラ情報に基づき静的サーバ４１からメタデータを取得する。そして、対象プログラムインストーラは、取得した関連プログラムインストーラ情報およびメタデータに基づき静的サーバ４１から関連プログラムインストーラのプログラムオブジェクトを取得する。
【０２４１】
次のステップＳ３３４で、対象プログラムインストーラは、ステップＳ３３３で取得した関連プログラムインストーラのプログラムオブジェクトにより、関連プログラムインストーラをクライアントＰＣ１０にインストールする。対象プログラムインストーラは、インストールが完了すると、関連プログラムインストーラを起動させる。
【０２４２】
起動された関連プログラムインストーラは、次のステップＳ３３５で、動的サーバ４０に対してクエリを実行して、関連プログラムのプログラム情報を取得する。関連プログラムインストーラは、関連プログラムのプログラム情報に基づき、当該関連プログラムがメタデータを持っている場合、そのメタデータを静的サーバ４１から取得する（ステップＳ３３６）。
【０２４３】
次のステップＳ３３７で、関連プログラムインストーラは、取得した関連プログラムのプログラム情報とメタデータとに基づき静的サーバ４１から当該関連プログラムのプログラムオブジェクトを取得する。そして、関連プログラムインストーラは、次のステップＳ３３８で、取得した関連プログラムのプログラムオブジェクトにより関連プログラムをクライアントＰＣ１０にインストールする。
【０２４４】
次のステップＳ３３９で、対象プログラムインストーラは、ドライバ情報（ｍ）のドライバプログラムのプログラムオブジェクトを静的サーバ４１から取得する。そして、次のステップＳ３４０で、対象プログラムインストーラは、ステップＳ３３９で取得したプログラムオブジェクトにより、ドライバ情報（ｍ）のドライバプログラムをクライアントＰＣ１０にインストールする。
【０２４５】
次のステップＳ３４１で、対象プログラムインストーラは、変数ｍとユーザに選択されたドライバ情報の総数の値ｎとが一致するか否かを判定する。変数ｍと値ｎとが一致しないと判定した場合、対象プログラムインストーラは、処理をステップＳ３２９に戻す。一方、変数ｍと値ｎとが一致すると判定した場合、対象プログラムインストーラは、ステップＳ３２３でＵＩ部２１１０から通知された全てのドライバ情報について処理が終了したと判断し、図２９のフローチャートによる一連の処理を終了させる。
【０２４６】
図３０Ａおよび図３０Ｂは、第３の実施形態に係るインストール処理における情報処理システム全体での処理の例を示すシーケンス図である。なお、図３０Ａおよび図３０Ｂにおいて、上述した図１、図５および図２５と共通する部分には同一の符号を付して、詳細な説明を省略する。また、図３０Ａおよび図３０Ｂに記載の符号「Ａ」〜「Ｉ」は、図３０Ａおよび図３０Ｂ間で対応する符号に処理が移行することを示している。
【０２４７】
以下では、クライアントＰＣ１０にプリンタドライバを新規にインストールする場合を例にとって説明する。ここで、クライアントＰＣ１０には、当該プリンタドライバをインストールするためのＰＤインストーラ２１１３が未だインストールされていないものとする。また、当該プリンタドライバをインストールする際には、ポートモニタが必要とされ、ポートモニタおよびポートモニタをインストールするＰＭインストーラ２１１５も、クライアントＰＣ１０にはインストールされていないものとする。
【０２４８】
例えば、クライアントＰＣ１０に対するユーザ操作により、インストーラ１１１ｂの起動が指示される。この起動指示は、インストーラ１１１ｂのＵＩ部２１１０に通知される（ステップＳ４００）。ＵＩ部２１１０は、インストーラ管理部２１１１に対して、クライアントＰＣ１０と同一セグメント内のネットワーク２２に接続される外部機器のディスカバリを指示する（ステップＳ４０１）。インストーラ管理部２１１１は、ステップＳ４０２で、この指示に応じて、ネットワーク３０に対して外部機器探索の動作（ディスカバリ）を行う。
【０２４９】
インストーラ管理部２１１１は、外部機器探索による検出結果を受け取ると（ステップＳ４０３）、検出された外部機器（画像機器２０1、２０2、…）に対して機種特定情報を要求する（ステップＳ４０４）。インストーラ管理部２１１１は、この要求に応じて各外部機器から送信された機種特定情報を受け取る（ステップＳ４０５）。インストーラ管理部２１１１は、受け取った各外部機器の機種特定情報に基づき、外部機器を選択するための機器一覧の表示をＵＩ部２１１０に対して指示する（ステップＳ４０６）。ＵＩ部２１１０は、この指示に応じて、例えば上述した機器一覧表示画面を作成し、表示部１０１に渡す。機器一覧表示画面としては、図１２に示した機器一覧表示画面２００を適用することができる。
【０２５０】
機器一覧表示画面に応じたユーザ操作により、機種特定情報が選択されると（ステップＳ４０７）、ＵＩ部２１１０は、選択された機種特定情報に対応するインストーラ情報を取得するように、インストーラ管理部２１１１に指示する（ステップＳ４０８）。インストーラ管理部２１１１は、この指示に従い、ＯＳ１１０に対してＯＳ情報の取得を要求する（ステップＳ４０９）。ＯＳ１１０は、この要求に応じてＯＳ情報を返す（ステップＳ４１０）。
【０２５１】
次に、インストーラ管理部２１１１は、ステップＳ４０４およびステップＳ４０５で取得した機種特定情報と、ステップＳ４０９およびステップＳ４１０で取得したＯＳ情報とに基づき、ステップＳ４１１で、インストーラ情報の一覧を取得するためのクエリを作成して動的サーバ４０に送信する（送信手段、第１の処理手段）。動的サーバ４０は、ステップＳ４１２で、このクエリに従いデータベースを検索し、検索して得られたインストーラ情報の一覧をインストーラ管理部２１１１に返す（第１の特定手段）。
【０２５２】
図３１は、第３の実施形態に適用可能な、インストーラ管理部２１１１が作成しステップＳ４１１で動的サーバ４０に送信されるクエリの一例を示す。図３１に示されるクエリにおいて、第３行目〜第１０行目は、図１３に示したクエリの第２行目〜第９行目と同等であり、機器特定情報「MFP  Model  A」と、ＯＳ情報とが記述されている。一方、図３１のクエリでは、図１３のクエリに対して第２行目の項目「installer」が追加されており、この項目「installer」の値として、インストーラ管理部２１１１自身を示す値「installer_manager」が記述されている。この項目「installer」の記述により、動的サーバ４０は、インストーラとしてインストーラ管理部２１１１が指定されているプログラムインストーラを選択して取得することができる。
【０２５３】
動的サーバ４０は、第１の実施形態と同様に、このクエリに従い図８を用いて説明したデータベースを検索し、クエリに記述される各情報に合致するレコードを抽出する。動的サーバ４０は、クエリに従い複数のレコードが抽出された場合、抽出された複数のレコードの各項目の情報を、レコード毎のインストーラ情報の一覧としてインストーラ管理部２１１１に送信する（第１の提供手段）。
【０２５４】
図３２は、第３の実施形態に係る、動的サーバ４０から送信されるインストーラ情報一覧の例を示す。図３２に示されるように、インストーラ情報一覧は、図１４のプログラム情報と同様に、行番号「１」および「３８」の行の最も外側の括弧「［」および「］」に挟まれる内側の各括弧「｛」および「｝」内に、それぞれ１個のインストーラ情報が記述される。図３２の例では、４つのインストーラ情報（１）〜（４）が記述されている。
【０２５５】
また、図３２の例では、それぞれのインストーラ情報は、図１４に示した各プログラム情報から項目「metadata_url」が省略された構成となっている。これに限らず、図１４と同様に、図３２のインストーラ情報に対して項目「metadata_url」を追加してもよい。
【０２５６】
さらに、図３２の例では、各インストーラ情報の最初の行の（第３行目、第１２行目、第２１行目および第３０行目）の項目「id」は、プログラムの種類が示され、この例では、それぞれプログラムインストーラを示す値が記述されている。例えば、図３２において、第１のインストーラ情報（１）では、項目「id」が値「printer_driver_installer」とされ（第３行目参照）、ＰＤインストーラ２１１３のインストーラ情報であることが示されている。また、第２のインストーラ情報（２）では、項目「id」が値「portmonitor_installer」とされ（第１２行目参照）、ＰＭインストーラ２１１５のインストーラ情報であることが示されている。
【０２５７】
以下同様に、第３および第４のインストーラ情報（３）および（４）では、それぞれＡＰインストーラ２１１２およびＳＤインストーラ２１１４のインストーラ情報であることが示されている（第２１行目および第３０行目）。
【０２５８】
また、各インストーラ情報（１）〜（４）において、それぞれ項目「installer」が値「installer_manager」とされており、各インストーラ情報（１）〜（４）に記述されるプログラムインストーラがインストーラ管理部２１１１にインストールされることが示される。
【０２５９】
ステップＳ４１３で、インストーラ管理部２１１１は、上述したステップＳ４１２で取得したインストーラ情報一覧に基づき、静的サーバ４１に対してメタデータを要求する。静的サーバ４１は、この要求に応じて、メタデータをインストーラ管理部２１１１に送信する（ステップＳ４１４）。なお、図３２の例では、インストーラ情報一覧にメタデータの所在を示す情報が含まれていないため、インストーラ管理部２１１１は、メタデータの要求を行わない。
【０２６０】
インストーラ管理部２１１１は、ステップＳ４１２で取得されたインストーラ情報一覧と、ステップＳ４１４で取得されたメタデータとに基づき、インストール可能なプログラムインストーラの一覧の表示をＵＩ部２１１０に対して指示する（ステップＳ４１５）。ＵＩ部２１１０は、この指示に応じて、インストーラ管理部２１１１から渡された情報に基づきインストール可能なプログラムインストーラの一覧表示画面を生成し、表示部１０１に渡す。
【０２６１】
図３３は、第３の実施形態に係る、インストール可能なプログラムインストーラの一覧表示画面の例を示す。図３３において、一覧表示画面２２１０は、表示領域２２１１とボタン２２１６とが配置される。また、表示領域２２１１は、リスト表示部２２１２と、現バージョン表示部２２１３と、新バージョン表示部２２１４と、選択入力部２２１５とが配置される。
【０２６２】
リスト表示部２２１２は、ステップＳ４１５でインストーラ管理部２１１１から渡されたインストール可能なプログラムインストーラの一覧に含まれるプログラムインストーラのリストが表示される。現バージョン表示部２２１３および新バージョン表示部２２１４は、それぞれ、リスト表示部２２１２に表示されるプログラムインストーラの導入済みバージョンと、最新バージョンとが表示される。リスト表示部２２１２に表示されるプログラムインストーラのうち、クライアントＰＣ１０にインストールされていないプログラムインストーラについては、例えば未インストールを示す情報が現バージョン表示部２２１３に表示される。
【０２６３】
選択入力部２２１５は、リスト表示部２２１２に表示されるプログラムインストーラから、インストール対象のプログラムインストーラを選択するために設けられる。この例では、選択入力部２２１５は、チェックボックスが適用されている。ボタン２２１６は、操作することで選択入力部２２１５に対する選択入力が確定される。
【０２６４】
ここでは、図３３に例示されるように、ＰＤインストーラ２１１３と、ＡＰインストーラ２１１２とがインストール対象のプログラムインストーラとして選択されているものとする。
【０２６５】
図３０Ａの説明に戻り、一覧表示画面２２１０に応じたユーザ操作により、インストールを実行するプログラムインストーラが選択され、選択したプログラムインストーラのインストールがＵＩ部２１１０に対して指示される（ステップＳ４１６）。ＵＩ部２１１０は、この指示に応じて、選択されたプログラムインストーラを示す情報をインストーラ管理部２１１１に渡し、選択されたプログラムインストーラのインストールの実行をインストーラ管理部２１１１に指示する（ステップＳ４１７）。
【０２６６】
インストーラ管理部２１１１は、この指示に応じて、選択されたプログラムインストーラ毎にインストーラ情報（ｉ）を参照して、インストールの対象となるインストーラ情報（ｉ）における項目「download_url」の値に従い静的サーバ４１に対してプログラムオブジェクトを要求する（ステップＳ４１８）。静的サーバ４１は、この要求に応じてプログラムオブジェクトをインストーラ管理部２１１１に送信する（ステップＳ４１９）。この例では、一覧表示画面２２１０で選択されたＰＤインストーラ２１１３およびＡＰインストーラ２１１２のプログラムオブジェクトがそれぞれインストーラ管理部２１１１に送信される。
【０２６７】
インストーラ管理部２１１１は、ステップＳ４１９で取得したプログラムオブジェクトにより、ＰＤインストーラ２１１３のインストールと、ＡＰインストーラ２１１２のインストールとを実行する（ステップＳ４２０およびステップＳ４２１）。
【０２６８】
ステップＳ４００からこのステップＳ４２１までの処理が、上述した図２８のフローチャートの処理に対応する。
【０２６９】
ステップＳ４２２以下に、ＰＤインストーラ２１１３が起動された場合の処理について説明する。上述したように、ＰＤインストーラ２１１３がドライバプログラムをインストールする際には、関連プログラムとしてポートモニタプログラムが必要とされるが、クライアントＰＣ１０には、当初、ポートモニタプログラムと、ポートモニタプログラムをインストールするためのＰＭインストーラ２１１５がインストールされていない。
【０２７０】
ステップＳ４２２で、例えばクライアントＰＣ１０に対するユーザ操作により、ＰＤインストーラ２１１３の起動が指示され、起動指示がＰＤインストーラ２１１３に通知される（ステップＳ４２３）。この通知に応じて、ＰＤインストーラ２１１３に対して外部機器のディスカバリが指示される（ステップＳ４２４）。ＰＤインストーラ２１１３は、ディスカバリ指示に従い、クライアントＰＣ１０と同一セグメント内のネットワーク２２に接続される外部機器探索を実行する（ステップＳ４２５）。
【０２７１】
ＰＤインストーラ２１１３は、外部機器探索による検出結果を受け取ると（ステップＳ４２６）、検出された外部機器（画像機器２０1、２０2、…）に対して機種特定情報を要求する（ステップＳ４２７）。ＰＤインストーラ２１１３は、この要求に応じて各外部機器から送信された機種特定情報を受け取る（ステップＳ４２８）。ＰＤインストーラ２１１３は、受け取った各外部機器の機種特定情報に基づき、機器一覧情報を生成する（ステップＳ４２９）。
【０２７２】
ＰＤインストーラ２１１３は、生成した機器一覧情報をＵＩ部２１１０に渡し、外部機器を選択するための機器一覧の表示をＵＩ部２１１０に指示する（ステップＳ４３０）。ＵＩ部２１１０は、この指示に応じて、機器一覧表示画面を作成し、表示部１０１に渡す。ここでの機器一覧表示画面は、例えば図１２を用いて説明した機器一覧表示画面２００と同様の画面を適用できる。
【０２７３】
機器一覧表示画面に応じたユーザ操作により、機種が選択されると（ステップＳ４３１）、ＵＩ部２１１０は、選択された機種に対応するドライバ情報を取得するように、ＰＤインストーラ２１１３に指示する（ステップＳ４３２）。ＰＤインストーラ２１１３は、この指示に従いドライバ情報の取得処理を開始する（ステップＳ４３３）。ＰＤインストーラ２１１３は、先ず、ＯＳ１１０に対してＯＳ情報の取得を要求する（ステップＳ４３４）。ＯＳ１１０は、この要求に応じてＯＳ情報を返す（ステップＳ４３５）。
【０２７４】
次に、ＰＤインストーラ２１１３は、ステップＳ４２７およびステップＳ４２８で取得した機種特定情報と、ステップＳ４３４およびステップＳ４３５で取得したＯＳ情報とに基づき、ドライバ情報の一覧を取得するためのクエリを作成して動的サーバ４０に送信する（ステップＳ４３６）。動的サーバ４０は、ステップＳ４３７で、このクエリに従いデータベースを検索し、検索して得られたドライバ情報の一覧をＰＤインストーラ２１１３に返す（第２の特定手段）。
【０２７５】
図３４は、第３の実施形態に適用可能な、ＰＤインストーラ２１１３が作成しステップＳ４３６で動的サーバ４０に送信されるクエリの一例を示す。図３４のクエリでは、図１３で示したクエリに対して第２行目の項目「installer」が追加されており、この項目「installer」の値として、ＰＤインストーラ２１１３自身を示す値「printer_driver_installer」が記述されている。これにより、動的サーバ４０は、インストーラとしてＰＤインストーラ２１１３が指定されているプログラムインストーラを選択して取得することができる。
【０２７６】
図３５は、第３の実施形態に係る、ステップＳ４３７でＰＤインストーラ２１１３に返される、ドライバ情報の一覧の例を示す。図３５において、ドライバ情報一覧は、図１４で示したドライバ情報一覧に対応し、各項目「id」、「name」、「version」、「date」、「size」、「installer」、「metadata_url」および「download_url」を含む。
【０２７７】
ＰＤインストーラ２１１３は、ステップＳ４３７で動的サーバ４０から返されたプログラム情報一覧における項目「metadata_url」の値に従い、静的サーバ４１に対してメタデータを要求する（ステップＳ４３８）。静的サーバ４１は、この要求に応じてメタデータをＰＤインストーラ２１１３に送信する（ステップＳ４３９）。
【０２７８】
図３６は、第３の実施形態に適用可能な、ステップＳ４３９でＰＤインストーラ２１１３に送信されるメタデータの例を示す。図３６の例では、メタデータは、上述した図１５と同様に、サブ機器の識別情報が記述される（第２行目〜第６行目）。図３６のメタデータは、図１５の構成に対して、項目「requirement」が追加されている。
【０２７９】
項目「requirement」は、このメタデータに対応するプログラムを利用するために必要な情報が記述される。図３６の例では、項目「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」以上のＰＤインストーラ２１１３が必要であることが示される。また、当該プログラムを利用するためには、値「portmonitor_filter_a」と、値「portmonitor_filter_a」に関連付けられる値に従い、関連プログラムとしてのバージョンが「1.0.0.0」以上のポートモニタフィルタプログラムと、当該ポートモニタフィルタプログラムをインストールするためのＰＭインストーラ２１１５とが必要であることが示される。
【０２８１】
ＰＤインストーラ２１１３は、ステップＳ４３５で取得したＯＳ情報と、ステップＳ４３７で取得したドライバ情報一覧と、ステップＳ４３９で取得したメタデータとに基づき、インストール可能なドライバプログラムの一覧情報を生成する（ステップＳ４４０）。ＰＤインストーラ２１１３は、生成したドライバプログラム一覧情報をＵＩ部２１１０に渡し、インストールするドライバプログラムを選択するためのドライバ一覧の表示をＵＩ部２１１０に指示する（ステップＳ４４１）。ＵＩ部２１１０は、この指示に応じて、ドライバ一覧表示画面を作成し、表示部１０１に渡す。
【０２８２】
図３７は、第３の実施形態に適用可能なドライバ一覧表示画面の例を示す。図３７に示されるドライバ一覧表示画面２２２０は、上述した図３５のドライバ情報一覧と、図３６のメタデータとに基づく。すなわち、ドライバ一覧表示画面２２２０は、ドライバ情報一覧に含まれる項目「metadata_url」に従いステップＳ４３８およびステップＳ４３９で取得したメタデータ（図３６参照）に記述される各サブ機器にそれぞれ対応するドライバプログラムを選択するように構成されている。
【０２８３】
より具体的には、ドライバ一覧表示画面２２２０は、表示領域２２２１とボタン２２２６とが配置される。また、表示領域２２２１は、リスト表示部２２２２と、現バージョン表示部２２２３と、新バージョン表示部２２２４と、選択入力部２２２５とが配置される。
【０２８４】
リスト表示部２２２２は、インストール可能なドライバプログラムの一覧が表示される。この例では、ステップＳ４３８およびステップＳ４３９で取得したメタデータ（図３６参照）に記述される各サブ機器にそれぞれ対応するドライバプログラムが一覧で表示されている。現バージョン表示部２２２３および新バージョン表示部２２２４は、それぞれ、リスト表示部２２２２に表示されるドライバプログラムの導入済みバージョンと、最新バージョンとが表示される。リスト表示部２２２２に表示されるドライバプログラムのうち、クライアントＰＣ１０にインストールされていないドライバプログラムについては、例えば未インストールを示す情報が現バージョン表示部２２２３に表示される。
【０２８５】
選択入力部２２２５は、リスト表示部２２２２に表示されるドライバプログラムから、インストール対象のプログラムインストーラを選択するために設けられる。この例では、選択入力部２２２５は、チェックボックスが適用されている。ボタン２２２６は、操作することで選択入力部２２２５に対する選択入力が確定される。
【０２８６】
ここでは、図３７に例示されるように、サブ機器に対応するドライバプログラムのうち１つがインストール対象のドライバプログラムとして選択されているものとする。
【０２８７】
説明は図３０Ｂのシーケンス図に移り、ドライバ一覧表示画面２２２０に応じたユーザ操作により、インストールを実行するドライバプログラムが選択され、選択したドライバプログラムのインストールがＵＩ部２１１０に対して指示される（ステップＳ４５０）。ＵＩ部２１１０は、この指示に応じて、選択されたドライバプログラムを示す情報をＰＤインストーラ２１１３に渡し、選択されたドライバプログラムのインストールの実行をＰＤインストーラ２１１３に指示する（ステップＳ４５１）。
【０２８８】
ＰＤインストーラ２１１３は、この指示に応じて、自身のアップデートが必要か否かを確認する（ステップＳ４５２）。例えば、ＰＤインストーラ２１１３は、ステップＳ４３９で取得したメタデータに含まれる、ＰＤインストーラ２１１３に要求されるバージョンの情報と、自身のバージョンとを比較して、自身のアップデートの要否を判定する。
【０２８９】
この例では、図３２に示されるインストーラ情報一覧と、図３６に示されるメタデータとに基づき、ＰＤインストーラ２１１３自身のバージョンが「1.0.0.0」であるのに対して、選択されたドライバプログラムのインストールに際して要求されるＰＤインストーラ２１１３のバージョンが「2.0.0.0」であるため、ＰＤインストーラ２１１３のアップデートが必要であることが分かる。そのため、ＰＤインストーラ２１１３は、インストーラ管理部２１１１に対して、ＰＤインストーラ２１１３自身のアップデートを要求する（ステップＳ４５３）。
【０２９０】
インストーラ管理部２１１１は、ＰＤインストーラ２１１３からのアップデート要求に応じて、自身に対してインストーラ情報の取得を指示する（ステップＳ４５４）。インストーラ管理部２１１１は、上述したステップＳ４０９〜ステップＳ４１４の処理と同様にして、ＯＳ情報を取得し（ステップＳ４５５、ステップＳ４５６）、動的サーバ４０に対して図３１で示したクエリを送信する（ステップＳ４５７）。動的サーバ４０は、このクエリに従いデータベースを検索し、検索結果としてインストーラ情報を得る（第２の提供手段）。インストーラ管理部２１１１は、動的サーバ４０からインストーラ情報の一覧を取得し（ステップＳ４５８）、静的サーバ４１からメタデータを取得する（ステップＳ４５９、ステップＳ４６０）。
【０２９１】
図３８は、第３の実施形態に係る、ステップＳ４５８で動的サーバ４０から取得するインストーラ情報一覧の例を示す。図３８のインストーラ情報一覧の構成は、図３２を用いて構成したインストーラ情報一覧と同様なので、ここでの詳細な説明を省略する。図３８の例では、第２行目〜第１０行目に項目「id」の、プログラムの種類を示す値「printer_driver_installer」と、第５行目の項目「version」と、第９行目の項目「download_url」の各値により、バージョンが「2.0.0.0」のＰＤインストーラ２１１３が項目「download_url」に記述される場所にあることが分かる。
【０２９２】
インストーラ管理部２１１１は、これら取得された各値に基づき、静的サーバ４１からＰＤインストーラ２１１３をアップデートするためのプログラムオブジェクトを取得する。
【０２９３】
インストーラ管理部２１１１は、インストーラ情報一覧およびメタデータが取得されると、現在起動されているＰＤインストーラ２１１３を停止させる（ステップＳ４６１）。その後、インストーラ管理部２１１１は、静的サーバ４１から取得したＰＤインストーラ２１１３をアップデートするためのプログラムオブジェクトにより、ＰＤインストーラ２１１３をアップデートする。例えば、インストーラ管理部２１１１は、当該プログラムオブジェクトにより既存のＰＤインストーラ２１１３を上書きすることで、ＰＤインストーラ２１１３のアップデートを実行する（ステップＳ４６２）。
【０２９４】
インストーラ管理部２１１１は、アップデートされて更新されたＰＤインストーラ２１１３を起動させる（ステップＳ４６３）。ここで、起動されたＰＤインストーラ２１１３は、ステップＳ４３９でインストーラ管理部２１１１に取得されたメタデータにおける、関連プログラムを示す値「installer:  portmonitor_installer」の記述（図３６参照）に従い、ＰＭインストーラ２１１５のインストールをインストーラ管理部２１１１に指示する（ステップＳ４６４）。インストーラ管理部２１１１は、この指示に従い、ステップＳ４５８で取得したインストーラ情報一覧に基づき、静的サーバ４１からＰＭインストーラ２１１５のプログラムオブジェクトを取得する（ステップＳ４６５、ステップＳ４６６）。
【０２９５】
図３８の例では、第１１行目〜第１９行目に、項目「id」が値「portmonitor_installer」とされ、ＰＭインストーラ２１１５に関する情報が記述されている。インストーラ管理部２１１１は、項目「download_url」の値に従い、静的サーバ４１からＰＭインストーラ２１１５のプログラムオブジェクトを取得する。
【０２９６】
インストーラ管理部２１１１は、ステップＳ４６６で取得したプログラムオブジェクトによりＰＭインストーラ２１１５をクライアントＰＣ１０にインストールする（ステップＳ４６７）。インストーラ管理部２１１１は、ＰＭインストーラ２１１５のインストールが完了すると、インストール完了をＰＤインストーラ２１１３に通知する（ステップＳ４６８）。
【０２９７】
ＰＤインストーラ２１１３は、インストーラ管理部２１１１からＰＭインストーラ２１１５のインストール完了通知を受け取ると、ステップＳ４３９でＰＤインストーラ２１１３に取得されたメタデータにおける、関連プログラムを示す値「portmonitor_filter_a」の記述（図３６参照）に従い、ＰＭインストーラ２１１５にポートモニタのインストールを指示する（ステップＳ４６９）。ＰＭインストーラ２１１５は、この指示に応じて、ポートモニタのインストール処理を開始する。
【０２９８】
すなわち、ＰＭインストーラ２１１５は、例えば上述したステップＳ４３３〜ステップＳ４３９と同様にして、ポートモニタのインストール指示に応じて、自身に対してドライバ情報の取得を指示する（ステップＳ４７０）。ＰＭインストーラ２１１５は、この指示に従い、ＯＳ情報を取得し（ステップＳ４７１、ステップＳ４７２）、動的サーバ４０に対してクエリを送信する（ステップＳ４７３）。
【０２９９】
図３９は、第３の実施形態に適用可能な、ＰＭインストーラ２１１５が作成しステップＳ４７３で動的サーバ４０に送信されるクエリの一例を示す。図３９のクエリでは、図３４で示したクエリの第２行目が項目「installer」から項目「id」に変更されている点を除き、図３４のクエリと共通する。図３９のクエリでは、この項目「id」が値「portmonitor_filter_a」とされ、このクエリにより取得するドライバ情報が一意に識別される。このように、クエリに項目「id」を指定した場合、この項目「id」の値が一致するドライバ情報がクエリの結果として返される。
【０３００】
ＰＭインストーラ２１１５は、このクエリに応じて動的サーバ４０から送信されたドライバ情報一覧を取得する（ステップＳ４７４）。図４０は、第３の実施形態に係る、ステップＳ４７４で取得したドライバ情報一覧の例を示す。図４０の例では、ドライバ情報一覧は、図３５で示したプログラム情報一覧と同様に、各項目「id」、「name」、「version」、「date」、「size」、「installer」、「metadata_url」および「download_url」を含む。
【０３０１】
ＰＭインストーラ２１１５は、取得したドライバ情報一覧に基づき静的サーバ４１からメタデータを取得する（ステップＳ４７５、ステップＳ４７６）。そして、ＰＭインストーラ２１１５は、それぞれ取得したドライバ情報一覧およびメタデータに従い静的サーバ４１からポートモニタのプログラムオブジェクトを取得し（ステップＳ４７７、ステップＳ４７８）、ポートモニタをＰＣ１０にインストールする（ステップＳ４７９）。
【０３０２】
ＰＭインストーラ２１１５は、ポートモニタのインストールが完了すると、インストール完了をＰＤインストーラ２１１３に通知する（ステップＳ４８０）。ＰＤインストーラ２１１３は、この通知に応じて、上述したステップＳ４３６〜ステップＳ４３９で取得したドライバ情報一覧およびメタデータに基づき、静的サーバ４１からプリンタドライバのプログラムオブジェクトを取得する（ステップＳ４８１、ステップＳ４８２）。そして、ＰＤインストーラ２１１３は、取得したプログラムオブジェクトによりプリンタドライバをクライアントＰＣ１０にインストールする（ステップＳ４８３）。
【０３０３】
ＰＤインストーラ２１１３は、プリンタドライバのインストールが完了すると、その旨をＵＩ部２１１０に通知する（ステップＳ４８４）。例えば、ＵＩ部２１１０は、インストール完了通知に応じて例えば表示部１０１によりプリンタドライバのインストール処理が完了した旨を表示させる。
【０３０４】
ステップＳ４８４までの処理が完了した後、例えば、ユーザがクライアントＰＣ１０に搭載される文書アプリケーションプログラムにおいて、プリンタドライバ「MFP  Model  A  type1  Printer  Driver  PCL」（図３５および図３７参照）に対して印刷要求を行ったものとする。この場合、プリンタドライバ「MFP  Model  A  type1  Printer  Driver  PCL」は、当該プリンタドライバ「MFP  Model  A  type1  Printer  Driver  PCL」が対応する機器で処理可能な印刷データを生成し、ステップＳ４６９〜ステップＳ４８０の処理によりインストールされたポートモニタ「Port  Monitor  Filer  A」を用いて、対応する機器に印刷データの印刷指示を送信することが可能となる。
【０３０５】
なお、上述の各実施形態は、本発明の好適な実施の例ではあるが、これに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。
【符号の説明】
【０３０６】
１０  クライアントＰＣ
２０1，２０2  画像機器
４０  動的サーバ
４１  静的サーバ
１０１  表示部
１０２  入力部
１１０  ＯＳ
１１１，１１１ａ，１１１ｂ  インストーラ
２００  機器一覧表示画面
２１０，２２１０  一覧表示画面
１１１０，２１１０  ＵＩ部
１１１１，２１１１  インストーラ管理部
１１１２，２１１２  ＡＰインストーラ
１１１３，２１１３  ＰＤインストーラ
１１１４，２１１４  ＳＤインストーラ
１１１５，２１１５  ＰＭインストーラ
２２２０  ドライバ一覧表示画面
【先行技術文献】
【特許文献】
【０３０７】
【特許文献１】特開２００７−０８６９６９号公報
【図１】
2016035801.tif 000003
【図２】
2016035801.tif 000004
【図３】
2016035801.tif 000005
【図４】
2016035801.tif 000006
【図５】
2016035801.tif 000007
【図６】
2016035801.tif 000008
【図７】
2016035801.tif 000009
【図８】
2016035801.tif 000010
【図９】
2016035801.tif 000011
【図１０】
2016035801.tif 000012
【図１１】
2016035801.tif 000013
【図１２】
2016035801.tif 000014
【図１３】
2016035801.tif 000015
【図１４】
2016035801.tif 000016
【図１５】
2016035801.tif 000017
【図１６】
2016035801.tif 000018
【図１７】
2016035801.tif 000019
【図１８】
2016035801.tif 000020
【図１９】
2016035801.tif 000021
【図２０】
2016035801.tif 000022
【図２１】
2016035801.tif 000023
【図２２】
2016035801.tif 000024
【図２３】
2016035801.tif 000025
【図２４】
2016035801.tif 000026
【図２５】
2016035801.tif 000027
【図２６】
2016035801.tif 000028
【図２７】
2016035801.tif 000029
【図２８】
2016035801.tif 000030
【図２９】
2016035801.tif 000031
【図３０Ａ】
2016035801.tif 000032
【図３０Ｂ】
2016035801.tif 000033
【図３１】
2016035801.tif 000034
【図３２】
2016035801.tif 000035
【図３３】
2016035801.tif 000036
【図３４】
2016035801.tif 000037
【図３５】
2016035801.tif 000038
【図３６】
2016035801.tif 000039
【図３７】
2016035801.tif 000040
【図３８】
2016035801.tif 000041
【図３９】
2016035801.tif 000042
【図４０】
2016035801.tif 000043
【手続補正書】
【提出日】平成28年2月1日(2016.2.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
端末と、前記端末がネットワークを介して接続するデバイスに対する処理を実行するための第１のプログラムの提供を行い、１以上の前記端末と前記ネットワークを介して接続可能な情報処理装置とを含むシステムであって、
前記情報処理装置は、
１以上の前記第１のプログラムを記憶し、前記端末によって実行されることにより、前記デバイスに関するデバイス情報を前記情報処理装置に送信し、前記情報処理装置から提供された前記第１のプログラムを前記端末にインストールするための第２のプログラムを複数記憶する記憶手段と、
前記端末から受信した該端末に関する端末情報に基づいて、該端末に提供する前記第２のプログラムを特定する第１の特定手段と、
前記第１の特定手段によって特定された前記第２のプログラムを前記端末に提供する第１の提供手段と、
前記第２のプログラムが前記端末によって実行されることにより、該端末から受信したデバイス情報に基づいて、該端末に提供する前記第１のプログラムを特定する第２の特定手段と、
前記第２の特定手段によって特定された前記第１のプログラムを前記端末に提供する第２の提供手段と
を備え、
前記端末は、
前記情報処理装置に前記端末情報を送信する送信手段と、
前記情報処理装置から提供された前記第２のプログラムを実行することにより前記デバイス情報を取得し、取得した該デバイス情報を前記情報処理装置に送信する処理を行う第１の処理手段と、
前記第２のプログラムを実行することにより、前記情報処理装置から提供された前記第１のプログラムを前記端末にインストールする処理を行う第２の処理手段と
を備えるシステム。
【請求項２】
（削除）
【請求項３】
前記端末は、
前記情報処理装置から提供された前記第２のプログラムが、前記第１のプログラムの種類に応じて該第１のプログラムのインストールを実行するインストーラ手段の機能を前記端末に実行させるためのインストーラプログラムであり、且つ、該インストーラプログラムに対応する該インストーラ手段の機能が前記端末に含まれていない場合に、ユーザ指示に応じて該インストーラプログラムのインストールを実行する制御手段をさらに備える
請求項１に記載のシステム。
【請求項４】
前記デバイス情報は、該デバイス情報に含まれる種類を示す情報に応じて形式が定められた、該デバイス情報に対するメタ情報を示す情報をさらに含み、
前記第１の処理手段は、
前記デバイス情報に基づき前記メタ情報を取得し、
前記第２の処理手段は、
前記第１の処理手段に取得された前記メタ情報に従い、前記情報処理装置から提供された前記第１のプログラムのインストールを実行する
ことを特徴とする請求項１または請求項３に記載のシステム。
【請求項５】
前記メタ情報は、複数の前記第１のプログラムを示す情報が含まれ、
前記第１の処理手段は、
前記メタ情報に含まれる複数の前記第１のプログラムを示す情報に基づき選択されたプログラムを取得する
請求項４に記載のシステム。
【請求項６】
前記第１のプログラムは、外部機器を制御するためのドライバの機能を前記端末に実行させるためのドライバプログラムであって、
前記メタ情報は、前記ドライバプログラムが対応する機種のサブ機種を示す情報を含み、
前記第１の処理手段は、
前記メタ情報に含まれる前記サブ機種について前記第１のプログラムを取得する
請求項４または請求項５に記載のシステム。
【請求項７】
前記デバイス情報は、プログラムのバージョンを示すバージョン情報をさらに含み、
前記第２の処理手段は、
前記第１の処理手段で取得された第１のプログラムに対応するデバイス情報に含まれる前記バージョン情報が示す第１のバージョンと、前記端末に既にインストールされている第１のプログラムのうち、該取得された第１のプログラムと対応する第１のプログラムの第２のバージョンとを比較し、該第１のバージョンが該第２のバージョンよりも新しいバージョンである場合に、該取得された第１のプログラムのインストールを実行する
請求項１および請求項３乃至請求項６の何れか１項に記載のシステム。
【請求項８】
前記第２の処理手段は、
前記第１の処理手段により取得された前記デバイス情報を表示部に表示させ、該表示部の表示に応じて選択されたデバイス情報に対応する前記第１のプログラムのインストールを実行する
請求項１および請求項３乃至請求項７の何れか１項に記載のシステム。
【請求項９】
前記端末は、
外部機器の機種を識別する機種識別情報と、前記端末上で動作するオペレーションシステムを識別するシステム識別情報とを取得する識別情報取得手段をさらに有し、
前記第１の処理手段は、
前記デバイス情報を前記機種識別情報と前記システム識別情報とに基づき取得し、前記機種識別情報を示す情報を表示部に表示させ、取得された前記機種識別情報のうち、該表示部の表示に応じて選択された機種識別情報に対応する該デバイス情報を取得する
請求項１および請求項３乃至請求項８の何れか１項に記載のシステム。
【請求項１０】
前記デバイス情報は、前記第１のプログラムのインストールに必要な関連プログラムを示す関連プログラム情報をさらに含み、
前記第２の処理手段は、
前記関連プログラム情報に基づき取得される前記関連プログラムをインストールするための処理を実行する
請求項１に記載のシステム。
【請求項１１】
前記第２の処理手段は、
他の前記第２の処理手段から実行される
ことを特徴とする請求項１０に記載のシステム。
【請求項１２】
端末と、前記端末がネットワークを介して接続するデバイスに対する処理を実行するための第１のプログラムの提供を行い、１以上の前記端末と前記ネットワークを介して接続可能な情報処理装置とを含むシステムの情報処理方法であって、
前記端末から受信した該端末に関する端末情報に基づいて、該端末に提供する、該端末によって実行されることにより、前記デバイスに関するデバイス情報を前記情報処理装置に送信し、前記情報処理装置から提供された前記第１のプログラムを前記端末にインストールするための第２のプログラムを特定する第１の特定ステップと、
前記第１の特定ステップによって特定された前記第２のプログラムを前記端末に提供する第１の提供ステップと、
前記第２のプログラムが前記端末によって実行されることにより、該端末から受信したデバイス情報に基づいて、該端末に提供する前記第１のプログラムを特定する第２の特定ステップと、
前記第２の特定ステップによって特定された前記第１のプログラムを前記端末に提供する第２の提供ステップと、
前記情報処理装置に前記端末情報を送信する送信ステップと、
前記デバイス情報を取得し、取得した該デバイス情報を前記情報処理装置に送信する処理を行う第１の処理ステップと、
前記情報処理装置から提供された前記第１のプログラムを前記端末にインストールする処理を行う第２の処理ステップと
を備える情報処理方法。
【請求項１３】
（削除）
【請求項１４】
プログラムの種類を示す情報と該プログラムの取得先を示す情報とを少なくとも含むプログラム情報を取得するプログラム情報取得ステップと、
前記プログラム情報に従いプログラムを取得するプログラム取得ステップと、
前記プログラム取得ステップで取得されたプログラムのインストールを、プログラムの種類に応じてプログラムのインストールを実行するインストーラ部を前記プログラム情報に含まれる種類を示す情報に従い選択し、選択した該インストーラ部に実行させるインストール制御ステップと
をコンピュータに実行させるためのプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項１５】
前記インストール制御ステップは、
前記プログラム取得ステップで取得されたプログラムが前記インストーラ部の機能を前記コンピュータに実行させるためのインストーラプログラムである場合に、該インストーラプログラムのインストールを実行して前記インストーラ部の機能を前記コンピュータに実行可能とさせる
ことを特徴とする請求項１４に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項１６】
前記記憶手段は、
複数の異なる機種の装置それぞれを制御するための複数の第１のプログラムをインストールするための第２のプログラムであって、前記インストールする処理の手順がそれぞれ異なる複数の第２のプログラムを記憶する
ことを特徴とする請求項１に記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
［０００６］
従来では、このような、インストール方法が異なる複数のプログラムを、１つのインストーラで取得しインストールすることが困難であった。そのため、ユーザは、１台の画像機器に対して、ドライバプログラムやユーティリティプログラムを一々取得し、さらに、それぞれ対応するインストーラを用いてインストールする必要があり、手順が煩雑となっていたという問題点があった。
［０００７］
本発明は、上記を鑑みてなされたものであって、インストール方法の異なる複数のプログラムのインストールを容易とすることを目的とする。
課題を解決するための手段
［０００８］
上述した課題を解決し、目的を達成するために、本発明は、端末と、端末がネットワークを介して接続するデバイスに対する処理を実行するための第１のプログラムの提供を行い、１以上の端末とネットワークを介して接続可能な情報処理装置とを含むシステムであって、情報処理装置は、１以上の第１のプログラムを記憶し、端末によって実行されることにより、デバイスに関するデバイス情報を情報処理装置に送信し、情報処理装置から提供された第１のプログラムを端末にインストールするための第２のプログラムを複数記憶する記憶手段と、端末から受信した端末に関する端末情報に基づいて、端末に提供する第２のプログラムを特定する第１の特定手段と、第１の特定手段によって特定された第２のプログラムを端末に提供する第１の提供手段と、第２のプログラムが端末によって実行されることにより、端末から受信したデバイス情報に基づいて、端末に提供する第１のプログラムを特定する第２の特定手段と、第２の特定手段によって特定された第１のプログラムを端末に提供する第２の提供手段とを備え、端末は、情報処理装置に端末情報を送信する送信手段と、前記情報処理装置から提供された第２のプログラムを実行することによりデバイス情報を取得し、取得したデバイス情報を情報処理装置に送信する処理を行う第１の処理手段と、前記第２のプログラムを実行することにより、情報処理装置から提供された第１のプログラムを端末にインストールする処理を行う第２の処理手段とを備える。
発明の効果
【国際調査報告】
2016035801.tif 000044
2016035801.tif 000045
2016035801.tif 000046
2016035801.tif 000047