以下に添付図面を参照して、この発明にかかるドライバ制御システム、及びドライバ制御方法の一実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、第1の実施の形態にかかる印刷制御システムの構成を示すブロック図である。図1に示すように、印刷制御システムは、ネットワーク160を介して、サーバPC100と、クライアントPC110と、プリンタ150と、が接続されている。サーバPC100は、クライアントPC110に対してドライバのインストール制御を行うことが可能なPCとする。このインストール制御には、例えば、ポイント・アンド・プリントを用いてもよい。
図2は、本実施の形態にかかるサーバPC100の機能ブロックを示した図である。図2に示すようにサーバPC100は、OS201が搭載されており、当該OS201が、サーバPC100に搭載された(図示しない)アプリケーションや、ハードウェアを制御する。
OS201は、プリンタドライバ250と、制御部202と、送信部203と、書込部204と、レジストリ210と、DEVMODE211と、ドライバ設定ディレクトリ212と、プラグインディレクトリ213と、を備えている。本実施の形態においては、OS201として、MS-Windows(登録商標)が搭載されている例について説明する。
つまり、本実施の形態では、MS-Windows(登録商標)で提供されているポイント・アンド・プリントを用いたドライバのインストールを例に説明する。しかしながら、当該ポイント・アンド・プリントと同等のインストールを実現する機能があれば他のOSであっても良い。
プリンタドライバ250は、描画ドライバ251と、ポイント・アンド・プリント・ライブラリ252と、設定管理部253と、UIドライバ254と、プラグイン管理部255と、を備えている。そして、このプリンタドライバ250は、プリンタ150を制御するためのドライバであり、サーバPC100からクライアントPC110に対して提供可能なドライバとする。
描画ドライバ251は、OS(サーバPC100のOS201や、クライアントPCのOS)からプリンタ150を制御するために必要なプリンタドライバ250の構成モジュールである。そして、描画ドライバ251は、描画処理を行い、描画データを生成する。
ポイント・アンド・プリント・ライブラリ252は、特定部261を備え、サーバPC100に対して、クライアントPC110からポイント・アンド・プリントが行われた際に、呼び出されるダイナミック・リンク・ライブラリ(モジュール群)とする。本実施の形態にかかるポイント・アンド・プリント・ライブラリ252は、ポイント・アンド・プリント時に呼び出された場合、クライアントPC110又はサーバPC100のどちらかで呼び出されたのかに応じてそれぞれ異なる制御を行う。これにより、クライアントPC110及びサーバPC100の間で、プリンタドライバ250の構成ファイル以外のファイルを送信するため制御が行われる。
特定部261は、ポイント・アンド・プリント時に、サーバPC100側から呼び出された場合、クライアントPC110に送信するファイルを特定する。本実施の形態にかかる特定部261は、プリンタドライバ250のプラグインがまとめてアーカイブされた所定のファイル(以下、プラグインアーカイブと称す)と、プラグインアーカイブに格納されたプラグインを認識するためのプラグイン一覧情報と、をクライアントPC110へ送信するファイルとして特定する。
また、特定部261は、ポイント・アンド・プリント時に、クライアントPC110側で呼び出された場合、プラグインの格納先となるパスを特定する。
つまり、ポイント・アンド・プリント・ライブラリ252を、プリンタドライバ250に含ませて、ポイント・アンド・プリント時に、サーバPC100及びクライアントPC110で呼び出されることで、プリンタドライバ250のプラグインのインストールを実現する。このインストールを実現するための制御として、サーバPC100側においては、送信する対象となるファイルを特定している。
設定管理部253は、プリンタドライバ250の機能や設定を管理するモジュールとする。設定管理部253が管理する設定としては、例えば、現在の設定値、各機能の値域、及び各機能間の禁則とする。これらの機能や設定の書き出しや読み出しは、レジストリ210や、DEVMODE211に対して行う。
UIドライバ254は、OS201からプリンタ150を制御するために必要なプリンタドライバの構成モジュールであり、設定画面や、インストール時の初期設定画面などを表示するGUI(Graphic User Interface)として機能する。
プラグイン管理部255は、プラグインに関する制御を行うモジュールとする。本実施の携帯にかかるプラグイン管理部255は、プリンタドライバ250本体に対する設定と、プラグインに対する設定と、をマージして、呼び出し側にプラグインの構成を意識させないよう制御する。
また、プラグイン管理部255は、各印刷命令に従って、インストールされたプラグインに含まれる描画拡張モジュールの該当する処理を呼び出し、プラグイン毎に行われる制御(例えば描画制御)を実現する。
具体的には、プラグイン管理部255は、プリンタドライバ250による制御を行う際、プラグイン一覧情報に従って、プラグインアーカイブにまとめてアーカイブされている、各プラグインを用いた制御を行う。
次に、プリンタドライバ250以外の構成について説明する。制御部202は、プリンタドライバ250など、OS201に搭載された様々なドライバの制御を行う。
書込部204は、情報の書き込み制御を行う。例えば、書込部204は、プリンタドライバ250に対してプラグインを追加する際、当該プラグインのインストーラからの呼び出しに応じて、プラグインアーカイブにプラグインを追加する書き込みを行うとともに、プラグインアーカイブに追加するプラグインを認識させるプラグイン情報を、プラグイン一覧情報に書き込む。本実施の形態にかかるプラグイン情報は、プラグインの名称と、当該プラグインのバージョン情報と、を含む。
送信部203は、クライアントPC110に対して、情報を送信する制御を行う。送信対象としては、プリンタドライバ250等のドライバと、当該ドライバに対して追加されたプラグインがまとめてアーカイブされたプラグインアーカイブと、プラグイン一覧情報などがある。
なお、バージョン情報は、プラグインを追加するか否かを基準として用いられる。例えば、新たにプラグインが追加される場合、同一名称のプラグインがすでに追加されているのであれば、バージョン情報を確認し、バージョン情報が新しい場合に限ってインストールを継続する等とする。
ドライバ設定ディレクトリ212は、プリンタドライバ250が処理を行う際に参照する設定情報が格納されたディレクトリとする。ドライバ設定ディレクトリ212は、機能情報と、画面レイアウト情報と、を保持する。
機能情報は、プリンタドライバ250の各機能の機能名、ユーザ・インターフェイスの種類(選択肢か、文字列か、数値か)、値域、機能間の禁則が記述された情報を示している。本実施の形態においては、機能情報はXML形式で記述されているものとする。
図3は、プリンタドライバ250で用いられる機能情報の例を示した図である。図3に示すように、プリンタドライバ250で利用可能な機能毎に、“item”タグが定義されている。
つまり機能毎の設定を示す情報が、各“item”タグ内に格納されている。この“item”タグは、“name”と“type”の属性を有している。属性“name”は、各機能設定の名前を示している。属性typeは、入力される設定値の形式を示している。
属性“name”が“layout”のタグは集約設定を保持していることを示している。属性“name”が“booklet”のタグは製本設定を保持していることを示している。属性“name”が“papersize”のタグは印刷用紙設定を保持していることを示している。属性“name”が“copies”のタグは部数設定を保持していることを示している。属性“name”が“userid”のタグは利用者別ID設定を保持していることを示している。
また、属性“type”として設定される値について説明する。“pickone”は、選択肢形式であることを示している。“string”は、文字列入力形式であることを示している。“number”は、数値入力形式であることを示している。
また、“item”タグは、図3の集約設定のように、“constraint”タグ301を保持することができる。“constraint”タグ301は、親タグである“item”タグの設定の禁則情報を表している。属性“fixvalue”は、“constraint”タグに禁則条件が合致している場合に強制的に変更するか否かを示す属性とする。
また、“constraint”タグは、図3の集約設定のように“condition”タグ302を保持することができる。“condition”タグは、親タグである“constraint”タグの禁則条件を保持している。例えば、属性“expression”は、当該禁則条件を示している。具体的には、“layout”は、“booklet”に“on”が設定されている場合に禁則条件に合致し、“off”という設定値に強制的に変更される。
“pickone”タグは、親タグである“item”タグの“type”が選択肢形式の場合に、選択肢毎の情報を保持している。“pickone”タグ内の属性“name”は、当該タグの選択肢を表す設定値とする。また、図3に示す例では、記述されていないが、“constraint”タグを有することができる。このように、“pickone”タグ自体、すなわち選択肢自体も、禁則情報を保持することができる。
次に、“pickone”タグの属性“name”の各設定値について説明する。タグ“layout”内における、“off”は機能オフ、“2in1”は2in1印刷、“4in1”は4in1印刷、“on”は機能オン、“a3”はA3用紙、“a4”はA4用紙、という選択肢を示している。
“range”タグは、親タグ“item”タグの“type”が数値形式の場合に、選択可能な範囲が定義されている。この“range”タグ内の属性“min”は設定可能な最小値を、“max”は設定可能な最大値を保持している。
“string”タグは、親タグ“item”タグの“type”が文字列形式の場合に、選択可能な文字列が定義されている。この“string”タグ内の属性“min”は最小文字数を、属性“max”は最大文字数を保持している。また、属性“chartype”は文字の種類を保持している。例えば属性“chartype”が、“alphanumeric”の場合に、数値とアルファベットの文字列が入力可能であることを示している。
画面レイアウト情報は、プリンタドライバ250に関する設定画面が表示された際、当該設定画面のレイアウト(UIの種類、座標、紐付けられる機能名)を特定するための情報が記述されている。
図4は、プリンタドライバ250で用いられる画面レイアウト情報の例を示した図である。図4に示す例は、画面レイアウト情報をJSON形式で記述した例とする。
図4のように、画面レイアウト情報では、UIコンポーネント毎にレイアウトを特定するための情報(レイアウトデータと称す)が記述されている。このUIコンポーネント毎のレイアウトデータは、それぞれ属性“type”、属性“name”、属性“axis”を有している。
属性“type”は、UIコンポーネントの種類を示している。“type”の値において、“ComboBox“が設定されている場合はコンボボックスコンポーネントを、“CheckBox“が設定されている場合はチェックボックスコンポーネントを、“SpinBox“が設定されている場合はスピンボックスコンポーネントを、“EditBox“が設定されている場合はエディットボックスコンポーネントで表示することを示している。
属性“name”は、設定の名前を示している。属性“name“の値として、“layout“が設定されている場合は集約設定、“booklet“が設定されている場合は製本設定、“papersize“が設定されている場合は印刷用紙設定、“copies“が設定されている場合は部数設定、“userid“が設定されている場合は利用者別ID設定であることを示している。
属性“axis”は、表示位置の座標を示している。属性“axis”が保持する属性“x”はダイアログボックスの左上原点からの水平方向座標を、属性“y”は垂直方向座標を指定している。
例えば、欄401内で設定された集約設定は、コンボボックスコンポーネントで水平位置“25”、垂直位置“30”に表示することが記述されている。
レジストリ210は、サーバPC100のOS201や、OS201上で動作するアプリケーションの設定が格納されたデータベースとする。本実施の形態にかかるレジストリ210は、ポイント・アンド・プリントを行う際に、ドライバの構成ファイル以外のファイルを送信するために必要な設定を保持している。この必要な設定の例としては、送信対象となるプラグインのファイルが格納されたディレクトリを示すパスや、送信対象となるファイルを特定するファイル名などがある。
図5は、ポイント・アンド・プリントを行うためにレジストリ210に格納された設定の例を示した図である。当該設定がなされたことで、ポイント・アンド・プリント時にドライバ構成ファイル以外のファイルを送信させることが可能となる。
レジストリキーとしては、例えば、「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\ドライバ名」の下に「CopyFiles\任意の名前」のキーが存在し、その下に図5で示したサブキーが格納されているものとする。本実施の形態では、「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\DriverA\CopyFiles\Plugin」の下に格納されているものとする。次にサブキーの意味について説明する。
“Dierectory”は、クライアントPC110に送信するファイルが置いてあるディレクトリを示すパスを保持している。このディレクトリを示すパスは、ポイント・アンド・プリント・ライブラリ252のGenerateCopyFilePathsAPIを呼び出すことで変更できる。本実施の形態にかかる“Dierectory”には、プラグインディレクトリ213を表す“C:\Documents and Settings\All Users\Application Data\DriverA\Plugin”が保持されている。
“Files”は、“Directory”で示されたディレクトリ(プラグインディレクトリ213)内に格納されたファイルのうち、送信するファイルの一覧を保持している。本実施の形態にかかる“Files”には、プラグイン一覧情報“plugin_info.json”と、プラグインアーカイブ“plugin_archive.zip”を示すファイル名を保持している。
“Module”は、ポイント・アンド・プリントの処理を行う際に、呼び出すライブラリ(ダイナミック・リンク・ライブラリ)を示すファイル名を保持している。本実施の形態にかかる“Module”は、ポイント・アンド・プリント・ライブラリ252を示すファイル名“ppmodule.dll”を保持している。
この呼び出す対象となるライブラリ(ポイント・アンド・プリント・ライブラリ252)は、GenerateCopyFilePaths()と、SpoolerCopyFileEvent()のAPIを実装したダイナミック・リンク・ライブラリとする。
GenerateCopyFilePathsは、サーバPC100、クライアントPC110のそれぞれで呼び出されるAPIであり、図2の特定部261に相当する。このGenerateCopyFilePaths(特定部261)は、送信元や送信先のディレクトリのパス等を特定する際に呼び出される。
SpoolerCopyFileEventは、クライアントPC110で動作するAPIであり、ポイント・アンド・プリントの接続開始/終了などのイベントを通知する。なお、具体的な通知制御については省略する。
DEVMODE211は、プリンタドライバ250の設定を保存するために、OS201側によって提供された構造体とする。例えば、DEVMODE211は、プリンタドライバ250に対して行われた現在の設定値などを保持する。
プラグインディレクトリ213は、プリンタドライバ250のプラグインを保存するためのディレクトリとする。本実施の形態にかかるプラグインディレクトリ213は、プラグイン一覧情報と、プラグインアーカイブとを、格納する。
プリンタドライバ250のインストール直後に、プリンタドライバ250が所定のパスに、プラグインディレクトリ213を生成する。そして、プリンタドライバ250が、初期のプラグイン一覧情報と、初期のプラグインアーカイブと、をプラグインディレクトリ213に生成する(なお、コピー等であっても良い)。
その後、プリンタドライバ250に対してプラグインが追加される際、当該ディレクトリのプラグイン一覧情報とプラグインアーカイブとに、プラグインに関する情報が追加されていく。これにより、プリンタドライバ250の機能を拡張できる。
具体的には、プリンタドライバ250に対してプラグインが追加された場合、当該プラグインを認識させるプラグイン情報をプラグイン一覧情報に対して追加するとともに、当該プラグインが追加されたプラグインアーカイブを生成する。なお、本実施の形態において、プラグインの追加は、プリンタドライバ250自体は関与せず、外部のツールなどによって行われるものとする。
次に、プラグイン一覧情報の初期状態について説明する。図6は、プラグイン一覧情報の初期状態を示した図である。図6に示すように、プラグイン一覧情報は、初期状態ではなんの情報も格納されていない。つまり、プリンタドライバ250のインストール直後においては、利用可能なプラグインが存在しないことを示している。そして、プラグインが追加される毎に、追加されたプラグインの名称や、当該プラグインに関する情報が書込部204により書き込まれる。また、本実施の形態は、プラグイン一覧情報のフォーマットとして、JSON(Java(登録商標)Script Object Notation)形式を用いた例とするが、他のフォーマットを用いても良い。
また、プラグインアーカイブも初期状態で、何の情報も格納されていないものとする。本実施の形態では、プラグインアーカイブは、各プラグインをまとめてZIP圧縮したアーカイブファイルとする。つまり、プラグインアーカイブは、プラグインが追加されていない初期状態では空のZIPファイルであり、プラグインが追加される毎に今まで追加されたプラグインをまとめたZIPファイルが生成される。
次に、プラグインが追加されたプラグイン一覧情報と、プラグインアーカイブと、について説明する。なお、当該説明では、borderlineプラグインとstampプラグインとの2つのプラグインが追加された例とする。
図7は、2つのプラグインが追加されたプラグイン一覧情報の例を示した図である。図7に示すように、プラグイン一覧情報は、JSON形式によるテーブルとして機能する。そして、プラグイン一覧情報において、プラグインの名称が、キーとして機能するObjectとする。そして、キーに対応する値は、当該プラグインに対応する参照可能な情報として設定されている。なお、図7に示す例は、参照可能な情報として、プラグインのバージョンが記述された例とする。
図8は、2つのプラグインが追加されたプラグインアーカイブの例を示した図である。図8に示すように、プラグインアーカイブは、プラグイン一覧情報に記述されているプラグインの名称と同一のディレクトリを有する。つまり、プラグインアーカイブには、Borderlineディレクトリ801と、Stampディレクトリ802と、の2つが含まれている。そして、プリンタドライバ250は、プラグイン一覧情報に書き込まれたプラグインの名称に基づいて、プラグインアーカイブ内の、各プラグインのモジュールの格納されたディレクトリを特定する。
図8の、プラグインアーカイブ内の各ディレクトリには、機能情報と、画面レイアウト情報と、描画拡張モジュールと、の3つのモジュールが格納されている。この機能情報、及び画面レイアウト情報は、ドライバ設定ディレクトリ212に格納された、プリンタドライバ250の機能情報、画面レイアウト情報と同様の形式の情報とする。具体的には、プラグインアーカイブ内の各ディレクトリに格納された機能情報には、プラグインで追加される機能が定義されている。また、プラグインアーカイブ内の各ディレクトリに格納された画面レイアウト情報には、プラグインに関する画面レイアウトが記述されている。
描画拡張モジュールは、プラグインが提供する機能による描画処理を行うモジュールとする。例えば、borderlineプラグインの描画拡張モジュールは、集約時にページの区切り線を引く機能を提供する。さらに、stampプラグインの描画拡張モジュールは、スタンプ印字を行う機能を提供する。これら各プラグインの描画拡張モジュールは、ジョブの開始/終了、ページの開始/終了、各種描画オブジェクトの描画など、描画ドライバに対応したAPIが実装されている。
なお、本実施の形態にかかるプラグインの追加は、通常プラグインインストーラなどによって行われる。しかしながら、プラグインの追加は、インストーラを用いるものに制限するものではなく、プラグイン一覧情報に対して、追加するプラグインの情報を書き込み制御しても良い。また、ユーザの操作に従って、プラグインアーカイブにプラグインのファイルを追加してもよい。
なお、本実施の形態では、初期状態でプラグインがインストールされていない例について説明した。しかしながら、プラグインがインストールされてない例に制限するものではなく、最初から、プラグインが記載されたプラグイン一覧情報と、当該プラグイン一覧情報に矛盾が生じないようプラグインがアーカイブされたプラグインアーカイブと、を初期状態として予め作成してもよい。これにより、プリンタドライバ250のインストール直後からプラグインを利用することも可能となる。
次に、本実施の形態にかかるサーバPC100における、ドライバのインストールの処理について説明する。図9は、本実施の形態にかかるサーバPC100における上述した処理の手順を示すシーケンス図である。図9に示すシーケンスでは、プリンタドライバ250をインストールする例とする。
まず、OS201は、プリンタドライバ250のインストール要求を受け付けた場合に、当該プリンタドライバの構成ファイルをインストールする(ステップS901)。つまり、OS201は、プリンタドライバ250の構成ファイルを、全てのドライバの格納先となるインストールディレクトリにコピーする。このコピーされる構成ファイルとは、図2のプリンタドライバ250に含まれる構成とする。
その後、OS201は、構成ファイルがインストールされたプリンタドライバ250のUIドライバ254に対して、ドライバインストールのイベントを送出する(ステップS902)。
UIドライバ254は、プラグイン管理部255に対して、プラグインの初期設定を要求する(ステップS903)。
当該要求に従って、プラグイン管理部255は、プラグインディレクトリ213のパスを生成する(ステップS904)。本実施の形態においては、OS201が有するAPI(例えば、Windows(登録商標)API)の、フォルダパスを特定するコマンド(例えば、SHGetSpecialFolderPath)を利用して、所定のフォルダのパス(例えばComonApplicationDataのパス)を取得する。そして、プラグイン管理部255は、取得した所定のフォルダのパスに対して、“ドライバ名\Plugin”を連結したパスを、プラグインディレクトリ213として生成する。生成されたプラグインディレクトリ213は、以降、プラグインの格納等に利用される。
例えば、インストールするドライバ名が“DriverA”の場合、プラグイン管理部255は、プラグインディレクトリ213のパスとして、“C:\Documents and Settings\All Users\Application Data\DriverA\Plugin”を生成する。
次に、プラグイン管理部255が、生成したプラグインディレクトリ213のパスに対して、初期状態のプラグイン一覧情報を生成する(ステップS905)。なお、この初期状態のプラグイン情報は、プリンタドライバ250の構成ファイルとして含まれていたものをコピーしても良い。
さらに、プラグイン管理部255が、生成したプラグインディレクトリ213のパスに対して、初期状態のプラグインアーカイブを生成する(ステップS906)。この初期状態のプラグインアーカイブは、プリンタドライバ250の構成ファイルとして含まれていたものをコピーしても良い。
なお、通常、初期状態ではプラグインは空であるが、最初からドライバパッケージにプラグインを含めて配布したい場合、図7に示すプラグイン一覧情報や、図8に示すプラグインアーカイブのように最初からプラグインが含まれた構成であっても良い。このような構成であれば、ドライバのインストール直後からプラグインの機能が利用可能となる。
これは、まず第1に、プリンタドライバ250のインストールは、プラグイン一覧情報とプラグインアーカイブとの内部と関係なく行われるものだからである。第2に、プリンタドライバ250のインストール後において、プラグインを動作させるために必要な情報は全て、プラグインディレクトリ内のプラグイン一覧情報と、プラグインアーカイブと、に持たせているためである。このため、最初に、プラグイン一覧情報と、プラグインアーカイブとに含ませていても、問題なく機能する。
そして、プラグイン管理部255は、レジストリ210に対して、プラグインを利用するために必要な情報を設定する(ステップS907)。この必要な情報の例としては、クライアントPC110によるポイント・アンド・プリント時に、プリンタドライバ250のプラグインに関するファイルを送信させるための情報であって、図5に示した情報とする。
上述した処理手順によりサーバPC100に対してプリンタドライバ250がインストールされる。次に、サーバPC100からプリンタドライバ250のインストール先となるクライアントPC110について説明する。
図10は、本実施の形態にかかるクライアントPC110の機能ブロックを示した図である。図10に示すようにクライアントPC110は、OS1001が搭載されており、当該OS1001が、クライアントPC110に搭載された(図示しない)アプリケーションや、ハードウェアを制御する。
OS1001は、プリンタドライバ250と、制御部1002と、受信部1003と、インストール部1004と、格納部1005と、展開部1006と、表示部1007と、レジストリ1010と、DEVMODE1011と、ドライバ設定ディレクトリ1012と、プラグインディレクトリ1013と、を備えている。本実施の形態においては、OS1001として、MS-Windows(登録商標)が搭載されている例について説明する。このように、クライアントPC110に搭載されるOS1001の種類は、サーバPC100と同一のOSであってもよいし、他のOSが搭載されていても良い。
レジストリ1010は、クライアントPC110のOS1001や、OS1001上で動作するアプリケーションの設定が格納されたデータベースとする。
DEVMODE1011は、プリンタドライバ250の設定を保存するために、OS201側によって提供された構造体とする。
制御部1002は、OS1001にインストールされたドライバ(例えばプリンタドライバ250を含む)を制御する。制御部1002により制御される各ドライバは、プラグインアーカイブにアーカイブされているプラグインを、プラグイン一覧情報に従って呼び出す。このため、制御部1002による制御に基づいて、インストールされた各プラグインの機能を利用できる。
受信部1003は、サーバPC100から情報を受信する。受信する情報の例としては、インストールするドライバ、当該プリンタドライバで用いるプラグインアーカイブ、及び当該プリンタドライバで用いるプラグイン一覧情報等とする。
インストール部1004は、受信部1003が受信したドライバのインストール制御を行う。本実施の形態にかかるインストール部1004は、ポイント・アンド・プリントでプリンタドライバのインストールを行う。
また、インストール部1004は、ドライバのインストールの際に、当該ドライバで用いる設定情報を、ドライバ設定ディレクトリ1012に格納する。
ドライバ設定ディレクトリ1012は、プリンタドライバ250が処理を行う際に参照する設定情報が格納されたディレクトリとする。ドライバ設定ディレクトリ1012には機能情報、及び画面レイアウト情報が格納される。当該機能情報、及び画面レイアウト情報は、サーバPC100のドライバ設定ディレクトリ212に格納された機能情報、及び画面レイアウト情報と同様とする。
プリンタドライバ250は、インストール部1004によりインストールされたドライバとする。このプリンタドライバ250は、サーバPC100からインストールされたため、サーバPC100に搭載されたものと同一構成とする。
表示部1007は、プリンタドライバ250に関する設定画面等を表示する。例えば、表示部1007は、ドライバ設定ディレクトリ212に格納された画面レイアウト情報、及びプラグイン毎の画面レイアウト情報に従って生成された、設定画面を表示する。なお、プラグインが追加されていない場合、表示部1007は、ドライバ設定ディレクトリ212に格納された画面レイアウト情報のみから生成された設定画面を表示する。
図11は、ドライバ設定ディレクトリ1012の画面レイアウト情報のみから生成される印刷設定画面の例を示した図である。図11に示す印刷設定画面の例では、プリンタドライバ250の構成モジュールにおいて使用可能な項目が表示されている。そして、図11で示した印刷設定画面に表示された各項目に対する設定は、機能情報を読み込んだ設定管理部253で管理する。
図11の「OK」ボタンは印刷設定の変更を保存するボタンであり、「Cancel」ボタンは印刷設定の変更をキャンセルするボタンとする。そして、これら「OK」ボタン、及び「Cancel」ボタンは、画面レイアウト情報に従って表示されるボタンではなく、画面レイアウト情報とは関係なく実装しているボタンとする。
なお、サーバPC100にプリンタドライバ250にプラグインが追加されている場合、サーバPC100からプリンタドライバ250のインストールを行ったクライアントPC110では、図11に示す印刷設定画面を表示せず、プラグインの画面レイアウト情報を含めた印刷設定画面を表示する。
プラグインディレクトリ1013は、プリンタドライバ250のプラグインを保存するためのディレクトリとする。プラグインディレクトリ1013に格納されたプラグイン一覧情報及びプラグインアーカイブは、プラグインディレクトリ213に格納されたプラグイン一覧情報及びプラグインアーカイブと同様とする。
展開部1006は、アーカイブを展開する。本実施の形態にかかる展開部1006は、プラグインディレクトリ1013内の、ZIP形式で圧縮されたプラグインアーカイブから、各プラグインに展開する。
また、展開部1006は、プラグインアーカイブを展開する際、各プラグインの構成ファイルとして、プラグイン毎に画面レイアウト情報と、機能設定情報と、描画拡張モジュールと、を展開する。
描画拡張モジュールは、当該プラグインの処理に対するAPIを有する実行可能なファイルとする。
プラグイン毎の画面レイアウト情報には、各GUIの種類、機能名及び座標情報の配列構造で記述されている。また、プラグイン毎の機能情報には、当該機能を利用するための設定が含まれている。次に、各プラグインの機能情報、及び画面レイアウト情報を説明する。
図12は、“borderline”プラグインの機能情報の例を示した図である。“borderline”プラグインは、集約時に区切り線を引く機能なので、図12に示す例では、集約設定が“off”の場合、“borderline”機能が強制的にoffになるよう設定されている。
図13は、“borderline”プラグインの画面レイアウト情報の例を示した図である。図13に示すように、“borderline”に関する設定を行うためにチェックボックスを表示すること、当該チェックボックスをx座標=“170”、y座標=“30”に表示することが定義されている。この設定により、集約設定の右側にチェックボックスによるユーザ・インターフェイス(UI)が表示される。
図14は、“stamp”プラグインの機能情報の例を示した図である。“stamp”プラグインは、入力された文字列をスタンプ印字する機能とする。図14に示す例では、フォントサイズの範囲等が設定されている。
図15は、“stamp”プラグインの画面レイアウト情報の例を示した図である。図13に示すように、“stamp”に関する設定を行うためにエディットボックスを表示すること、当該エディットボックスをx座標=“170”、y座標=“120”に表示することが定義されている。この設定により、画面の右下にエディットボックスによるユーザ・インターフェイス(UI)が表示される。
そして、制御部1002で制御されるプリンタドライバ250は、展開部1006により展開されたプラグインを用いて、印刷を制御する。本実施の形態にかかるプリンタドライバ250は、展開されたプラグインの描画拡張モジュールのAPIを呼び出して、プラグインを用いた制御を行う。
特定部261は、クライアントPC110のインストール部1004からポイント・アンド・プリントを行うために呼び出された場合、プラグインアーカイブとプラグイン一覧情報とを格納するパスを特定する。本実施の形態にかかる特定部261は、プラグインディレクトリ1013を格納先のパスとして特定する。
格納部1005は、受信部1003により受信したプラグインアーカイブとプラグイン一覧情報とを、プラグインディレクトリ1013に格納する。格納部1005は、特定部261により特定されたパスに対して、プラグインアーカイブとプラグイン一覧情報とを格納する。
次に、本実施の形態にかかる印刷制御システムにおけるドライバのインストールの処理について説明する。図16は、本実施の形態にかかる印刷制御システムにおける上述した処理の手順を示すフローチャートである。図16に示す例では、サーバPC100から、クライアントPC110に対して、プリンタドライバ250をインストールする際の手順とする。
まず、ユーザが、クライアントPC110から、サーバPC100側にインストールされているプリンタを指定してPoint and Printを実行する(ステップS1601)。これにより、クライアントPC110のOS1001に含まれる、インストール部1004が、サーバPC100のOS201に対して、ポイント・アンド・プリントに基づくドライバのインストールを要求する(ステップS1602)。
これに伴い、サーバPC100における、OS201の送信部203が、クライアントPC110のOS1001に含まれる受信部1003に対して、プリンタドライバ250本体の構成ファイルを送信する(ステップS1603)。そして、クライアントPC110のインストール部1004が、受信した構成ファイルに基づいて、プリンタドライバ250のインストール制御を行う(ステップS1606)。これにより、クライアントPC110にプリンタドライバ250がインストールされる。また、プリンタドライバ250の構成ファイルの1つであるポイント・アンド・プリント・ライブラリ252も、サーバPC100からクライアントPC110にコピーされる。
一方、サーバPC100において、OS201が、ポイント・アンド・プリント・ライブラリ252のGenerateCopyFilePaths()を呼び出す(ステップS1604)。このポイント・アンド・プリント・ライブラリ252は、レジストリ210の“Module”で予め設定されている。つまり、本実施の形態では、レジストリ210を参照することで、特定されたAPIに対してOS201が呼び出しを行っている。また、当該APIを呼び出す際、引数として、ファイル送信元のディレクトリのパス、ファイル送信先のディレクトリのパス、サーバ側で呼び出していることを示すフラグ、を受け渡す。なお、ファイル送信元のディレクトリ名、及びファイル送信先のディレクトリ名は、レジストリ210のDirectoryキーで設定されたディレクトリのパスとする。
そして、GenerateCopyFilePaths()がサーバPC100側から呼び出された場合、サーバPC100内の特定部261は、送信するファイルが格納されたディレクトリのパスを特定する(ステップS1605)。つまり、特定部261は、GenerateCopyFilePaths()がサーバPC100側として呼び出された際、GenerateCopyFilePaths()の処理として、プラグイン一覧情報及びプラグインアーカイブが格納されたパスを返す。必要があればこれらのディレクトリのパスを書き換えて返すことで、送信元、送信先のディレクトリを変更する。
一方、クライアントPC110においても、OS1001が、ポイント・アンド・プリント・ライブラリ252のGenerateCopyFilePaths()を呼び出す(ステップS1607)。なお、当該APIを呼び出す際、引数として、ファイル送信元のディレクトリのパス、ファイル送信先のディレクトリのパス、クライアント側で呼び出していることを示すフラグ、を受け渡す。
そして、GenerateCopyFilePaths()がクライアントPC110側から呼び出された場合、クライアントPC110内の特定部261は、プラグインの格納先となるプラグインディレクトリ1013のパスを特定する(ステップS1608)。なお、特定する手順については後述する。その後、ポイント・アンド・プリント・ライブラリ252が、特定されたプラグインディレクトリ1013のパスを、OS1001に返す(ステップS1609)。
そして、クライアントPC110のOS1001は、サーバPC100に対して、プラグインの送信要求を行う(ステップS1610)。当該送信要求を受けて、サーバPC100の特定部261は、ステップS1605で特定されたパスが指し示すディレクトリと、レジストリ210のFilesキーに設定されたファイル名と、から、送信するファイル群(プラグインアーカイブ及びプラグイン一覧情報)を特定し、送信部203が、特定されたファイル群を、クライアントPC110の受信部1003に対して送信する(ステップS1611)。
その後、格納部1005が、受信したファイル群を、ステップS1609で特定されたプラグインディレクトリ1013のパスに格納する(ステップS1612)。
上述した処理手順により、クライアントPC110に対して、プリンタドライバ250と、当該プリンタドライバ250のプラグインとがインストールされる。
つまり、本実施の形態においては、レジストリ210で設定したパス及びファイル名が指し示すプラグイン一覧情報とプラグインアーカイブとを、クライアントPC110に送信することで、ドライバのプラグインのインストールを行うこととした。
ところで、本実施の形態においては、追加、削除などドライバにインストールされたプラグインが変化しても、当該プラグインアーカイブのファイル名は変化しない。このプラグインアーカイブのファイル名はレジストリ210に予め登録されているため、サーバPC100が、当該レジストリ210を参照して特定されたプラグインアーカイブを、クライアントPC110に送信するだけで、クライアントPC110が利用可能なプラグインが全て送信されたことになる。そして、クライアントPC110側では、プラグインアーカイブとともに送信されたプラグイン一覧情報を参照することで、プラグインアーカイブにまとめられた全てのプラグインを認識できる。
つまり、本実施の形態にかかる印刷制御システムにおいては、サーバPC100側ではドライバにどのようなプラグインがインストールされているか認識することなく、レジストリ210を参照して特定されたプラグインアーカイブ及びプラグイン一覧情報を送信するだけで、クライアントPC110に全てのプラグインをインストールできる。このように、サーバPC100が、各プラグインを認識することなく、プラグインのインストール処理を行うことができるので、プラグインのインストールの処理負担を軽減できる。
次に、図16のステップS1605及びステップS1608で示した特定部261のGenerateCopyFilePaths()に基づく処理について説明する。図17は、本実施の形態にかかる特定部261における上述した処理の手順を示すフローチャートである。
特定部261が、GenerateCopyFilePaths()で呼び出された場合、引数を参照し、サーバPC側で実行されているか否か判定する(ステップS1701)。サーバPC側で実行されていると判定した場合(ステップS1701:Yes)、特に処理を行わず、引数で指定された送信元のディレクトリのパスなどを、呼び出し元(例えばOS1001)に返して終了する。
一方、特定部261が、サーバPC側で実行されていないと判定した場合(ステップS1701:No)、OS201のAPIのSHGetSpecialFolderPathを利用して、ComonApplicationDataのパスを取得する(ステップS1702)。そして、特定部261は、取得したComonApplicationDataのパスに、“ドライバ名\Plugin”を連結し、送信先のディレクトリパスを生成する(ステップS1703)。
そのあと、特定部261が、生成した送信先のディレクトリパスで、引数として受け取った送信先のディレクトリパスを書き換えた後、書き換えた送信先のディレクトリパスを、OS201に返す(ステップS1704)。
これにより、クライアントPC110において、プラグインの送信先のディレクトリのパスが設定される。図17の処理を行うため、クライアントPC110がGenerateCopyFilePaths()を呼び出す際に、引数でクライアント側を示すフラグを設定したのであれば、送信先のディレクトリパスが空のまま呼び出しても良い。
上述した処理手順で、サーバPC100の送信元のディレクトリから、クライアントPC110の送信先のディレクトリに対して、プラグイン一覧情報とプラグインアーカイブとが送信される。
このとき、プリンタドライバの構成ファイルは、ドライバのインストール後から一切変更されていないので、OS201(例えばWindows(登録商標))の親和性を崩さずに、プラグインで拡張された機能をサーバPC100からクライアントPC110に引き継ぐことができる。
次に、本実施の形態にかかるクライアントPC110における、設定画面の表示処理について説明する。図18は、本実施の形態にかかるクライアントPC110における上述した処理の手順を示すフローチャートである。
まず、OS1001が、プリンタドライバ250本体のUIドライバ254に対して画面表示を行うよう指示する(ステップS1801)。
次に、UIドライバ254が、プラグイン管理部255に対して初期化を要求する(ステップS1802)。そして、プラグイン管理部255は、プラグイン名の一覧を生成する(ステップS1803)。
その生成の過程で、プラグイン管理部255は、レジストリ1010を参照してプラグインディレクトリ1013のパスを生成し、その下に格納されているプラグイン一覧情報を読み込む(ステップS1804)。
その後、UIドライバ254が、設定管理部253に対して、初期化を要求する(ステップS1805)。その後、設定管理部253が、プラグイン管理部255に対して機能情報の取得を要求する(ステップS1806)。
これにより、プラグイン管理部255が、プリンタドライバ250本体の機能情報と、各プラグインの機能情報と、をマージする(ステップS1807)。当該マージの過程で、プラグイン管理部255は、ドライバ設定ディレクトリ1012に格納されている機能情報を読み込む(ステップS1808)。さらに、プラグイン管理部255は、OS1001に対して、プラグインアーカイブの展開を要求する(ステップS1809)。当該要求に従って、OS1001の展開部1006が、プラグインアーカイブを展開する(ステップS1810)。
そして、プラグイン管理部255は、展開された各プラグインの機能情報を読み込む。図18に示すシーケンスでは、プラグイン管理部255は、borderlineプラグインの機能情報を読み込む(ステップS1811)とともに、stampプラグインの機能情報を読み込む(ステップS1812)。読み込んだ各機能情報は、XML形式で記載されている。このため、読み込んだ各機能情報のXMLノードを、プラグイン管理部255がマージする。そして、プラグイン管理部255がマージしたXMLノードを設定管理部253に受け渡す。そして、設定管理部253は、取得したXMLノードを、(図示しない)メモリ上に保持する。
その後、プラグイン管理部255が、DEVMODE1011の読み込みを行う(ステップS1813)。これにより、現在の設定値などを取得できる。
そして、プラグイン管理部255が、読み込んだ現在の設定値等について、読み込んだ機能情報で設定されている定義(例えば、機能情報で定義されている値域や禁則)を鑑みて妥当か否か判定する(ステップS1814)。
次に、UIドライバ254が、プラグイン管理部255に対して、画面レイアウト情報の取得を要求する(ステップS1815)。
これにより、プラグイン管理部255が、プリンタドライバ250本体の画面レイアウト情報と、各プラグインの画面レイアウト情報と、をマージする(ステップS1816)。当該マージの過程で、プラグイン管理部255は、ドライバ設定ディレクトリ1012に格納されている機能情報を読み込む(ステップS1817)。
そして、プラグイン管理部255は、各プラグインの画面レイアウト情報を読み込む。図18に示すシーケンスでは、プラグイン管理部255は、borderlineプラグインの画面レイアウト情報を読み込む(ステップS1818)とともに、stampプラグインの画面レイアウト情報を読み込む(ステップS1819)。このようにして読み込んだ各画面レイアウト情報のJSONオブジェクトを、プラグイン管理部255がマージする。そして、マージされたJSONオブジェクトは、UIドライバ254に送られる。
その後、UIドライバ254が、JSONオブジェクトを元に設定画面の画面レイアウトを生成する(ステップS1820)。そして、OS1001の表示部1007が、生成された設定画面を表示する。
さらに、UIドライバ254は、設定管理部253から、設定値を取得する(ステップS1821)。次に、UIドライバ254は、設定画面の画面レイアウトに対して、設定値を反映する(ステップS1822)。これにより、表示部1007が、設定値が反映された設定画面を表示する。
上述した処理手順により、クライアントPC110において、ドライバ本体及びプラグインの情報(機能情報や画面レイアウト情報)がマージされた設定画面を表示することができる。
図19は、上述した処理手順により、表示部1007により表示される設定画面の例を示した図である。図19に示す設定画面では、図11の設定画面の例と比べて、“Borderline”のチェックボックス1901と、“Stamp”のエディットボックス1902と、が追加されている。
図19に示す画面例では、“Borderline”のチェックボックス1901が利用不可能かつOFF固定で表示されている。また、網線で囲っている“Borderline”も半輝度で表示される。これは、図19の画面例で、“Layout”の項目で“off”が選択されている場合、“Borderline”の機能情報(図12)の「<constraint fixvalue=“off”><condition expression = “layout!=off”/></constraint>」の記述に基づき、禁則を受けるためである。
次に、本実施の形態にかかるクライアントPC110における、印刷制御について説明する。図20は、本実施の形態にかかるクライアントPC110における上述した処理の手順を示すフローチャートである。
なお、印刷処理では、ジョブの開始/終了、ページの開始/終了、描画オブジェクトなどのイベントごとに該当する描画ドライバのAPIがOS1001から呼ばれるが、図20に示すシーケンスでは、ページの開始の例のみを示した。それ以外のAPIにおいても全く同じシーケンスで処理が行われるものとする。
まず、OS1001が、プリンタドライバ250本体の描画ドライバ251に対してページ印刷を開始するよう指示する(ステップS2001)。
次に、描画ドライバ251が、プラグイン管理部255に対して初期化を要求する(ステップS2002)。そして、プラグイン管理部255は、プラグイン名の一覧を生成する(ステップS2003)。
そのプラグイン名の生成の過程で、プラグイン管理部255は、レジストリ1010を参照してプラグインディレクトリ1013のパスを生成し、その下に格納されているプラグイン一覧情報を読み込む(ステップS2004)。
その後、描画ドライバ251が、設定管理部253に対して、初期化を要求する(ステップS2005)。その後、設定管理部253が、プラグイン管理部255に対して機能情報の取得を要求する(ステップS2006)。
これにより、プラグイン管理部255が、プリンタドライバ250本体の機能情報と、各プラグインの機能情報と、をマージする(ステップS2007)。当該マージの過程で、プラグイン管理部255は、ドライバ設定ディレクトリ1012に格納されている機能情報を読み込む(ステップS2008)。
そして、プラグイン管理部255は、各プラグインの機能情報を読み込む。図20に示すシーケンスでは、プラグイン管理部255は、borderlineプラグインの機能情報を読み込む(ステップS2009)とともに、stampプラグインの機能情報を読み込む(ステップS2010)。読み込んだ各機能情報は、XML形式で記載されている。このため、読み込んだ各機能情報のXMLノードを、プラグイン管理部255がマージする。そして、プラグイン管理部255がマージしたXMLノードを設定管理部253に受け渡す。そして、設定管理部253は、取得したXMLノードを、(図示しない)メモリ上に保持する。
その後、プラグイン管理部255が、DEVMODE1011の読み込みを行う(ステップS2011)。これにより、現在の設定値などを取得できる。
そして、プラグイン管理部255が、読み込んだ現在の設定値等について、読み込んだ機能情報で設定されている定義(例えば、機能情報で定義されている値域や禁則)を鑑みて妥当か否か判定する(ステップS2012)。
次に、描画ドライバ251が、プラグイン管理部255に対して、機能情報の取得を要求する(ステップS2013)。これにより、描画ドライバ251が、読み込んだ現在の設定値等を取得する。
その後、描画ドライバ251が、印刷するページの描画処理を行い、描画データを生成する(ステップS2014)。
次に、描画ドライバ251が、引数として描画データと、設定値の一覧と、を受け渡した上で、ページに関する処理を、プラグイン管理部255に対して要求する(ステップS2015)。
プラグイン管理部255は、ステップS2003で生成したプラグイン名の一覧を参照して、各プラグインの描画拡張モジュールを認識する。そして、プラグイン管理部255は、プラグインアーカイブから展開された各プラグインの描画拡張モジュールに対して、ページ開始のAPIを呼び出す。図20で示すシーケンスでは、プラグイン管理部255は、borderlineプラグインの描画拡張モジュールのページ開始のAPIを呼び出す(ステップS2016)。その際に、描画データと、設定値の一覧とを、受け渡す。さらに、プラグイン管理部255は、stampプラグインの描画拡張モジュールのページ開始のAPIを呼び出す(ステップS2017)。その際に、描画データと、設定値の一覧とを、受け渡す。これら描画拡張モジュールのページ開始のAPIが呼び出された際、各プラグインの描画拡張モジュールは、引数として受け渡された設定値の一覧を参照し、描画処理を行う必要がある場合に、描画データに対して、必要な描画を行う。そして、描画などがなされた後、描画ドライバ251に描画データが返される。
その後、描画ドライバ251が、返された描画データを、OS1001に出力する(ステップS2018)。そして、OS1001が、描画データを、プリンタ150に対して送信する(ステップS2019)。これにより、描画データに基づく印刷がなされる。
以上のように、クライアントPC110では、ドライバ本体とプラグインとを組み合わせた描画処理を実行することが可能となる。
次に、サーバPC100に対してプラグインを追加する際の処理について説明する。図21は、プラグインインストーラパッケージの構成を示した図である。図21に示すようにプラグインインストーラパッケージ2100は、プラグインインストーラ2101と、プラグイン情報2102と、プラグイン“stamp”の構成ファイル2103と、を含むディレクトリとする。なお、当該ディレクトリをアーカイブしたものでも良い。
プラグインインストーラ2101は、プラグインインストーラの実行形式ファイルとする。
プラグイン“stamp”の構成ファイル2103は、stamp機能を実現するための機能情報、画面レイアウト情報、描画拡張モジュールを含んだ構成とする。
プラグイン情報2102は、プラグイン“stamp”に関する設定が記述された情報である。図22は、プラグインインストーラパッケージ2100に含まれるプラグイン情報の例を示した図である。図22に示すように、当該プラグインの名称が“stamp”であること、及びバージョンが“1.1.010”であることが記載されている。そして、当該プラグイン情報2102は、インストール時に、プラグイン一覧情報に追加される。
サーバPC100に対してプラグインインをインストールする際の処理について説明する。図23は、本実施の形態にかかるサーバPC100における上述した処理の手順を示すフローチャートである。図23に示すフローチャートでは、プラグインインストーラを実行して、プラグインディレクトリに新たなプラグインを追加する。
まず、プラグインインストーラパッケージ2100に含まれるプラグインインストーラ2101が起動される。起動したプラグインインストーラ2101は、プラグインを追加する対象となるドライバ名を取得する(ステップS2301)。例えば、プラグインインストーラ2101は、OS201からインストール済みのドライバ一覧を取得し、当該一覧の中からいずれのドライバに対してプラグインを追加するかをユーザに問い合せる等が考えられる。そして、ユーザに選択されたドライバに対して、プラグインを追加していくことになる。
そして、プラグインインストーラ2101は、レジストリ210から、取得したドライバ名が指し示すドライバのプラグインディレクトリのパスを取得する(ステップS2302)。このプラグインディレクトリの特定手法は、上述した手法と同様とする。そして、取得したプラグインディレクトリのパスにプラグインがインストールされる。
次に、プラグインインストーラ2101は、特定したプラグインディレクトリに、既に同じプラグインが追加されているか否かを判定する(ステップS2303)。当該判定では、例えば、プラグインディレクトリ213内のプラグイン一覧情報に、プラグインインストーラパッケージ2100内のプラグイン情報2102のプラグインと同一名称が含まれているか否かに基づいて判定する。
そして、プラグインインストーラ2101が、追加されていないと判定した場合(ステップS2303:No)、継続してプラグインの追加処理を行う。図23に示すシーケンス図では、プラグインインストーラ2101は、書込部204を呼び出して、プラグインディレクトリ213のプラグイン一覧情報に対して、プラグインインストーラ2101内のプラグイン情報2102をマージする(ステップS2305)。本実施の形態では、プラグインインストーラ2101に呼び出された書込部204が、プラグイン一覧情報の末尾に、プラグイン情報を追加する書き込みを行う。
その後、プラグインインストーラ2101が、プラグインアーカイブに対して、新しいプラグインの構成ファイル(例えば“stamp”の構成ファイル2103)を追加する(ステップS2306)。例えば、“borderline”プラグインがインストールされた後の状態で、そして、プラグインインストーラ2101が、“stamp”プラグインを追加する場合、プラグインインストーラパッケージ内の“stamp”の構成ファイル2103を、プラグインアーカイブに追加すると、図8に示すようなプラグインアーカイブが生成される。また、プラグイン情報2102が追加されると、図7に示すようなプラグイン一覧情報が生成される。そしてインストールの処理が、終了する。
一方、プラグインインストーラ2101が、同じプラグインが追加されていると判定した場合(ステップS2303:Yes)、まず、プラグインインストーラ2101は、プラグインディレクトリ内にすでに追加されている同一プラグインのバージョン情報と比べて、プラグインインストーラパッケージ2100内のプラグインのバージョン情報が新しいか否かを判定する(ステップS2304)。新しくないと判定した場合(ステップS2304:No)、処理を終了する。
一方、プラグインインストーラ2101が、プラグインインストーラパッケージ2100内のプラグインのバージョン情報が新しいと判定した場合(ステップS2304:Yes)、プラグインインストーラ2101が書込部204を呼び出し、書込部204が、すでにプラグイン一覧情報に記載されているプラグイン情報を、新しいプラグイン情報で上書きする(ステップS2307)。
さらに、プラグインインストーラ2101は、プラグインアーカイブに対して、新しいプラグインの構成ファイルで上書きし、処理を終了する(ステップS2308)。例としては、すでにプラグインアーカイブに格納されている“stamp”プラグインのバージョンが1.0.0.0で、追加しようとしている“stamp”プラグインのバージョンが1.1.0.0の場合、プラグインインストーラ2101は、プラグイン情報の“stamp”のバージョン情報を1.1.0.0で上書きし、“stamp”ディレクトリ内のファイルもすべて新しいファイルで上書きする。
上述した処理手順により、サーバPC100にインストールされているドライバについて、プラグインの追加、更新を行うことができる。これにより、サーバPC100にプラグインの追加、更新が行われた場合、それ以降、クライアントPC110が、当該ドライバをインストールする際、追加、更新がなされたプラグインも同時にインストールされる。これにより、ユーザがドライバをインストールする際の負担を軽減できる。
このように、本実施の形態では、ドライバをプラグインで拡張した機能であっても、OSとの親和性を崩さずに、ポイント・アンド・プリントでクライアントPC110側に引き継げる。
このように、本実施の形態では、ポイント・アンド・プリントで、クライアントPC側に拡張機能を引き継げる、ドライバのプラグインの仕組みを実現することを可能とした。
さらに、ポイント・アンド・プリントを行うダイナミック・リンク・ライブラリをドライバの構成ファイルに含めることで、クライアントPC及びサーバPCに当該ライブラリがインストールされることになる。これにより、ポイント・アンド・プリントのイベント時に、クライアントPC及びサーバPCのそれぞれから当該ライブラリを呼び出すことで、クライアントPC及びサーバPCのそれぞれがプラグインを送信するために適切な処理を行うことができる。つまり、容易にプラグインのファイルをサーバPCからクライアントPCに送信させることができる。
(変形例1)
第1の実施の形態では、クライアントPCと、サーバPCと別構成として示した。しかしながら、第1の実施の形態は、説明を容易にするために、クライアントPCと、サーバPCと、別の構成として示したものであり、クライアントPCと、サーバPCと、が同一構成でも良い。
そこで、変形例として、クライアントPCとサーバPCとが同一構成の例について説明する。当該変形例では、クライアントPC及びサーバPCともに、プリンタドライバと、送信部と、書込部と、受信部と、インストール部と、格納部と、展開部と、表示部と、を備えている。なお、各構成が行う処理は、第1の実施の形態と同様として説明を省略する。
(変形例2)
第1の実施の形態では、ポイント・アンド・プリントでプリンタドライバを、サーバPCからクライアントPCにインストールする例について説明した。しかしながら、プリンタドライバのインストール制限するものではなく、他のオフィス機器等であっても良い。オフィス機器の例としては、例えば、ネットワークスキャナなどであってもよい。変形例2においては、ネットワークスキャナのドライバを管理するサーバPCに対して、クライアントPCが、ドライバのインストールを要求する。これにより、ネットワークスキャナのドライバのインストールと、当該ドライバのプラグインのインストールとが行われる。なお、その際の手順は、第1の実施の形態と同様として説明を省略する。また、オフィス機器以外でもよく、例えばデジタルスチルカメラ等などのPCに接続可能な周辺機器でも良い。
図24は、本実施の形態及び変形例のサーバPC及びクライアントPCのハードウェア構成を示した図である。図24に示すように上述した実施の形態及び変形例のサーバPC及びクライアントPCは、CPU2401と、ROM(Read Only Memory)2402やRAM2403と、HDD2406と、通信I/F2404と、ディスプレイ装置などの表示装置2405と、これらを接続するバス2407と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
上述した実施の形態及び変形例のサーバPC又はクライアントPCで実行されるOSやプリンタドライバは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、上述した実施の形態及び変形例のサーバPC又はクライアントPCで実行されるOSやプリンタドライバを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態のOSやプリンタドライバをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
上述した実施の形態及び変形例のサーバPC又はクライアントPCで実行されるOSやプリンタドライバは、それぞれ上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはCPU2401が上記記憶媒体からOSやプリンタドライバを読み出して実行することにより上記各部が主記憶装置上にロードされ、上記各部が主記憶装置上に生成されるようになっている。