(57)【特許請求の範囲】
【請求項１】
ドライバをインストールする対象であるクライアントと、当該ドライバを管理するサーバと、で構成されるドライバ制御システムであって、
前記サーバは、
前記ドライバのプラグインがまとめてアーカイブされた所定のファイルと、前記ファイルに格納されたプラグインが示された一覧情報と、を送信対象として特定する特定手段と、
前記ドライバと、前記特定手段により特定された前記ファイル及び前記一覧情報と、を前記クライアントに送信する送信手段と、
プラグインのインストーラからの呼び出しに応じて、前記ファイルに対して前記プラグインを追加する書き込みを行うとともに、前記ファイルに追加するプラグインを認識する情報を、前記一覧情報に書き込む書込手段と、を備え、
前記クライアントは、
前記サーバから、前記ドライバと、前記ファイルと、前記一覧情報と、を受信する受信手段と、
前記受信手段により受信した前記ドライバをインストールするインストール手段と、
前記受信手段により受信した前記ファイルと前記一覧情報とを記憶手段に格納する格納手段と、
前記ファイルにアーカイブされている前記プラグインを前記一覧情報に従って呼び出す前記ドライバを、制御する制御手段と、を備えたこと、
を特徴とするドライバ制御システム。
【請求項２】
前記書込手段は、前記一覧情報に対して、プラグインを追加するか否かの基準となる、前記プラグインのバージョン情報を書き込むこと、
を特徴とした請求項１に記載のドライバ制御システム。
【請求項３】
前記クライアントは、
前記インストール手段による前記ドライバのインストールでなされた設定に従って、前記ファイルと前記一覧情報とを格納する格納先のパスを特定するクライアント側特定手段を、さらに備え、
前記格納手段は、前記クライアント側特定手段により特定された前記パスに対して、前記ファイルを格納すること、
を特徴とする請求項１に記載のドライバ制御システム。
【請求項４】
前記サーバでは、
前記特定手段が、記憶手段に記憶されたファイル名に従って、前記所定のファイルを特定すること、
を特徴とする請求項１に記載のドライバ制御システム。
【請求項５】
前記クライアントは、
前記アーカイブから、前記ドライバで利用されるプラグインを展開する展開手段をさらに備え、
前記制御手段で制御されるドライバは、前記展開手段により展開された前記プラグインを用いて制御を行うこと、
を特徴とする請求項１乃至４のいずれか一つに記載のドライバ制御システム。
【請求項６】
前記展開手段により展開された前記プラグインの構成ファイルは、各プラグインの処理に対応するＡＰＩを有する実行可能ファイルであり、
前記制御手段で制御されるドライバは、前記ＡＰＩを呼び出すことで、プラグインを用いた制御を行うこと、
を特徴とした請求項５に記載のドライバ制御システム。
【請求項７】
前記クライアントでは、
前記展開手段により展開された前記プラグインの構成ファイルには、前記プラグイン毎のレイアウト情報が含まれており、
前記レイアウト情報に従って、前記プラグイン毎の設定を行うための項目を、設定画面上に表示する表示手段を、
を特徴とした請求項５又は６に記載のドライバ制御システム。
【請求項８】
前記プラグイン毎のレイアウト情報は、表示するユーザ・インターフェイスの種類、機能名、及び座標情報を含んでいることを特徴とした、
請求項７に記載のドライバ制御システム。
【請求項９】
ドライバをインストールする対象であるクライアントと、当該ドライバを管理するサーバと、で実行されるドライバ制御方法であって、
前記サーバでは、
特定手段が、前記ドライバのプラグインがまとめてアーカイブされた所定のファイルと、前記ファイルに格納されたプラグインが示された一覧情報と、を送信対象として特定する特定ステップと、
送信手段が、前記ドライバと、前記特定ステップにより特定された前記ファイル及び前記一覧情報と、を前記クライアントに送信する送信ステップと、
書込手段が、プラグインのインストーラからの呼び出しに応じて、前記ファイルに対して前記プラグインを追加する書き込みを行うとともに、前記ファイルに追加するプラグインを認識する情報を、前記一覧情報に書き込む書込ステップと、を含み、
前記クライアントでは、
受信手段が、前記サーバから、前記ドライバと、前記ファイルと、前記一覧情報と、を受信する受信ステップと、
前記受信ステップにより受信した前記ドライバをインストールするインストールステップと、
格納手段が、前記受信ステップにより受信した前記ファイルと前記一覧情報とを記憶手段に格納する格納ステップと、
制御手段が、前記ファイルにアーカイブされている前記プラグインを前記一覧情報に従って呼び出す前記ドライバを、制御する制御ステップと、を含むこと、
を特徴とするドライバ制御方法。
【請求項１０】
前記書込ステップは、前記一覧情報に対して、プラグインを追加するか否かの基準となる、前記プラグインのバージョン情報を書き込むこと、
を特徴とした請求項９に記載のドライバ制御方法。
【請求項１１】
前記クライアントでは、
クライアント側特定手段が、前記インストールステップによる前記ドライバのインストールでなされた設定に従って、前記ファイルと前記一覧情報とを格納する格納先のパスを特定するクライアント側特定ステップを、さらに含み、
前記格納ステップは、前記クライアント側特定ステップにより特定された前記パスに対して、前記ファイルを格納すること、
を特徴とする請求項９に記載のドライバ制御方法。
【請求項１２】
前記サーバでは、
前記特定ステップが、記憶手段に記憶されたファイル名に従って、前記所定のファイルを特定すること、
を特徴とする請求項９に記載のドライバ制御方法。
【請求項１３】
前記サーバでは、
前記書込ステップは、前記一覧情報に対して、プラグインを追加するか否かの基準となる、前記プラグインのバージョン情報を書き込むこと、
を特徴とした請求項９に記載のドライバ制御方法。
【請求項１４】
前記クライアントでは、
展開手段が、前記アーカイブから、前記ドライバで利用されるプラグインを展開する展開ステップをさらに含み、
前記制御ステップで制御されるドライバは、前記展開ステップにより展開された前記プラグインを用いて制御を行うこと、
を特徴とする請求項９乃至１３のいずれか一つに記載のドライバ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ドライバを用いて処理を行うドライバ制御システム、及びドライバ制御方法に関する。
【背景技術】
【０００２】
従来より、プリンタは、機種によって搭載されている機能が異なっている。そして、ユーザの要求の多様化に伴い、プリンタに対して、必要な機能のみ利用できるようにカスタマイズした上で、販売することへのニーズが向上している。このようなニーズに対応するために、各機能をプラグインとして追加できるプリンタが提案されている。当該プリンタに対して機能が追加する場合、当該プリンタを制御するためのプリンタドライバに対しても、追加された機能を使えるように機能拡張する必要となる。
【０００３】
また、プリンタの機能拡張に伴うプリンタドライバの機能拡張のほか、当該プリンタドライバ単体に対する機能拡張の要求も存在する。
【０００４】
このような機能拡張を行うために、プリンタドライバを再コンパイルし、顧客の環境に再インストールすることは、ユーザの利便性が低下する。そこで、再コンパイレーションや再インストールを行わずに、機能拡張を行う技術として、プラグインとしてプリンタドライバに機能を追加する技術が既に知られている。
【０００５】
ところで、近年、サーバＰＣがプリンタドライバを管理し、クライアントＰＣに対してインストールを行う傾向にある。このような環境で、各クライアントＰＣに対してプラグインで機能拡張する技術として、プリンタドライバの構成ファイル以外のファイルを、プラグインとして追加したり、構成ファイルを書き換えて機能拡張する技術（例えば、特許文献１）が提案されている。これにより、再インストール等を行わずに、プリンタドライバに対して機能拡張が可能となる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、プリンタドライバの構成ファイル以外のファイルを、プラグインとして追加する技術では、クライアントＰＣから、サーバＰＣが管理するプリンタドライバをインストール（例えばMicrosoft（登録商標）が提案しているポイント・アンド・プリントを用いたインストール）する場合、サーバＰＣ側にプラグインが予め追加されていても、クライアントＰＣ側には当該プラグインはインストールされない。このため、クライアントＰＣでは、拡張機能を利用できない。
【０００７】
また、特許文献１に示されるように、構成ファイルを書き換えて機能拡張を行う技術では、例えば、クライアントＰＣ側のＯＳがWindows（登録商標）の場合、ドライバの構成が変わっていないことを示すカタログ(cat)ファイルの整合性が崩れてしまうため、ＯＳから安全性が保障されなくなる。特に、ＯＳがWindows（登録商標）Vista（登録商標）の場合、ドライバストアの機能によって、書き換えられた構成ファイルが、書き換えられる前の状態に書き戻されることで、拡張した機能が消えてしまうなどの問題があった。
【０００８】
本発明は、上記に鑑みてなされたものであって、ドライバをインストールする際に、クライアントＰＣに対して、プラグインとして追加された拡張機能を継承できるドライバ制御システム、及びドライバ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明にかかるドライバ制御システムは、ドライバをインストールする対象であるクライアントと、当該ドライバを管理するサーバと、で構成されるドライバ制御システムであって、前記サーバは、前記ドライバのプラグインがまとめてアーカイブされた所定のファイルと、前記ファイルに格納されたプラグインが示された一覧情報と、を送信対象として特定する特定手段と、前記ドライバと、前記特定手段により特定された前記ファイル及び前記一覧情報と、を前記クライアントに送信する送信手段と、プラグインのインストーラからの呼び出しに応じて、前記ファイルに対して前記プラグインを追加する書き込みを行うとともに、前記ファイルに追加するプラグインを認識する情報を、前記一覧情報に書き込む書込手段と、を備え、前記クライアントは、前記サーバから、前記ドライバと、前記ファイルと、前記一覧情報と、を受信する受信手段と、前記受信手段により受信した前記ドライバをインストールするインストール手段と、前記受信手段により受信した前記ファイルと前記一覧情報とを記憶手段に格納する格納手段と、前記ファイルにアーカイブされている前記プラグインを前記一覧情報に従って呼び出す前記ドライバを、制御する制御手段と、を備えたこと、を特徴とする。
【００１０】
また、本発明にかかるドライバ制御方法は、ドライバをインストールする対象であるクライアントと、当該ドライバを管理するサーバと、で実行されるドライバ制御方法であって、前記サーバでは、特定手段が、前記ドライバのプラグインがまとめてアーカイブされた所定のファイルと、前記ファイルに格納されたプラグインが示された一覧情報と、を送信対象として特定する特定ステップと、送信手段が、前記ドライバと、前記特定ステップにより特定された前記ファイル及び前記一覧情報と、を前記クライアントに送信する送信ステップと、書込手段が、プラグインのインストーラからの呼び出しに応じて、前記ファイルに対して前記プラグインを追加する書き込みを行うとともに、前記ファイルに追加するプラグインを認識する情報を、前記一覧情報に書き込む書込ステップと、を含み、前記クライアントでは、受信手段が、前記サーバから、前記ドライバと、前記ファイルと、前記一覧情報と、を受信する受信ステップと、前記受信ステップにより受信した前記ドライバをインストールするインストールステップと、格納手段が、前記受信ステップにより受信した前記ファイルと前記一覧情報とを記憶手段に格納する格納ステップと、制御手段が、前記ファイルにアーカイブされている前記プラグインを前記一覧情報に従って呼び出す前記ドライバを、制御する制御ステップと、を含むこと、を特徴とする。
【発明の効果】
【００１１】
本発明によれば、ドライバのプラグインをインストールする際の操作負担を軽減するという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、第１の実施の形態にかかる印刷制御システムの構成を示すブロック図である。
【図２】図２は、サーバＰＣの機能ブロックを示した図である。
【図３】図３は、プリンタドライバで用いられる機能情報の例を示した図である。
【図４】図４は、プリンタドライバで用いられる画面レイアウト情報の例を示した図である。
【図５】図５は、ポイント・アンド・プリントを行うためにレジストリに格納された設定の例を示した図である。
【図６】図６は、プラグイン一覧情報の初期状態を示した図である。
【図７】図７は、２つのプラグインが追加されたプラグイン一覧情報の例を示した図である。
【図８】図８は、２つのプラグインが追加されたプラグインアーカイブの例を示した図である。
【図９】図９は、本実施の形態にかかるサーバＰＣにおける、ドライバのインストールの処理の手順を示すシーケンス図である。
【図１０】図１０は、本実施の形態にかかるクライアントＰＣの機能ブロックを示した図である。
【図１１】図１１は、ドライバ設定ディレクトリの画面レイアウト情報のみから生成される印刷設定画面の例を示した図である。
【図１２】図１２は、“borderline”プラグインの機能情報の例を示した図である。
【図１３】図１３は、“borderline”プラグインの画面レイアウト情報の例を示した図である。
【図１４】図１４は、“stamp”プラグインの機能情報の例を示した図である。
【図１５】図１５は、“stamp”プラグインの画面レイアウト情報の例を示した図である。
【図１６】図１６は、印刷制御システムにおけるドライバのインストールの処理の手順を示すフローチャートである。
【図１７】図１７は、特定部における上述した処理の手順を示すフローチャートである。
【図１８】図１８は、クライアントＰＣにおける、設定画面の表示処理の手順を示すフローチャートである。
【図１９】図１９は、プラグインが追加されたプリンタドライバについて、表示部１００７により表示される設定画面の例を示した図である。
【図２０】図２０は、クライアントＰＣにおける、印刷制御処理の手順を示すフローチャートである。
【図２１】図２１は、プラグインインストーラパッケージの構成を示した図である。
【図２２】図２２は、プラグインインストーラパッケージに含まれるプラグイン情報の例を示した図である。
【図２３】図２３は、本実施の形態にかかるサーバＰＣにおける、プラグインインをインストールする際の処理の手順を示すフローチャートである。
【図２４】図２４は、サーバＰＣ及びクライアントＰＣのハードウェア構成を示した図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して、この発明にかかるドライバ制御システム、及びドライバ制御方法の一実施の形態を詳細に説明する。
【００１４】
（第１の実施の形態）
図１は、第１の実施の形態にかかる印刷制御システムの構成を示すブロック図である。図１に示すように、印刷制御システムは、ネットワーク１６０を介して、サーバＰＣ１００と、クライアントＰＣ１１０と、プリンタ１５０と、が接続されている。サーバＰＣ１００は、クライアントＰＣ１１０に対してドライバのインストール制御を行うことが可能なＰＣとする。このインストール制御には、例えば、ポイント・アンド・プリントを用いてもよい。
【００１５】
図２は、本実施の形態にかかるサーバＰＣ１００の機能ブロックを示した図である。図２に示すようにサーバＰＣ１００は、ＯＳ２０１が搭載されており、当該ＯＳ２０１が、サーバＰＣ１００に搭載された（図示しない）アプリケーションや、ハードウェアを制御する。
【００１６】
ＯＳ２０１は、プリンタドライバ２５０と、制御部２０２と、送信部２０３と、書込部２０４と、レジストリ２１０と、ＤＥＶＭＯＤＥ２１１と、ドライバ設定ディレクトリ２１２と、プラグインディレクトリ２１３と、を備えている。本実施の形態においては、ＯＳ２０１として、MS-Windows（登録商標）が搭載されている例について説明する。
【００１７】
つまり、本実施の形態では、MS-Windows（登録商標）で提供されているポイント・アンド・プリントを用いたドライバのインストールを例に説明する。しかしながら、当該ポイント・アンド・プリントと同等のインストールを実現する機能があれば他のＯＳであっても良い。
【００１８】
プリンタドライバ２５０は、描画ドライバ２５１と、ポイント・アンド・プリント・ライブラリ２５２と、設定管理部２５３と、ＵＩドライバ２５４と、プラグイン管理部２５５と、を備えている。そして、このプリンタドライバ２５０は、プリンタ１５０を制御するためのドライバであり、サーバＰＣ１００からクライアントＰＣ１１０に対して提供可能なドライバとする。
【００１９】
描画ドライバ２５１は、ＯＳ（サーバＰＣ１００のＯＳ２０１や、クライアントＰＣのＯＳ）からプリンタ１５０を制御するために必要なプリンタドライバ２５０の構成モジュールである。そして、描画ドライバ２５１は、描画処理を行い、描画データを生成する。
【００２０】
ポイント・アンド・プリント・ライブラリ２５２は、特定部２６１を備え、サーバＰＣ１００に対して、クライアントＰＣ１１０からポイント・アンド・プリントが行われた際に、呼び出されるダイナミック・リンク・ライブラリ（モジュール群）とする。本実施の形態にかかるポイント・アンド・プリント・ライブラリ２５２は、ポイント・アンド・プリント時に呼び出された場合、クライアントＰＣ１１０又はサーバＰＣ１００のどちらかで呼び出されたのかに応じてそれぞれ異なる制御を行う。これにより、クライアントＰＣ１１０及びサーバＰＣ１００の間で、プリンタドライバ２５０の構成ファイル以外のファイルを送信するため制御が行われる。
【００２１】
特定部２６１は、ポイント・アンド・プリント時に、サーバＰＣ１００側から呼び出された場合、クライアントＰＣ１１０に送信するファイルを特定する。本実施の形態にかかる特定部２６１は、プリンタドライバ２５０のプラグインがまとめてアーカイブされた所定のファイル（以下、プラグインアーカイブと称す）と、プラグインアーカイブに格納されたプラグインを認識するためのプラグイン一覧情報と、をクライアントＰＣ１１０へ送信するファイルとして特定する。
【００２２】
また、特定部２６１は、ポイント・アンド・プリント時に、クライアントＰＣ１１０側で呼び出された場合、プラグインの格納先となるパスを特定する。
【００２３】
つまり、ポイント・アンド・プリント・ライブラリ２５２を、プリンタドライバ２５０に含ませて、ポイント・アンド・プリント時に、サーバＰＣ１００及びクライアントＰＣ１１０で呼び出されることで、プリンタドライバ２５０のプラグインのインストールを実現する。このインストールを実現するための制御として、サーバＰＣ１００側においては、送信する対象となるファイルを特定している。
【００２４】
設定管理部２５３は、プリンタドライバ２５０の機能や設定を管理するモジュールとする。設定管理部２５３が管理する設定としては、例えば、現在の設定値、各機能の値域、及び各機能間の禁則とする。これらの機能や設定の書き出しや読み出しは、レジストリ２１０や、ＤＥＶＭＯＤＥ２１１に対して行う。
【００２５】
ＵＩドライバ２５４は、ＯＳ２０１からプリンタ１５０を制御するために必要なプリンタドライバの構成モジュールであり、設定画面や、インストール時の初期設定画面などを表示するＧＵＩ（Graphic  User  Interface）として機能する。
【００２６】
プラグイン管理部２５５は、プラグインに関する制御を行うモジュールとする。本実施の携帯にかかるプラグイン管理部２５５は、プリンタドライバ２５０本体に対する設定と、プラグインに対する設定と、をマージして、呼び出し側にプラグインの構成を意識させないよう制御する。
【００２７】
また、プラグイン管理部２５５は、各印刷命令に従って、インストールされたプラグインに含まれる描画拡張モジュールの該当する処理を呼び出し、プラグイン毎に行われる制御（例えば描画制御）を実現する。
【００２８】
具体的には、プラグイン管理部２５５は、プリンタドライバ２５０による制御を行う際、プラグイン一覧情報に従って、プラグインアーカイブにまとめてアーカイブされている、各プラグインを用いた制御を行う。
【００２９】
次に、プリンタドライバ２５０以外の構成について説明する。制御部２０２は、プリンタドライバ２５０など、ＯＳ２０１に搭載された様々なドライバの制御を行う。
【００３０】
書込部２０４は、情報の書き込み制御を行う。例えば、書込部２０４は、プリンタドライバ２５０に対してプラグインを追加する際、当該プラグインのインストーラからの呼び出しに応じて、プラグインアーカイブにプラグインを追加する書き込みを行うとともに、プラグインアーカイブに追加するプラグインを認識させるプラグイン情報を、プラグイン一覧情報に書き込む。本実施の形態にかかるプラグイン情報は、プラグインの名称と、当該プラグインのバージョン情報と、を含む。
【００３１】
送信部２０３は、クライアントＰＣ１１０に対して、情報を送信する制御を行う。送信対象としては、プリンタドライバ２５０等のドライバと、当該ドライバに対して追加されたプラグインがまとめてアーカイブされたプラグインアーカイブと、プラグイン一覧情報などがある。
【００３２】
なお、バージョン情報は、プラグインを追加するか否かを基準として用いられる。例えば、新たにプラグインが追加される場合、同一名称のプラグインがすでに追加されているのであれば、バージョン情報を確認し、バージョン情報が新しい場合に限ってインストールを継続する等とする。
【００３３】
ドライバ設定ディレクトリ２１２は、プリンタドライバ２５０が処理を行う際に参照する設定情報が格納されたディレクトリとする。ドライバ設定ディレクトリ２１２は、機能情報と、画面レイアウト情報と、を保持する。
【００３４】
機能情報は、プリンタドライバ２５０の各機能の機能名、ユーザ・インターフェイスの種類(選択肢か、文字列か、数値か)、値域、機能間の禁則が記述された情報を示している。本実施の形態においては、機能情報はＸＭＬ形式で記述されているものとする。
【００３５】
図３は、プリンタドライバ２５０で用いられる機能情報の例を示した図である。図３に示すように、プリンタドライバ２５０で利用可能な機能毎に、“item”タグが定義されている。
【００３６】
つまり機能毎の設定を示す情報が、各“item”タグ内に格納されている。この“item”タグは、“name”と“type”の属性を有している。属性“name”は、各機能設定の名前を示している。属性typeは、入力される設定値の形式を示している。
【００３７】
属性“name”が“layout”のタグは集約設定を保持していることを示している。属性“name”が“booklet”のタグは製本設定を保持していることを示している。属性“name”が“papersize”のタグは印刷用紙設定を保持していることを示している。属性“name”が“copies”のタグは部数設定を保持していることを示している。属性“name”が“userid”のタグは利用者別ＩＤ設定を保持していることを示している。
【００３８】
また、属性“type”として設定される値について説明する。“pickone”は、選択肢形式であることを示している。“string”は、文字列入力形式であることを示している。“number”は、数値入力形式であることを示している。
【００３９】
また、“item”タグは、図３の集約設定のように、“constraint”タグ３０１を保持することができる。“constraint”タグ３０１は、親タグである“item”タグの設定の禁則情報を表している。属性“fixvalue”は、“constraint”タグに禁則条件が合致している場合に強制的に変更するか否かを示す属性とする。
【００４０】
また、“constraint”タグは、図３の集約設定のように“condition”タグ３０２を保持することができる。“condition”タグは、親タグである“constraint”タグの禁則条件を保持している。例えば、属性“expression”は、当該禁則条件を示している。具体的には、“layout”は、“booklet”に“on”が設定されている場合に禁則条件に合致し、“off”という設定値に強制的に変更される。
【００４１】
“pickone”タグは、親タグである“item”タグの“type”が選択肢形式の場合に、選択肢毎の情報を保持している。“pickone”タグ内の属性“name”は、当該タグの選択肢を表す設定値とする。また、図３に示す例では、記述されていないが、“constraint”タグを有することができる。このように、“pickone”タグ自体、すなわち選択肢自体も、禁則情報を保持することができる。
【００４２】
次に、“pickone”タグの属性“name”の各設定値について説明する。タグ“layout”内における、“off”は機能オフ、“2in1”は２in１印刷、“4in1”は４in１印刷、“on”は機能オン、“a3”はＡ３用紙、“a4”はＡ４用紙、という選択肢を示している。
【００４３】
“range”タグは、親タグ“item”タグの“type”が数値形式の場合に、選択可能な範囲が定義されている。この“range”タグ内の属性“min”は設定可能な最小値を、“max”は設定可能な最大値を保持している。
【００４４】
“string”タグは、親タグ“item”タグの“type”が文字列形式の場合に、選択可能な文字列が定義されている。この“string”タグ内の属性“min”は最小文字数を、属性“max”は最大文字数を保持している。また、属性“chartype”は文字の種類を保持している。例えば属性“chartype”が、“alphanumeric”の場合に、数値とアルファベットの文字列が入力可能であることを示している。
【００４５】
画面レイアウト情報は、プリンタドライバ２５０に関する設定画面が表示された際、当該設定画面のレイアウト（ＵＩの種類、座標、紐付けられる機能名）を特定するための情報が記述されている。
【００４６】
図４は、プリンタドライバ２５０で用いられる画面レイアウト情報の例を示した図である。図４に示す例は、画面レイアウト情報をＪＳＯＮ形式で記述した例とする。
【００４７】
図４のように、画面レイアウト情報では、ＵＩコンポーネント毎にレイアウトを特定するための情報（レイアウトデータと称す）が記述されている。このＵＩコンポーネント毎のレイアウトデータは、それぞれ属性“type”、属性“name”、属性“axis”を有している。
【００４８】
属性“type”は、ＵＩコンポーネントの種類を示している。“type”の値において、“ComboBox“が設定されている場合はコンボボックスコンポーネントを、“CheckBox“が設定されている場合はチェックボックスコンポーネントを、“SpinBox“が設定されている場合はスピンボックスコンポーネントを、“EditBox“が設定されている場合はエディットボックスコンポーネントで表示することを示している。
【００４９】
属性“name”は、設定の名前を示している。属性“name“の値として、“layout“が設定されている場合は集約設定、“booklet“が設定されている場合は製本設定、“papersize“が設定されている場合は印刷用紙設定、“copies“が設定されている場合は部数設定、“userid“が設定されている場合は利用者別ＩＤ設定であることを示している。
【００５０】
属性“axis”は、表示位置の座標を示している。属性“axis”が保持する属性“x”はダイアログボックスの左上原点からの水平方向座標を、属性“ｙ”は垂直方向座標を指定している。
【００５１】
例えば、欄４０１内で設定された集約設定は、コンボボックスコンポーネントで水平位置“25”、垂直位置“30”に表示することが記述されている。
【００５２】
レジストリ２１０は、サーバＰＣ１００のＯＳ２０１や、ＯＳ２０１上で動作するアプリケーションの設定が格納されたデータベースとする。本実施の形態にかかるレジストリ２１０は、ポイント・アンド・プリントを行う際に、ドライバの構成ファイル以外のファイルを送信するために必要な設定を保持している。この必要な設定の例としては、送信対象となるプラグインのファイルが格納されたディレクトリを示すパスや、送信対象となるファイルを特定するファイル名などがある。
【００５３】
図５は、ポイント・アンド・プリントを行うためにレジストリ２１０に格納された設定の例を示した図である。当該設定がなされたことで、ポイント・アンド・プリント時にドライバ構成ファイル以外のファイルを送信させることが可能となる。
【００５４】
レジストリキーとしては、例えば、「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\ドライバ名」の下に「CopyFiles\任意の名前」のキーが存在し、その下に図５で示したサブキーが格納されているものとする。本実施の形態では、「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\DriverA\CopyFiles\Plugin」の下に格納されているものとする。次にサブキーの意味について説明する。
【００５５】
“Dierectory”は、クライアントＰＣ１１０に送信するファイルが置いてあるディレクトリを示すパスを保持している。このディレクトリを示すパスは、ポイント・アンド・プリント・ライブラリ２５２のGenerateCopyFilePathsAPIを呼び出すことで変更できる。本実施の形態にかかる“Dierectory”には、プラグインディレクトリ２１３を表す“C:\Documents  and  Settings\All  Users\Application  Data\DriverA\Plugin”が保持されている。
【００５６】
“Files”は、“Directory”で示されたディレクトリ（プラグインディレクトリ２１３）内に格納されたファイルのうち、送信するファイルの一覧を保持している。本実施の形態にかかる“Files”には、プラグイン一覧情報“plugin_info.json”と、プラグインアーカイブ“plugin_archive.zip”を示すファイル名を保持している。
【００５７】
“Module”は、ポイント・アンド・プリントの処理を行う際に、呼び出すライブラリ（ダイナミック・リンク・ライブラリ）を示すファイル名を保持している。本実施の形態にかかる“Module”は、ポイント・アンド・プリント・ライブラリ２５２を示すファイル名“ppmodule.dll”を保持している。
【００５８】
この呼び出す対象となるライブラリ（ポイント・アンド・プリント・ライブラリ２５２）は、GenerateCopyFilePaths()と、SpoolerCopyFileEvent()のＡＰＩを実装したダイナミック・リンク・ライブラリとする。
【００５９】
GenerateCopyFilePathsは、サーバＰＣ１００、クライアントＰＣ１１０のそれぞれで呼び出されるＡＰＩであり、図２の特定部２６１に相当する。このGenerateCopyFilePaths（特定部２６１）は、送信元や送信先のディレクトリのパス等を特定する際に呼び出される。
【００６０】
SpoolerCopyFileEventは、クライアントＰＣ１１０で動作するＡＰＩであり、ポイント・アンド・プリントの接続開始/終了などのイベントを通知する。なお、具体的な通知制御については省略する。
【００６１】
ＤＥＶＭＯＤＥ２１１は、プリンタドライバ２５０の設定を保存するために、ＯＳ２０１側によって提供された構造体とする。例えば、ＤＥＶＭＯＤＥ２１１は、プリンタドライバ２５０に対して行われた現在の設定値などを保持する。
【００６２】
プラグインディレクトリ２１３は、プリンタドライバ２５０のプラグインを保存するためのディレクトリとする。本実施の形態にかかるプラグインディレクトリ２１３は、プラグイン一覧情報と、プラグインアーカイブとを、格納する。
【００６３】
プリンタドライバ２５０のインストール直後に、プリンタドライバ２５０が所定のパスに、プラグインディレクトリ２１３を生成する。そして、プリンタドライバ２５０が、初期のプラグイン一覧情報と、初期のプラグインアーカイブと、をプラグインディレクトリ２１３に生成する（なお、コピー等であっても良い）。
【００６４】
その後、プリンタドライバ２５０に対してプラグインが追加される際、当該ディレクトリのプラグイン一覧情報とプラグインアーカイブとに、プラグインに関する情報が追加されていく。これにより、プリンタドライバ２５０の機能を拡張できる。
【００６５】
具体的には、プリンタドライバ２５０に対してプラグインが追加された場合、当該プラグインを認識させるプラグイン情報をプラグイン一覧情報に対して追加するとともに、当該プラグインが追加されたプラグインアーカイブを生成する。なお、本実施の形態において、プラグインの追加は、プリンタドライバ２５０自体は関与せず、外部のツールなどによって行われるものとする。
【００６６】
次に、プラグイン一覧情報の初期状態について説明する。図６は、プラグイン一覧情報の初期状態を示した図である。図６に示すように、プラグイン一覧情報は、初期状態ではなんの情報も格納されていない。つまり、プリンタドライバ２５０のインストール直後においては、利用可能なプラグインが存在しないことを示している。そして、プラグインが追加される毎に、追加されたプラグインの名称や、当該プラグインに関する情報が書込部２０４により書き込まれる。また、本実施の形態は、プラグイン一覧情報のフォーマットとして、ＪＳＯＮ(Java（登録商標）Script  Object  Notation)形式を用いた例とするが、他のフォーマットを用いても良い。
【００６７】
また、プラグインアーカイブも初期状態で、何の情報も格納されていないものとする。本実施の形態では、プラグインアーカイブは、各プラグインをまとめてＺＩＰ圧縮したアーカイブファイルとする。つまり、プラグインアーカイブは、プラグインが追加されていない初期状態では空のＺＩＰファイルであり、プラグインが追加される毎に今まで追加されたプラグインをまとめたＺＩＰファイルが生成される。
【００６８】
次に、プラグインが追加されたプラグイン一覧情報と、プラグインアーカイブと、について説明する。なお、当該説明では、borderlineプラグインとstampプラグインとの２つのプラグインが追加された例とする。
【００６９】
図７は、２つのプラグインが追加されたプラグイン一覧情報の例を示した図である。図７に示すように、プラグイン一覧情報は、ＪＳＯＮ形式によるテーブルとして機能する。そして、プラグイン一覧情報において、プラグインの名称が、キーとして機能するＯｂｊｅｃｔとする。そして、キーに対応する値は、当該プラグインに対応する参照可能な情報として設定されている。なお、図７に示す例は、参照可能な情報として、プラグインのバージョンが記述された例とする。
【００７０】
図８は、２つのプラグインが追加されたプラグインアーカイブの例を示した図である。図８に示すように、プラグインアーカイブは、プラグイン一覧情報に記述されているプラグインの名称と同一のディレクトリを有する。つまり、プラグインアーカイブには、Borderlineディレクトリ８０１と、Stampディレクトリ８０２と、の２つが含まれている。そして、プリンタドライバ２５０は、プラグイン一覧情報に書き込まれたプラグインの名称に基づいて、プラグインアーカイブ内の、各プラグインのモジュールの格納されたディレクトリを特定する。
【００７１】
図８の、プラグインアーカイブ内の各ディレクトリには、機能情報と、画面レイアウト情報と、描画拡張モジュールと、の３つのモジュールが格納されている。この機能情報、及び画面レイアウト情報は、ドライバ設定ディレクトリ２１２に格納された、プリンタドライバ２５０の機能情報、画面レイアウト情報と同様の形式の情報とする。具体的には、プラグインアーカイブ内の各ディレクトリに格納された機能情報には、プラグインで追加される機能が定義されている。また、プラグインアーカイブ内の各ディレクトリに格納された画面レイアウト情報には、プラグインに関する画面レイアウトが記述されている。
【００７２】
描画拡張モジュールは、プラグインが提供する機能による描画処理を行うモジュールとする。例えば、borderlineプラグインの描画拡張モジュールは、集約時にページの区切り線を引く機能を提供する。さらに、stampプラグインの描画拡張モジュールは、スタンプ印字を行う機能を提供する。これら各プラグインの描画拡張モジュールは、ジョブの開始/終了、ページの開始/終了、各種描画オブジェクトの描画など、描画ドライバに対応したＡＰＩが実装されている。
【００７３】
なお、本実施の形態にかかるプラグインの追加は、通常プラグインインストーラなどによって行われる。しかしながら、プラグインの追加は、インストーラを用いるものに制限するものではなく、プラグイン一覧情報に対して、追加するプラグインの情報を書き込み制御しても良い。また、ユーザの操作に従って、プラグインアーカイブにプラグインのファイルを追加してもよい。
【００７４】
なお、本実施の形態では、初期状態でプラグインがインストールされていない例について説明した。しかしながら、プラグインがインストールされてない例に制限するものではなく、最初から、プラグインが記載されたプラグイン一覧情報と、当該プラグイン一覧情報に矛盾が生じないようプラグインがアーカイブされたプラグインアーカイブと、を初期状態として予め作成してもよい。これにより、プリンタドライバ２５０のインストール直後からプラグインを利用することも可能となる。
【００７５】
次に、本実施の形態にかかるサーバＰＣ１００における、ドライバのインストールの処理について説明する。図９は、本実施の形態にかかるサーバＰＣ１００における上述した処理の手順を示すシーケンス図である。図９に示すシーケンスでは、プリンタドライバ２５０をインストールする例とする。
【００７６】
まず、ＯＳ２０１は、プリンタドライバ２５０のインストール要求を受け付けた場合に、当該プリンタドライバの構成ファイルをインストールする（ステップＳ９０１）。つまり、ＯＳ２０１は、プリンタドライバ２５０の構成ファイルを、全てのドライバの格納先となるインストールディレクトリにコピーする。このコピーされる構成ファイルとは、図２のプリンタドライバ２５０に含まれる構成とする。
【００７７】
その後、ＯＳ２０１は、構成ファイルがインストールされたプリンタドライバ２５０のＵＩドライバ２５４に対して、ドライバインストールのイベントを送出する（ステップＳ９０２）。
【００７８】
ＵＩドライバ２５４は、プラグイン管理部２５５に対して、プラグインの初期設定を要求する（ステップＳ９０３）。
【００７９】
当該要求に従って、プラグイン管理部２５５は、プラグインディレクトリ２１３のパスを生成する（ステップＳ９０４）。本実施の形態においては、ＯＳ２０１が有するＡＰＩ（例えば、Windows(登録商標)API）の、フォルダパスを特定するコマンド（例えば、SHGetSpecialFolderPath）を利用して、所定のフォルダのパス（例えばComonApplicationDataのパス）を取得する。そして、プラグイン管理部２５５は、取得した所定のフォルダのパスに対して、“ドライバ名\Plugin”を連結したパスを、プラグインディレクトリ２１３として生成する。生成されたプラグインディレクトリ２１３は、以降、プラグインの格納等に利用される。
【００８０】
例えば、インストールするドライバ名が“DriverA”の場合、プラグイン管理部２５５は、プラグインディレクトリ２１３のパスとして、“C:\Documents  and  Settings\All  Users\Application  Data\DriverA\Plugin”を生成する。
【００８１】
次に、プラグイン管理部２５５が、生成したプラグインディレクトリ２１３のパスに対して、初期状態のプラグイン一覧情報を生成する（ステップＳ９０５）。なお、この初期状態のプラグイン情報は、プリンタドライバ２５０の構成ファイルとして含まれていたものをコピーしても良い。
【００８２】
さらに、プラグイン管理部２５５が、生成したプラグインディレクトリ２１３のパスに対して、初期状態のプラグインアーカイブを生成する（ステップＳ９０６）。この初期状態のプラグインアーカイブは、プリンタドライバ２５０の構成ファイルとして含まれていたものをコピーしても良い。
【００８３】
なお、通常、初期状態ではプラグインは空であるが、最初からドライバパッケージにプラグインを含めて配布したい場合、図７に示すプラグイン一覧情報や、図８に示すプラグインアーカイブのように最初からプラグインが含まれた構成であっても良い。このような構成であれば、ドライバのインストール直後からプラグインの機能が利用可能となる。
【００８４】
これは、まず第１に、プリンタドライバ２５０のインストールは、プラグイン一覧情報とプラグインアーカイブとの内部と関係なく行われるものだからである。第２に、プリンタドライバ２５０のインストール後において、プラグインを動作させるために必要な情報は全て、プラグインディレクトリ内のプラグイン一覧情報と、プラグインアーカイブと、に持たせているためである。このため、最初に、プラグイン一覧情報と、プラグインアーカイブとに含ませていても、問題なく機能する。
【００８５】
そして、プラグイン管理部２５５は、レジストリ２１０に対して、プラグインを利用するために必要な情報を設定する（ステップＳ９０７）。この必要な情報の例としては、クライアントＰＣ１１０によるポイント・アンド・プリント時に、プリンタドライバ２５０のプラグインに関するファイルを送信させるための情報であって、図５に示した情報とする。
【００８６】
上述した処理手順によりサーバＰＣ１００に対してプリンタドライバ２５０がインストールされる。次に、サーバＰＣ１００からプリンタドライバ２５０のインストール先となるクライアントＰＣ１１０について説明する。
【００８７】
図１０は、本実施の形態にかかるクライアントＰＣ１１０の機能ブロックを示した図である。図１０に示すようにクライアントＰＣ１１０は、ＯＳ１００１が搭載されており、当該ＯＳ１００１が、クライアントＰＣ１１０に搭載された（図示しない）アプリケーションや、ハードウェアを制御する。
【００８８】
ＯＳ１００１は、プリンタドライバ２５０と、制御部１００２と、受信部１００３と、インストール部１００４と、格納部１００５と、展開部１００６と、表示部１００７と、レジストリ１０１０と、ＤＥＶＭＯＤＥ１０１１と、ドライバ設定ディレクトリ１０１２と、プラグインディレクトリ１０１３と、を備えている。本実施の形態においては、ＯＳ１００１として、MS-Windows（登録商標）が搭載されている例について説明する。このように、クライアントＰＣ１１０に搭載されるＯＳ１００１の種類は、サーバＰＣ１００と同一のＯＳであってもよいし、他のＯＳが搭載されていても良い。
【００８９】
レジストリ１０１０は、クライアントＰＣ１１０のＯＳ１００１や、ＯＳ１００１上で動作するアプリケーションの設定が格納されたデータベースとする。
【００９０】
ＤＥＶＭＯＤＥ１０１１は、プリンタドライバ２５０の設定を保存するために、ＯＳ２０１側によって提供された構造体とする。
【００９１】
制御部１００２は、ＯＳ１００１にインストールされたドライバ（例えばプリンタドライバ２５０を含む）を制御する。制御部１００２により制御される各ドライバは、プラグインアーカイブにアーカイブされているプラグインを、プラグイン一覧情報に従って呼び出す。このため、制御部１００２による制御に基づいて、インストールされた各プラグインの機能を利用できる。
【００９２】
受信部１００３は、サーバＰＣ１００から情報を受信する。受信する情報の例としては、インストールするドライバ、当該プリンタドライバで用いるプラグインアーカイブ、及び当該プリンタドライバで用いるプラグイン一覧情報等とする。
【００９３】
インストール部１００４は、受信部１００３が受信したドライバのインストール制御を行う。本実施の形態にかかるインストール部１００４は、ポイント・アンド・プリントでプリンタドライバのインストールを行う。
【００９４】
また、インストール部１００４は、ドライバのインストールの際に、当該ドライバで用いる設定情報を、ドライバ設定ディレクトリ１０１２に格納する。
【００９５】
ドライバ設定ディレクトリ１０１２は、プリンタドライバ２５０が処理を行う際に参照する設定情報が格納されたディレクトリとする。ドライバ設定ディレクトリ１０１２には機能情報、及び画面レイアウト情報が格納される。当該機能情報、及び画面レイアウト情報は、サーバＰＣ１００のドライバ設定ディレクトリ２１２に格納された機能情報、及び画面レイアウト情報と同様とする。
【００９６】
プリンタドライバ２５０は、インストール部１００４によりインストールされたドライバとする。このプリンタドライバ２５０は、サーバＰＣ１００からインストールされたため、サーバＰＣ１００に搭載されたものと同一構成とする。
【００９７】
表示部１００７は、プリンタドライバ２５０に関する設定画面等を表示する。例えば、表示部１００７は、ドライバ設定ディレクトリ２１２に格納された画面レイアウト情報、及びプラグイン毎の画面レイアウト情報に従って生成された、設定画面を表示する。なお、プラグインが追加されていない場合、表示部１００７は、ドライバ設定ディレクトリ２１２に格納された画面レイアウト情報のみから生成された設定画面を表示する。
【００９８】
図１１は、ドライバ設定ディレクトリ１０１２の画面レイアウト情報のみから生成される印刷設定画面の例を示した図である。図１１に示す印刷設定画面の例では、プリンタドライバ２５０の構成モジュールにおいて使用可能な項目が表示されている。そして、図１１で示した印刷設定画面に表示された各項目に対する設定は、機能情報を読み込んだ設定管理部２５３で管理する。
【００９９】
図１１の「ＯＫ」ボタンは印刷設定の変更を保存するボタンであり、「Ｃａｎｃｅｌ」ボタンは印刷設定の変更をキャンセルするボタンとする。そして、これら「ＯＫ」ボタン、及び「Ｃａｎｃｅｌ」ボタンは、画面レイアウト情報に従って表示されるボタンではなく、画面レイアウト情報とは関係なく実装しているボタンとする。
【０１００】
なお、サーバＰＣ１００にプリンタドライバ２５０にプラグインが追加されている場合、サーバＰＣ１００からプリンタドライバ２５０のインストールを行ったクライアントＰＣ１１０では、図１１に示す印刷設定画面を表示せず、プラグインの画面レイアウト情報を含めた印刷設定画面を表示する。
【０１０１】
プラグインディレクトリ１０１３は、プリンタドライバ２５０のプラグインを保存するためのディレクトリとする。プラグインディレクトリ１０１３に格納されたプラグイン一覧情報及びプラグインアーカイブは、プラグインディレクトリ２１３に格納されたプラグイン一覧情報及びプラグインアーカイブと同様とする。
【０１０２】
展開部１００６は、アーカイブを展開する。本実施の形態にかかる展開部１００６は、プラグインディレクトリ１０１３内の、ＺＩＰ形式で圧縮されたプラグインアーカイブから、各プラグインに展開する。
【０１０３】
また、展開部１００６は、プラグインアーカイブを展開する際、各プラグインの構成ファイルとして、プラグイン毎に画面レイアウト情報と、機能設定情報と、描画拡張モジュールと、を展開する。
【０１０４】
描画拡張モジュールは、当該プラグインの処理に対するＡＰＩを有する実行可能なファイルとする。
【０１０５】
プラグイン毎の画面レイアウト情報には、各ＧＵＩの種類、機能名及び座標情報の配列構造で記述されている。また、プラグイン毎の機能情報には、当該機能を利用するための設定が含まれている。次に、各プラグインの機能情報、及び画面レイアウト情報を説明する。
【０１０６】
図１２は、“borderline”プラグインの機能情報の例を示した図である。“borderline”プラグインは、集約時に区切り線を引く機能なので、図１２に示す例では、集約設定が“off”の場合、“borderline”機能が強制的にoffになるよう設定されている。
【０１０７】
図１３は、“borderline”プラグインの画面レイアウト情報の例を示した図である。図１３に示すように、“borderline”に関する設定を行うためにチェックボックスを表示すること、当該チェックボックスをｘ座標＝“170”、ｙ座標＝“30”に表示することが定義されている。この設定により、集約設定の右側にチェックボックスによるユーザ・インターフェイス（ＵＩ）が表示される。
【０１０８】
図１４は、“stamp”プラグインの機能情報の例を示した図である。“stamp”プラグインは、入力された文字列をスタンプ印字する機能とする。図１４に示す例では、フォントサイズの範囲等が設定されている。
【０１０９】
図１５は、“stamp”プラグインの画面レイアウト情報の例を示した図である。図１３に示すように、“stamp”に関する設定を行うためにエディットボックスを表示すること、当該エディットボックスをｘ座標＝“170”、ｙ座標＝“120”に表示することが定義されている。この設定により、画面の右下にエディットボックスによるユーザ・インターフェイス（ＵＩ）が表示される。
【０１１０】
そして、制御部１００２で制御されるプリンタドライバ２５０は、展開部１００６により展開されたプラグインを用いて、印刷を制御する。本実施の形態にかかるプリンタドライバ２５０は、展開されたプラグインの描画拡張モジュールのＡＰＩを呼び出して、プラグインを用いた制御を行う。
【０１１１】
特定部２６１は、クライアントＰＣ１１０のインストール部１００４からポイント・アンド・プリントを行うために呼び出された場合、プラグインアーカイブとプラグイン一覧情報とを格納するパスを特定する。本実施の形態にかかる特定部２６１は、プラグインディレクトリ１０１３を格納先のパスとして特定する。
【０１１２】
格納部１００５は、受信部１００３により受信したプラグインアーカイブとプラグイン一覧情報とを、プラグインディレクトリ１０１３に格納する。格納部１００５は、特定部２６１により特定されたパスに対して、プラグインアーカイブとプラグイン一覧情報とを格納する。
【０１１３】
次に、本実施の形態にかかる印刷制御システムにおけるドライバのインストールの処理について説明する。図１６は、本実施の形態にかかる印刷制御システムにおける上述した処理の手順を示すフローチャートである。図１６に示す例では、サーバＰＣ１００から、クライアントＰＣ１１０に対して、プリンタドライバ２５０をインストールする際の手順とする。
【０１１４】
まず、ユーザが、クライアントＰＣ１１０から、サーバＰＣ１００側にインストールされているプリンタを指定してPoint  and  Printを実行する（ステップＳ１６０１）。これにより、クライアントＰＣ１１０のＯＳ１００１に含まれる、インストール部１００４が、サーバＰＣ１００のＯＳ２０１に対して、ポイント・アンド・プリントに基づくドライバのインストールを要求する（ステップＳ１６０２）。
【０１１５】
これに伴い、サーバＰＣ１００における、ＯＳ２０１の送信部２０３が、クライアントＰＣ１１０のＯＳ１００１に含まれる受信部１００３に対して、プリンタドライバ２５０本体の構成ファイルを送信する（ステップＳ１６０３）。そして、クライアントＰＣ１１０のインストール部１００４が、受信した構成ファイルに基づいて、プリンタドライバ２５０のインストール制御を行う（ステップＳ１６０６）。これにより、クライアントＰＣ１１０にプリンタドライバ２５０がインストールされる。また、プリンタドライバ２５０の構成ファイルの１つであるポイント・アンド・プリント・ライブラリ２５２も、サーバＰＣ１００からクライアントＰＣ１１０にコピーされる。
【０１１６】
一方、サーバＰＣ１００において、ＯＳ２０１が、ポイント・アンド・プリント・ライブラリ２５２のGenerateCopyFilePaths()を呼び出す（ステップＳ１６０４）。このポイント・アンド・プリント・ライブラリ２５２は、レジストリ２１０の“Module”で予め設定されている。つまり、本実施の形態では、レジストリ２１０を参照することで、特定されたＡＰＩに対してＯＳ２０１が呼び出しを行っている。また、当該ＡＰＩを呼び出す際、引数として、ファイル送信元のディレクトリのパス、ファイル送信先のディレクトリのパス、サーバ側で呼び出していることを示すフラグ、を受け渡す。なお、ファイル送信元のディレクトリ名、及びファイル送信先のディレクトリ名は、レジストリ２１０のDirectoryキーで設定されたディレクトリのパスとする。
【０１１７】
そして、GenerateCopyFilePaths（）がサーバＰＣ１００側から呼び出された場合、サーバＰＣ１００内の特定部２６１は、送信するファイルが格納されたディレクトリのパスを特定する（ステップＳ１６０５）。つまり、特定部２６１は、GenerateCopyFilePaths（）がサーバＰＣ１００側として呼び出された際、GenerateCopyFilePaths（）の処理として、プラグイン一覧情報及びプラグインアーカイブが格納されたパスを返す。必要があればこれらのディレクトリのパスを書き換えて返すことで、送信元、送信先のディレクトリを変更する。
【０１１８】
一方、クライアントＰＣ１１０においても、ＯＳ１００１が、ポイント・アンド・プリント・ライブラリ２５２のGenerateCopyFilePaths()を呼び出す（ステップＳ１６０７）。なお、当該ＡＰＩを呼び出す際、引数として、ファイル送信元のディレクトリのパス、ファイル送信先のディレクトリのパス、クライアント側で呼び出していることを示すフラグ、を受け渡す。
【０１１９】
そして、GenerateCopyFilePaths（）がクライアントＰＣ１１０側から呼び出された場合、クライアントＰＣ１１０内の特定部２６１は、プラグインの格納先となるプラグインディレクトリ１０１３のパスを特定する（ステップＳ１６０８）。なお、特定する手順については後述する。その後、ポイント・アンド・プリント・ライブラリ２５２が、特定されたプラグインディレクトリ１０１３のパスを、ＯＳ１００１に返す（ステップＳ１６０９）。
【０１２０】
そして、クライアントＰＣ１１０のＯＳ１００１は、サーバＰＣ１００に対して、プラグインの送信要求を行う（ステップＳ１６１０）。当該送信要求を受けて、サーバＰＣ１００の特定部２６１は、ステップＳ１６０５で特定されたパスが指し示すディレクトリと、レジストリ２１０のFilesキーに設定されたファイル名と、から、送信するファイル群（プラグインアーカイブ及びプラグイン一覧情報）を特定し、送信部２０３が、特定されたファイル群を、クライアントＰＣ１１０の受信部１００３に対して送信する（ステップＳ１６１１）。
【０１２１】
その後、格納部１００５が、受信したファイル群を、ステップＳ１６０９で特定されたプラグインディレクトリ１０１３のパスに格納する（ステップＳ１６１２）。
【０１２２】
上述した処理手順により、クライアントＰＣ１１０に対して、プリンタドライバ２５０と、当該プリンタドライバ２５０のプラグインとがインストールされる。
【０１２３】
つまり、本実施の形態においては、レジストリ２１０で設定したパス及びファイル名が指し示すプラグイン一覧情報とプラグインアーカイブとを、クライアントＰＣ１１０に送信することで、ドライバのプラグインのインストールを行うこととした。
【０１２４】
ところで、本実施の形態においては、追加、削除などドライバにインストールされたプラグインが変化しても、当該プラグインアーカイブのファイル名は変化しない。このプラグインアーカイブのファイル名はレジストリ２１０に予め登録されているため、サーバＰＣ１００が、当該レジストリ２１０を参照して特定されたプラグインアーカイブを、クライアントＰＣ１１０に送信するだけで、クライアントＰＣ１１０が利用可能なプラグインが全て送信されたことになる。そして、クライアントＰＣ１１０側では、プラグインアーカイブとともに送信されたプラグイン一覧情報を参照することで、プラグインアーカイブにまとめられた全てのプラグインを認識できる。
【０１２５】
つまり、本実施の形態にかかる印刷制御システムにおいては、サーバＰＣ１００側ではドライバにどのようなプラグインがインストールされているか認識することなく、レジストリ２１０を参照して特定されたプラグインアーカイブ及びプラグイン一覧情報を送信するだけで、クライアントＰＣ１１０に全てのプラグインをインストールできる。このように、サーバＰＣ１００が、各プラグインを認識することなく、プラグインのインストール処理を行うことができるので、プラグインのインストールの処理負担を軽減できる。
【０１２６】
次に、図１６のステップＳ１６０５及びステップＳ１６０８で示した特定部２６１のGenerateCopyFilePaths()に基づく処理について説明する。図１７は、本実施の形態にかかる特定部２６１における上述した処理の手順を示すフローチャートである。
【０１２７】
特定部２６１が、GenerateCopyFilePaths()で呼び出された場合、引数を参照し、サーバＰＣ側で実行されているか否か判定する（ステップＳ１７０１）。サーバＰＣ側で実行されていると判定した場合（ステップＳ１７０１：Ｙｅｓ）、特に処理を行わず、引数で指定された送信元のディレクトリのパスなどを、呼び出し元（例えばＯＳ１００１）に返して終了する。
【０１２８】
一方、特定部２６１が、サーバＰＣ側で実行されていないと判定した場合（ステップＳ１７０１：Ｎｏ）、ＯＳ２０１のＡＰＩのSHGetSpecialFolderPathを利用して、ComonApplicationDataのパスを取得する（ステップＳ１７０２）。そして、特定部２６１は、取得したComonApplicationDataのパスに、“ドライバ名\Plugin”を連結し、送信先のディレクトリパスを生成する（ステップＳ１７０３）。
【０１２９】
そのあと、特定部２６１が、生成した送信先のディレクトリパスで、引数として受け取った送信先のディレクトリパスを書き換えた後、書き換えた送信先のディレクトリパスを、ＯＳ２０１に返す（ステップＳ１７０４）。
【０１３０】
これにより、クライアントＰＣ１１０において、プラグインの送信先のディレクトリのパスが設定される。図１７の処理を行うため、クライアントＰＣ１１０がGenerateCopyFilePaths()を呼び出す際に、引数でクライアント側を示すフラグを設定したのであれば、送信先のディレクトリパスが空のまま呼び出しても良い。
【０１３１】
上述した処理手順で、サーバＰＣ１００の送信元のディレクトリから、クライアントＰＣ１１０の送信先のディレクトリに対して、プラグイン一覧情報とプラグインアーカイブとが送信される。
【０１３２】
このとき、プリンタドライバの構成ファイルは、ドライバのインストール後から一切変更されていないので、ＯＳ２０１（例えばWindows（登録商標））の親和性を崩さずに、プラグインで拡張された機能をサーバＰＣ１００からクライアントＰＣ１１０に引き継ぐことができる。
【０１３３】
次に、本実施の形態にかかるクライアントＰＣ１１０における、設定画面の表示処理について説明する。図１８は、本実施の形態にかかるクライアントＰＣ１１０における上述した処理の手順を示すフローチャートである。
【０１３４】
まず、ＯＳ１００１が、プリンタドライバ２５０本体のＵＩドライバ２５４に対して画面表示を行うよう指示する（ステップＳ１８０１）。
【０１３５】
次に、ＵＩドライバ２５４が、プラグイン管理部２５５に対して初期化を要求する（ステップＳ１８０２）。そして、プラグイン管理部２５５は、プラグイン名の一覧を生成する（ステップＳ１８０３）。
【０１３６】
その生成の過程で、プラグイン管理部２５５は、レジストリ１０１０を参照してプラグインディレクトリ１０１３のパスを生成し、その下に格納されているプラグイン一覧情報を読み込む（ステップＳ１８０４）。
【０１３７】
その後、ＵＩドライバ２５４が、設定管理部２５３に対して、初期化を要求する（ステップＳ１８０５）。その後、設定管理部２５３が、プラグイン管理部２５５に対して機能情報の取得を要求する（ステップＳ１８０６）。
【０１３８】
これにより、プラグイン管理部２５５が、プリンタドライバ２５０本体の機能情報と、各プラグインの機能情報と、をマージする（ステップＳ１８０７）。当該マージの過程で、プラグイン管理部２５５は、ドライバ設定ディレクトリ１０１２に格納されている機能情報を読み込む（ステップＳ１８０８）。さらに、プラグイン管理部２５５は、ＯＳ１００１に対して、プラグインアーカイブの展開を要求する（ステップＳ１８０９）。当該要求に従って、ＯＳ１００１の展開部１００６が、プラグインアーカイブを展開する（ステップＳ１８１０）。
【０１３９】
そして、プラグイン管理部２５５は、展開された各プラグインの機能情報を読み込む。図１８に示すシーケンスでは、プラグイン管理部２５５は、borderlineプラグインの機能情報を読み込む（ステップＳ１８１１）とともに、stampプラグインの機能情報を読み込む（ステップＳ１８１２）。読み込んだ各機能情報は、ＸＭＬ形式で記載されている。このため、読み込んだ各機能情報のＸＭＬノードを、プラグイン管理部２５５がマージする。そして、プラグイン管理部２５５がマージしたＸＭＬノードを設定管理部２５３に受け渡す。そして、設定管理部２５３は、取得したＸＭＬノードを、（図示しない）メモリ上に保持する。
【０１４０】
その後、プラグイン管理部２５５が、ＤＥＶＭＯＤＥ１０１１の読み込みを行う（ステップＳ１８１３）。これにより、現在の設定値などを取得できる。
【０１４１】
そして、プラグイン管理部２５５が、読み込んだ現在の設定値等について、読み込んだ機能情報で設定されている定義（例えば、機能情報で定義されている値域や禁則）を鑑みて妥当か否か判定する（ステップＳ１８１４）。
【０１４２】
次に、ＵＩドライバ２５４が、プラグイン管理部２５５に対して、画面レイアウト情報の取得を要求する（ステップＳ１８１５）。
【０１４３】
これにより、プラグイン管理部２５５が、プリンタドライバ２５０本体の画面レイアウト情報と、各プラグインの画面レイアウト情報と、をマージする（ステップＳ１８１６）。当該マージの過程で、プラグイン管理部２５５は、ドライバ設定ディレクトリ１０１２に格納されている機能情報を読み込む（ステップＳ１８１７）。
【０１４４】
そして、プラグイン管理部２５５は、各プラグインの画面レイアウト情報を読み込む。図１８に示すシーケンスでは、プラグイン管理部２５５は、borderlineプラグインの画面レイアウト情報を読み込む（ステップＳ１８１８）とともに、stampプラグインの画面レイアウト情報を読み込む（ステップＳ１８１９）。このようにして読み込んだ各画面レイアウト情報のＪＳＯＮオブジェクトを、プラグイン管理部２５５がマージする。そして、マージされたＪＳＯＮオブジェクトは、ＵＩドライバ２５４に送られる。
【０１４５】
その後、ＵＩドライバ２５４が、ＪＳＯＮオブジェクトを元に設定画面の画面レイアウトを生成する（ステップＳ１８２０）。そして、ＯＳ１００１の表示部１００７が、生成された設定画面を表示する。
【０１４６】
さらに、ＵＩドライバ２５４は、設定管理部２５３から、設定値を取得する（ステップＳ１８２１）。次に、ＵＩドライバ２５４は、設定画面の画面レイアウトに対して、設定値を反映する（ステップＳ１８２２）。これにより、表示部１００７が、設定値が反映された設定画面を表示する。
【０１４７】
上述した処理手順により、クライアントＰＣ１１０において、ドライバ本体及びプラグインの情報（機能情報や画面レイアウト情報）がマージされた設定画面を表示することができる。
【０１４８】
図１９は、上述した処理手順により、表示部１００７により表示される設定画面の例を示した図である。図１９に示す設定画面では、図１１の設定画面の例と比べて、“Borderline”のチェックボックス１９０１と、“Stamp”のエディットボックス１９０２と、が追加されている。
【０１４９】
図１９に示す画面例では、“Borderline”のチェックボックス１９０１が利用不可能かつOFF固定で表示されている。また、網線で囲っている“Borderline”も半輝度で表示される。これは、図１９の画面例で、“Layout”の項目で“off”が選択されている場合、“Borderline”の機能情報（図１２）の「<constraint  fixvalue=“off”><condition  expression  =  “layout!=off”/></constraint>」の記述に基づき、禁則を受けるためである。
【０１５０】
次に、本実施の形態にかかるクライアントＰＣ１１０における、印刷制御について説明する。図２０は、本実施の形態にかかるクライアントＰＣ１１０における上述した処理の手順を示すフローチャートである。
【０１５１】
なお、印刷処理では、ジョブの開始/終了、ページの開始/終了、描画オブジェクトなどのイベントごとに該当する描画ドライバのＡＰＩがＯＳ１００１から呼ばれるが、図２０に示すシーケンスでは、ページの開始の例のみを示した。それ以外のＡＰＩにおいても全く同じシーケンスで処理が行われるものとする。
【０１５２】
まず、ＯＳ１００１が、プリンタドライバ２５０本体の描画ドライバ２５１に対してページ印刷を開始するよう指示する（ステップＳ２００１）。
【０１５３】
次に、描画ドライバ２５１が、プラグイン管理部２５５に対して初期化を要求する（ステップＳ２００２）。そして、プラグイン管理部２５５は、プラグイン名の一覧を生成する（ステップＳ２００３）。
【０１５４】
そのプラグイン名の生成の過程で、プラグイン管理部２５５は、レジストリ１０１０を参照してプラグインディレクトリ１０１３のパスを生成し、その下に格納されているプラグイン一覧情報を読み込む（ステップＳ２００４）。
【０１５５】
その後、描画ドライバ２５１が、設定管理部２５３に対して、初期化を要求する（ステップＳ２００５）。その後、設定管理部２５３が、プラグイン管理部２５５に対して機能情報の取得を要求する（ステップＳ２００６）。
【０１５６】
これにより、プラグイン管理部２５５が、プリンタドライバ２５０本体の機能情報と、各プラグインの機能情報と、をマージする（ステップＳ２００７）。当該マージの過程で、プラグイン管理部２５５は、ドライバ設定ディレクトリ１０１２に格納されている機能情報を読み込む（ステップＳ２００８）。
【０１５７】
そして、プラグイン管理部２５５は、各プラグインの機能情報を読み込む。図２０に示すシーケンスでは、プラグイン管理部２５５は、borderlineプラグインの機能情報を読み込む（ステップＳ２００９）とともに、stampプラグインの機能情報を読み込む（ステップＳ２０１０）。読み込んだ各機能情報は、ＸＭＬ形式で記載されている。このため、読み込んだ各機能情報のＸＭＬノードを、プラグイン管理部２５５がマージする。そして、プラグイン管理部２５５がマージしたＸＭＬノードを設定管理部２５３に受け渡す。そして、設定管理部２５３は、取得したＸＭＬノードを、（図示しない）メモリ上に保持する。
【０１５８】
その後、プラグイン管理部２５５が、ＤＥＶＭＯＤＥ１０１１の読み込みを行う（ステップＳ２０１１）。これにより、現在の設定値などを取得できる。
【０１５９】
そして、プラグイン管理部２５５が、読み込んだ現在の設定値等について、読み込んだ機能情報で設定されている定義（例えば、機能情報で定義されている値域や禁則）を鑑みて妥当か否か判定する（ステップＳ２０１２）。
【０１６０】
次に、描画ドライバ２５１が、プラグイン管理部２５５に対して、機能情報の取得を要求する（ステップＳ２０１３）。これにより、描画ドライバ２５１が、読み込んだ現在の設定値等を取得する。
【０１６１】
その後、描画ドライバ２５１が、印刷するページの描画処理を行い、描画データを生成する（ステップＳ２０１４）。
【０１６２】
次に、描画ドライバ２５１が、引数として描画データと、設定値の一覧と、を受け渡した上で、ページに関する処理を、プラグイン管理部２５５に対して要求する（ステップＳ２０１５）。
【０１６３】
プラグイン管理部２５５は、ステップＳ２００３で生成したプラグイン名の一覧を参照して、各プラグインの描画拡張モジュールを認識する。そして、プラグイン管理部２５５は、プラグインアーカイブから展開された各プラグインの描画拡張モジュールに対して、ページ開始のＡＰＩを呼び出す。図２０で示すシーケンスでは、プラグイン管理部２５５は、borderlineプラグインの描画拡張モジュールのページ開始のＡＰＩを呼び出す（ステップＳ２０１６）。その際に、描画データと、設定値の一覧とを、受け渡す。さらに、プラグイン管理部２５５は、stampプラグインの描画拡張モジュールのページ開始のＡＰＩを呼び出す（ステップＳ２０１７）。その際に、描画データと、設定値の一覧とを、受け渡す。これら描画拡張モジュールのページ開始のＡＰＩが呼び出された際、各プラグインの描画拡張モジュールは、引数として受け渡された設定値の一覧を参照し、描画処理を行う必要がある場合に、描画データに対して、必要な描画を行う。そして、描画などがなされた後、描画ドライバ２５１に描画データが返される。
【０１６４】
その後、描画ドライバ２５１が、返された描画データを、ＯＳ１００１に出力する（ステップＳ２０１８）。そして、ＯＳ１００１が、描画データを、プリンタ１５０に対して送信する（ステップＳ２０１９）。これにより、描画データに基づく印刷がなされる。
【０１６５】
以上のように、クライアントＰＣ１１０では、ドライバ本体とプラグインとを組み合わせた描画処理を実行することが可能となる。
【０１６６】
次に、サーバＰＣ１００に対してプラグインを追加する際の処理について説明する。図２１は、プラグインインストーラパッケージの構成を示した図である。図２１に示すようにプラグインインストーラパッケージ２１００は、プラグインインストーラ２１０１と、プラグイン情報２１０２と、プラグイン“stamp”の構成ファイル２１０３と、を含むディレクトリとする。なお、当該ディレクトリをアーカイブしたものでも良い。
【０１６７】
プラグインインストーラ２１０１は、プラグインインストーラの実行形式ファイルとする。
【０１６８】
プラグイン“stamp”の構成ファイル２１０３は、stamp機能を実現するための機能情報、画面レイアウト情報、描画拡張モジュールを含んだ構成とする。
【０１６９】
プラグイン情報２１０２は、プラグイン“stamp”に関する設定が記述された情報である。図２２は、プラグインインストーラパッケージ２１００に含まれるプラグイン情報の例を示した図である。図２２に示すように、当該プラグインの名称が“stamp”であること、及びバージョンが“1.1.010”であることが記載されている。そして、当該プラグイン情報２１０２は、インストール時に、プラグイン一覧情報に追加される。
【０１７０】
サーバＰＣ１００に対してプラグインインをインストールする際の処理について説明する。図２３は、本実施の形態にかかるサーバＰＣ１００における上述した処理の手順を示すフローチャートである。図２３に示すフローチャートでは、プラグインインストーラを実行して、プラグインディレクトリに新たなプラグインを追加する。
【０１７１】
まず、プラグインインストーラパッケージ２１００に含まれるプラグインインストーラ２１０１が起動される。起動したプラグインインストーラ２１０１は、プラグインを追加する対象となるドライバ名を取得する（ステップＳ２３０１）。例えば、プラグインインストーラ２１０１は、ＯＳ２０１からインストール済みのドライバ一覧を取得し、当該一覧の中からいずれのドライバに対してプラグインを追加するかをユーザに問い合せる等が考えられる。そして、ユーザに選択されたドライバに対して、プラグインを追加していくことになる。
【０１７２】
そして、プラグインインストーラ２１０１は、レジストリ２１０から、取得したドライバ名が指し示すドライバのプラグインディレクトリのパスを取得する（ステップＳ２３０２）。このプラグインディレクトリの特定手法は、上述した手法と同様とする。そして、取得したプラグインディレクトリのパスにプラグインがインストールされる。
【０１７３】
次に、プラグインインストーラ２１０１は、特定したプラグインディレクトリに、既に同じプラグインが追加されているか否かを判定する（ステップＳ２３０３）。当該判定では、例えば、プラグインディレクトリ２１３内のプラグイン一覧情報に、プラグインインストーラパッケージ２１００内のプラグイン情報２１０２のプラグインと同一名称が含まれているか否かに基づいて判定する。
【０１７４】
そして、プラグインインストーラ２１０１が、追加されていないと判定した場合（ステップＳ２３０３：Ｎｏ）、継続してプラグインの追加処理を行う。図２３に示すシーケンス図では、プラグインインストーラ２１０１は、書込部２０４を呼び出して、プラグインディレクトリ２１３のプラグイン一覧情報に対して、プラグインインストーラ２１０１内のプラグイン情報２１０２をマージする(ステップＳ２３０５)。本実施の形態では、プラグインインストーラ２１０１に呼び出された書込部２０４が、プラグイン一覧情報の末尾に、プラグイン情報を追加する書き込みを行う。
【０１７５】
その後、プラグインインストーラ２１０１が、プラグインアーカイブに対して、新しいプラグインの構成ファイル（例えば“stamp”の構成ファイル２１０３）を追加する（ステップＳ２３０６）。例えば、“borderline”プラグインがインストールされた後の状態で、そして、プラグインインストーラ２１０１が、“stamp”プラグインを追加する場合、プラグインインストーラパッケージ内の“stamp”の構成ファイル２１０３を、プラグインアーカイブに追加すると、図８に示すようなプラグインアーカイブが生成される。また、プラグイン情報２１０２が追加されると、図７に示すようなプラグイン一覧情報が生成される。そしてインストールの処理が、終了する。
【０１７６】
一方、プラグインインストーラ２１０１が、同じプラグインが追加されていると判定した場合（ステップＳ２３０３：Ｙｅｓ）、まず、プラグインインストーラ２１０１は、プラグインディレクトリ内にすでに追加されている同一プラグインのバージョン情報と比べて、プラグインインストーラパッケージ２１００内のプラグインのバージョン情報が新しいか否かを判定する（ステップＳ２３０４）。新しくないと判定した場合（ステップＳ２３０４：Ｎｏ）、処理を終了する。
【０１７７】
一方、プラグインインストーラ２１０１が、プラグインインストーラパッケージ２１００内のプラグインのバージョン情報が新しいと判定した場合（ステップＳ２３０４：Ｙｅｓ）、プラグインインストーラ２１０１が書込部２０４を呼び出し、書込部２０４が、すでにプラグイン一覧情報に記載されているプラグイン情報を、新しいプラグイン情報で上書きする（ステップＳ２３０７）。
【０１７８】
さらに、プラグインインストーラ２１０１は、プラグインアーカイブに対して、新しいプラグインの構成ファイルで上書きし、処理を終了する（ステップＳ２３０８）。例としては、すでにプラグインアーカイブに格納されている“stamp”プラグインのバージョンが1.0.0.0で、追加しようとしている“stamp”プラグインのバージョンが1.1.0.0の場合、プラグインインストーラ２１０１は、プラグイン情報の“stamp”のバージョン情報を1.1.0.0で上書きし、“stamp”ディレクトリ内のファイルもすべて新しいファイルで上書きする。
【０１７９】
上述した処理手順により、サーバＰＣ１００にインストールされているドライバについて、プラグインの追加、更新を行うことができる。これにより、サーバＰＣ１００にプラグインの追加、更新が行われた場合、それ以降、クライアントＰＣ１１０が、当該ドライバをインストールする際、追加、更新がなされたプラグインも同時にインストールされる。これにより、ユーザがドライバをインストールする際の負担を軽減できる。
【０１８０】
このように、本実施の形態では、ドライバをプラグインで拡張した機能であっても、ＯＳとの親和性を崩さずに、ポイント・アンド・プリントでクライアントＰＣ１１０側に引き継げる。
【０１８１】
このように、本実施の形態では、ポイント・アンド・プリントで、クライアントＰＣ側に拡張機能を引き継げる、ドライバのプラグインの仕組みを実現することを可能とした。
【０１８２】
さらに、ポイント・アンド・プリントを行うダイナミック・リンク・ライブラリをドライバの構成ファイルに含めることで、クライアントＰＣ及びサーバＰＣに当該ライブラリがインストールされることになる。これにより、ポイント・アンド・プリントのイベント時に、クライアントＰＣ及びサーバＰＣのそれぞれから当該ライブラリを呼び出すことで、クライアントＰＣ及びサーバＰＣのそれぞれがプラグインを送信するために適切な処理を行うことができる。つまり、容易にプラグインのファイルをサーバＰＣからクライアントＰＣに送信させることができる。
【０１８３】
（変形例１）
第１の実施の形態では、クライアントＰＣと、サーバＰＣと別構成として示した。しかしながら、第１の実施の形態は、説明を容易にするために、クライアントＰＣと、サーバＰＣと、別の構成として示したものであり、クライアントＰＣと、サーバＰＣと、が同一構成でも良い。
【０１８４】
そこで、変形例として、クライアントＰＣとサーバＰＣとが同一構成の例について説明する。当該変形例では、クライアントＰＣ及びサーバＰＣともに、プリンタドライバと、送信部と、書込部と、受信部と、インストール部と、格納部と、展開部と、表示部と、を備えている。なお、各構成が行う処理は、第１の実施の形態と同様として説明を省略する。
【０１８５】
（変形例２）
第１の実施の形態では、ポイント・アンド・プリントでプリンタドライバを、サーバＰＣからクライアントＰＣにインストールする例について説明した。しかしながら、プリンタドライバのインストール制限するものではなく、他のオフィス機器等であっても良い。オフィス機器の例としては、例えば、ネットワークスキャナなどであってもよい。変形例２においては、ネットワークスキャナのドライバを管理するサーバＰＣに対して、クライアントＰＣが、ドライバのインストールを要求する。これにより、ネットワークスキャナのドライバのインストールと、当該ドライバのプラグインのインストールとが行われる。なお、その際の手順は、第１の実施の形態と同様として説明を省略する。また、オフィス機器以外でもよく、例えばデジタルスチルカメラ等などのＰＣに接続可能な周辺機器でも良い。
【０１８６】
図２４は、本実施の形態及び変形例のサーバＰＣ及びクライアントＰＣのハードウェア構成を示した図である。図２４に示すように上述した実施の形態及び変形例のサーバＰＣ及びクライアントＰＣは、ＣＰＵ２４０１と、ＲＯＭ（Read  Only  Memory）２４０２やＲＡＭ２４０３と、ＨＤＤ２４０６と、通信Ｉ／Ｆ２４０４と、ディスプレイ装置などの表示装置２４０５と、これらを接続するバス２４０７と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０１８７】
上述した実施の形態及び変形例のサーバＰＣ又はクライアントＰＣで実行されるＯＳやプリンタドライバは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１８８】
また、上述した実施の形態及び変形例のサーバＰＣ又はクライアントＰＣで実行されるＯＳやプリンタドライバを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のＯＳやプリンタドライバをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１８９】
上述した実施の形態及び変形例のサーバＰＣ又はクライアントＰＣで実行されるＯＳやプリンタドライバは、それぞれ上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ２４０１が上記記憶媒体からＯＳやプリンタドライバを読み出して実行することにより上記各部が主記憶装置上にロードされ、上記各部が主記憶装置上に生成されるようになっている。
【符号の説明】
【０１９０】
１００  サーバＰＣ
１１０  クライアントＰＣ
１５０  プリンタ
１６０  ネットワーク
２０１、１００１  ＯＳ
２０２、１００２  制御部
２０３  送信部
２０４  書込部
２１０、１０１０  レジストリ
２１１、１０１１  ＤＥＶＭＯＤＥ
２１２、１０１２  ドライバ設定ディレクトリ
２１３、１０１３  プラグインディレクトリ
２５０  プリンタドライバ
２５１  描画ドライバ
２５２  ポイント・アンド・プリント・ライブラリ
２５３  設定管理部
２５４  ＵＩドライバ
２５５  プラグイン管理部
２６１  特定部
１００３  受信部
１００４  インストール部
１００５  格納部
１００６  展開部
１００７  表示部
【先行技術文献】
【特許文献】
【０１９１】
【特許文献１】特開２００９−１９９２６１号公報
【図１】
0005625477.tif 000002
【図２】
0005625477.tif 000003
【図３】
0005625477.tif 000004
【図４】
0005625477.tif 000005
【図５】
0005625477.tif 000006
【図６】
0005625477.tif 000007
【図７】
0005625477.tif 000008
【図８】
0005625477.tif 000009
【図９】
0005625477.tif 000010
【図１０】
0005625477.tif 000011
【図１１】
0005625477.tif 000012
【図１２】
0005625477.tif 000013
【図１３】
0005625477.tif 000014
【図１４】
0005625477.tif 000015
【図１５】
0005625477.tif 000016
【図１６】
0005625477.tif 000017
【図１７】
0005625477.tif 000018
【図１８】
0005625477.tif 000019
【図１９】
0005625477.tif 000020
【図２０】
0005625477.tif 000021
【図２１】
0005625477.tif 000022
【図２２】
0005625477.tif 000023
【図２３】
0005625477.tif 000024
【図２４】
0005625477.tif 000025