(57)【要約】      （修正有）【課題】個別ドライバが独自に更新された場合でも、更新された個別ドライバを構成要素として含み、所望の装置の各機能の個別ドライバを一度にインストール及びアンインストール可能な所望の機種向けのコンポジットドライバを自動構成すること。【解決手段】端末装置のダウンローダが、Webサーバ101からカタログ603を取得し（S803）、カタログ603に基づいて、取得すべき個別ドライバ及びコンポジットドライバを確定し（S804）、確定された個別ドライバ及びコンポジットドライバ（601，602）をWebサーバ101又はローカルの記憶領域（外部記憶領域210）から取得し、取得された個別ドライバ及びコンポジットドライバを用いて、新たに最新のコンポジットドライバ606を生成し（S812）、ユーザに提示する（S813）。【選択図】図８
2019079093.tif 000002
【特許請求の範囲】
【請求項１】
デバイスの機能ごとの第１デバイスドライバの１又は複数のバージョンと、前記複数の機能の第１デバイスドライバを構成要素として含み該複数の機能の第１デバイスドライバのインストール及びアンインストールを行う第２デバイスドライバの１又は複数のバージョンと、前記複数の機能の第１デバイスドライバ及び前記第２デバイスドライバに関する目録情報とを保持するサーバと通信可能な情報処理装置であって、
前記サーバから前記目録情報を取得する第１取得手段と、
前記第１取得手段により取得した前記目録情報に基づいて、取得すべき第１デバイスドライバ及び第２デバイスドライバを確定する確定手段と、
前記確定手段で確定された第１デバイスドライバ及び第２デバイスドライバを前記サーバ又はローカルの記憶領域から取得する第２取得手段と、
前記第２取得手段で取得された第１デバイスドライバ及び第２デバイスドライバを用いて、新たに第２デバイスドライバを生成する生成手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記第２取得手段は、前記確定手段で確定された第１デバイスドライバ及び第２デバイスドライバのうちローカルの記憶領域に存在するものについては該ローカルの記憶領域から取得し、前記ローカルの記憶領域に存在しないものについては前記サーバから取得することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成手段で生成すべき第２デバイスドライバの機種を指定する入力手段を有し、
前記目録情報は、第１デバイスドライバ及び第２デバイスドライバがサポートする機種の情報も含み、
前記確定手段は、前記サーバに第２デバイスドライバが複数バージョン存在する場合、最上位のバージョンを、前記取得する第２デバイスドライバとして確定し、前記サーバに第１デバイスドライバが複数バージョン存在する場合、前記確定した第２デバイスドライバに含まれる第１デバイスドライバのバージョンよりも上位のバージョンであって且つ前記入力手段で指示された機種をサポートする最も上位のバージョンを、前記取得する第１デバイスドライバとして確定する、ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記第１デバイスドライバは、自身をインストールするためのインストーラを含み、
前記目録情報は、前記第１デバイスドライバに含まれるインストーラのバージョンの情報も含み、
前記確定手段は、前記サーバに第１デバイスドライバが複数バージョン存在する場合、前記確定した第２デバイスドライバに含まれる第１デバイスドライバのバージョンよりも上位のバージョンであって、前記入力手段で指定された機種をサポートし且つ前記第２デバイスドライバに含まれる第１デバイスドライバのインストーラのバージョン以下のバージョンのインストーラを含む最も上位のバージョンを、前記取得する第１デバイスドライバとして確定する、ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記確定手段は、前記サーバに同一バージョンの第１デバイスドライバが複数登録されている場合、さらに、その中でサイズの最も小さいものを、前記取得する第１デバイスドライバとして確定することを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記確定手段は、前記サイズの最も小さい第１デバイスドライバとは、サポート機種が最も少ない第１デバイスドライバであることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記生成手段で生成した第２デバイスドライバをユーザに提示する提示手段を有することを特徴とする請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
デバイスの機能ごとの第１デバイスドライバの１又は複数のバージョンと、前記複数の機能の第１デバイスドライバを構成要素として含み該複数の機能の第１デバイスドライバのインストール及びアンインストールを行う第２デバイスドライバの１又は複数のバージョンと、前記複数の機能の第１デバイスドライバ及び前記第２デバイスドライバに関する目録情報とを保持するサーバと通信可能な情報処理装置の制御方法であって、
前記サーバから前記目録情報を取得する第１取得ステップと、
前記第１取得ステップで取得した前記目録情報に基づいて、取得すべき第１デバイスドライバ及び第２デバイスドライバを確定する確定ステップと、
前記確定ステップで確定された第１デバイスドライバ及び第２デバイスドライバを前記サーバ又はローカルの記憶領域から取得する第２取得ステップと、
前記第２取得ステップで取得された第１デバイスドライバ及び第２デバイスドライバを用いて、新たに第２デバイスドライバを生成する生成ステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項９】
コンピュータを、請求項１〜７のいずれか１項に記載の手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来から、コピー、パーソナルコンピュータ（以下「PC」）からの印刷、ファクシミリ（以下「FAX」）の送受信、画像読取りなどの機能を１つの筐体に収めた複合印刷装置なるものが存在する。この複合印刷装置は、個人のデスクサイドに設置して主にその個人が利用する小型の機器と、オフィスのコピー機置き場に設置して大人数で共有して利用する大型の機器に大別できる。
【０００３】
前者の場合、複合印刷装置に搭載されている全ての機能をPCから一度のアクションでインストールできるように、コンポジットドライバ（Composite Driver）というものを提供するのが一般的である。コンポジットドライバは、複合印刷装置に搭載されている全ての機能向けのデバイスドライバを一体化したものである。
【０００４】
特許文献１では、複合印刷装置に搭載されている全ての機能向けのデバイスドライバをインストーラでインストールし、そのインストーラを使ってアンインストールする方法が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４０８２２５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般的には、複合印刷装置に搭載されている各機能向けドライバ（以下「個別ドライバ」）はそれぞれ独自に進化・更新されるものであり、それに合わせてコンポジットドライバも進化・更新させるのが理想である。しかし、コンポジットドライバの構成要素のどれか１つが更新される度にコンポジットドライバを更新していたのでは、コンポジットドライバとしての更新頻度が多くなってしまい、実用的ではないという課題があった。
【０００７】
このような状況のため、デバイスドライバのダウンロードサイトにおいて、個別ドライバは更新されているが、コンポジットドライバが更新されないままとなっている場合がある。このため、ユーザは、最新の個別ドライバに対応する最新のコンポジットドライバを利用することができず、機能ごとに個別ドライバを利用して端末装置内のデバイスドライバの更新（又は新規にインストール）を行うといった煩雑な作業が必要であった。また、アンインストールする場合も、機能ごとに個別ドライバをアンインストールするといった煩雑な作業が必要であった。
【０００８】
本発明は、上記の問題点を解決するためになされたものである。本発明は、機能ごとのデバイスドライバ（個別ドライバ）が独自に更新された場合でも、更新された機能ごとのデバイスドライバを構成要素として含み、所望の装置の各機能のデバイスドライバを一度にインストール及びアンインストール可能な所望の機種向けのデバイスドライバ（コンポジットドライバ）を自動生成できる仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、デバイスの機能ごとの第１デバイスドライバの１又は複数のバージョンと、前記複数の機能の第１デバイスドライバを構成要素として含み該複数の機能の第１デバイスドライバのインストール及びアンインストールを行う第２デバイスドライバの１又は複数のバージョンと、前記複数の機能の第１デバイスドライバ及び前記第２デバイスドライバに関する目録情報とを保持するサーバと通信可能な情報処理装置であって、前記サーバから前記目録情報を取得する第１取得手段と、前記第１取得手段により取得した前記目録情報に基づいて、取得すべき第１デバイスドライバ及び第２デバイスドライバを確定する確定手段と、前記確定手段で確定された第１デバイスドライバ及び第２デバイスドライバを前記サーバ又はローカルの記憶領域から取得する第２取得手段と、前記第２取得手段で取得された第１デバイスドライバ及び第２デバイスドライバを用いて、新たに第２デバイスドライバを生成する生成手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、機能ごとのデバイスドライバが独自に更新された場合でも、更新された機能ごとのデバイスドライバを構成要素として含み、所望の装置の各機能のデバイスドライバを一度にインストール及びアンインストール可能な所望の機種向けのデバイスドライバを自動生成することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態の情報処理装置を含むシステムの構成図
【図２】端末装置のハードウェア構成図
【図３】複合印刷装置のハードウェア構成図
【図４】端末装置及び複合印刷装置のソフトウェア構成図
【図５】コンポジットドライバ及び各機能向け個別ドライバの構成と時系列的なWebサーバの状態遷移を示す図
【図６】Webサーバと端末装置の各構成要素の関連を例示する図
【図７】第１実施形態のWebサーバにおけるコンポジットドライバ、個別ドライバ、カタログの具体例を示す図
【図８】端末装置側の処理の一例を示すフローチャート
【図９】第１実施形態のカタログ解析、取得ドライバ確定処理のフローチャート
【図１０】コンポジットドライバ再合成処理の詳細フローチャート
【図１１】端末装置側の処理で示されるユーザインタフェース画面を例示する図
【図１２】第２実施形態のカタログ解析、取得ドライバ確定処理のフローチャート
【図１３】第３実施形態のWebサーバにおけるコンポジットドライバ、個別ドライバ、カタログの具体例を示す図
【発明を実施するための形態】
【００１２】
〔第１実施形態〕
図１は、本発明の一実施形態を示す情報処理装置を含むシステムの構成の一例を示す図である。
Webサーバ101は、各複合印刷装置ベンダーによりそれぞれ独自に用意・運営されるサーバである。Webサーバ101には、その各複合印刷装置ベンダーの機器で利用することのできる各種デバイスドライバが掲載され、インターネット102を経由して取得可能なように構成されている。なお、本実施形態で引用するデバイスドライバとは、後述する個別ドライバ（個別Driver）とコンポジットドライバ（Composite Driver）の総称である。
【００１３】
インターネット102は、Webサーバ101と端末装置104をルータ103経由で接続し通信可能にする。ルータ103は、インターネット102と端末装置104、複合印刷装置105とを接続し通信を行う。比較的小規模な利用者の下では、このルータ103が利用者環境のLAN（ローカルエリアネットワーク）を構成する場合がある。大規模な利用者の下では、LAN制御措置を設置して、ルータ103の下でLANを構築してもよい。
端末装置104は、ルータ103と無線通信もしくは有線通信により接続され通信する。
複合印刷装置105は、ルータ103と無線通信もしくは有線通信により接続され通信する。
【００１４】
図２は、端末装置104のハードウェア構成の一例を示すブロック図である。
端末装置104は、スマートフォンに代表される携帯端末でもよいし、パーソナルコンピュータ（PC）に代表される小型のコンピュータ端末でもよく、広く情報処理装置に適用可能である。
【００１５】
メインボード201は、端末装置104の制御基板である。
有線NW I／F202は、イーサネット（登録商標）に代表される有線通信ネットワークの通信の制御を行う。端末装置104は、この有線NW I／F202を介してルータ103やインターネット102にアクセスすることができる。
【００１６】
無線NW I／F203は、主にWi−Fi通信の制御を行うものであり、電話通信のI／Fも包含している。端末装置104は、この無線NW I／F203を使ってWi−Fi通信でルータ103にアクセスすることができる。さらに、端末装置104は、無線NW I／F203に包含される電話通信のI／Fを使って、インターネット102に直接アクセスすることもできる。
【００１７】
USB I／F204は，USBの規格で複合印刷装置105と接続して印刷データを複合印刷装置105に送信したり、USB規格に準拠した他の周辺機器などを接続可能である。
システムバス205は、メインボード201上の各種処理ブロック間の情報を相互に交換する。
【００１８】
CPU206は、ROM・RAM207上にあるオペレーティングシステム（以下「OS」）類などのプログラムを動作させて、端末装置104全体の動作をコントロールする。ROM・RAM207は、端末装置104の起動用プログラム格納や作業用の記憶領域を示している。メモリコントローラ208は、外部記憶装置210とのデータ送受信を制御する。
ユーザI／F209は、表示部211と入力部212の動きを制御する。
【００１９】
外部記憶装置210は、端末装置104のROM・RAM207の補助的な働きをする記憶領域であり、一般的にはハードディスクやUSBメモリ、光学式メモリデバイスなどが該当する。
表示部211は、端末装置104の表示部であり、液晶パネルや有機ELパネルなどの表示装置である。入力部212は、端末装置104の入力部であり、キーボードやボタン、表示部211上面に備えつけられたタッチ式のセンサやマウスなど該当する。
【００２０】
図３は、複合印刷装置105のハードウェア構成の一例を示すブロック図である。
複合印刷装置105は、上述したように、コピー、印刷、FAX、画像読取などの複数の機能が１つの筐体にまとまった複合装置である。複合印刷装置105には、例えば個人のデスクサイドに置いて、主にその個人が使うための小型の複合印刷装置と、オフィスのコピー機置き場に置いて複数ユーザで共有して使う大型の複合印刷装置がある。図５で後述する複合印刷装置Ａ510が小型の複合印刷装置の一例である。また、図５で後述する複合印刷装置Ｂ520が大型の複合印刷装置の一例である。
【００２１】
メインボード301は複合印刷装置105の制御基板である。
有線NW I／F302は、イーサネット（登録商標）に代表される有線通信ネットワークの通信の制御を行う。複合印刷装置105は、有線NW I／F302を介してルータ103やインターネット102にアクセスすることができる。
【００２２】
無線NW I／F303は、Wi−Fi通信の制御を行う。複合印刷装置105は、無線NW I／F303を介してルータ103やインターネット102にアクセスすることができる。有線と無線のどちらを使ってインターネット102にアクセスするのかは、複合印刷装置105に備わっている表示部313及び入力部314を用いて設定して変更することができる。
【００２３】
USBI／F304は，印刷用のデータをUSBの規格で受信することができる。
システムバス305は、メインボード301上の各種処理ブロック間の情報を相互に交換する。
【００２４】
CPU306は、ROM・RAM307上にある制御プログラムを動作させて、複合印刷装置105全体の動作をコントロールする。ROM・RAM307は、複合印刷装置105の起動用プログラム格納や作業用の記憶領域を示している。
【００２５】
メモリコントローラ308は、外部記憶装置312を制御し他のブロックとの情報の受け渡しを行う。外部記憶装置312は、USBメモリやハードディスク等に代表される記憶装置である。外部記憶装置312は、印刷すべき印刷用PDLデータや、読取部316が取得した画像データなどを一時的に格納しておく領域である。印刷用PDLデータを格納したUSBメモリなども外部記憶装置312に対応する。
【００２６】
ユーザI／F309は、表示部313と入力部314の動きを制御する。
印刷部I／F310は、印刷部315へ印刷用画像データを引き渡す。
読取部I／F311は、読取部316から画像データを受け取る。
【００２７】
表示部313は、液晶や有機ELに代表される表示装置で、複合印刷装置105の設定情報を表示する。入力部314は、複合印刷装置105に付加されているキーボードや、表示部313の上面に貼り付けたタッチセンサーなどを示している。入力部314は、複合印刷装置105に対する設定変更指示などを行うのに用いられる。
【００２８】
印刷部315は、いわゆるプリンタエンジンであり、電子写真方式やインクジェット方式などさまざまな印刷方式による印刷装置のことである。複数種類の用紙を抱える給紙カセットや、両面印刷機構、白黒・カラー印刷機構、ステープル機構、製本機構、複数の排紙トレイなども、この印刷部315に含まれる。
【００２９】
読取部316は、いわゆるスキャナであり、原稿台やイメージセンサーのことである。自動的に読取用紙を給紙するフィーダーなども、この読取部316に含まれる。
以上で全体システム構成、端末装置、複合印刷装置、などの構成を説明した。
【００３０】
図４は、端末装置104及び複合印刷装置105のソフトウェア構成の一例を示す図である。
図４（ａ）は、端末装置104のソフトウェア構成に対応する。図４（ａ）に示す各構成は、端末装置104のCPU206がROM・RAM207上に格納されたプログラム（外部記憶装置210からROM・RAM207にロードされたプログラムも含む）を実行することにより実現されるものである。
【００３１】
端末装置104は、ソフトウェア構成として、OS402、ダウンローダ406を有する。
OS402は、ROM・RAM207上に格納されて端末装置104全体の動きを制御するオペレーティングシステムを示している。OS402は、端末装置104上にある各ソフトウェアブロック間の情報交換や実行制御を行う部分である。
ダウンローダ406は、以下に示す外部I／F制御部401、UI制御部404、データ制御部405、内部I／F制御部403の総称である。
【００３２】
外部I／F制御部401は、有線NW I／F202や無線NW I／F203やUSB I／F204を用いてWebサーバ101との情報交換を行ったり、複合印刷装置105と印刷情報の交換を制御する部分である。UI制御部404は、表示部211や入力部212を用いて端末装置104の利用者に情報提供を行ったり、端末装置104からの指示を受け付ける部分である。
【００３３】
データ制御部405は、外部I／F制御部401でWebサーバ101から取得したコンポジットドライバや個別ドライバを用いて、最新コンポジットドライバの構成処理を行う部分である。内部I／F制御部403は、端末装置104の外部記憶装置210にあるコンポジットドライバや個別ドライバの情報取得や格納を行う部分である。
【００３４】
図４（ｂ）は、複合印刷装置105のソフトウェア構成に対応する。
図４（ｂ）に示す各構成は、複合印刷装置105のCPU306が主にROM・RAM307上に格納されたプログラム（外部記憶装置312からROM・RAM307にロードされたプログラムも含む）を実行することにより実現されるものである。
【００３５】
OS411は、ROM・RAM307上に格納されて複合印刷装置105全体の動きを制御するオペレーティングシステムを示している。OS411は、複合印刷装置105上にある各ソフトウェアブロック間の情報交換や実行制御を行う部分である。
【００３６】
印刷処理部412は、有線NW I／F302や無線NW I／F303やUSB I／F304を介して受信したPDLデータを印刷部315が解釈可能な形式に変換する。
印刷部315は、印刷処理部412から提供された印刷用データを印刷する部分である。
【００３７】
読取処理部413は、有線NW I／F302や無線NW I／F303やUSB I／F304を介して受信した画像読取り指示に基づき読取部316を制御し、読取部316で読み取られた画像データを取得する。さらに、読取処理部413は、読取部316から取得した画像データを有線NW I／F302や無線NW I／F303やUSB I／F304を介して指示元に提供する。
読取部316は、読取処理部413の指示に基づき画像読取りを行い、読み取った画像データを読取処理部413に提供する。
【００３８】
図５は、コンポジットドライバ及び各機能向け個別ドライバの一般的な構成と時系列的なWebサーバ101の状態遷移の一例を示す図である。
【００３９】
図５（ａ）に、コンポジットドライバの一般的な構成の一例を示す。
図５（ａ）に示すように、コンポジットドライバであるComposite Driver501は、Composite Installer502、探索モジュール503、Install／Uninstall制御情報504を含む。また、Composite Driver501は、Scan Driver（Scan Installer）505、Print Driver（Print Installer）506、FAX Driver（FAX Installer）507を含む。なお、複合印刷装置105への機能の搭載状態に応じて、このComposite Driver501に包含される機能の構成内容も変化するため、この構成に限定されるものではない。
【００４０】
Composite Driver501は、例えば、複合印刷装置105が複合印刷装置Ａ510の場合のような個人のデスクサイドに置く機器向けのドライバである。Composite Driver501は、複合印刷装置105のUSB I／F304がComposite USBという規格で作られている場合に最適な形式のドライバとなっている。Composite USBという規格は、物理的に１つのUSBの中に論理的に複数のデバイスを定義することのできる規格である。この規格では、Microsoft Windows（登録商標）系のOSにUSBを用いて複合印刷装置105を接続すると、Plug and Playの機能により論理的に定義してある全てのデバイスが認識されてしまう特徴がある。そのため、複合印刷装置105に備わっている全てのデバイスを一度で全て利用可能な状態にするためには、例えば以下のような手順に従う必要がある。
【００４１】
まず、複合印刷装置105とMicrosoft Windows系のOSとをUSBを用いて接続する前に、論理的に定義されている全てのデバイスドライバをMicrosoft Windows系OSへ登録する。そのうえで、USBを用いて接続してPlug and Playの機能で複合印刷装置105を認識させる。これにより、Microsoft Windows系OSは、必要とされる全てのデバイスドライバを一度に認識することが可能となり、一度の操作で論理的に定義されている複数のデバイスドライバ全てが利用可能となる。そのため、Composite Driver501は、複合印刷装置105に備わっていてUSB I／F304で論理的に定義されている全てのデバイスドライバである個別ドライバを包含した形で構成する。
【００４２】
図５のComposite Driver501の例では、Scan Driver（Scan Installer）505、Print Driver（Print Installer）506、FAX Driver（FAX Installer）507の３点がこの個別ドライバに該当する。
【００４３】
Composite Driver501において、Composite Installer502は、複合印刷装置105との接続方式つまりUSB接続かネットワーク（以下「NW」）接続かに応じて、包含する各機能向け個別ドライバのインストール処理を行う。
【００４４】
USB接続の場合、Composite Driver501は、包含する各機能向け個別ドライバであるScan Driver（Scan Installer）505、Print Driver（Print Installer）506、FAX Driver（FAX Installer）507の各Installerを順次起動してインストールを行い、Microsoft Windows系OSにデバイスドライバの登録を行う。
【００４５】
NW接続の場合、Composite Driver501は、探索モジュール503を起動して、対象となる複合印刷装置105をネットワーク上から探索する。そして、Composite Driver501は、対象となる複合印刷装置105が発見されたら、NW上の当該デバイスに接続するためのポートを作成する。そして、Composite Driver501は、包含する各機能向け個別DriverであるScan Driver（Scan Installer）505、Print Driver（Print Installer）506、FAX Driver（FAX Installer）507の各Installerを作成したポートで接続するように指示を行う。さらに、Composite Driver501は、対象となる複合印刷装置105のデバイスドライバを各機能向け個別ドライバから取り出してインストールするように指示し、インストール処理を行う。
【００４６】
探索モジュール503は、所定のNWプロトコルに基づいて複合印刷装置105をNW上から探索し、探索した結果をComposite Installer502に伝える。
Install／Uninstall制御情報504は、Composite Installer502が包含する各機能向け個別ドライバを認識して、インストール処理を進行させるための情報である。また、Install／Uninstall制御情報504は、インストール後にアンインストール処理を行うアンインストーラを動作させるための情報でもある。
【００４７】
Scan Driver（Scan Installer）505は、複合印刷装置105を構成するスキャナデバイスを制御するための個別ドライバである。このScan Driver（Scan Installer）505は、Scan Installerが存在し、Composite Installer502の子インストーラのような位置関係になる。なお、このScan Installerは、直接実行されれば、子インストーラとしてではなく、個別ドライバであるScan Driver（Scan Installer）505のインストーラとして動作し、個別ドライバ自身をインストールする。
【００４８】
同様に、Print Driver（Print Installer）506は、複合印刷装置105を構成するプリンタデバイスを制御するためのデバイスドライバである。このPrint Driver（Print Installer）506にはPrint Installerが存在し、Composite Installer502の子インストーラのような位置関係になる。なお、このPrint Installerは、直接実行されれば、子インストーラとしてではなく、個別ドライバであるPrint Driver（Print Installer）506のインストーラとして動作し、個別ドライバ自身をインストールする。
【００４９】
また同様に、FAX Driver（FAX Installer）507は、複合印刷装置105を構成するファックスデバイスを制御するためのデバイスドライバである。このFAX Driver（FAX Installer）507にはFAX Installerが存在し、Composite Installer502の子インストーラのような位置関係になる。なお、このFAX Installerは、直接実行されれば、子インストーラとしてではなく、個別ドライバであるFAX Driver（FAX Installer）507のインストーラとして動作し、個別ドライバ自身をインストールする。
【００５０】
このように、Composite Driver501は、個別に実行させれば個別に動作しインストール可能な各機能向け個別ドライバを丸ごと複数抱え、対象となる複合印刷装置を探索するための探索モジュールとInstall／Uninstall制御情報を合体させたものといえる。
【００５１】
また、図５（ｂ）に、個別ドライバ511として、Scan Driver（Scan Installer）512、Print Driver（Print Installer）513、FAX Driver（FAX Installer）514を示す。
これらは、それぞれ複合印刷装置105が複合印刷装置Ｂ520の場合のようなオフィス機器向けの場合に用いるためのデバイスドライバとして用意されており、それはNW接続での使用を前提としたドライバであることを示唆している。
【００５２】
NW接続で使用する場合、Microsoft Windows系のOSが端末装置104で動作していても、USB接続時のようにPlug and Playが動作しない。このため、複合印刷装置105に搭載されている全てのデバイスドライバが同時に必要となることはない。したがって、端末装置104の利用者が使いたい機能向けのドライバだけインストールすることができる。それゆえ、１つの機能だけ制御する個別ドライバ511として、Scan Driver（Scan Installer）512、Print Driver（Print Installer）513、FAX Driver（FAX Installer）514などの個別ドライバが利用可能となる。
【００５３】
Scan Driver（Scan Installer）512を個別に利用してScan Installerを動作させる場合は、Scan Installerがデバイス探索を行い、対象となる複合印刷装置105を見つけて、そこに接続するようにインストール処理を行う。
同様に、Print Driver（Print Installer）513を個別に利用してPrint Installerを動作させる場合は、Print Installerがデバイス探索を行い、対象となる複合印刷装置105を見つけて、そこに接続するようにインストール処理を行う。
また同様に、FAX Driver（FAX Installer）514を個別に利用してFAX Installerを動作させる場合は、FAX Installerがデバイス探索を行い、対象となる複合印刷装置105を見つけて、そこに接続するようにインストール処理を行う。
【００５４】
図５（ｃ）に、時系列的なWebサーバ101が保持するデバイスドライバの状態遷移の一例を示す。
まず、個別ドライバである、Print Driver（Print Installer）521、522、523及びコンポジットドライバであるComposite Driver524が時間的経過でどのように変化して行くかを示す。
Print Driver（Print Installer）521は、「N月」時点の例である。「N月」時点では、Driver Versionは「10」で、Print InstallerのVersionは「5」であり、対応する機種が「機種1」、「機種A」、「機種B」の３機種であることを示している。
【００５５】
同様に、Print Driver（Print Installer）522は、「N+1月」時点の例である。「N+1月」時点では、Driver Versionは「11」で、Print InstallerのVersionは「5」で、対応する機種が「機種1」、「機種A」、「機種B」、「機種C」の４機種であることを示している。
【００５６】
同様に、Print Driver（Print Installer）523は「N＋2」月時点の例である。「N+2月」時点では、Driver Versionは「12」で、Print InstallerのVersionは「5」で、対応する機種が「機種1」、「機種A」、「機種B」、「機種C」、「機種D」の５機種であることを示している。
このように時間の経過とともにDriver Versionが上がり、対応する機種が増えてゆくのが一般的である。
【００５７】
次に、Composite Driver524が時間的経過でどのように変化して行くかを示す。
Composite Driver524は、「N月」時点の例であり、コンポジットドライバのVersionは「4」であることを示している。なお、ここでは、コンポジットドライバの構成要素である各種個別ドライバの記載は省略してある。
Composite Driver524は、「N＋1月」時点でそのまま後継ドライバが無く、「N＋2月」時点でも後継ドライバが無いことを示している。
【００５８】
なお、コンポジットドライバは、図５（ａ）で前述したとおり、構造が複雑である。そのため、コンポジットドライバを作成する場合、個別ドライバを１つ作成する以上に手間もコストもかかる。このため、コンポジットドライバは、個別ドライバほど頻繁に後継となるコンポジットドライバが作成されないのが一般的である。
【００５９】
図６は、Webサーバ101と端末装置104の各構成要素の関連を例示する図である。ここでは、主にデータの流れを中心に示す。
上述したように、Webサーバ101には、各種ドライバが掲載され、Webを経由して取得可能なように構成されている。図６の例では、個別ドライバ601、コンポジットドライバ602、カタログ603がWeb経由で取得可能にWebサーバ101に掲載されている。
【００６０】
個別ドライバ601は、図５（ｂ）における個別ドライバ511に対応するものである。個別ドライバ601は、ScanならScan機能、PrintならPrint機能単独で対応する個別ドライバであり、複数の機種をサポートする。
コンポジットドライバ602は、複合印刷装置105向けのドライバであり、単独機種をサポート対象とすることもあれば、複数機種をサポート対象とすることもある。
カタログ603は、Webサーバ101に登録されている個別ドライバ601やコンポジットドライバ602に関する情報（目録情報）である。このカタログ603のデータを解析することにより、Webサーバ101に登録されている全て個別ドライバ601とコンポジットドライバ602に関する情報を知ることができる。例えば、最新のドライバが何であるか等の情報も、カタログ603から知ることができる。
【００６１】
端末装置104は、スマートフォンに代表される携帯端末でもよいし、PCに代表される小型のコンピュータ端末でもよく、広く適用可能な端末である。図６の例では、端末装置104の外部記憶装置210の上に展開されて実行されるソフトウェア構成として、ダウンローダ406、個別ドライバ604、コンポジットドライバ605、最新コンポジットドライバ606が記載されている。
【００６２】
個別ドライバ604は、図５における個別ドライバ511に対応する。個別ドライバ604は、ScanならScan機能、PrintならPrint機能単独で対応する個別ドライバであり、複数の機種をサポートする。なお、Webサーバ101上の個別ドライバ601は、その時点で最新のバージョンのドライバから古いバージョンまで幅広くそろっている。これに対して、端末装置104上の個別ドライバ604は、過去にWebサーバ101から取得して外部記憶装置210に格納されているドライバであり、この点が個別ドライバ601と異なる。よって、個別ドライバ601は、最新のバージョンとは限らない。
【００６３】
コンポジットドライバ605は、複合印刷装置105向けのドライバであり、単独機種をサポート対象とすることもあれば、複数機種をサポート対象とすることもある。なお、個別ドライバの場合と同様に、Webサーバ101上のコンポジットドライバ602は、その時点で最新のバージョンのコンポジットドライバから古いバージョンのコンポジットドライバまで幅広くそろっている。これに対して、端末装置104上のコンポジットドライバ605は、例えば過去にWebサーバ101から取得して外部記憶装置210に格納されたドライバである。また、コンポジットドライバ605は、複合印刷装置105に同梱されている当該デバイスをサポートするデバイスドライバを掲載した光学ディスクから取得して外部記憶装置210に格納されたドライバである。よって、コンポジットドライバ605は、最新のバージョンとは限らない。
【００６４】
ダウンローダ406は、Webサーバ101にある個別ドライバ601、コンポジットドライバ602、カタログ603を端末装置104にダウンロードし、これらを用い、最新の個別ドライバを包含する最新のコンポジットドライバ606を外部記憶装置210上で再構成する。
詳細には、Webサーバ101からカタログ603を端末装置104で動作するダウンローダ406が取り込み、ダウンローダ406実行時点における最新の個別ドライバ601および、コンポジットドライバ602の配信状況を把握する。これに基づき、ダウンローダ406は、取得すべき個別ドライバ601および、コンポジットドライバ602を把握し、同じものがすでに端末装置104内に存在するかしないか確認する。端末装置104内に存在するドライバの一例が個別ドライバ604およびコンポジットドライバ605である。ダウンローダ406は端末装置104内に存在している個別ドライバ604およびコンポジットドライバ605を優先的に利用しつつ必要に応じて個別ドライバ601およびコンポジットドライバ602をWebサーバ101からダウンロードする。ダウンローダ406は、上述のように取得した、個別ドライバおよびコンポジットドライバを用いて、最新のコンポジットドライバ606を再構成する。このとき、最新のコンポジットドライバ606を構成する個別ドライバは、その時点で最新のドライバとなっている。なお、最新のコンポジットドライバ606では、インストール・アンインストールが正常に動作するように構成されている。この最新コンポジットドライバ606は、それまでWebサーバ101にも、端末装置104にも存在していなかった新しい構成のコンポジットドライバとなる。以上のように、Webサーバで最新のコンポジットドライバが提供されていない場合でも、複合印刷装置の利用者が最新のコンポジットドライバを利用することが可能になる。
【００６５】
図７は、Webサーバ101におけるコンポジットドライバ、個別ドライバ、カタログの一例を具体的に示す図である。
図７において、701はWebサーバ101に存在する個別ドライバの実体そのものを示している。個別ドライバ701は、Print Driverの「Version10」であり、その管理番号が「SS17-0001-01」である。この管理番号は、個別ドライバを一意に示すことのできる名称である。個別ドライバ701の内部に、例えば「SS17-0001-01.txt」という名称のファイルを配置することで、その個別ドライバの管理番号が「SS17-0001-01」であることが外部から認知可能に構成されている。なお、702〜704も同様にWebサーバ101上に登録されている別の個別ドライバの実体であるので説明を省略する。
【００６６】
また、705はWebサーバ101に存在するコンポジットドライバの実体そのものを示している。コンポジットドライバ705は、コンポジットドライバの「Version4」であり、その管理番号が「SS17-0002-01」である。コンポジットドライバ705の構成要素である個別ドライバは、「Scan Driver Version2」，「Print Driver Version10」，「Fax Driver Version30」である。
【００６７】
また、706はカタログ（例えば図６の603）の一例を示している。カタログ706には、個別ドライバとして、「Print Driver Version10」，管理番号「SS17-0001-01」，「Print Installer Version5」が掲載されている。また、該個別ドライバのサポート機種が「1」，「A」，「B」の３機種であることが掲載されている。さらに、該個別ドライバが、Webサーバ101で外部に公開されるアドレスが「http://www.canxxweb.com/ss17000101.exe」であることが掲載されている。
また、カタログ706には、その他に、個別ドライバ702，703，704に対応するカタログ情報も掲載されているが、個別ドライバ701のカタログ情報と同様であるので、説明を省略する。
【００６８】
さらに、カタログ706には、コンポジットドライバの情報として、「Composite Driver Version4」、管理番号「SS17−0002−01」、対応機種が「A」が掲載されている。また、該コンポジットドライバの構成要素である個別ドライバが「Scan Driver Version2」，「Scan Installer Version5」，「Print Driver Version10」，「Print Installer Version5」，「Fax Driver Version30」，「Fax Installer Version5」であることが掲載されている。さらに、該コンポジットドライバが、Webサーバ101で外部に公開されるアドレスが「http://www.canxxweb.com/ss17000201.exe」であることが掲載されている。このように、Webサーバ101に登録されている各種ドライバの情報や、外部サイトからWebサーバ101にアクセスする場合のアドレス情報も保持している。
【００６９】
図８は、端末装置104側の処理の一例を示すフローチャートである。図８及び後述する図９、図１０に示す処理は、ダウンローダ406が実行するものである。即ち、端末装置104のCPU206がROM・RAM207上に格納されたプログラム（外部記憶装置210からROM・RAM207にロードされたプログラムも含む）を実行することにより実現される処理である。
【００７０】
端末装置104利用者の指示に基づいて、CPU206がダウンローダ406をROM・RAM207にローディングして起動する（S801）。なお、ダウンローダ406の実行指示としては、例えば、Webサーバ101から取得して外部記憶装置210に格納したダウンローダ406の実行ファイルを、表示部211、入力部212を用いて直接指示する等がある。その他、複合印刷装置105の付属品として同梱されるドライバ類が格納されている光学ディスクに搭載されているダウンローダ406の実行ファイルが、光学ディスクに搭載されている自動実行プログラム等から起動をかけられて実行される構成などでもよい。
【００７１】
ダウンローダ406は、起動されると、不図示のComposite機種名入力画面を表示部211に表示し、入力部212を用いた所望の機種名の入力（機種の指定）を受け付ける（S802）。
機種名が入力されると、ダウンローダ406は、Webサーバ101にカタログ（図の例では603）の転送要求を送信し、該転送要求に応じてWebサーバ101から返送されてくるカタログを受け取る（S803）。
【００７２】
次に、ダウンローダ406は、上記S803で取得したカタログを解析し、該解析結果より、所望のコンポジットドライバの最新版を把握し、当該コンポジットドライバの構成要素である各種個別ドライバの最新版を把握して取得ドライバを確定する（S804）。より具体的に説明すると、もし当該コンポジットドライバの構成要素である各種個別ドライバのバージョンが、Webサーバ101にある各種個別ドライバの最新バージョンと等しければ、取得するドライバは当該コンポジットドライバだけと把握する。一方、当該コンポジットドライバの構成要素である各種個別ドライバのVersionよりも新しい個別ドライバがWebサーバ101上に存在する場合、取得するべきものは当該コンポジットドライバとその最新個別ドライバであると把握する。
なお、S804のカタログ解析、取得ドライバ確定処理の詳細は、後述する図９で説明する。
【００７３】
次に、ダウンローダ406は、上記S804にて確定した取得するべきドライバの内容を、図１１（ａ）の1101のような画面で、表示部211に表示して、ユーザに確認させるように制御する（S805）。
【００７４】
ここで、図１１（ａ）を用いて説明する。
図１１は、端末装置側の処理で示されるユーザインタフェース画面の一例を示す図である。
図１１（ａ）の例では、画面1101では、検索結果1102として、「Composite Driver Ver4」と「Print Driver Ver13」が探索結果として見つかった状態が示されている。ユーザは検索結果1102を確認し、1103において、処理を選択することがでる。例えば、コンポジットドライバと個別ドライバの最新版が見つかったが、あえてコンポジットドライバだけ取得するという選択肢と、見つかったドライバ全てを取得して、最新のコンポジットドライバを構成するという選択肢である。この例では、後者がデフォルトとなっている。なお、選択肢はこれに限定されるものではなく、検索結果1102に応じて適宜変更されるものとする。
【００７５】
OK1104は、処理を先に進めるためのボタンである。Cancel1105は、処理をここで中止するためのボタンである。OK1104が押下されると、ダウンローダ406は、処理を選択1103の選択結果に基づいて、取得すべきドライバを決定し、S806に処理を進める。一方、Cancel1105が押下されると、ダウンローダ406は、図８の処理を中止する。
【００７６】
以下、図８のフローチャートの説明に戻る。
ユーザ確認により取得すべきドライバ（例えばコンポジットドライバ及びコンポジットドライバの構成要素である個別ドライバ全て）が決定されると、ダウンローダ406は、該取得すべきドライバから未処理のドライバを１つ処理対象として選択する。そして、ダウンローダ406は、処理対象のドライバをWebサーバ101から取得するか否かを判定する（S806）。なお、ダウンローダ406は、処理対象のドライバが外部記憶装置210に存在しない場合、Webサーバ101から取得すると判定する。一方、処理対象のドライバが外部記憶装置210に存在する場合、ダウンローダ406は、Webサーバ101から取得しないと判定する。
【００７７】
上記S806において、ダウンローダ406は、処理対象のドライバが外部記憶装置210に存在せず、Webサーバ101から取得すると判定した場合（S806でYesの場合）、S807に処理を進める。
S807において、ダウンローダ406は、カタログ603に記載されているアドレスにアクセスして、Webサーバ101から処理対象のドライバ（図の例では個別ドライバ601もしくはコンポジットドライバ602）を取得し、S810に処理を進める。なお、ここで取得されたドライバは、外部記憶装置210上の一時領域に保持されるものとする。
【００７８】
一方、上記S806において、ダウンローダ406は、処理対象のドライバが外部記憶装置210に存在するため、Webサーバ101から取得する必要がないと判定した場合（S806でNoの場合）、S808に処理を進める。
S808において、ダウンローダ406は、外部記憶装置210に存在する処理対象のドライバを取得して、S810に処理を進める。なお、ここで取得されたドライバは、外部記憶装置210上の一時領域に保持されるものとする。
【００７９】
S810において、ダウンローダ406は、上記ユーザ確認により取得すべきと決定された全てのドライバ（すなわち必要なドライバ）について、上記S806〜S808の取得処理を行ったか否かを判定する。まだ未処理のドライバがあると判定した場合（S810でNoの場合）、ダウンローダ406は、S809に処理を進める。S809において、ダウンローダ406は、次の未処理のドライバを選択し、S806に処理を移行させる。
【００８０】
一方、上記S810において、上記ユーザ確認により取得すべきと決定された全てのドライバについて、上記S806〜S808の取得処理を行ったと判定した場合（S810でYesの場合）、ダウンローダ406は、S811に処理を進める。
【００８１】
S811において、ダウンローダ406は、コンポジットドライバの再合成処理を実行するか否かを判定する。コンポジットドライバと個別ドライバを全てWebサーバ101から取得済みの場合には、ダウンローダ406はコンポジットドライバの再合成処理を実行すると判定する。一方、コンポジットドライバしかWebサーバ101から取得していない場合には、ダウンローダ406はコンポジットドライバの再合成処理を実行しないと判定する。
【００８２】
上記S811において、コンポジットドライバの再合成処理を実行すると判定した場合（S811でYesの場合）、ダウンローダ406は、S812に処理を進める。
S812において、ダウンローダ406は、コンポジットドライバの再合成処理を実行し、S813に処理を進める。なお、S812のコンポジットドライバ再合成処理の詳細は後述する図１０で説明する。
【００８３】
一方、上記S811において、コンポジットドライバの再合成処理を実行しないと判定した場合（S811でNoの場合）、ダウンローダ406は、S813に処理を進める。
【００８４】
S813において、ダウンローダ406は、コンポジットドライバを再合成した場合には、その結果を、再合成していない場合には取得して一時領域に保存してあるコンポジットドライバを、最終成果物出力場所に移動させる。さらに、ダウンローダ406は、最終成果物を、図１１（ｂ）の1111のような画面で、表示部211に表示する。そして、CPU206は、ダウンローダ406を終了する（S814）。
【００８５】
ここで、図１１（ｂ）を用いて説明する。
図１１（ｂ）に示すように、画面1111では、最終成果物（最新のコンポジットドライバ606）を置いた場所を、再構成結果1112に表示し、後から端末装置104の利用者が利用することができるように、その場所を提示する（最新コンポジットドライバの提示）。OK1104は、画面1111を閉じるためのボタンである。OK1104が押下されると、CPU206は、画面1111を閉じる。
【００８６】
図９は、第１実施形態のカタログ解析、取得ドライバ確定処理（図８のS804）の詳細を説明するフローチャートである。
図８のS804に処理が移ると、ダウンローダ406は、カタログ解析、取得ドライバ確定処理を開始し（S901）、S902に処理を進める。
【００８７】
S902において、ダウンローダ406は、図８のS802で入力を受け付けた所望のComposite機名称を取得する。ここでは、説明のため「機種A」が入力されたものと仮定する。また、Webサーバ101は、図７の状態であると仮定して以後の説明を行う。
次に、ダウンローダ406は、初期処理として、取得すべきドライバ管理番号情報を初期化する（S903）。
【００８８】
次に、ダウンローダ406は、カタログ706が図８のS803によりWebサーバ101からROM・RAM207に取り込まれているので、その中から「機種A」をサポートしている個別ドライバとコンポジットドライバを探し出す。コンポジットドライバが複数見つかった場合、ダウンローダ406は、無条件に最新（最上位）のバージョンを選択し、該選択したコンポジットドライバの管理番号を取得すべきドライバ管理番号情報に追加するものとする。個別ドライバが複数見つかった場合は、以後の処理で選別する。なお、カタログ706の状態ならば、個別ドライバ701，702，703，704及びコンポジットドライバ705が見つかることになる。
【００８９】
ダウンローダ406は、複数の個別ドライバ（ここでは種類で判断）が見つかった場合、確認対象ドライバとして第一番目に見つかった個別ドライバを全て確認対象とする（S904）。ここで種類とは、例えば「Print Driver」、「Scan Driver」、「FAX Driver」等であり、同一種類の個別ドライバであってもバージョンや対象機種の違い等により複数存在する場合がある。カタログ706の状態ならば、確認対象ドライバは、個別ドライバとして登録されている「Print Driver」だけである（ただし複数バージョン存在）。よって、S904では、「Print Driver」の全てが確認対象ドライバとなる。もし個別ドライバとして「Scan Driver」や「FAX Driver」もWebサーバ101上に存在し、カタログ706に登録されていれば、これらも順次確認対象ドライバとなり順次処理されることになる。
【００９０】
次に、ダウンローダ406は、全ての個別ドライバ（ここでは種類で判断）について確認終了したか否かを判定する（S905）。未確認の個別ドライバがあると判定した場合（S905でNoの場合）、ダウンローダ406は、S908に処理を進める。
【００９１】
S908において、ダウンローダ406は、コンポジットドライバの構成要素である個別ドライバと同じ種類（この場合は「Print Driver」）のより上位バージョンの個別ドライバが確認対象ドライバに存在するか否か確認する。カタログ706の状態では、確認対象ドライバは「Print Driver」であり、コンポジットドライバの構成要素である「Print Driver」はバージョン「Ver10」である。確認対象ドライバである個別ドライバ701，702，703，704のバージョンはそれぞれ「Ver10」,「Ver11」,「Ver12」,「Ver13」である。よって、カタログ706の状態では、コンポジットドライバ705の構成要素である個別ドライバと同じ種類のより上位バージョンの個別ドライバは、個別ドライバ702，703，704になる。
【００９２】
上記S908において、コンポジットドライバの構成要素である個別ドライバと同じ種類のより上位バージョンの個別ドライバが確認対象ドライバとして存在すると判定した場合（S908でYesの場合）、ダウンローダ406は、S911に処理を進める。
S911において、ダウンローダ406は、確認対象管理番号を、当該個別ドライバの最上位バージョンの管理番号に設定する。カタログ706の状態では、「Ver13」である個別ドライバ704の管理番号「SS17-0030-01」が確認対象管理番号として設定される。
【００９３】
次にS912において、ダウンローダ406は、確認対象ドライバがまだあるか否かを判定する。例えば、確認対象管理番号が設定されている場合は、確認対象ドライバがまだあると判定する。一方、確認対象管理番号が設定されていない場合は、確認対象ドライバは無いと判定する。
【００９４】
上記S912において、確認対象ドライバがまだあると判定した場合（S912でYesの場合）、ダウンローダ406は、S914に処理を進める。
S914において、ダウンローダ406は、上記S902で取得した機種が確認対象管理番号に対応する確認対象ドライバのサポート対象にあるかないかを判定する。カタログ706の状態で確認対象管理番号が「SS17-0030-01」であるならば、ここでは「機種A」が管理番号「SS17-0030-01」の個別ドライバにあるか否かを判定することになる。
【００９５】
上記S914において、上記S902で取得した機種が確認対象管理番号に対応する確認対象ドライバのサポート対象にあると判定した場合（S914でYesの場合）、ダウンローダ406は、S917に処理を進める。
S917において、ダウンローダ406は、取得すべきドライバをその時点で選ばれているドライバに確定し、取得すべきドライバ管理番号を決定する。カタログ706の状態で確認対象ドライバが「Print Driver」であるならば「SS17-0030-01」が取得すべきドライバ管理番号となる。
S913において、ダウンローダ406は、上記S912で決定した取得すべきドライバ管理番号を記録し、S910に処理を進める。
S910において、ダウンローダ406は、確認対象ドライバを、次のドライバに進め、S905に処理を進める。
【００９６】
また、上記S914において、上記S902で取得した機種が確認対象管理番号に対応する確認対象ドライバのサポート対象にないと判定した場合（S914でNoの場合）、ダウンローダ406は、S915に処理を進める。
S915において、ダウンローダ406は、確認対象管理番号の個別ドライバが上記S902で取得した機種（例えば「機種A」）をサポートしておらず使えない場合、そのドライバを「互換性なし」と判断し、S916に処理を進める。
【００９７】
S916において、ダウンローダ406は、確認対象管理番号を１つ下のバージョンの管理番号とする。例えば、管理番号「SS17-0030-01」の個別ドライバ704がもし「機種A」をサポートしていなかった場合、確認対象管理番号を「SS17-0030-01」から１つバージョンが下の個別ドライバ703の管理番号「SS17-0020-01」に切り替える。もし１つ下のバージョンの個別ドライバが無かった場合には、確認対象管理番号に、確認すべきものがもうない旨の値を設定しておく。
【００９８】
上記S916の処理の後、ダウンローダ406は、S912に処理を移行させる
上記S912において、確認対象ドライバがまだあると判定した場合（S912でYesの場合）、ダウンローダ406は、再びS914に処理を進め、同様の処理を行う。
【００９９】
一方、上記S912において、確認対象ドライバがもうないと判定した場合（S912でNoの場合）、ダウンローダ406は、S909に処理を進める。カタログ706の状態では、個別ドライバ704，703，702の全てについて処理した後でこのような状態になる。
【０１００】
また上記S908にて、コンポジットドライバの構成要素である個別ドライバと同じ種類のより上位バージョンの個別ドライバが確認対象ドライバとして存在しないと判定した場合（S908でNoの場合）、ダウンローダ406は、S909に処理を進める。
【０１０１】
S909において、ダウンローダ406は、コンポジットドライバの構成要素である個別ドライバと同じ種類のより上位バージョンの個別ドライバが無いため、確認対象ドライバの全てについて確認を終了したと判断し、S910に処理を進める。
S910において、ダウンローダ406は、確認対象ドライバを、次の種類のドライバに進め、S905に処理を進める。例えば、「Print Driver」の次に、「Scan Driver」等を確認対象ドライバとして処理を進める。
【０１０２】
また上記S905において、全ての個別ドライバ（ここでは種類で判断）について確認終了した（すなわち最後のドライバについて確認処理を終了した）と判定した場合（S905でYesの場合）、ダウンローダ406は、S906に処理を進める。カタログ706の状態では、「Print Driver」の次のドライバは無いため、「Print Driver」についての処理が終了すると、最後のドライバについて確認終了したと判断される。
【０１０３】
S906において、ダウンローダ406は、取得すべきドライバを、上記S913で取得すべきドライバ管理番号を記録したドライバに確定し、カタログ解析、取得ドライバ確定処理を終了する（S907）。
【０１０４】
図１０は、コンポジットドライバ再合成処理（図８のS812）の詳細を説明するフローチャートである。
図８のS812に処理が移ると、ダウンローダ406は、コンポジットドライバ再合成処理を開始し（S1001）、S1002に処理を進める。
【０１０５】
S1002において、ダウンローダ406は、成果物展開用の作業用ディレクトリを作成する。
図１０では、具体的な例として「Step1002」に、「Root」というディレクトリを作成したところを示してある。なお、作業用ディレクトリを作成する場所は、端末装置104のユーザごとにアサインされている外部記憶装置210内の領域であっても、外部記憶装置210内の固定領域であってもよく、この場所により本発明が限定されるものではない。
【０１０６】
次に、ダウンローダ406は、取得すべきコンポジットドライバを、上記S1002で作成した作業用ディレクトリの下に複製する（S1003）。
図１０では、具体的な例として「Step1003」に、「Root」というディレクトリの下に、コンポジットドライバを複製したところを示してある。
【０１０７】
次に、ダウンローダ406は、置き換え対象個別ドライバを作業用ディレクトリから削除する（S1004）。
図１０では、具体的な例として「Step1004」に、個別ドライバである「Print Driver」（図中では「PRINT」）を削除したところを示してある。
【０１０８】
次に、ダウンローダ406は、置き換え対象個別ドライバを更新用ドライバで置き換える（S1005）。
図１０では、具体的な例として「Step1005」に、個別ドライバである「Print Driver」（図中では「PRINT」）を置き換えたところを示してある。
【０１０９】
次に、ダウンローダ406は、Install／Uninstall制御情報の更新を行う（S1006）。
図１０では、具体的な例として「Step1006」に、Install制御情である「Cnp60M.inf」の更新の例を示してある。また、Uninstall制御情報である「DelDrv.ini」の更新の例も示してある。なお、これらファイル名は説明のための例であり、この名称に限定されるものではない。
【０１１０】
以上、S1001〜S1006の処理を実行することで、ダウンローダ406は、最新のコンポジットドライバを生成（再合成）することができる。そして、ダウンローダ406は、コンポジットドライバ再合成処理を終了する（S1007）。
【０１１１】
以上説明したように、第１実施形態では、カタログ706の状態であるならば、ダウンローダ406は、以下の処理を実行する。例えば、ダウンローダ406は、「Composite Driver Ver4」である「SS17-0002-01」と個別ドライバ「Ver13」である「SS17-0030-01」を端末装置104上で合成して、最新コンポジットドライバ606を作成する。そして、ダウンローダ406は、画面1111を提示して、その最新コンポジットドライバ606の作成結果を通知する。
【０１１２】
この最新コンポジットドライバ606は、「機種A」をサポートする最新の個別ドライバを利用して作成されているので、「機種A」向けのコンポジットドライバとしての動作は保証されている。さらに、Install／Uninstallも正常に動作するように調整済である。また、最新Compositeを構成するための元データも端末装置104にあるものを優先的に利用し、必要な場合にだけWebサーバから取得するように振舞う。これにより、ドライバダウンロードにかかる時間の短縮に貢献もできる。
【０１１３】
つまり、Webサーバ101から取得したカタログ603を用いて、最新のコンポジットドライバの構成を判断して、その元データを端末装置104もしくはWebサーバ101から取得する。これにより、効率的にドライバを取得し、端末装置104上でInstall／Uninstallも正常に動作するよう再構成して最新コンポジットドライバ606を作ることができる。
【０１１４】
〔第２実施形態〕
上記第１実施形態では、コンポジットドライバの構成要素である個別ドライバと同じ種類のより上位バージョンの個別ドライバであって、所望の機器がサポートされているドライバを、取得するドライバとする構成について説明した。第２実施形態では、さらにドライバのインストーラバージョンに整合性があるか否かを判定して、取得するドライバと決定するように構成する。以下、詳細に説明する。
【０１１５】
図１２は、第２実施形態のカタログ解析、取得ドライバ確定処理（図８のS804）の詳細を説明するローチャートである。図１２に示す処理は、ダウンローダ406が実行するものである。即ち、端末装置104のCPU206がROM・RAM207上に格納されたプログラム（外部記憶装置210からROM・RAM207にロードされたプログラムも含む）を実行することにより実現される処理である。なお、図９と同一のステップには同一のステップ番号を付し、説明を省略する。
【０１１６】
第２実施形態では、S912において、ダウンローダ406は、確認対象ドライバがまだあると判定した場合（S912でYesの場合）、S1201に処理を進める。
S1201において、ダウンローダ406は、確認対象管理番号が示す個別ドライバのインストーラのバージョンの確認を行い、インストーラのバージョンに整合性があるか否かを判定する。カタログ706の状態で確認対象ドライバが「Print Driver」であるならば、コンポジットドライバの構成要素である「Print Driver」のインストーラのバージョンは「5」である。この場合、確認対象管理番号が「SS17-0030-01」、「SS17-0020-01」、「SS17-0010-01」の個別ドライバ704，703，702が採用しているインストーラのバージョンが「5」以下であれば、ダウンローダ406は「整合性あり」と判定する。一方、インストーラのバージョンが「5」より大きい値であればコンポジットドライバが対応していない未知の個別ドライバのインストーラである可能性がある。この場合、ダウンローダ406は、正常に動作しない可能性もあり得るので「整合性が無い」と判定する。例えば、確認対象管理番号が「SS17-0030-01」ならば個別ドライバのインストーラのバージョンは「6」なので「整合性なし」と判定される。確認対象管理番号が「SS17-0020-01」ならば個別ドライバのインストーラのバージョンは「5」なので「整合性あり」と判定される。すなわち、確認対象管理番号が示す個別ドライバのインストーラのバージョンが、コンポジットドライバに含まれる個別ドライバのインストーラのバージョン以下のバージョンである場合、「整合性あり」と判定される。
【０１１７】
上記S1201において、インストーラのバージョンに整合性があると判定した場合（S1201でYesの場合）、ダウンローダ406は、S914に処理を進める。
一方、上記S1201において、インストーラのバージョンに整合性がないと判定した場合（S1201でNoの場合）、ダウンローダ406は、S915に処理を進める。
以降は、第１実施形態と同様であるので説明を省略する。
第２実施形態の場合、カタログ706の状態で確認対象ドライバが「Print Driver」であるならば「SS17-0020-01」が取得すべきドライバ管理番号となる。「SS17-0030-01」はインストーラのバージョンが「6」であるため、上記S1201で「整合性が無い」と判定されて除外される。
【０１１８】
以上、第２実施形態では、カタログ706の状態では、コンポジットドライバVer4の「SS17-0002-01」と個別ドライバVer12の「SS17-0020-01」を端末装置104上で合成して、最新コンポジットドライバを作成する。そして、画面1111を提示してその結果を通知する。この最新コンポジットドライバは、「機種A」をサポートしかつインストーラバージョンにも互換性のある最新個別ドライバを利用して作成されている。このため、「機種A」向けのコンポジットドライバとしての動作は、第１実施形態の構成で構築されるコンポジットドライバよりも強固に保証される。さらに、Install／Uninstallも正常に動作するように調整済である。最新コンポジットドライバを構成するための元データも端末装置104に存在するものを優先的に利用し、必要な場合にだけWebサーバから取得するようにふるまうことで、ドライバダウンロードにかかる時間の短縮に貢献もできる。つまり、ダウンローダ406は、Webサーバ101から取得したカタログ603を用いて、最新のコンポジットドライバの構成を判断し、その元データを端末装置104もしくはWebサーバ101から取得することで効率的に取得する。そして、ダウンローダ406は、端末装置104上でInstall／Uninstallも正常に動作するようコンポジットドライバを再構成して、最新コンポジットドライバ606を作成することができる。
【０１１９】
〔第３実施形態〕
第３実施形態では、Webサーバに同一バージョンの個別ドライバが複数登録されている場合に、取得するドライバを確定する構成について説明する。
図１３は、第３実施形態のWebサーバ101におけるコンポジットドライバ、個別ドライバ、カタログの一例を具体的に示す図である。
図１３の例は、個別ドライバとコンポジットドライバが複数登録されている点は図７と同一であるが、図１３では１つのバージョンの個別ドライバが複数登録されている点が異なる。
【０１２０】
上述の同一バージョンの複数の個別ドライバは、サポート機種に差異がある。
同一バージョンでサポート機種の異なる複数のドライバが存在する理由を以下に説明する。例えば、図１３の1301〜1310が全て英語版のドライバであり、バージョン「12」に関する個別ドライバは1306〜1309の４つあるとする。なお、コンポジットドライバには差がなく、1311の1点だけが存在している。
【０１２１】
カタログ1312を見ると、個別ドライバ1306は、サポート機種が「1」、「A」、「B」の３機種となっている。また、個別ドライバ1307は、サポート機種が「1」、「A」、「B」、「C」の４機種となっている。また、個別ドライバ1308は、サポート機種が「1」、「A」、「B」、「D」の４機種となっている。また、個別ドライバ1309は、サポート機種が「1」、「A」、「B」、「C」、「D」の５機種となっている。
【０１２２】
英語版ドライバというものは世界的にみると、アジア地域、オセアニア地域、欧州地域、アフリカ地域、北米地域など広く用いられる。複合印刷装置の提供ベンダーは、１つの機種の販売タイミングを地域によって先行させたり遅らせたりすることがある。このため、英語版ドライバも、地域ごとの販売タイミングに合わせてサポート機種を違えたバリエーションが必要となることがある。図１３はその一例である。
【０１２３】
第３実施形態では、図９又は図１２のS911において、ダウンローダ406は、確認対象管理番号として、当該個別ドライバの最上位バージョンの管理番号に設定する（複数存在する場合は複数設定する）。例えば1306〜1309の４つが確認対象に設定されることもある。
さらに、第３実施形態では、S914において、ダウンローダ406は、S902で取得した機種がいずれかの確認対象ドライバのサポート対象にあるかないかを判定する。
さらに、第３実施形態では、S914において、ダウンローダ406は、取得すべきドライバをその時点で選ばれているドライバのうち、サポート機種数の最も少ない個別ドライバに確定し、取得すべきドライバ管理番号を決定する。
【０１２４】
例えば1306〜1309の４つが対象となり、所望の機種が「A」である場合、ダウンローダ406は、サポート機種数の最も少ない個別ドライバである個別ドライバ1306を選択するように動作する。サポート機種数が少なければ、外部記憶装置210上での個別ドライバのサイズが小さくなる。さらに、Webサーバ101から取得する場合、個別ドライバのサイズが小さいほうが取得時間（Webサーバ101との通信時間）が短くて済むため、端末装置104の利用者にとっての利便性が上がる。
なお、上述の説明では、サポート機種数が最も少ない個別ドライバを選択する構成を示したが、サイズがもっとも小さい個別ドライバを選択するように構成してもよい。
【０１２５】
以下、カタログ1312の状態を例に説明する。図１２の処理が実行される場合、ダウンローダ406は、コンポジットドライバVer4である「SS17-0002-01」と個別ドライバVer12でサポート機種数が最小の「SS17-0020-01」を端末装置104上で合成して、最新コンポジットドライバ606を作成する。また、図９の処理が実行される場合、ダウンローダ406は、コンポジットドライバVer4である「SS17-0002-01」と個別ドライバVer13の「SS17-0030-01」を端末装置104上で合成して、最新コンポジットドライバ606を作成する。なお、個別ドライバVer13でも複数パターン用意されていれば、サポート機種数が最小の個別ドライバを取得するように動作する。
【０１２６】
さらに、Webサーバから取得する場合でも、最小構成の個別ドライバを利用するようになるので、ドライバダウンロードにかかる時間の短縮に貢献もできる。
【０１２７】
つまり、Webサーバ101から取得したカタログ603を用いて、最新のコンポジットドライバの構成を判断して、その元データを端末装置104もしくはWebサーバ101から取得する。このように、ドライバを効率的に取得し、端末装置104上でInstall／Uninstallも正常に動作するよう再構成して最新コンポジットドライバを作り上げることができる。
【０１２８】
以上のように、各実施形態によれば、独自に進化・更新される個別ドライバを、コンポジットドライバの構成要素として取り込み、かつ、インストール・アンインストールが正常に動作するコンポジットドライバを自動的に再構成することができる。すなわち、個別ドライバが独自に更新され且つ対応するコンポジットドライバが未更新の場合でも、更新された個別ドライバを構成要素として含み、所望の装置の各機能の個別ドライバを一度にインストール及びアンインストール可能な所望の機種向けのコンポジットドライバを自動構成することができる。具体的には、Webサーバ101上に登録されている、コンポジットドライバと各機能向け個別ドライバの最新情報であるカタログをダウンローダと呼ばれる端末装置上で動作するプログラムが取得する。ダウンローダ406は、カタログに基づき最新のコンポジットドライバの構成条件を把握し、その構成要素となるドライバを端末装置104のローカルの記憶領域及びWebサーバ101から取得して、最新のコンポジットドライバを端末装置上で再構成する。これにより、最新コンポジットドライバを顧客に提供することができる。
【０１２９】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されていてもよい。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
また、上記各実施形態を組み合わせた構成も全て本発明に含まれるものである。
【０１３０】
（その他の実施形態）
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路（例えば、ASIC）によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施形態及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１３１】
101    Webサーバ
104    端末装置
105    複合印刷装置
406    ダウンローダ
【図１】
2019079093.tif 000003
【図２】
2019079093.tif 000004
【図３】
2019079093.tif 000005
【図４】
2019079093.tif 000006
【図５】
2019079093.tif 000007
【図６】
2019079093.tif 000008
【図７】
2019079093.tif 000009
【図８】
2019079093.tif 000010
【図９】
2019079093.tif 000011
【図１０】
2019079093.tif 000012
【図１１】
2019079093.tif 000013
【図１２】
2019079093.tif 000014
【図１３】
2019079093.tif 000015