以下に添付図面を参照して、プログラム、情報処理装置および情報処理方法、ならびに、情報処理システムの実施形態を詳細に説明する。
(第1の実施形態)
図1は、第1の実施形態に係る情報処理システムの一例の構成を示す。図1において、クライアント側におけるパーソナルコンピュータなどの情報処理装置10(以下、クライアントPC10)と、画像形成装置20aおよび20bとが、LAN(Local Area Network)といったネットワーク22により互いに通信可能に接続される。図1の例では、画像形成装置20aおよび20bは、それぞれプリンタ装置(プリンタ#1、#2)とされている。クライアントPC10は、画像形成装置20aおよび20bを駆動するためのドライバプログラム(以下、ドライバと略称する)が搭載される。クライアントPC10は、搭載されたドライバにより、ネットワーク22を介して画像形成装置20aおよび20bを制御することができる。
クライアントPC10は、ルータ21を介して、例えばインターネットといった外部のネットワーク30に接続される。ネットワーク30に対し、更新情報サーバ40およびオブジェクト配置サーバ41が接続される。クライアントPC10は、ネットワーク30を介して、これら更新情報サーバ40およびオブジェクト配置サーバ41と互いに通信可能とされる。
オブジェクト配置サーバ41は、クライアントPC10に搭載されるドライバを更新するためのオブジェクトが予め定められた格納場所に配置されて格納される。オブジェクト配置サーバ41に格納されるオブジェクトは、クライアントPC10に搭載されるドライバと置き換える、例えば当該ドライバに対してバージョンがより新しいドライバそのものであってもよいし、ドライバを構成するためのモジュールであってもよい。これに限らず、オブジェクトは、ドライバに対する更新部分のみを含むモジュールであってもよい。
更新情報サーバ40は、オブジェクト配置サーバ41に格納されるオブジェクトを用いてドライバを更新するための更新情報が格納される。更新情報は、少なくとも、当該オブジェクトがオブジェクト配置サーバ41に格納される格納場所を示す情報を含む。
なお、図1の例では、ネットワーク22に2台の画像形成装置20aおよび20bが接続され、クライアントPC10がこれら画像形成装置20aおよび20bを制御するように示したが、これはこの例に限定されない。すなわち、クライアントPC10は、ネットワーク22に接続される2台の画像形成装置20aおよび20bのうち一方のみを制御してもよいし、ネットワーク22に対して1台の例えば画像形成装置20aのみが接続されていてもよい。また、ネットワーク22に対して3台以上の画像形成装置が接続され、クライアントPC10がこの3台以上の画像形成装置を全て制御可能としてもよい。
また、図1では、更新情報サーバ40とオブジェクト配置サーバ41とがそれぞれ個別のサーバ装置であるように示したが、これはこの例に限定されない。例えば、更新情報サーバ40とオブジェクト配置サーバ41とを同一のサーバ装置上の別個の機能として構成してもよいし、更新情報サーバ40とオブジェクト配置サーバ41とをさらに多数のサーバ装置に分散させて構成してもよい。
図2は、第1の実施形態に適用可能なクライアントPC10の一例の構成を示す。クライアントPC10は、CPU(Central Processing Unit)51と、ROM(Read Only Memory)52と、RAM(Random Access Memory)53と、ストレージ54と、表示制御部55と、入出力I/F57と、通信I/F59とがバス50を介して互いに通信可能に接続されている。
CPU51は、ROM52やストレージ54に予め記憶されるプログラムに従い、RAM53をワークメモリとして用いて、このクライアントPC10の全体の動作を制御する。ストレージ54は、ハードディスクドライブや不揮発性の半導体メモリ(フラッシュメモリ)からなり、CPU51が動作するためのプログラムや、各種データが格納される。
表示制御部55は、CPU51によりプログラムに従い生成された表示制御信号を、ディスプレイ56で表示可能な表示信号に変換してディスプレイ56に供給する。ディスプレイ56は、例えばLCD(Liquid Crystal Display)を表示デバイスとして用い、表示制御部55から供給された表示信号に従った画面を表示デバイスに表示させる。
入出力I/F57は、外部機器との間で通信を行うインタフェースである。図2の例では、入出力I/F57に対して、外部機器としてキーボードやポインティングデバイス(マウスなど)を含む操作部58が接続されている。入出力I/F57は、これに限らず、CD(Compact Disk)やDVD(Digital Versatile Disk)といったディスク記憶媒体からのデータの読み出しなどを行うドライブ装置や、不揮発性の半導体メモリなどのストレージを接続してもよい。入出力I/F57としては、例えばUSB(Universal Serial Bus)を用いることができる。
通信I/F59は、TCP/IP(Transmission Control Protocol/Internet Protocol)など所定のプロトコルを用いてネットワーク30を介した通信を制御する。
なお、更新情報サーバ40およびオブジェクト配置サーバ41は、クライアントPC10と同様の構成で実現可能であるので、ここでの説明を省略する。
図3は、第1の実施形態に係るクライアントPC10の機能を説明するための一例の機能ブロック図である。図3において、クライアントPC10は、表示部100と、入力部101と、全体制御部102と、通信部103と、記憶部104と、インストーラ105と、ドライバ106とを有する。
全体制御部102は、クライアントPC10の全体の動作を制御するもので、例えば、CPU51上で動作するプログラムの一つであるOS(Operating System)に相当する。表示部100は、全体制御部102の指示に従った画面をディスプレイ56に表示させる。入力部101は、入出力I/F57に対して入力された情報を全体制御部102に渡す。通信部103は、通信I/F59を介した通信を制御する。記憶部104は、RAM53やストレージ54に対するデータの読み書きを制御する。
これら表示部100、入力部101、全体制御部102、通信部103および記憶部104は、CPU51で動作するプログラムにより構成される。これに限らず、表示部100、入力部101、全体制御部102、通信部103および記憶部104のうち一部または全部を、互いに協働するハードウェアによって構成してもよい。
インストーラ105およびドライバ106は、CPU51上で動作するプログラムにより構成される。ドライバ106は、全体制御部102がクライアントPC10に接続される外部機器を制御する際に、全体制御部102と当該外部機器との間の仲介を行う。また、ドライバ106は、クライアントPC10から当該外部機器を使用する際に、ユーザに対して適切なUI(User Interface)を提供する。この例では、ドライバ106は、例えば画像形成装置20a(プリンタ#1)の制御に対応したプリンタドライバであるものとする。
インストーラ105は、ドライバ106をクライアントPC10にインストールする。また、インストーラ105は、既にクライアントPC10にインストールされているドライバ106の更新処理を行う。例えば、インストーラ105は、インストール済みのドライバ106を更新可能か否かを判定し、更新可能であると判定した場合に、ドライバ106を更新するためのオブジェクトをネットワーク30を介して取得し、取得したオブジェクトを用いてドライバ106を更新する。インストーラ105は、例えば対応するドライバ106と共に提供され、所定の手順にてクライアントPC10にインストールされる。
図4は、第1の実施形態に係るインストーラ105の一例の構成を示す。図4において、インストーラ105は、通信部120と、ドライバインストール部121と、UI122と、ドライバ情報取得部123とを有する。
通信部120は、更新情報サーバ40およびオブジェクト配置サーバ41と通信を行い、ドライバ106を更新するためのオブジェクトを取得する。ドライバインストール部121は、通信部120により取得されたオブジェクトを用いてクライアントPC10にドライバをインストールし、ドライバ106を更新する。UI122は、ドライバ106のインストールや更新の際に、ユーザに対して表示や入力インタフェースなどユーザインタフェースを提供する。ドライバ情報取得部123は、クライアントPC10にインストールされているドライバ106から、後述する識別情報を取得する(第1取得部)。
通信部120は、更新情報取得部1201とオブジェクト取得部1202とを有する。更新情報取得部1201は、更新情報サーバ40と通信し、更新情報サーバ40からドライバ106を更新するための更新情報を取得する(第2取得部)。このとき、更新情報取得部1201は、ドライバ情報取得部123によりドライバ106から取得された識別情報に基づき更新情報が格納される格納場所を特定するための特定情報を取得し、取得した特定情報に従い更新情報を取得する。更新情報は、少なくとも、当該ドライバ106の更新に用いるオブジェクトの、オブジェクト配置サーバ41における格納場所を示す情報を含む。
オブジェクト取得部1202は、更新情報取得部1201に取得された更新情報に基づき、オブジェクト配置サーバ41から、ドライバ106の更新に用いるオブジェクトを取得する。
図5は、第1の実施形態に係るドライバ106の一例の構成を示す。ドライバ106は、ドライバ処理部130と、ID格納部131と、ID送信部132とを有する。ドライバ処理部130は、一般的なドライバとしての処理を実行する部分である。一例として、ドライバ106がプリンタドライバである場合、ドライバ処理部130は、ユーザに対して印刷設定や周辺機設定(プリンタ設定)を促すユーザインタフェースを提供するUI部と、実際の印刷データをPCL(Printer Control Language)やポストスクリプトといった描画コマンドに変換する描画部とを含む。
ID格納部131は、このドライバ106に一意の識別情報が格納される。ここで、ドライバ106に一意とは、当該ドライバ106を更新可能なドライバプログラムを特定するための情報群に対して一意であることを意味する。識別情報の構成のより具体的な例については、後述する。
ID格納部131に格納される識別情報は、ドライバ106のベンダ側において予め設定される。識別情報は、ドライバ106のプログラム内に埋め込まれていてもよいし、ドライバ106のプログラムとは別個のデータとしてクライアントPC10のストレージ54に不揮発に記憶させてもよい。
なお、ドライバ106を更新するための更新情報が格納される格納場所を特定可能な特定情報は、識別情報を含んで構成される。一例として、ドライバ106の更新情報が更新情報サーバ40に格納される格納場所を示すURL(Uniform Resource Locator)の、ドライバ106を特定可能な部分に、識別情報を用いることができる。
ID送信部132は、インストーラ105のドライバ情報取得部123からの要求に応じて、ID格納部131に格納される識別情報をインストーラ105に対して送信する。ID送信部132がインストーラ105に識別情報を送信する方法は特に限定されない。例えば、ID送信部132は、ファイル、レジストリ、PrintTicket、PrintCapability、ドライバ106のCapabilityなどを介して、識別情報をインストーラ105に送信する。
次に、第1の実施形態に係るドライバ106の更新手順について、図6を用いて概略的に説明する。なお、図6において、上述した図1および図3と共通する部分には同一の符号を付して、詳細な説明を省略する。また、以下の説明において、ドライバ106に一意な識別情報を、適宜「ID」として記述する。図6において、既にクライアントPC10には、バージョンVer#Aのドライバ106がインストールされているものとする。
図6に示されるドライバ106の更新手順は、例えば、クライアントPC10に対するユーザ操作に従い開始される。更新手順が開始されると、インストーラ105は、先ず、ドライバ106に対してIDを要求する(ステップS1)。ドライバ106は、この要求に応じてIDをインストーラ105に返す(ステップS2)。インストーラ105は、ドライバ106から受け取ったIDに基づき、ドライバ106を更新するための更新情報の格納場所を特定するための特定情報を生成する。インストーラ105は、生成した特定情報に基づき、更新情報サーバ40に対してドライバ106の更新の有無を問い合わせる(ステップS3)。更新情報サーバ40は、この問い合わせに応じて、更新情報をインストーラ105に返す(ステップS4)。
インストーラ105は、更新情報サーバ40から渡された更新情報に基づき、ドライバ106の更新の有無を判定する。インストーラ105は、ドライバ106の更新があると判定した場合、更新情報に含まれる、ドライバ106を更新するためのオブジェクトの格納場所を示す情報に基づき、当該オブジェクトのダウンロードを、オブジェクト配置サーバ41に要求する(ステップS5)。
オブジェクト配置サーバ41は、この要求に応じて、ドライバ106を更新するためのオブジェクトをクライアントPC10に送信する(ステップS6)。このオブジェクトは、ドライバ106のバージョンVer#Aより新しいバージョンVer#Bのドライバ106’を構成するオブジェクトであるものとする。クライアントPC10において、インストーラ105は、オブジェクト配置サーバ41から送信されたドライバ106’を構成するオブジェクトを、例えばストレージ54上の所定の領域に格納する。
インストーラ105は、オブジェクト配置サーバ41から送信されたオブジェクトに対してインストール処理を実行する(ステップS7)。例えば、インストーラ105は、圧縮されファイルに格納されてオブジェクト配置サーバ41から送信されたオブジェクトを解凍し、解凍されたオブジェクトに対してインストール処理を実行する。例えば、インストーラ105は、このインストール処理によりオブジェクトからドライバ106’を構成し、このドライバ106’を既にインストールされているドライバ106と置き換える(ステップS8)。これにより、ドライバ106がより新しいバージョンのドライバ106’に更新される。
このように、第1の実施形態によれば、クライアントPC10にインストール済みのドライバ106を更新するための更新情報が、ドライバ106に含まれる、当該ドライバ106を一意に識別する識別情報に基づく特定情報に示される格納場所に格納される。したがって、インストーラ105は、ドライバ106の未知のバージョンのオブジェクトの取得およびインストールを、当該ドライバ106の識別情報に基づき実行することができる。
次に、第1の実施形態に係るドライバ106の更新手順について、図7のシーケンス図を用いてより詳細に説明する。なお、図7において、上述した図1〜図5と共通する部分には同一の符号を付して、詳細な説明を省略する。
例えば、クライアントPC10の入力部101に対するユーザ操作に応じて、インストーラ105のUI122に対してドライバ106の更新チェックが指示される(ステップS100)。この指示は、UI122を介してドライバ情報取得部123に伝えられる(ステップS101)。
ドライバ情報取得部123は、この更新チェックの指示を受けて、ステップS102〜ステップS105の処理で、クライアントPC10にインストールされている全てのドライバについて、ドライバの情報を取得する。すなわち、ドライバ情報取得部123は、ステップS102で、クライアントPC10にインストールされている各ドライバに対してドライバ情報をそれぞれ要求する。
若し、ステップS102でドライバ情報が要求されたドライバが、第1の実施形態に係るIDを有するドライバ106であれば、この要求に応じて、ID送信部132がID格納部131から当該IDをドライバ情報として取得する(ステップS103、ステップS104)。そして、ID送信部132は、取得したIDをドライバ情報取得部123に送信する(ステップS105)。
一例として、ドライバ情報取得部123とID送信部132とがファイルを介してIDの受け渡しを行う場合、ドライバ情報取得部123とID送信部132との間で、ID受け渡しを行うファイルのファイル名および格納場所を予め決めておく。ID送信部132は、このファイルに対してIDを書き込み、ドライバ情報取得部123は、このファイルからIDを読み出す。
一方、ステップS102でドライバ情報が要求されたドライバが、第1の実施形態に係るIDを有しないドライバであれば、ID送信部132からドライバ情報取得部123に対してIDは送信されないことになる。この場合、例えば、当該ドライバからドライバ情報取得部123に対して、一般的なドライバ情報が送信される。
ドライバ情報取得部123は、ステップS102〜ステップS105の処理をクライアントPC10にインストールされる全てのドライバに対して実行した結果、IDが取得できたドライバを、更新対象のドライバであると判定する。これにより、クライアントPC10に例えば新旧のドライバが混在してインストールされIDが取得できないドライバが存在する場合であっても、第1の実施形態に係るドライバの更新を実行することが可能となる。
ドライバ情報取得部123は、ステップS102〜ステップS105の処理で取得した各IDを更新情報取得部1201に渡し、各IDに対応する更新情報の取得を更新情報取得部1201に要求する(ステップS110)。更新情報取得部1201は、この要求に応じて、ドライバ情報取得部123から渡された各IDについて後述するステップS111およびステップS112の処理を実行し、更新情報サーバ40から各IDに対応する各更新情報を取得する。
ステップS110でドライバ106からIDを渡された更新情報取得部1201は、渡されたIDに基づき、当該IDに対応する更新情報の格納場所を特定可能な特定情報を取得する。例えば、更新情報取得部1201は、予め定められた規則に従い、IDに基づき特定情報を生成する。
ここで、IDおよび特定情報について、具体例を用いて説明する。図8は、第1の実施形態に係るIDの例を示す。図8の例では、IDは、9桁の数字による文字列として示されている。この場合、IDは、例えば9桁の数字を用いた通し番号を用いることが考えられる。これに限らず、IDは、ランダムに生成した文字列を用いてもよい。なお、IDの桁数は9桁に限定されず、10桁以上でもよいし、9桁未満でもよい。また、IDに数字を用いる場合は、10進数表記に限らず、例えば16進数表記を用いてもよい。
図9は、第1の実施形態に係る特定情報の例を示す。図9の例では、特定情報は、IDに対応する更新情報のネットワーク上での位置を示すURLが用いられている。図9において、特定情報は、ネットワーク上の「1.example.org」で特定される場所に、ファイル名「123456789.xml」というxml(Extensible Markup Language)形式のファイルとして格納されていることが示されている。
この特定情報は、上述の図9に例示される識別情報を含んで構成される。すなわち、図9の例では、特定情報に含まれるファイル名「123456789.xml」は、先頭からピリオド「.」までの文字列(この例では文字列「123456789」)が、識別情報を示している。また、ファイル名において、ピリオド「.」から後ろの文字列「xml」がこのファイルがxml形式であることを示す拡張子となっている。このように、特定情報を識別情報を含んだ形式とすることで、ドライバ情報取得部123は、識別情報から容易に特定情報を生成することができる。
説明は図7のステップS110に戻り、更新情報取得部1201は、ID送信部132から送信されたIDに基づき取得した特定情報(URL)に従い、更新情報サーバ40に対して更新情報を要求する(ステップS111)。更新情報サーバ40は、この要求に従い、特定情報で特定される格納場所に格納される更新情報を、更新情報取得部1201に渡す(ステップS112)。
図9に示したような、更新情報のファイル名を含むURLが特定情報として用いられている場合、更新情報取得部1201は、このURLに従い更新情報サーバ40にアクセスして更新情報のファイルを直接的に取得することができる。
上述したように、各IDに対応して特定情報が生成され、特定情報が更新情報の格納場所、すなわち更新情報ファイルのファイル名を直接的に示している。したがって、更新情報取得部1201は、更新情報サーバ40への更新情報の要求に対し、更新情報ファイルを直接的に取得することができる。これは、更新情報ファイルのファイル名それぞれが、ドライバ106の更新情報要求に対するインタフェースとなっていることを意味する。そのため、この更新情報の要求に対する更新情報サーバ40の負荷を軽減することが可能である。
図10は、第1の実施形態に係る更新情報の例を示す。なお、図10において、各行の先頭に、各行の本体とコロン(:)で区切られて記述される数字は、各行を説明するために便宜上付した行番号である。また、図10に示される更新情報は、図8のIDに対応し、図9のURLに含まれるファイル名のファイルに記述される。図10において、更新情報は、第1行目の記述により、このファイルに記述されるxmlが定義され、第2行目のタグ「<softwareInfo>」および第13行目のタグ「</softwareInfo>」で挟まれた部分に、ドライバ106を更新するために用いる情報が記述される。
第3行目は、タグ「<softwareId>」および「</softwareId>」に挟まれた部分に、この更新情報に対応するIDが記述される。第4行目は、タグ「<version>」および「</version>」に挟まれた部分に、この更新情報によりインストールされるドライバのバージョンが記述される。この例では、IDとしてこの更新情報のファイル名と対応する値「123456789」が記述され、バージョン「1.1.0」が記述されている。第5行目は、タグ「<publishDatetime>」および「</publishDatetime>」に挟まれた部分に、この更新情報によりインストールされるドライバの公開日時が記述される。この例では、公開日時は、「年、月、日、時刻、分、秒」のフォーマットで記述されている。
第6行目は、タグ「<fileSize>」および「</fileSize>」に挟まれた部分に、この更新情報によりインストールされるドライバの本体であるオブジェクトのファイルサイズが記述される。
なお、第3行目〜第6行目の記述のうち、第4行目および第5行目の何れか一方、ならびに、第6行目の記述は、省略可能である。
第7行目〜第12行目は、この更新情報によりインストールされるドライバの本体であるオブジェクトそのものが格納されるURLと、当該ドライバの各属性情報が格納されるURLとが記述される。図10の例では、第7行目は、タグ「<url1>」および「</url1>」に挟まれた部分に、更新されるドライバの基本的な情報が格納されるファイルのURLが記述される。なお、ドライバの基本的な情報は、例えば、ドライバの種類(プリンタドライバか、スキャナドライバか、など)や、ドライバが対応する機種名を含むことができる。第8行目は、タグ「<url2>」および「</url2>」に挟まれた部分に、インストールされるドライバの本体であるオブジェクトが格納されるURLが記述される。例えば、オブジェクトは、zip形式で圧縮されたファイルとされている。
第9行目〜第12行目は、各タグ「<url3>」および「</url3>」、タグ「<url4>」および「</url4>」、タグ「<url5>」および「</url5>」、ならびに、タグ「<url6>」および「</url6>」に挟まれた部分に、それぞれ、この更新情報によりインストールされるドライバの拡張情報が格納されるファイルのURLと、変更履歴が格納されるファイルのURLと、詳細説明が格納されるファイルのURLと、利用許諾情報が格納されるファイルのURLとが記述される。
なお、第7行目〜第12行目の記述のうち、第8行目のオブジェクトが格納されるURLの記述以外は、省略可能である。また、図10の例では、第7行目〜第12行目に記述される各URLは、オブジェクト配置サーバ41のURLを含んでいる。さらに、更新情報のフォーマットは、同一のIDについて共通であることが好ましい。例えば、IDが同一でバージョンなどが異なる更新情報に対して、共通のフォーマットが適用される。
説明は図7に戻り、更新情報取得部1201は、ステップS111およびステップS112で各IDについて取得した各更新情報を、例えばストレージ54上のキャッシュファイルを介して、ドライバ情報取得部123に渡す(ステップS113)。ドライバ情報取得部123は、更新情報取得部1201から渡された各更新情報をUI122に通知する(ステップS114)。UI122は、ドライバ情報取得部123から通知された各更新情報に基づき、更新対象となるドライバを示す情報を表示部100に通知する(ステップS115)。
なお、更新情報取得部1201は、各更新情報に基づき、クライアントPC10にインストールされている各ドライバのうち、更新対象となるドライバを選択することができる。
例えば、更新情報取得部1201は、各更新情報に含まれるID(図10の3行目)およびバージョン情報(図10の4行目)とを、クライアントPC10に既にインストールされている、例えばドライバ106のIDおよびバージョン情報と比較する。比較の結果、更新情報取得部1201は、ドライバ106とIDが一致し、且つ、更新情報に記述されるバージョンがドライバ106のバージョンよりも新しい場合に、更新情報が示すドライバを更新対象のドライバとして選択する。更新情報取得部1201は、選択した更新対象のドライバの更新情報をドライバ情報取得部123に渡す。
更新対象のドライバの選択方法は、この例に限定されない。例えば、更新情報取得部1201は、IDが一致する更新情報およびインストール済みのドライバ106について、公開日時を比較してもよい。この場合、更新情報に記述される公開日時がインストール済みのドライバ106の公開日時よりも新しい場合に、更新情報が示すドライバを更新対象のドライバとして選択する。また、現在インストールされているドライバ106をインストールした際に取得した更新情報を例えばストレージ54などにキャッシュしておき、キャッシュされた更新情報と、新たに取得された更新情報とを比較して、両者の差分に基づき更新対象のドライバを選択してもよい。
また、更新対象のドライバは、インストーラ105側で選択する例に限定されず、更新情報サーバ40側で選択してもよい。この場合、インストーラ105は、クライアントPC10にインストール済みのドライバのIDおよびバージョン情報を更新情報サーバ40に送信する。更新情報サーバ40は、これらIDおよびバージョン情報に基づき、IDが一致しバージョンがより新しいドライバの更新情報を検索し、インストーラ105に送信する。
なお、インストール済みのドライバ106のバージョンや公開日時の情報は、当該ドライバ106から直接的に取得するようにできる。これに限らず、当該ドライバ106をインストールした際の更新情報を、ファイルやレジストリに格納しておいてもよい。
表示部100は、UI122から通知された情報に基づき、更新対象のドライバを示す表示画面をディスプレイ56に表示させる。図11は、第1の実施形態に係る、表示部100により表示される表示画面の例を示す。図11(a)の例では、表示画面300は、領域301に、更新対象のドライバが対応するプリンタ名が一覧表示される。インストーラ105は、例えば、クライアントPC10に既にインストールされているドライバのうち、UI122から通知された更新情報に含まれるIDと一致するIDを有するドライバからプリンタ名を示す情報を取得し、取得した情報に基づきプリンタ名を表示させる。
表示画面300において、選択入力部302は、領域301に表示されるドライバを更新するか否かを、入力部101に対する操作に応じて選択する。図11(a)の例では、選択入力部302に対して「はい」を選択し、ボタン303を操作することで、領域301に表示されるドライバの更新が開始される。
表示画面300は、図11(a)の例に限定されない。図11(b)は、更新するドライバを選択可能とした表示画面300’の例を示す。表示画面300’において、領域301’に表示される更新対象のドライバ一覧に対し、各プリンタ名にチェックボックス304が付加されている。この場合、入力部101に対する操作によりチェックボックス304がチェックされたドライバに対して選択的に更新処理を実行する。
説明は図7に戻り、表示画面300に対してドライバの更新操作が行われると、その旨が入力部101からUI122に通知される(ステップS120)。UI122は、更新対象となるドライバの更新情報をオブジェクト取得部1202に渡し、オブジェクト取得部1202に対してドライバの更新を指示する(ステップS121)。
オブジェクト取得部1202は、UI122から渡された更新情報に基づき、オブジェクト配置サーバ41に対してオブジェクトの取得要求を送信する(ステップS122)。オブジェクト配置サーバ41は、この要求に応じて、オブジェクトを送信する。オブジェクト配置サーバ41から送信されたオブジェクトは、オブジェクト取得部1202に取得される(ステップS123)。オブジェクト取得部1202は、UI122から複数の更新情報を渡された場合は、これら複数の更新情報それぞれについて取得要求を送信し、更新情報それぞれのオブジェクトを取得する。
より具体的には、オブジェクト取得部1202は、UI122から渡された更新情報に含まれる、インストールされるドライバの本体であるオブジェクトが格納されるURLの記述(図10の第8行目)に従い、オブジェクト配置サーバ41にアクセスして当該URLからオブジェクトを取得する。
オブジェクト取得部1202は、オブジェクト配置サーバ41から取得したオブジェクトを、更新情報に含まれるIDと関連付けて、例えばストレージ54に一時的に格納する。
オブジェクト取得部1202は、ドライバインストール部121に対して、オブジェクト配置サーバ41から取得したオブジェクトのインストールを指示する(ステップS124)。ドライバインストール部121は、この指示に応じて、オブジェクト配置サーバ41から取得したオブジェクトのインストール処理を開始する(ステップS125)。ドライバインストール部121は、オブジェクトが圧縮ファイルとされている場合、圧縮ファイルを解凍してインストール処理を実行する。ドライバインストール部121は、オブジェクト取得部1202が複数の更新情報を取得している場合、オブジェクトに関連付けられたIDに基づき、これら複数の更新情報それぞれに対応するオブジェクトについてインストール処理を実行する。
ドライバインストール部121は、全てのオブジェクトについてインストール処理が完了すると、その旨をUI122に通知する(ステップS126)。UI122は、ドライバのインストールが完了した旨を示すインストール完了画面を表示させるよう、表示部100に指示する(ステップS127)。表示部100は、この指示に従い、インストールが完了した旨をディスプレイ56に表示させる。
図12は、第1の実施形態に係る、表示部100によりディスプレイ56に表示されるインストール完了画面の例を示す。図12において、インストール完了画面310は、領域311に、インストールが実行され更新されたドライバ(この例ではドライバが対応するプリンタ名)の一覧が表示される。
このように、第1の実施形態によれば、インストーラ105は、クライアントPC10にインストールされるドライバ106が含む識別情報(ID)に基づく特定情報(例えばURL)に従い、ドライバ106の更新に用いるオブジェクトのURLを含む更新情報を取得するようにしている。したがって、インストーラ105は、ドライバ106が含む識別情報に基づく特定情報で特定される格納場所に格納される更新情報が、ドライバ106のインストール時には未知であるドライバのものであっても、この未知のドライバをクライアントPC10にインストールすることができる。
ここで、第1の実施形態に適用可能なIDの例について説明する。上述したように、IDは、そのIDにより識別されるドライバ106を更新可能なドライバプログラムを特定するための情報群に対して一意の値を取る。
図13を用いて、各実施形態に係るIDの例について説明する。図13において、ドライバ106を更新可能なドライバプログラムを特定するための情報群に含まれる各情報の例として、「モデル」、「機種」、「PnPID」、「OS(Operating System)」、「プログラム種別」および「言語」の各項目の情報が示されている。また、図13の例では、各情報は、左側の項目を上位、右側の項目を下位として階層的に構成され、各情報をノードとする木構造により、互いに関連付けられる。
図13に示される各項目のうち、項目「モデル」および項目「機種」は、ドライバ106が制御対象とするハードウェアを特定するための情報を示す。図13の例では、項目「モデル」における1つのモデル「Model123」に対して、複数の機種「Type01」、「Type02」、…が関連付けられている。
項目「PnPID」は、ハードウェアに対応付けられるPnPIDを示す。図13の例では、モデル「Model123」および機種「Type01」で特定される情報に対して複数のPnPID「0x1234abcd」、「0x3462b1ef」、…が関連付けられている。
項目「OS」は、ドライバ106が対応するOSを示す。図13の例では、項目「OS」は、さらに、項目「バージョン(ver)」と、項目「バージョン」に対して下位の項目「動作ビット(bit)」とを含み、各バージョンが動作ビット「32bit」および「64bit」をそれぞれ含むことが示されている。図13の例では、モデル「Model123」、機種「Type01」およびPnPID「0x1234abcd」で特定される情報に対して、複数のOS「WXOS」、「W7OS」、…が関連付けられている。
項目「プログラム種別」は、ドライバ106の機能を示す。例えば、項目「プログラム種別」は、ドライバ106の制御対象がプリンタ機能およびスキャナ機能のうち何れであるかを示す。また、項目「プログラム種別」は、ドライバ106がこれらプリンタ機能やスキャナ機能において細分化される何れの機能に対応するかをさらに示すことができる。一例として、項目「プログラム種別」は、プリンタ機能において対応するPDL(Page Description Language)の種類を示すことができる。
図13において最下層の項目「言語」は、上位の項目「プログラム種別」に示される機能に対して適用される言語(JP、EN、…)を示す。
このような構成において、各実施形態では、木構造における葉ノードのそれぞれに一意にIDを関連付ける。これにより、葉ノードから順次親ノードを辿った各ノードによる情報を含む情報群に対して一意にIDが関連付けられる。
図13の例では、モデル「Model123」、機種「Type01」、PnPID「0x1234abcd」、OSバージョン「WXOS」、OS動作ビット「32bit」、プログラム種別「PDL#A」および言語「JP」からなる情報群に対して、ID「ID#1」が一意に関連付けられる。また例えば、モデル「Model123」、機種「Type01」、PnPID「0x1234abcd」、OSバージョン「WXOS」、OS動作ビット「32bit」、プログラム種別「TWAIN#A」および言語「EN」からなる情報群に対して、ID「ID#l+1」が一意に関連付けられる。さらに例えば、モデル「Model123」、機種「Type01」、PnPID「0x1234abcd」、OSバージョン「W7OS」、OS動作ビット「32bit」、プログラム種別「PDL#B」および言語「JP」からなる情報群に対して、ID「ID#n」が一意に関連付けられる。
図14は、各実施形態に適用可能な更新情報の管理方法の例を示す。各実施形態では、特定情報が示す更新情報のファイルは、更新情報サーバ40において、図14(a)に示されるように、全てベースフォルダの直下に格納する。なお、ベースフォルダは、例えばURL「https://1.example.org/」に対応するものとする。
更新情報の管理方法は、図14(a)の例に限定されない。例えば、図14(b)に示されるように、更新情報サーバ40において、特定情報が示す更新情報ファイルを複数のフォルダに分けて格納することで、更新情報の管理を行うことができる。上述したように、特定情報は、IDと対応して設定され、IDは、複数の項目の情報を含む情報群に対して一意に設定される。そのため、特定情報が示す更新情報ファイルの数が膨大となることが予測される。このように、更新情報の各ファイルを、複数のフォルダに分散させて格納することで、更新情報の管理が容易となる。
各フォルダのフォルダ名は、フォルダに格納される各ファイルのファイル名の共通する文字列を用いることが考えられる。例えば、各更新情報ファイルについて、ファイル名を構成するn桁の文字列(ピリオドおよび拡張子を除く)の先頭からm桁(m<n)が共通するファイルを集めて、当該m桁の文字列をフォルダ名とするフォルダに格納する。図14(b)の例では、9桁の数字による文字列からなるファイル名(ピリオドおよび拡張子を除く)の、先頭から4桁が共通するファイルを、当該先頭から4桁の数字による文字列からなるフォルダ名のフォルダに格納している。この図14(b)の管理方法の場合、更新情報を特定するための特定情報は、図14(c)に例示されるように、ファイル名とフォルダ名とを含んだ情報となる。
なお、上述では、更新情報サーバ40は、特定情報が更新情報ファイルのファイル名を直接的に示し、更新情報サーバ40に対する問い合わせのインタフェースを更新情報ファイル数分、持っているように説明したが、これはこの例に限定されない。例えば、更新情報サーバ40は、図13で説明したIDの木構造をテーブルとして持ち、木構造の各ノードに対応する情報に基づきIDを検索する構成とすることも可能である。
この場合、インストーラ105は、例えば、木構造の各ノードに対応する情報を引数として更新情報サーバ40に渡し、更新情報サーバ40は、この引数に基づきテーブルを参照してIDを検索する。図15は、この場合の特定情報の例を示す。図15において、「https://1.example.org/hoge/」の部分がインタフェース(I/F)部分であり、「/hoge/」の後ろが引数部分となる。すなわち、インストーラ105は、「https://1.example.org/hoge/」の部分を共通のインタフェースとして更新情報サーバ40にアクセスし、引数部分を更新情報サーバ40に渡して問い合わせを行う。なお、「/hoge/」の部分は、問い合わせの目的に応じた値が用いられる。
この図15に示す構成の場合、更新情報サーバ40は、特定情報に含まれる各引数に基づき検索を行うことになる。一方、上述した図14(a)および図14(b)に示す、ID毎の特定情報を持つ例では、特定情報により直接的にIDを取得することができる。したがって、図15に示す構成は、図14(a)および図14(b)に示す構成と比較してデータベースの負荷が高くなると考えられる。
より具体的には、第1の実施形態では、図13を用いて説明したように、木構造の葉ノード毎に一意にIDが対応付けられるため、ノードの階層が多くなると、IDすなわちドライバ種類の数が膨大となることが予測される。このような膨大なIDを更新情報サーバ40から検索する場合、更新情報サーバ40は、図15で説明した各IDでインタフェースを共通とする構成よりも、上述した図14(a)および図14(b)に示すID毎にインタフェースを持つ構成とした方が、負荷がより小さくなり好ましい。
例えば、ドライバ106をクライアントPC10にインストールする際には、インストーラ105は、ドライバ106の制御対象や、ドライバ106の動作環境(OSバージョンなど)に応じて適切なドライバプログラムを決定する必要がある。この場合には、この引数に基づきテーブルを参照してIDを検索する方法が適している。
(第1の実施形態の変形例)
次に、第1の実施形態の変形例について説明する。上述した第1の実施形態では、インストーラ105(ドライバ情報取得部123)は、ドライバ106の更新チェックに用いるドライバ106の情報を、ドライバ106(ID格納部131)から取得していた。これに対して、第1の実施形態の変形例では、インストーラ105は、ドライバ106の更新チェックに用いるドライバ情報を、クライアントPC10内の所定の記憶領域から取得する。
第1の実施形態の変形例では、インストーラ105は、インストールを行うドライバ106のドライバ情報を、当該ドライバ106のクライアントPC10へのインストール時に、当該クライアントPC10が有するストレージ54内の所定の記憶領域に格納する。インストーラ105がドライバ情報を格納する所定の記憶領域としては、例えばクライアントPC10のOSが管理する管理領域を用いることができる。OSがWindows(登録商標)であれば、このOS管理領域は、レジストリを適用可能である。OS管理領域へのアクセスは、OSを介して行われる。これに限らず、ドライバ情報を、クライアントPC10のストレージ54内に所定のフォルダを作成し、このフォルダに格納してもよい。
図16は、第1の実施形態の変形例に係るドライバ106のインストール手順の例を示すシーケンス図である。なお、図16において、上述した図1〜図4と共通する部分には同一の符号を付して、詳細な説明を省略する。
図16において、ドライバパッケージ1060は、ドライバ106をインストールするためのデータが格納されるファイルである。ドライバパッケージ1060は、例えば、ドライバ106のプログラムファイル(オブジェクト)と、ドライバ106のインストールに用いるドライバ情報が記述されたファイルとが格納される。ドライバ情報は、例えば、このドライバパッケージ1060によりインストールされるドライバ106のIDと、当該ドライバ106に付された名称とを含む。
インストーラ105は、ドライバパッケージ1060から各ファイルを取り出して、ドライバ106のインストールを行う。クライアントPC10は、ドライバパッケージ1060を、ネットワーク30を介してサーバなどから取得してもよいし、ドライバパッケージ1060が記録されたCD(Compact Disk)やDVD(Digital Versatile Disk)といった記録媒体から取得してもよい。
図16の処理に先立って、クライアントPC10は、ドライバパッケージ1060を取得してストレージ54に格納しているものとする。例えば、クライアントPC10の入力部101に対するユーザ操作に応じて、インストーラ105のUI122に対してドライバ106のインストールが指示される(ステップS200)。UI122は、この指示をドライバ情報取得部123に伝えると共に、ドライバ情報取得部123に対してドライバ情報の取得を要求する(ステップS201)。
ドライバ情報取得部123は、UI122からのドライバ情報取得要求に応じて、ドライバパッケージ1060からドライバ情報を取得する(ステップS202、ステップS203)。ドライバ情報取得部123は、取得したドライバ情報を記憶部104に渡し、記憶部104に対して、渡したドライバ情報の書き込みを要求する(ステップS204)。記憶部104は、この要求に応じて、ドライバ情報取得部123から渡されたドライバ情報を、OSの管理領域(例えばレジストリ)に書き込む(ステップS205)。例えば、記憶部104は、クライアントPC10のOSに対して、ドライバ情報のOS管理領域への書き込みを依頼する。
図17は、第1の実施形態の変形例に係る、OS管理領域200に書き込まれたドライバ情報の例を示す。この例では、ドライバ情報に含まれる、ドライバ106のIDが、例えばドライバ106の種別を示す情報(この例では「プリンタA」、「プリンタB」)と関連付けられて、OS管理領域200に書き込まれている。OS管理領域200に対して、ドライバ情報に含まれる他の情報を、さらにIDに関連付けて書き込むようにしてもよい。なお、OS管理領域200は、インストーラ105が対応可能なドライバ以外のドライバのドライバ情報を書き込むことができる。
ドライバ情報取得部123は、ステップS204のドライバ情報書き込み要求の後、ドライバインストール部121に対してドライバのインストールを指示する(ステップS206)。ドライバインストール部121は、ドライバパッケージ1060から各ファイルを取り出して、ドライバ106のインストール処理を行う(ステップS207)。ドライバインストール部121は、ドライバ106のインストール処理が完了すると、その旨をUI122に通知する(ステップS208)。UI122は、インストール完了通知を表示させるよう、表示部100に指示する(ステップS209)。表示部100は、この指示に従い、インストールが完了した旨をディスプレイ56に表示させる。
図18は、第1の実施形態の変形例に係る、ドライバ106の更新手順の例を示すシーケンス図である。なお、図18において、上述した図1〜図4と共通する部分には同一の符号を付して、詳細な説明を省略する。
例えば、クライアントPC10の入力部101に対するユーザ操作に応じて、インストーラ105のUI122に対してドライバ106の更新チェックが指示される(ステップS220)。この指示は、UI122からドライバ情報取得部123に伝えられる(ステップS221)。
ドライバ情報取得部123は、この更新チェックの指示を受けて、記憶部104に対してドライバ情報の取得を要求する(ステップS222)。記憶部104は、この要求に応じて、OS管理領域200から、IDとドライバの種別を示す情報とが関連付けられて書き込まれた全てのドライバ情報を取得する。記憶部104は、取得したドライバ情報をドライバ情報取得部123に渡す(ステップS223)。
ドライバ情報取得部123は、記憶部104から渡されたドライバ情報から、インストーラ105が対応可能なドライバ106のドライバ情報を選択する。例えば、ドライバ情報取得部123は、ドライバ情報に含まれるIDに基づき、当該ドライバ情報が、インストーラ105が対応可能なドライバ106であるか否かを判別する。判別は、例えば、ドライバ情報から、上述した所定のフォーマットに従ったIDが取得できたか否かで行う。
以降の処理は、上述した、図7のステップS110以降の処理と略同様である。例えばドライバ情報取得部123は、ステップS222およびステップS223の処理で取得した各IDを更新情報取得部1201に渡し、各IDに対応する更新情報の取得を更新情報取得部1201に要求する(ステップS224)。更新情報取得部1201は、ドライバ情報取得部123から渡されたIDに基づき、上述した特定情報を生成する。更新情報取得部1201は、生成した特定情報に従い、更新情報サーバ40に対して更新情報を要求し(ステップS225)、要求に応じて更新情報サーバ40から送信された更新情報を取得する(ステップS226)。
各IDについて取得された各更新情報は、更新情報取得部1201からドライバ情報取得部123を介してUI122に渡される(ステップS227、ステップS228)。なお、この場合においても、更新情報取得部1201は、各更新情報に基づき、クライアントPC10にインストールされている各ドライバのうち、更新対象となるドライバを選択することができる。UI122は、渡された各更新情報に基づき、更新対象となるドライバを示す情報を表示部100に通知する(ステップS229)。
表示部100は、UI122から通知された情報に基づき、更新対象のドライバを示す表示画面300(図11(a)参照)をディスプレイ56に表示させる。このとき、表示部100は、図11(b)に示したような、更新するドライバを選択可能な表示画面300’を表示させてもよい。
表示画面300に対するドライバの更新操作が入力部101からUI122に通知される(ステップS230)。UI122は、更新対象となるドライバの更新情報をオブジェクト取得部1202に渡し、オブジェクト取得部1202に対してドライバの更新を指示する(ステップS231)。
オブジェクト取得部1202は、UI122から渡された更新情報に基づき、オブジェクト配置サーバ41に対してオブジェクトの取得要求を送信し(ステップS232)、この要求に応じてオブジェクト配置サーバ41から送信されたオブジェクトを取得する(ステップS233)。
オブジェクト取得部1202は、取得したオブジェクトのインストールを、ドライバインストール部121に指示する(ステップS234)。ドライバインストール部121は、この指示に応じて、オブジェクト配置サーバ41から取得したオブジェクトのインストール処理を実行し(ステップS235)、インストール処理が完了すると、その旨をUI122に通知する(ステップS236)。UI122は、この通知に応じて、ドライバのインストールが完了した旨を示すインストール完了画面を表示させるよう、表示部100に指示する(ステップS237)。表示部100は、この指示に従い、インストールが完了した旨を示すインストール完了画面310(図12参照)をディスプレイ56に表示させる。
(第2の実施形態)
次に、第2の実施形態について説明する。上述した第1の実施形態では、クライアントPC10に1種類のドライバ106がインストールされているものとして説明したが、実際には、クライアントPC10には、複数種類のドライバがインストールされている場合が多い。ここで、ドライバの種類は、クライアントPC10に対するドライバのインストール方法に応じたものであるとする。例えば、プリンタ装置とスキャナ装置とでは、ドライバの構造が異なり、インストール方法も異なる。
さらに、クライアントPC10には、アプリケーションプログラムもインストールされる。アプリケーションプログラムは、ドライバに付随してインストールされる場合もあるし、単独でインストールされる場合もある。なお、アプリケーションプログラムは、比較的狭い範囲の仕事を想定して、ユーザの特定の要求に近接して作成されたプログラムであって、一般的には、プリンタやスキャナといった、クライアントPC10に対する外部装置の直接的な制御は、行わない。アプリケーションプログラムは、インストール方法が各ドライバとは異なる。
この第2の実施形態では、このインストール方法が異なる複数種類のドライバおよびアプリケーションプログラムがクライアントPC10にインストールされている場合の、プログラム(ドライバプログラムおよびアプリケーションプログラム)の更新方法について説明する。
図19は、第2の実施形態に適用可能な情報処理システムの一例の構成を示す。なお、図19において、上述した図1と共通する部分には同一の符号を付して、詳細な説明を省略する。
図19において、ネットワーク22に対して、画像形成装置20cとして、プリンタ機能200およびスキャナ機能201を含む複数の機能を有するMFP(Multi Function Printer)が接続されている。クライアントPC10は、画像形成装置20cとネットワーク22を介して通信を行い、画像形成装置20cに対してプリンタ機能200により印刷を実行させることもできるし、スキャナ機能201により原稿を読み取った画像データを取得することもできる。また、クライアントPC10は、プリンタ機能200により印刷を行うための印刷データの生成、編集や、スキャナ機能201により取得した画像データの加工などの各種のデータ処理を実行することもできる。
図20は、第2の実施形態に係るクライアントPC10の機能を説明するための一例の機能ブロック図である。なお、図20において、上述した図3と共通する部分には同一の符号を付して、詳細な説明を省略する。また、第2の実施形態に係るクライアントPC10は、ハードウェア構成としては、第1の実施形態において図2を用いて説明した構成をそのまま適用できるので、ここでの説明を省略する。
図20において、クライアントPC10は、ドライバとして、プリンタ機能200を制御するためのプリンタドライバ106aと、スキャナ機能201を制御するためのスキャナドライバ106bとを有する。
また、クライアントPC10は、アプリケーションプログラム106cを含むことができる。アプリケーションプログラム106cは、データに所定のデータ処理を施す。例えば、アプリケーションプログラム106cは、データに処理を施して印刷データを生成し、生成した印刷データをプリンタドライバ106aに渡す。プリンタドライバ106aは、アプリケーションプログラム106cから渡された印刷データに従いプリンタ機能200を制御する。また例えば、アプリケーションプログラム106cは、スキャナドライバ106bに対して指示を出してスキャナ機能201を制御させて画像データを取得し、取得した画像データに画像処理を施すことができる。アプリケーションプログラム106cの機能は、これらに限られない。
インストーラ105’は、これらの、インストール方法が異なるプリンタドライバ106a、スキャナドライバ106bおよびアプリケーションプログラム106cをインストール可能とされている。
ここで、インストーラ105’が実行するインストール処理および更新処理について、概略的に説明する。なお、以下では、特に説明のない限り、インストール処理および更新処理を、インストール処理で代表させて説明する。
インストール処理は、インストール対象のプログラムの種別に応じて、OSにより予め定められた手順に従い実行される。そのため、プログラムの種別毎に専用のインストーラを用意する必要がある。例えば、ドライバプログラムとアプリケーションプログラムとでは、インストール方法が異なる。また、制御対象の機種の種別が互いに異なるドライバプログラムであるプリンタドライバとスキャナドライバとでは、OSに定められるインストール方法が異なる。したがって、アプリケーションプログラム、プリンタドライバおよびスキャナドライバは、それぞれ専用のインストーラが用意される。
図21は、第2の実施形態に係るインストーラ105’の一例の構成を示す。なお、図21において、上述した図4と共通する部分には同一の符号を付して、詳細な説明を省略する。図21において、インストーラ105’は、通信部120と、プログラムインストール部1215と、UI122と、プログラム情報取得部1230と、インストーラ判別部124とを含む。また、プログラムインストール部1215は、プログラム種別毎のインストールを実行するためのプリンタ部1210と、スキャナ部1211と、アプリケーションプログラム部1212とを含む。プリンタ部1210は、プリンタドライバ106aのインストールを実行する。スキャナ部1211は、スキャナドライバ106bのインストールを実行する。また、アプリケーションプログラム部1212は、アプリケーションプログラム106cのインストールを実行する。
プログラム情報取得部1230は、クライアントPC10にインストールされているインストールパッケージから、プログラム情報を取得する。プログラム情報は、上述したドライバ情報に対応するもので、少なくともプログラムの識別情報(ID)を含む。プログラム情報は、プログラムの種別を示す情報をさらに含んでもよい。インストーラ判別部124は、プログラムのインストール時に、プログラムインストール部1215に含まれるプリンタ部1210、スキャナ部1211およびアプリケーションプログラム部1212のうち何れを用いるかを判別する。
インストーラ105’は、プログラムインストールの指示に応じて、インストール対象のプログラムが格納されるインストールパッケージからプログラム情報およびメタデータを取得して、インストール可能なプログラムの一覧を作成する。インストーラ105’は、インストール対象のプログラム種別に応じたインストール処理を実行する。
より詳細には、インストーラ105’は、インストーラ判別部124により、取得したプログラム情報に基づきインストール対象のプログラム種別を判別する。そして、インストーラ105’は、インストーラ判別部124の判別結果に応じて、プログラムインストール部1215に含まれるプリンタ部1210、スキャナ部1211およびアプリケーションプログラム部1212から、インストール対象のプログラム種別に応じたものを選択して、インストール処理を実行する。
プリンタ部1210、スキャナ部1211およびアプリケーションプログラム部1212それぞれによるインストール処理について、概略的に説明する。
プリンタ部1210は、クライアントPC10に対するプリンタドライバのインストールを実行する。プリンタ部1210が実行するプリンタドライバのインストール処理は、プリンタドライバを構成する各ファイルを、クライアントPC10上にOSが定めたフォルダに格納する処理と、印刷ポートの設定と、論理プリンタキューの作成と、OSがWindows(登録商標)の場合にはレジストリの初期設定とを含む。なお、論理プリンタキューの作成処理は、例えばインストールされるプリンタドライバに対応するプリンタを示すアイコンの作成処理を含む。
スキャナ部1211は、クライアントPC10に対するスキャナドライバのインストールを実行する。スキャナ部1211が実行するスキャナドライバのインストール処理は、スキャナドライバを構成する各ファイルを、クライアントPC10上にOSが定めたフォルダに格納する処理と、スキャンポートの設定処理とを含む。
アプリケーションプログラム部1212は、アプリケーションプログラムのインストールを実行する。アプリケーションプログラム部1212が実行するアプリケーションプログラムのインストール処理は、アプリケーションプログラムを構成する各ファイルを、クライアントPC10上に作成した所定のフォルダに格納する処理と、OSがWindows(登録商標)の場合にはレジストリの初期設定およびスタートメニューへの登録とを含む。
なお、アプリケーションプログラムの構成ファイルの格納フォルダは、OSにより用意されたフォルダ(OSがWindows(登録商標)の場合フォルダ「Program Files」)を用いることができる。これに限らず、クライアントPC10に作成した任意のフォルダに構成ファイルを格納してもよい。
インストーラ105’が対応可能なアプリケーションプログラムとしては、プロジェクションアプリケーション、電子黒板ビューア、MFP制御アプリケーションなどが考えられる。これらのうち、プロジェクションアプリケーションは、プロジェクタ装置へのクライアントPC10の表示画面の投射や、クライアントPC10からプロジェクタ装置の設定を行うアプリケーションプログラムである。また、電子黒板ビューアは、タッチパネルを用いた描画を可能とした電子黒板にユーザが操作を行うことで生成した画像などのクライアントPC10での閲覧や、クライアントPC10から電子黒板に対する設定を行うためのアプリケーションプログラムである。また、MFP制御アプリケーションは、MFPなどの画像形成装置の操作をクライアントPC10上で行うためのアプリケーションプログラムである。
さらに、インストーラ105’が対応可能なアプリケーションプログラムとして、クラウドストレージを利用するためのアプリケーションプログラムや、MFPといった画像形成装置や、プロジェクタ装置といった機器の、WiFi(登録商標)などの無線通信の設定を行う設定ツールが考えられる。
図22は、第2の実施形態に係るプリンタドライバ106a、スキャナドライバ106bおよびアプリケーションプログラム106cのインストール手順の例を示すシーケンス図である。なお、図22において、上述した図1、図2、図20および図21と共通する部分には同一の符号を付して、詳細な説明を省略する。以下では、適宜、プリンタドライバ106a、スキャナドライバ106bおよびアプリケーションプログラム106cを、「プログラム」として代表させて記述する。
図22において、インストールパッケージ1061は、プログラムをインストールするためのデータが格納されるファイルであって、プログラムを構成する各ファイル(オブジェクト)と、プログラムのインストールに用いるプログラム情報が記述されたファイルとが格納される。インストールパッケージ1061の例として、プリンタドライバ106aまたはスキャナドライバ106bが格納されるドライバパッケージや、アプリケーションプログラム106cが格納されるアプリケーションパッケージがある。
プログラム情報は、例えば、このインストールパッケージ1061によりインストールされるプログラムのIDと、当該プログラムに付された名称と、当該プログラムのクラス(class)情報とを含む。クラス情報は、例えば、当該プログラムの種別を示す種別情報である。当該プログラムがプリンタドライバ106aやスキャナドライバ106bといったドライバプログラムの場合、クラス情報は、当該プログラムの制御対象を識別するために用いることができる。この場合のより具体的な例として、クラス情報は、そのドライバの制御対象がプリンタおよびスキャナの何れであるかを示す。
図22の処理に先立って、クライアントPC10は、インストールパッケージ1061を、ネットワーク30や、CD、DVDなどの記録媒体を介して取得し、ストレージ54に格納しているものとする。例えば、クライアントPC10の入力部101に対するユーザ操作に応じて、インストーラ105’のUI122に対してプログラムのインストールが指示される(ステップS300)。UI122は、この指示をインストーラ判別部124に伝える(ステップS301)。インストーラ判別部124は、この指示に応じて、プログラム情報取得部1230に対してプログラム情報の取得を要求する(ステップS302)。
プログラム情報取得部1230は、UI122からのプログラム情報取得要求に応じて、インストールパッケージ1061からプログラム情報を取得する(ステップS303、ステップS304)。プログラム情報取得部1230は、取得したプログラム情報を記憶部104に渡し、記憶部104に対して、渡したプログラム情報の書き込みを要求する(ステップS305)。記憶部104は、この要求に応じて、プログラム情報取得部1230から渡されたプログラム情報を、OS管理領域200に書き込む(ステップS306)。
図23は、第2の実施形態に係る、OS管理領域200に書き込まれたプログラム情報の例を示す。この例では、プログラム情報に含まれる、プログラムのIDと、プログラムのクラス情報(プリンタ、スキャナまたはアプリケーションプログラム)と、プログラムの名称とが関連付けられて、OS管理領域200に書き込まれている。図23の例では、クラス情報は、プログラム種別として記載されている。
また、プログラム情報取得部1230は、ステップS303およびステップS304で取得したプログラム情報をインストーラ判別部124に渡す(ステップS307)。インストーラ判別部124は、プログラム情報取得部1230から渡されたプログラム情報に含まれるクラス情報に基づき、インストールパッケージ1061によりインストールされるプログラムの種別を判別する(ステップS308)。
ステップS308で、インストーラ判別部124により、インストールパッケージ1061によりインストールされるプログラムがプリンタドライバ106aであると判別された場合、ステップS3000の処理が行われ、プリンタドライバ106aのインストールが実行される。ステップS308で、インストールされるプログラムがスキャナドライバ106bであると判別された場合、ステップS3001の処理が行われ、スキャナドライバ106bのインストールが実行される。また、ステップS308で、インストールされるプログラムがアプリケーションプログラム106cであると判別された場合、ステップS3002の処理が行われ、アプリケーションプログラム106cのインストールが実行される。
ステップS3000において、インストーラ判別部124は、プログラムインストール部1210におけるプリンタ部1210に対してインストールパッケージ1061によるプログラムのインストールを指示する(ステップS310)。プリンタ部1210は、インストールパッケージ1061から各ファイルを取り出して、プリンタドライバ106aのインストール処理を行う(ステップS311)。プリンタ部1210は、プリンタドライバ106aのインストール処理が完了すると、その旨をUI122に通知する(ステップS312)。
ステップS3001において、インストーラ判別部124は、スキャナ部1211に対してインストールパッケージ1061によるプログラムのインストールを指示する(ステップS310’)。スキャナ部1211は、インストールパッケージ1061から各ファイルを取り出して、スキャナドライバ106bのインストール処理を行う(ステップS311’)。スキャナ部1211は、スキャナドライバ106bのインストール処理が完了すると、その旨をUI122に通知する(ステップS312’)。
また、ステップS3002において、インストーラ判別部124は、アプリケーションプログラム部1212に対してインストールパッケージ1061によるプログラムのインストールを指示する(ステップS310”)。アプリケーションプログラム部1212は、インストールパッケージ1061から各ファイルを取り出して、アプリケーションプログラム106cのインストール処理を行う(ステップS311”)。アプリケーションプログラム部1212は、アプリケーションプログラム106cのインストール処理が完了すると、その旨をUI122に通知する(ステップS312”)。
UI122は、プログラムインストール部1215のプリンタ部1210、スキャナ部1211またはアプリケーションプログラム部1212からインストール処理の完了が通知されると、その旨を表示させるよう、表示部100に指示する(ステップS313)。表示部100は、この指示に従い、インストールが完了した旨をディスプレイ56に表示させる。
図24は、第2の実施形態に係る、プログラムの更新手順の例を示すシーケンス図である。なお、図24において、上述した図1、図2、図20および図21と共通する部分には同一の符号を付して、詳細な説明を省略する。また、以下では、適宜、プリンタドライバ106a、スキャナドライバ106bおよびアプリケーションプログラム106cを、「プログラム」として代表させて記述する。
図24に示す処理において、ステップS320でユーザ操作に応じて更新チェックが指示されてから、ステップS333でオブジェクト配置サーバ41からオブジェクトが送信されるまでの処理は、第1の実施形態の変形例で説明した図18のステップS220〜ステップS233の処理と略同様である。
すなわち、例えばクライアントPC10の入力部101に対するユーザ操作に応じて、インストーラ105’のUI122に対してプログラムの更新チェックが指示される(ステップS320)。この指示は、UI122からプログラム情報取得部1230に伝えられる(ステップS321)。
プログラム情報取得部1230は、この更新チェックの指示を受けて、記憶部104に対してプログラム情報の取得を要求する(ステップS322)。記憶部104は、この要求に応じて、OS管理領域200から、IDと、クラス情報と、プログラムの名称とが関連付けられて書き込まれた全てのプログラム情報を取得する。記憶部104は、取得したプログラム情報をプログラム情報取得部1230に渡す(ステップS323)。
プログラム情報取得部1230は、記憶部104から渡されたプログラム情報から、インストーラ105’が対応可能なプログラムのプログラム情報を選択する。例えば、プログラム情報取得部1230は、プログラム情報に含まれるIDに基づき、当該プログラム情報が、インストーラ105’が対応可能なプログラムであるか否かを判別する。判別は、例えば、プログラム情報から、上述した所定のフォーマットに従ったIDが取得できたか否かで行う。
プログラム情報取得部1230は、ステップS322およびステップS323の処理で取得した各IDを更新情報取得部1201に渡し、各IDに対応する更新情報の取得を更新情報取得部1201に要求する(ステップS324)。更新情報取得部1201は、プログラム情報取得部1230から渡されたIDに基づき特定情報を生成し、生成した特定情報に従い、更新情報サーバ40に対して更新情報を要求する(ステップS325)。更新情報取得部1201は、この要求に応じて更新情報サーバ40から送信された更新情報を取得する(ステップS326)。
この例では、プリンタドライバ106aを更新するための更新情報と、スキャナドライバ106bを更新するための更新情報と、アプリケーションプログラム106cを更新するための更新情報とが更新情報サーバ40から送信され、更新情報取得部1201に取得されたものとする。
各IDについて取得された各更新情報は、更新情報取得部1201からプログラム情報取得部1230を介してUI122に渡される(ステップS327、ステップS328)。UI122は、渡された各更新情報を表示部100に渡す(ステップS329)。
表示部100は、UI122から渡された更新情報に基づき、更新対象のプログラムを示す表示画面をディスプレイ56に表示させる。図25(a)は、第2の実施形態に係る、表示部100に表示される表示画面の例を示す。図25(a)の例では、表示画面400は、領域401に、更新対象のプログラムが対応する機種名、クラス情報およびプログラム種別が一覧表示される。
インストーラ105’は、例えば、クライアントPC10に既にインストールされているプログラムのうち、UI122から通知された更新情報に含まれるIDと一致するIDを有するプログラムからプログラム情報を取得し、取得したプログラム情報に基づき、機種名と、クラス情報を示す情報と、プログラム種別とを表示画面400に表示させる。この例では、表示画面400に、機種名「MFP01」と、プリンタのクラス情報を示す情報「Printer A」と、プログラム種別を示す「Driver」とが関連付けられて、また、機種名「MFP01」と、スキャナのクラス情報を示す情報「Scanner B」と、プログラム種別を示す「Driver」とが関連付けられて、それぞれ表示されている。また、表示画面400において、アプリケーションプログラム106cについては、アプリケーションプログラムのクラス情報を示す情報「Application D」のみが表示され、他が省略されている。この例の場合、機種名「MFP01」であるMFPにおいて、プリンタドライバ106aおよびスキャナドライバ106bがそれぞれ更新されると共に、アプリケーションプログラム106cが更新されることが示されている。
表示画面400において、選択入力部402は、領域401に表示される各プログラムを更新するか否かを、入力部101に対する操作に応じて選択する。図25(a)の例では、選択入力部402に対して「はい」を選択し、ボタン403を操作することで、領域401に表示される各プログラムの更新が開始される。
また、表示部100は、図25(b)に示したような、更新するプログラムを選択可能な表示画面400’を表示させてもよい。表示画面400’において、領域401’に表示される更新対象のプログラム一覧に対し、各行にチェックボックス404が付加されている。この場合、入力部101に対する操作によりチェックボックス404がチェックされた行に示されるプログラムに対して選択的に更新処理が実行される。
表示画面400に対するプログラムの更新操作が入力部101からUI122に通知される(ステップS330)。UI122は、更新対象となるプログラムの更新情報をオブジェクト取得部1202に渡し、オブジェクト取得部1202に対してプログラムの更新を指示する(ステップS331)。
オブジェクト取得部1202は、UI122から渡された更新情報に基づき、オブジェクト配置サーバ41に対してオブジェクトの取得要求を送信し(ステップS332)、この要求に応じてオブジェクト配置サーバ41から送信されたオブジェクトを取得する(ステップS333)。オブジェクト取得部1202は、オブジェクトを取得すると、オブジェクト取得通知を、取得したオブジェクトに対応するIDと共にインストーラ判別部124に渡す(ステップS334)。
インストーラ判別部124は、オブジェクト取得部1202から渡されたIDをプログラム情報取得部1230に渡し、当該IDに対応するプログラム情報をプログラム情報取得部1230に要求する(ステップS335)。プログラム情報取得部1230は、この要求に応じて、渡されたIDに対応するプログラム情報をインストーラ判別部124に渡す(ステップS336)。
インストーラ判別部124は、プログラム情報取得部1230から渡されたプログラム情報に含まれるクラス情報に基づき、更新によりインストールされるプログラムの種別を判別する(ステップS337)。
ステップS337で、インストーラ判別部124により、更新によりインストールされるプログラムがプリンタドライバ106aであると判定された場合、ステップS3003の処理が行われ、プリンタドライバ106aのインストールが実行されプリンタドライバ106aが更新される。ステップS337で、インストールされるプログラムがスキャナドライバ106bであると判別された場合、ステップS3004の処理が行われ、スキャナドライバ106bのインストールが実行されスキャナドライバ106bが更新される。また、ステップS337で、インストールされるプログラムがアプリケーションプログラム106cであると判別された場合、ステップS3005の処理が行われ、アプリケーションプログラム106cのインストールが実行されアプリケーションプログラム106cが更新される。
ステップS3003において、インストーラ判別部124は、プログラムインストール部1215におけるプリンタ部1210に対して、ステップS333でオブジェクト取得部1202に取得されたオブジェクトによるプログラムのインストールを指示する(ステップS340)。プリンタ部1210は、この指示に従い、オブジェクト取得部1202に取得されたオブジェクトのインストール処理を実行し(ステップS341)、インストール処理が完了すると、その旨をUI122に通知する(ステップS342)。
ステップS3004において、インストーラ判別部124は、プログラムインストール部1215におけるスキャナ部1211に対して、ステップS333でオブジェクト取得部1202に取得されたオブジェクトによるプログラムのインストールを指示する(ステップS340’)。スキャナ部1211は、この指示に従い、オブジェクト取得部1202に取得されたオブジェクトのインストール処理を実行し(ステップS341’)、インストール処理が完了すると、その旨をUI122に通知する(ステップS342’)。
また、ステップS3005において、インストーラ判別部124は、プログラムインストール部1215におけるアプリケーションプログラム部1212に対して、ステップS333でオブジェクト取得部1202に取得されたオブジェクトによるプログラムのインストールを指示する(ステップS340”)。アプリケーションプログラム部1212は、この指示に従い、オブジェクト取得部1202に取得されたオブジェクトのインストール処理を実行し(ステップS341”)、インストール処理が完了すると、その旨をUI122に通知する(ステップS342”)。
UI122は、プログラムインストール部1215のプリンタ部1210、スキャナ部1211またはアプリケーションプログラム部1212からインストール処理の完了が通知されると、その旨を表示させるよう、表示部100に指示する(ステップS343)。表示部100は、この指示に従い、インストールが完了した旨をディスプレイ56に表示させる。
図26は、第2の実施形態に係る、表示部100によりディスプレイ56に表示されるインストール完了画面の例を示す。図26において、インストール完了画面410は、領域411に、インストールが実行され更新されたプログラムの一覧が表示される。
第2の実施形態によれば、インストーラ105’は、プログラム種別が異なるプリンタドライバ106a、スキャナドライバ106bおよびアプリケーションプログラム106cについても、OS管理領域200に書き込まれた各プリンタドライバ106a、スキャナドライバ106bおよびアプリケーションプログラム106cの各プログラム情報がそれぞれ含む識別情報(ID)に基づく特定情報(例えばURL)に従い、プリンタドライバ106a、スキャナドライバ106bおよびアプリケーションプログラム106cの更新に用いる各オブジェクトのURLを含む各更新情報を取得する。インストーラ105’は、プログラム情報に含まれるクラス情報に基づき、プログラム種別に応じたインストール処理を行うことができる。
また、インストーラ105’は、プリンタドライバ106a、スキャナドライバ106bおよびアプリケーションプログラム106cが含む各識別情報に基づく各特定情報で特定される格納場所に格納される各更新情報が、プリンタドライバ106aやスキャナドライバ106b、アプリケーションプログラム106cのインストール時には未知であるプログラムのものであっても、各更新情報に基づき、この未知のプログラムをクライアントPC10にインストールすることができる。
なお、上述の実施形態および各変形例は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。