説明

ネットワーク上における機能情報提供装置を実行する情報処理システム

【課題】ネットワークプラグアンドプレイでネットワーク上のデバイスが検出されドライバがインストールされるときは、デバイスの情報によってインストールされる機能は一意に決められていた。
【解決手段】クライアントの情報を元に優先するデバイスの機能を選択し、それを元にネットワークプラグアンドプレイで自動的にデバイスの機能を決定し(704)、ドライバのインストールを行う。その際、基準は、最多インストール、最近インストール、現在インストール等のうちから利用者が選択可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の画像形成手段を持つ画像形成装置を含む、複数の機能情報を提供するネットワーク上の機能情報提供装置を実行する情報処理装置のシステムに関するものである。
【背景技術】
【0002】
インターネットやホームネットワークなど、ネットワークの拡張に伴い、例えば、PDAや携帯電話等のユーザインタラクティブなデバイス、スキャナ、プリンタ、複写機、デジタルカメラ等の画像処理装置などのデバイスのネットワーク対応が進んでいる。また、テレビ、エアコン、冷蔵庫等の家電製品などに至るまで様々なデバイスのネットワーク対応も進んでいる。
【0003】
これに伴い、ネットワーク対応デバイスを利用する上での利便性・簡易性を高めるための機能情報が多数存在する。このうちのひとつにネットワークプラグアンドプレイがある。従来のプラグアンドプレイ(PnP)は、各デバイスとホストコンピュータとなるPCをさまざまなローカルのI/Oポート(シリアル・パラレル・USB、PCI、IEEE1394、PCMCIAなど)に直接プラグで接続した際に働く機能である。プラグアンドプレイでは、デバイスが機種名(デバイスID)や製造者名(ベンダID)、シリアル番号などをホストの情報処理装置に送信する。情報処理装置はこれらの受信した情報を参照して、デバイスを使用可能にするためのデバイスドライバをクライアントに自動でインストールする。このような形態が主であった。ネットワークプラグアンドプレイはこれをネットワークに接続したデバイス(NCD:Network Connected Devices)とホストコンピュータ同士の接続にまで拡張したものである。Microsoft社が提唱するPnP−X(Plug and Play eXtensions)や、(社)ビジネス機械・情報システム産業協会(JBMIA)が推進するBMLinks、Apple社が開発したBonjourなどの規格が現在規定されている。
【0004】
PnP−Xは従来のプラグアンドプレイに加え、WS−Discoveryに対応したデバイスが提供する機能情報および情報を元に、ネットワーク上のデバイスを検知し、デバイスドライバのインストールを行うことができる機能である。WS−Discoveryは、UPnP(登録商標)1.0(Universal PnP)や、WSD(Web Service for Devices)のデバイス検出プロトコルである(非特許文献1参照)。
【0005】
PnP−X機能を持つオペレーティングシステムは、ファンクションディスカバリと、ファンクションディスカバリプロバイダとが組み合わさったシステムによって、さまざまなプロトコルのネットワークデバイスの検出を実現している。ファンクションディスカバリとは、アプリケーション層に対応したファンクションディスカバリクライアントである。ファンクションディスカバリプロバイダとはプロトコル層に対応する。ファンクションディスカバリクライアントである「IPバスエニュミレータ」は、ネットワークに接続したデバイスのUPnPやWSDの機能情報に応答するそれぞれのファンクションディスカバリプロバイダから通知を受け、発見したデバイス情報を列挙する。列挙したデバイス情報(デバイスID・ベンダIDなど)は、「IPバスエニュミレータ」から「プラグアンドプレイマネージャ」に引き渡される。そしてデバイス情報に対応したドライバのインストールが開始される。
【0006】
また、PnP−X機能はネットワークに接続され発見されたデバイスのドライバが、すべてインストールされることを防ぐためのシステムを持つ。これは、「関連データベース」(Association Database)ともうひとつのファンクションディスカバリクライアントである「ネットワークデバイスの追加と削除」と呼ばれるコントロールパネルのユーザインタフェースによって実現されている。「ネットワークデバイスの追加と削除」はファンクションディスカバリプロバイダから情報を取得し、現在発見されているデバイスを列挙して、ユーザインタフェースによりリスト表示を行う。ユーザは「ネットワークデバイスの追加と削除」を起動し、リスト表示されたデバイスから、「インストールを許可する」デバイスを選択し「追加」操作操作により選択されたデバイスのデバイス情報が「関連データベース」に登録される。「IPバスエニュミレータ」は、発見したネットワークデバイスのうちこの「関連データベース」に登録してあるもののみ「プラグアンドプレイマネージャ」に渡す。この処理により、ネットワークで発見されたすべてのデバイス向けのドライバがインストールされることを防止している。(非特許文献1参照)。
【0007】
このPnP−X機能のように、ネットワークを介してデバイスに接続されているホストコンピュータが、デバイスからの応答情報を元にプログラムのインストールを行うシステムは従来存在する(特許文献2参照)。
【特許文献1】特開2003−6133号公報
【非特許文献1】J. Beaty, et al, "Web Service Dynamic Discovery (WS-Discovery)," April 2005. (http://schemas.xmlsoap.org/ws/2005/04/discovery/WS-discovery.pdf)
【非特許文献2】"Discovery, Plug and Play Integration, and Web Services for Metwork connected Devices", April 25, 2005. (http://www.microsoft.com/whdc/device/netAttach/PnP-X_Discover.mspx/ のPnP-X_Discover.doc)
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、前述した従来の技術では、複数の機能を持つデバイスを検出したときに、複数の機能に対応するデバイスドライバがインストールされ、同時に利用可能になってしまい、ユーザは、適切なドライバを選択することが困難となるケースがある。例えば、複数種類のPDL(Page Description Language)に対応した画像形成装置(プリンタ)が検出された場合、そのデバイス(プリンタ)に対して、複数種類のPDLに対応した複数のプリンタドライバがインストールされる。その結果、ユーザが指定できる出力先の選択肢がひとつのプリンタについて複数存在する。そのため、ユーザが実際に印刷する際にどのドライバを選択すればいいのかわからなくなり、使い勝手の悪化をもたらしている。
【0009】
また、前述のとおり、ネットワーク上で検出されたデバイスがクライアントコンピュータにリストとして列挙されて、ユーザはそのリストから選択したデバイスを利用可能なデバイスとして追加できる。複数のPDLに対応したプリンタが検出された場合、そのリストには、インストール可能なドライバが、PDLごとに表示される。しかしこのようなリストをみても、通常のユーザはどのPDLを選択すればいいのかわからない。そのため、ユーザは結局全てのデバイスドライバを選択するか、明確な根拠がないまま何れかを選択することになる。前者であれば、検出されたデバイスのドライバがすべてインストールされることになる。後者であれば、ユーザが使用するアプリケーションプログラムが作成するデータに適していないPDL対応のプリンタドライバを選択してしまい、ユーザが所望する画像が出力できない場合も生じえる。
【0010】
本発明は上記従来例に鑑みてなされたもので、コンピュータにインストールするデバイスドライバを選択する際に、適切なデバイスドライバを選択するためのユーザ補助を実現することを目的とする。また、そのユーザ補助によりユーザに適したデバイスのデバイスドライバを選択してインストールすることで、ユーザの操作性、利便性、生産性を高めることを目的とする。また、ユーザの望まないデバイスドライバをインストールすることにより消費されるコンピュータ資源の浪費を防止する。
【課題を解決するための手段】
【0011】
上記目的を達成するために本発明は以下の構成を備える。複数種類のデバイスドライバと対応する周辺機器と通信可能なコンピュータにおけるプログラムであって、
コンピュータに保持されているデバイスドライバのインストール履歴情報を認識する認識手段と、
前記認識手段によって認識されたデバイスドライバのインストール履歴情報に含まれるインストールされたデバイスドライバ情報と対応付けられた機能情報を解析して、インストールの対象となる機能情報を特定する特定手段と、
前記特定手段にて特定された機能情報に基づいて前記周辺機器に対応する複数種類のデバイスドライバからインストールすべきデバイスドライバを決定する決定手段と、
前記決定手段により決定されたデバイスドライバをインストールすべく制御するインストール制御手段としてコンピュータを機能させる
【発明の効果】
【0012】
本発明によって、コンピュータにインストールするデバイスドライバを選択する際に、適切なデバイスを選択するためのユーザ補助を実現することができる。また、ユーザに適したデバイスのデバイスドライバを選択的にインストールすることで、ユーザの操作性、利便性、生産性を高めることができる。また、デバイスドライバのインストールにより消費されるコンピュータ資源の浪費を防止することができる。
【発明を実施するための最良の形態】
【0013】
[第1実施形態]
<システム構成>
図1は、本発明の一実施形態を示す印刷処理システムに含まれるクライアントやサーバといった汎用コンピュータ(情報処理装置)のブロック構成図である。本実施形態では、ネットワークプリンタを対象として説明する。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機能であっても、複数の機器からなるシステムであっても、LAN、WAN等のネットワークを介して接続がなされ処理が行われるシステムであっても、本発明を適用できる。
【0014】
図1において、CPU101はROM102あるいはRAM103あるいは記憶装置105に格納されたプログラムに従って装置全体の制御を行う。RAM103はCPU101が各種処理を行う際のワークエリアとしても使用される。外部記憶装置105はオペレーティングシステム(OS)1054やプリンタドライバ1053、印刷関連プログラム1052、アプリケーションソフト1051等を記録する。オペレーティングシステム1054には、ここではTCP/IPプロトコルスタックや、ネットワークPnPのための図3に示すモジュールを含む。
【0015】
キーボード108や、マウスなどのポインティングデバイス109といった入力機器は、入力I/F104を通じて、ユーザがコンピュータに対して各種指示を与えるためのデバイスである。出力I/F106は、データを外部に出力するためのインタフェースであり、モニタ110やプリンタ111に対してデータを出力する。モニタ110上への表示と、その表示画面にマッピングされた仮想的なスイッチ等により、GUIが実現される。なおプリンタとコンピュータとは、ローカルI/Oに代えてネットワークを通して接続されていてもよい。また、共通データバス107は、各ハードウエア要素の間のデータや制御信号、アドレス等のやりとりを行う。
【0016】
図2は本発明の実施の形態におけるネットワーク環境の一例を簡略に示す図である。プリンタ202、プリンタ203、プリンタ205がそれぞれイーサネット(登録商標)ネットワークにつながったネットワークプリンタを示している。クライアント201、サーバ204もそれぞれネットワークに接続され、ネットワークを通じてクライアント201もしくはサーバ204から印刷が可能な環境を構築している。プリンタ203はここではオフラインであり、物理的には接続されていても実際には使用できない状態である。このようなオフライン状態のプリンタがネットワーク上に存在してもかまわない。本発明においては図2のようなネットワークでプリンタが利用できる環境であるものとする。クライアント201は図1に示したハードウエアを有する。
【0017】
図3は本発明の実施の形態における、ホストコンピュータ上のネットワークプラグアンドプレイのブロック図である。図3の下から順にネットワークプラグアンドプレイがどのように動作しているかを説明する。まず、図2のようにネットワークに接続されたプリンタ301が存在する。プリンタ301は、図2のプリンタ202、203、205に相当する。プリンタ301は、通信機能としてイーサネット(登録商標)コントローラを内蔵し、イーサネット(登録商標)に対応している。またプリンタ301には、TCP/IPネットワーク上でHTTPリクエストに動作できるようにTCP/IPプロトコルスタックやHTTPレイヤも実装されている。なおここでは通信メディアとしてイーサネット(登録商標)を用いているが、本実施形態で用いるTCP/IPを上位プロトコルとしてサポートできるメディアであれば利用可能である。たとえば、USBなどのシリアルI/O、WiFi(登録商標)(IEEE802.11a/b/g)やBluetooth(登録商標)、UWBといった無線通信、シリアルIFやパラレルIFにも適用できる。また、通信プロトコルも、TCP/IP以外のプロトコルを利用することができる。
【0018】
プリンタ301が持つ通信機能の上位のレイヤには、タグを用いたマークアップ言語であるXMLベースのプロトコル「SOAP(Simple Object Access Protocol)」を解釈可能なシステムを搭載している。SOAPは通信内容にXMLを用い、言語やプラットフォームに依存することなくデータを通信することができるプロトコルである。このSOAPをベースにして、WSD(Web Services for Devices)システムもプリンタ301は搭載している。WSDシステムはプリンタ301がWeb機能情報を提供するために存在している。デバイスは、デバイスの情報を返すアプリケーションプロトコルであるDPWS(Device Profile for Web Services)によってデバイス情報を応答する。クライアント201は、デバイスのWeb機能情報を探索するために、WS−Discovery(Web Services Dynamic Discovery)をサポートする。またクライアント201は、デバイス情報を入れるデータフォーマットであるWS−MetadataExchangeの2つの規格をサポートする(図13参照)。これら2つの規格をサポートすることで、デバイスの備えたWSDおよびDPWSと連係動作して、ネットワークPnPが実現される。
【0019】
なおプリンタ301はWSD機能情報を搭載している。これは、SSDP(Simple Service Discovery Protocol)とSSDP Discovery Metadata MappingをサポートしているUPnP機能情報であってもよい。
【0020】
<デバイスの探索とインストール>
次にクライアントがネットワークデバイスを検出して必要なソフトウエアをインストールする手順を説明する。
【0021】
イーサネット(登録商標)に接続されたプリンタ301は、イーサネット(登録商標)などのネットワークに接続された段階で接続通知(Helloメッセージ)をマルチキャストでネットワークに送信する(S3001)。マルチキャストの宛先はホストコンピュータか、あるいは少なくともホストコンピュータを含むノードである。ネットワークに接続されているクライアント201は、TCP/IPプロトコルスタック、HTTPドライバを経由して、WS−Discoveryプロバイダ3021でHelloメッセージを受ける(S3002)。WS−Discoveryプロバイダ3021はネットワーク上のデバイス検出を司るファンクションディスカバリプロバイダ302に属するプロバイダの1つである。クライアント201は、ネットワークプラグアンドプレイ機能を持つホストコンピュータである。
【0022】
このあと、必要に応じてWS−Discoveryプロバイダ3021はGetMetadataメッセージ(図16参照)をプリンタ301に送信する。それを受信したプリンタ301はWS−MetadataExchangeに従って、自身のデバイス情報が入ったメタデータを含むGetMetadata Responseメッセージを返信する。メタデータにはデバイスIDやモデル名、製造会社名、デバイスのURLアドレス、PDL情報などが入っている。図17にデバイス情報の一例を示す。図17のデバイス情報には、モデル名1703、製造会社名1702、デバイスのURLアドレス1701が記述されている。このほか、デバイスにより提供される機能情報情報としてPDL情報が含まれる場合もある。また、PDL情報は、デバイス情報とは別に、機能情報情報としてデバイスから取得されても良い。
【0023】
すでにネットワークに接続されているWSD対応デバイスをクライアント201が探索する場合は、クライアント201は、一定のタイミングでProbeメッセージ(図14参照)をマルチキャストでネットワークに送信する。一定のタイミングとは、たとえばホストコンピュータの起動時、ユーザが探索を命じたとき、一定のポーリング間隔などである。Probeを受信したプリンタ301は、応答のメッセージとしてProbeMatch(図15参照)をユニキャストでホストコンピュータに送信し、WS−Discoveryプロバイダ3021がこれを受信する。
【0024】
図13にProbeから始まるデバイス情報の収集シーケンスを示す。クライアント201はまずProbeメッセージ1301をマルチキャストでネットワークに送信する。Probeメッセージには、そのメッセージがプローブであることを示すメッセージID1401(図14)や、探索するデバイスのタイプを示すデバイスタイプ1402が含まれる。本例では、探索の対象はプリンタであるので、図14のデバイスタイプ1402には、プリンタを示す「PrintBasic」と記述されている。
【0025】
Probe1401を受信したプリンタ301は、ProbeMatchメッセージ1302をクライアント201に応答する。図15に示すProbeMatchメッセージの例には、デバイスのアドレス1501、デバイスのタイプ1502、バージョン情報1503等が含まれている。
【0026】
クライアント201は、ProbeMatchメッセージで示されるデバイスを宛先として、図16に示すGetMetadataメッセージ1303をプリンタ301に送信する。それを受信したプリンタ301は、デバイス情報が入ったメタデータを含むGetMetadata Responseメッセージ1304をクライアント201に送信する。図13のProbeおよびProbeMatchメッセージを、デバイスからのHelloメッセージに置換すれば、Helloから始まるデバイスの探索手順となる。
【0027】
なおここではWSD機能情報を持ったデバイスからのデバイス情報の応答を記述したが、UPnP機能情報を持ったデバイスの場合は、SSDPプロバイダ3022が各メッセージを受ける。また、ファンクションディスカバリプロバイダ302はプロトコルごとにプロバイダを持つことができるため、他のプロトコルであれば他のプロバイダが送受信の処理を行うことも自明である。
【0028】
図3に戻って説明を続ける。WS−Discoveryプロバイダ3021は、デバイスを検出したら、ファンクションディスカバリクライアント303にその旨を通知する(S3003)。ファンクションディスカバリクライアント303は検出したデバイスを列挙し、上位のプラグアンドプレイマネージャ304にデバイス情報とともに通知する(S3004)。もちろんこの段階で、図13に示したようにデバイス情報も取得されている。デバイスの列挙は、たとえば検出されたデバイス名(デバイスID)をリスト化した情報(デバイスリスト)を作成して保存することで実現される。ファンクションディスカバリの詳細な動作については、図7〜図12等を参照して後述する。
【0029】
プラグアンドプレイマネージャ304は、ファンクションディスカバリクライアント303から取得したデバイス情報と作成されたデバイスリストとを元に、通常はクラスインストーラ306を呼び出す(S3007)。クラスインストーラ306によってデバイスを利用するために必要なデバイスドライバのインストールを行う。クラスインストーラ306はデバイスの種類(クラス)を判定し、そのデバイスのインストールを行うためにドライバデータベース307にアクセスする。しかし、ここではデバイスの種類がプリンタであるので、クラスインストーラ306を呼び出す前に、プラグアンドプレイマネージャ304は、まずスプーラ305に対して新たなプリンタポートを作成するようメッセージを送る。スプーラ305は、プリンタドライバがプリンタ301に出力するためのプリンタポートを作成する。その際、スプーラ305は、ネットワークデバイス用のポートモニタであるNCDポートモニタ3051とプリンタポートとを関連づけ、プラグアンドプレイマネージャ304に返す(S3006)。作成されるプリンタポートがNCDポートモニタ3051と関連づけられるのは、プリンタ301がWS−Discoveryによって検出されたネットワークデバイスだからである。その後、プラグアンドプレイマネージャ304は、クラスインストーラ306を呼び出す。
【0030】
クラスインストーラ306は、検出されたデバイスのデバイス情報に含まれるデバイスIDに対応するハードウェアIDが記述されたインストールインフォメーションファイル(INFファイル)を、ドライバデータベース307から検索する。なお、INFファイルとはデバイスドライバをインストールすると共にホストコンピュータの記憶部に記憶されるファイルである。INFファイルは、デバイスドライバをインストールすると識別情報を含んだファイル名と拡張子「.INF」という形式にて保持される。例えば、最初にインストールされたデバイスドライバのINFファイルは「OEM1.INF」という形式にて保存される。そして、次にインストールされたデバイスドライバのINFファイルは「OEM2.INF」という形式にて保存される。そして、このINFファイルには、デバイスドライバの機能情報(例えばページ記述言語:PDLともいう)等が含まれる。よって、このINFファイルを解析することでデバイスドライバの特徴を認識することが可能となる。また、このINFファイルは、デバイスドライバをアンインストールしても、該デバイスドライバと対応するINFファイルはそのままホストコンピュータの記憶部に残る。
【0031】
デバイスIDに対応するハードウエアIDを持つデバイスは、同じデバイス(すなわち同じドライバを利用できるデバイス)と判定される。ハードウエアIDは、デバイスから取得したデバイスIDなどの情報を元にして、各カテゴリ(PCI、USB、IPバスなど)のエニュミレータが作成するIDである。たとえば、ハードウエアIDがデバイスIDを含むように構成されていれば、そのデバイスIDの部分が、検出したデバイスのデバイスと一致するハードウエアIDは、デバイスIDに対応するハードウエアIDである。このように、ハードウエアID作成時と同じ変換をデバイスIDに施すことで、ハードウエアIDにより示されるデバイスと、デバイスIDにより示されるデバイスとの対応を判定できる。
【0032】
検索の結果、該当するINFファイルがみつかれば、そのINFファイルに記述されたドライバ308を、検出された新しいデバイスのデバイスドライバとしてインストールする(S3008)。該当するINFファイルが見つからなければ、「ハードウェアの追加ウィザード」のユーザインタフェースを表示する。ユーザはUIにしたがってドライバを選択する。選択されたドライバがインストールする(S3009)。図3ではこの場合のドライバは外部メディア309から供給されてドライバデータベース307に複製、登録される。
【0033】
<ファンクションディスカバリ>
次に図4のファンクションディスカバリについて説明する。ファンクションディスカバリは、ファンクションディスカバリクライアント303とファンクションディスカバリプロバイダ302の2つに分けられる。両者は共通のインタフェースであるファンクションディスカバリAPI402を介してデータのやりとりを行う。ファンクションディスカバリクライアント303は、ファンクションディスカバリプロバイダ302からの通知により、ファンクションディスカバリカテゴリ401が有する情報を元に動作を行う。本実施形態では、ファンクションディスカバリクライアント303には、「ネットワークデバイスの追加と削除」部3031と、IPバスエニュミレータ3032に加えて、優先インストール部3033が存在する。優先インストール部3033にはさらに優先項目テーブル3033aが含まれる。ネットワークデバイスの追加と削除部3031は、オペレーティングシステムが一般的には標準で備えている。たとえばウインドウズ(登録商標)OSには備えられている。
【0034】
ファンクションディスカバリプロバイダ302により受信されたデバイス情報は、ファンクションディスカバリクライアント303に渡される。そのデバイス情報に基づいてファンクションディスカバリカテゴリ401の検出デバイスリスト4011に格納される。
【0035】
ユーザがコントロールパネルから「ネットワークデバイスの追加と削除」機能を選択すると、ネットワークデバイスの追加と削除部3031により図5のユーザインタフェース501が表示される。ネットワークデバイスの追加と削除部3031は、検出デバイスリスト4011に保存された情報(デバイスリスト)を基に、図5のユーザインタフェースのデバイスリストビュー502を表示する。デバイスリストビュー502には、デバイス名およびデバイスの状態が含まれる。また、デバイスリストビュー502から選択されたデバイスについて、プロパティ情報502が表示可能である。ユーザインタフェース(UI)501に列挙されたデバイスは、現在ネットワーク上で発見されたデバイスを示している。ユーザはデバイスリストビュー502から使用したいデバイスを選択し、追加ボタン504を押す。このときに選択されているデバイスに対応するデバイス情報が検出デバイスリスト4011から特定され、ファンクションディスカバリカテゴリ401の関連データベース4012に追加される。デバイス情報は、ファンクションディスカバリプロバイダ302が受信したメタデータのデバイス情報である。なお、図5にてデバイスを選択することなく後述の優先インストール機能を実行した場合は、ネットワーク上で発見された全てのデバイスのデバイス情報が関連データベース4012に登録される。
【0036】
一方削除ボタン505が押されると、そのとき選択されているデバイスのデバイス情報を関連データベース4012から削除する。あくまで関連データベース4012から削除するのみなので、ユーザインタフェース501上にはそのデバイスは表示されている。更新リストボタン506が押されると、Probeメッセージから始まるデバイス探索手順の再試行を行うことが、ファンクションディスカバリプロバイダ302のWS−Discoveryプロバイダ3021に通知される。そして再度Probeメッセージがネットワークにマルチキャストされてデバイスの探索が行われる。
【0037】
IPバスエニュミレータ3032は、ファンクションディスカバリカテゴリ401の関連データベース4012に登録された情報を基にデバイスを列挙して、列挙したデバイスの情報(デバイスリスト)を作成する。IPバスエニュミレータ3032は、それを上位のプラグアンドプレイマネージャ304に通知する。プラグアンドプレイマネージャ304は、通知されたデバイスリストに基づいてデバイスドライバをインストールする。なお、このときにプラグアンドプレイマネージャ304に通知されるデバイスリストは、後述する図7〜図11の処理で特定された機能情報(PDL)情報に基づいて生成される。したがって、ネットワークプラグアンドプレイによるドライバのインストールの対象となるデバイスは、ネットワークで検出された全てのデバイスではない。ネットワークプラグアンドプレイの対象となるデバイスは、図7〜図11の処理を経て関連データベース4012に登録されたデバイスである。
【0038】
<優先インストール機能>
次にファンクションディスカバリクライアントの優先インストール部3033の機能を図6のユーザインタフェースと図7のフローチャートに沿って説明する。優先インストール機能とは、指定された基準にしたがって機能情報優先機能情報を選択し、選択された優先機能情報に対応するドライバに限ってインストールするという機能である。なお、以下の説明では、ドライバをインストールする対象をプリンタとして説明している。しかし、プリンタ以外のデバイスであっても、複数の機能情報を提供するデバイスであって、各機能情報のためにドライバが必要とされるデバイスについては、プリンタと同様に本発明が適用可能である。
【0039】
この優先インストール部3033の機能が本実施形態の中心となる。優先インストール部3033は、図6のようなユーザインタフェースを持つ。すなわち図6(A)のユーザインターフェース601を介してユーザ(操作者)との間で入出力を行う。ユーザは優先インストール3033のユーザインタフェース601を起動する。たとえば、図5のユーザインターフェース501の中に優先インストール管理用のボタンを用意し、それが押された場合に図6のユーザインターフェース601を表示する。ユーザは、図6のユーザインターフェース601上で、優先設定リスト6011から、機能情報インストールするドライバを決定する際の基準となる項目(基準項目と呼ぶ。)を選択する。つまり、図6(A)のユーザインターフェースを用いて、インストール処理を実行する際にインストールすべきデバイスドライバの機能情報を特定するための基準項目を設定する。なお、優先インストール部3033は、後述する図7の処理にてインストール履歴情報に含まれる複数種類のデバイスドライバ情報に対応する機能情報から設定された基準項目に基づいて機能情報を特定する処理を実行する。たとえば、ネットワーク上で検出したプリンタが複数種類のPDLをサポートしているとする。そのプリンタのデバイス情報には、各PDLの情報(PDL情報)がプリンタの提供する機能情報機能情報情報として含まれる。機能情報をクライアントが利用するためには、機能情報に対応したデバイスドライバがインストールされる必要がある。すなわち、ユーザは使用するPDLが1つであったとしても、検出されたプリンタが複数のPDLをサポートしているとのデバイス情報から生成されたデバイスリストをプラグアンドプレイマネージャ304に通知する。これにより、プラグアンドプレイマネージャ304は、該プリンタがサポートする全てのPDLに対応するデバイスドライバをインストールする。つまり、ユーザにとっては不必要なデバイスドライバまでもインストール対象となる。そこで、そのような場合に、選択された基準項目に付された優先順位にしたがってドライバがインストールされる。図6(A)の例では、優先設定リスト6011には、「最も多くインストールしたドライバ」、「現在インストール済みドライバ」がある。さらに、優先設定リスト6011には、「最近インストールしたドライバ」、「現在使用しているアプリケーションに最適のドライバ」、「ネットワーク負荷をかけないドライバ」という計5つの基準項目が、選択肢として含まれている。
【0040】
選択された基準項目は、図6(B)に示す基準項目テーブル3033aに保存される。優先項目テーブル3033aには、基準項目毎に、項目名611と判断順位612とが対応付けられて保存されている。項目名は図では便宜的に名称で示したが、プログラムにより読み取り可能なIDであれば、記号等であってもよい。判断順位は、当該優先設定項目が選択された順序にしたがって付されている。例えば、最初に選択された基準項目の判断順位が1となる。また、図6(B)の例では、0は選択されていないことを示す。なお、本例では、基準項目テーブル3033aに登録されていない項目には、判断順位が0の基準項目も含まれるものとして説明する。
【0041】
図7は、優先インストール機能を実行する際のフローチャートである。なお、本願に記載のフローチャートにおける各処理はホストコンピュータのCPU101によって実行される。さて図7において、優先インストール部3033は、ユーザによってユーザインターフェース601の優先リスト6011に含まれる基準項目から判断順位を登録するために選択された基準項目を認識する。そして、優先インストール部3033は、選択された基準項目の順位を基準項目テーブル3033aに登録する(ステップ701)。複数の基準項目を選択して、各項目を順序づけしてドライバの優先順位を決定したい場合は、基準項目を選択して追加ボタンを押す操作を繰り返す。このようにして項目を追加すると、選択された基準項目は順位付けされた状態で順番に判断順位リスト6012に列挙される。削除ボタンを押すと判断順位リストから、そのときに選択されていた基準項目が削除される。基準項目の候補は、あらかじめ優先インストール部3033が保持している。例えば前述した図6(B)の基準項目テーブル3033aに基準項目の項目名611を登録しておき、それを優先インストール部3033が保持する。そして、判断順位リスト6012に追加された基準項目の判断順位欄612に、追加された順序を登録する。これによって、選択された基準項目と判断順位とが優先インストール部3033の基準項目テーブル3033aに登録できる。
【0042】
ユーザインタフェース601を閉じると判断順位リストが決定される。すなわち基準項目テーブル3033aに判断順位が登録される。次に優先インストール部3033は、基準項目テーブル3033aに判断順位が登録されているか判断する(ステップ702)。なお、判断順位として0が登録されている場合、優先インストール部3033は、判断順位が登録されていないものと判断する。したがって、すべての項目の判断順位が0であれば判定は「いいえ」であるからステップ701に分岐する。
【0043】
ひとつでも判断順位が設定された基準項目が基準項目テーブルに登録されていれば、優先インストール部3033は、まず判断順位リスト612において先頭順位が登録されている基準項目に着目する(ステップ703)。すなわち、基準項目テーブル3033aに登録された判断順位が1の基準項目に着目する。そして優先インストール部3033は、着目した基準項目についてホストコンピュータの情報を調査し、基準項目に合致するドライバ(すなわちそのドライバが対応する機能情報とも言える)を特定する(ステップ704)。つまり、優先インストール部3033は、複数の基準項目のうち登録された順位に従って基準項目に着目する。そして、優先インストール部3033は、WSD機能を用いた認識機能により認識された周辺機器に対応するデバイスドライバをインストールする際に、着目された基準項目に基づいて機能情報を特定する。
【0044】
優先インストール部3033は、ステップ704により特定されたデバイスドライバに対応するPDL(機能情報)を判定する(ステップ705)。詳細には、優先インストール部3033が、コンピュータに保持されているデバイスドライバのインストール履歴情報を認識する。そして、優先インストール部3033は、認識されたデバイスドライバのインストール履歴情報に含まれるインストールされたデバイスドライバ情報と対応付けられた機能情報(例えばPDL)を解析する。そして、優先インストール部3033は、インストールの対象となる機能情報を特定する。ステップ705の処理により、機能情報(例えばPDL)を決定できたなら、この機能情報(例えばPDL)に対応するデバイスドライバをインストールする。そのために、優先インストール部3033は、インストールするドライバに関する情報(たとえばPDL機能情報情報)をファンクションディスカバリカテゴリ401の関連データベース4012に追加する。例えばプリンタが複数種類のPDLをサポートしている場合、優先インストール部3033は、特定された機能情報(例えばPDL)に基づいて、周辺機器に対応する複数種類のデバイスドライバからインストールすべきデバイスドライバを決定する。つまり、特定された機能情報と対応するデバイスドライバを複数種類のデバイスドライバから検出して、インストールすべきドライバとして決定する。優先インストール部3033は、複数の機能情報(たとえば複数種類のPDLへの対応)を備えたプリンタについては、インストールすると決定されたドライバに対応する機能情報情報(たとえばドライバが対応するPDLであり、優先機能情報情報と呼ぶ。)以外の機能情報情報を削除する(ステップ706)。すなわち、図5のUI501にて選択されたデバイスのデバイス情報が関連データベース4012に登録される。ここで、選択されたデバイスが複数のPDLをサポートする場合、関連データベース4012には、該デバイスがサポートするPDLに対応する数のデバイスドライバが登録される。この状態で作成されたデバイスリストをプラグアンドプレイマネージャ304に通知すると、全てのデバイスドライバがインストールされてしまう。しかしながら、図7の処理を実行することで、UI501にて選択されたデバイスが複数のPDLをサポートしていたとしても、S705にて特定されたPDLに対応するデバイスドライバ以外は関連データベース4012から削除される。つまり、優先インストール部3033は、選択されたプリンタが複数のPDLを搭載していれば、そのPDLのみしか搭載していないプリンタのようにデバイス情報を書き変える。また、インストールすると決定されたドライバが対応するプリンタ以外のデバイス情報は、関連データベース4012から削除する。たとえば、プリンタが持つPDLがすべて優先する(すなわちインストールすると決定された)PDLと一致しない場合は、そのプリンタのデバイス情報を関連データベース4012から削除する。なお、ドライバと機能情報とを対応付けるための情報はデバイス情報に含まれている。複数の機能情報を提供するデバイスについては機能情報毎に、機能情報とドライバとを対応付ける情報が含まれる。そして、ユーザインターフェースを終了する(706)。
【0045】
この後、ファンクションディスカバリクライアント303のIPバスエニュミレータ3032が、ファンクションディスカバリカテゴリ401の関連データベース4012に登録されたデバイスを列挙して、プラグアンドプレイマネージャに渡す。優先インストール3033がステップ706において関連データベース4012を変更したことにより、インストールされると決定されたドライバが対応していないプリンタのデバイス情報は、プラグアンドプレイマネージャ304に渡されない。したがって、プラグアンドプレイマネージャ304は、プラグアンドプレイ機能により、図7の処理により特定されたPDLに対応するドライバをインストールする。詳細には、プラグアンドプレイマネージャ304は、図7の705にて決定されたインストールすべきデバイスドライバをインストールすべく制御する。つまり、プラグアンドプレイマネージャ304は、オペレーションシステムに対して特定された機能情報に対応するデバイスドライバをインストールするよう指示する。そして、図7の処理により特定されたPDLに対応しないドライバインストールされない。これにより、オペレーティングシステムの持つネットワークプラグアンドプレイシステムを変更することなく、ユーザが所望とするPDLに対応するドライバを指定してプラグアンドプレイによる自動インストールをすることができる。
【0046】
たとえば、従来のネットワークプログラムグランドプレイ機能では、複数のPDLを搭載しているプリンタについては、各PDLに対応するドライバがインストールされる。しかし、本実施形態では、インストールするドライバを選択するための基準に沿ってドライバが選択されるので、その基準を満たすPDLのドライバのみがインストールされる。
【0047】
一方、インストールするドライバを決定できなかった場合には、基準項目テーブル3033aにまだ判断されていない基準項目が残っているか判定する(708)。残っていれば、基準項目テーブル3033aから次の判断順位を持つ項目を選択する(707)。そして、選択した基準項目に着目し、その項目内容に従ってホストコンピュータの情報を調査し、ドライバを決定する(704)。つまり、着目された基準項目に基づいて機能情報を特定することができない場合には、インストールする際に使用される機能情報が特定されるまで、設定された順位に従って着目すべき基準項目を順次変更する処理を繰り返す。もし、ステップ708で、判断していない基準項目が基準項目テーブル3033aに残っていないと判定された場合は、「優先するPDLを見つけられませんでした」とメッセージをユーザインターフェースに表示する。そして、優先インストール部3033は、図7の処理を終了する。この場合は、通常のネットワークプラグアンドプレイと同等に動作する。
【0048】
このように、優先インストール部3033は、クライアントがProbeメッセージを発行することでネットワーク上から探索された(すなわち認識された)デバイスにインストールするドライバを選択する。そして、選択されたドライバを特定するための情報をプラグアンドプレイマネージャに引き渡すために、デバイス情報を加工する。
【0049】
また、デバイスがHelloメッセージを発行することで認識されたデバイスにインストールするドライバも、基準項目に適合するものが選択されてインストールされる。ただし、この場合には、PnPによりドライバがインストールされる対象は新たに認識されたデバイスに限られる。
【0050】
<優先ドライバの決定>
次に、図8乃至図12を参照して、図7のステップ704の詳細を説明する。
なお、上述したように本願は、ユーザの意図とは関係なくネットワークに接続されているプリンタに関連するドライバが自動インストール処理されることにより、ホストコンピュータのメモリが浪費してしまうという点を課題としている。さらに、本願は、1つのデバイスに対して複数のデバイスドライバがインストールされることもあり、ユーザが実際にデバイスドライバを選択する際に、誤ったデバイスドライバを選択する恐れについても課題としている。本願は、この課題を解決するためにユーザの趣向に合わせた機能情報(例えばPDL)を特定し、特定された機能情報(例えばPDL)に対応するデバイスドライバを自動インストールすることを目的とする。そのため、本願ではホストコンピュータにおけるデバイスドライバのインストール履歴情報に基づいて、ユーザが所望とする機能情報(例えばPDL)を特定する。例えば、履歴情報を参照して、最も多くインストールされているPDLを特定することができれば、ユーザはそのPDLを好んで使用してきたと想定できる。そのため、ユーザの趣向を反映したデバイスドライバの自動インストールを実現できる。なお、本願に記載のインストール履歴情報とは、自動インストールを実行する時点よりも過去および現在(自動インストールを実行する時点)においてインストールされているデバイスドライバについての情報を保持しているとする。つまり、プラグアンドプレイマネージャ304が、デバイスドライバをインストールすべく制御する時点よりも以前にインストールされたデバイスドライバについての情報である。また、本願に記載のインストール履歴情報とは、自動インストールを実行する時点よりも過去にインストールされたことのあるデバイスドライバについての情報である。つまり、プラグアンドプレイマネージャ304が、デバイスドライバをインストールすべく制御する時点においてインストールされたことのあるデバイスドライバについての情報でもある。さらに、インストール履歴情報は、デバイスドライバをインストールすべく制御する時点よりも以前またはデバイスドライバをインストールすべく制御する時点においてインストールされているデバイスドライバについての情報でもある。
ステップ704は、着目している基準項目によって異なる処理となるので、まず着目基準項目が何かが判定され、その判定結果に応じて図7乃至図12のいずれかで説明する処理が実行される。
【0051】
(最多インストール基準)
図8は、着目する基準項目が、「もっとも多くインストールしたドライバ」である場合の、ドライバの決定手順を示す図である。この基準項目は、換言すれば、過去にクライアントコンピュータにインストールされたデバイスドライバが対応した機能情報のうち、最多の機能情報と同種の機能情報に対応するデバイスドライバを選択する、というものである。つまり、図8のフローチャートは、インストール履歴情報においてインストールされたデバイスドライバ情報に対応する機能情報のうち、最多の機能情報に対応するデバイスドライバをインストールするための情報を基準項目に対して設定する。そして、優先インストール部3033は、過去に最も多くインストールされた機能情報に対応するデバイスドライバを自動インストールする。図8の例では、ステップ802によって対象デバイスをプリンタに限定し、機能情報をPDLに限定しているが他のデバイスや機能情報であっても図8の手順を適用できる。その拡張は、ステップ802を削除し、図中の「PDL」を機能情報と読み替えれば容易に実現できる。これは図9,図10についても同様である。
【0052】
さて、過去にインストールしたドライバは、オペレーティングシステムによって、クラスインストーラ306がインストールした順番に番号をINFファイル名称につけてドライバデータベース307に保持されている。これはたとえばウインドウズ(登録商標)において実現されている。優先インストール部3033は、「もっとも多くインストールしたドライバ」が着目する基準項目であれば、一番番号の大きい(つまり最後にインストールされた)INFファイルをドライバデータベース307から取得する(801)。
【0053】
次にINFファイルのClassエントリを見て、優先インストール部3033は、デバイスの種類がプリンタであるかどうかを判定する(802)。Classエントリにはデバイスの種類を示す情報が記録されている。優先インストール部3033が、現在判定対象としているINFファイルがプリンタであると判定した場合には、INFファイルのDescriptionからPDL名称を検索する(803)。PDL名称が見つかれば、そのPDLに対応するカウンタに1加算する。初めて現れたPDL名称であればPDLに対応するカウンタ値を1とする。こうして、優先インストール部3033は、PDLの種類毎に対応するドライバの数をカウントする(804)。
【0054】
優先インストール部3033は、取得していないINFファイルがドライバデータベースに有るか判定し、あれば次のINFファイルを取得して(808)、また同じ処理を繰り返す。PDL名称には、たとえばPostscript(登録商標)等がある。INFファイルのDescriptionにはそのような名称が含まれているので、ステップ803では、優先インストール部3033は、あらかじめ用意しておいたPDL名称をINFファイルから検索する。
【0055】
すべてのINFファイルを検索してそれに含まれるPDLをカウントし終わったら、優先インストール部3033は、一番多かった(すなわちカウンタ値が最大の)PDLが一意に決定できるか判定する。一意に決定できれば、優先インストール部3033は、カウンタ値が最大のPDLを優先PDL(優先機能情報)として決定する。そして優先インストール部3033は、決定されたPDLの識別名など、ドライバを特定するための情報(優先機能情報情報)をメモリ等に保存する(807)。一意に決定できない場合には、優先PDLを見つけられなかったものとして、その旨を示す情報を保存して終了する(809)。ステップ807で保存された優先機能情報情報や、ステップ809で保存した情報が図7のステップ705に引き渡されて、判定の材料となる。
【0056】
図8の処理を実行することにより、過去に最も多くインストールされたPDL(機能情報)を特定し、該PDLに対応したデバイスドライバを特定してから自動インストールが実行される。上述したようにINFファイルは、対応するデバイスドライバがアンインストールされてもホストコンピュータの記憶部に残るため、過去にインストールされたデバイスドライバの履歴を反映した自動インストール処理を実現できる。
ここで、過去に最も多くインストールされたPDLは、ユーザにとって使いなれたPDLであり、これまでと変わらない出力処理を実現することが可能となる。このような基準項目を設定することでユーザの趣向に合ったPDLに対応するデバイスドライバを特定して、インストールすることが可能となる。そのため、ユーザにとって不必要なデバイスドライバがインストールされることによるメモリの浪費を防止できる。さらに、ユーザにとって不必要なデバイスドライバがインストールされることにより、ユーザの意図しないPDLにて印刷されることも防止できる。
【0057】
(現在インストール基準)
図9は、着目する基準項目が、「現在インストール済みのドライバ」である場合の、ドライバの決定手順を示す図である。この基準項目は、換言すれば、現在インストールされている各デバイスドライバの機能情報(例えばPDL)の中で最多の機能情報(例えばPDL)と同種の機能情報(例えばPDL)に対応するデバイスドライバを選択するものである。なお、上述した「最多インストール基準」が基準項目の場合、過去にインストールされたものが対象となるため、既にアンインストールされているデバイスドライバについてもカウントの対象となる。しかし、「現在インストール基準」が基準項目の場合、既にアンインストールされているデバイスドライバはカウント対象外である。つまり、図9は、インストール履歴情報において、コンピュータに現在インストールされているデバイスドライバの機能情報と同種の機能情報に対応するデバイスドライバをインストールするための情報が基準項目に対して設定された場合に実行される。
【0058】
ウインドウズ(登録商標)では、現在ホストコンピュータにインストールされているプリンタドライバは、印刷するためのデータを保持するプリントキューというオブジェクトに一つ一つ割り当てられている。そこでまず、優先インストール部3033は、すべてのプリントキューからプリンタドライバを列挙するために、オペレーティングシステムのAPIであるEnumPrinters()を呼び出す(901)。ここでひとつも列挙されなければプリンタキューが存在しない。そこで、優先インストール部3033は、現在プリントキューが存在するか判定する(902)。判定の結果、存在しなければ、優先するドライバすなわち「現在インストール済みのドライバ」に該当するドライバが見つけられなかったと判定できる。
【0059】
プリントキューが存在すれば、次に、優先インストール部3033は、列挙されたプリンタドライバのうち先頭のプリンタドライバに着目する(903)。優先インストール部3033は、着目したプリンタドライバに対してそのドライバの能力を取得するためにオペレーティングシステムのAPIであるDeviceCapabilities()をDC_PERSONARITYの引数で呼び出す(905)。DC_PERSONARITYは、PDL名称を取得する機能である。優先インストール部3033は、ここで取得したPDL名称をカウントする(906)。すなわち、PDL名称ごとにカウンタを設け、ステップ905で取得できた名称に対応するカウンタに1を加算する。まだ列挙したプリンタドライバが残っているときは(907)、優先インストール部3033は、現在の着目プリンタドライバの次のプリンタドライバに着目する(904)。そしてPDL名称取得を行う。
【0060】
優先インストール部3033は、列挙したプリンタすべてのPDLをカウントし終わった場合(907−いいえ)、カウント値が最大となるPDLを調査する(908)。一番多かったPDLが一意に決定できれば、優先インストール部3033は、そのPDLを優先するPDLとして決定し、そのPDLすなわち機能情報を特定するための優先機能情報情報を保存する(909)。そうでなければ見つけられなかったものとして、その旨を示す情報を保存して終了する終了する(910)。
【0061】
図9に記載の処理を実行することにより、現在インストールされているデバイスドライバの中で最も多くインストールされているPDLを特定することができる。例えば、図18の場合、PDL1に対応するデバイスドライバが最も多くインストールされている。よって、PDL1が、ユーザが最も必要とするPDLであると想定できる。優先インストール部3033は、複数種類のデバイスドライバからPDL1に対応するデバイスドライバに特定してインストール処理が実行される。以上のように、図9の処理を実行することで、インストール処理を実行する時点でのユーザの趣向にあったPDLを特定する。そして、特定されたPDLに対応するデバイスドライバが自動インストール対象となり、ユーザの趣向にあったデバイスドライバに限定してインストールすることが可能となる。よって、ユーザにとって不必要なデバイスドライバがインストールされることによるメモリの浪費を防止できる。さらに、ユーザにとって不必要なデバイスドライバがインストールされることにより、ユーザの意図しないPDLにて印刷されることも防止できる。
【0062】
また、図9では現在インストールされている各デバイスドライバが対応する機能情報(例えばPDL)の中で最も多い機能情報(例えばPDL)と同種の機能情報(例えばPDL)に対応するデバイスドライバを選択する処理と記載したがこれに限る必要はない。現在インストールされている各デバイスドライバが対応する機能情報(例えばPDL)を保持し、これら保持された機能情報(例えばPDL)に対応するデバイスドライバを自動インストール対象としても良い。この処理により、例えば図18のような結果が得られたとする。この場合、PDL1、PDL2、PDL3の3種類のPDLドライバが現在インストールされている。ここで、現在インストールされているPDLは、ユーザが必要としていると考えられる。よって、優先インストール部3033は、インストール処理を実行する時点において、ユーザが必要とする3種類のPDLに対応するデバイスドライバをインストールすることが可能となる。よって、ユーザは用途にあった出力処理を実現することが可能となる。
【0063】
(最近インストール基準)
図10は、着目する基準項目が、「最近インストールしたドライバ」である場合の、ドライバの決定手順を示す図である。この基準項目は、換言すれば、クライアントコンピュータに最近インストールされたデバイスドライバが対応する機能情報と同種の機能情報に対応するデバイスドライバを選択する、というものである。つまり、図10、インストール履歴情報において、コンピュータに最後(最近)にインストールされたデバイスドライバの機能情報と同種の機能情報に対応するデバイスドライバをインストールするための情報が基準項目に対して設定された場合に実行される。
【0064】
前述したように過去にインストールしたドライバは、オペレーティングシステムによって、クラスインストーラ306がインストールした順番に番号をINFファイル名称につけてドライバデータベース307に保持されている。そこで優先インストール部3033は、まず一番番号の大きい(つまり最後にインストールされた)INFファイルをドライバデータベース307から取得する(1001)。次に優先インストール部3033は、INFファイルのClassエントリを見て、デバイスの種類がプリンタであるかどうかを判定する(1002)。プリンタだった場合は、優先インストール部3033は、INFファイルのDescriptionからPDL名称を検索する(1003)。PDL名称が見つかれば(1004)、優先インストール部3033は、そのPDLを優先するPDLとして決定し、そのPDLすなわち機能情報を特定するための優先機能情報情報を保存する(1005)。また、1004の処理により、優先インストール部3033が、PDL名称を見つけることができない場合(1004−No)、次に番号の大きいINFファイルを取得して(1006)、また同じ処理を繰り返す。すべてのINFファイルを検索して見つけられなかったら、そこで終了する。この場合には、該当するドライバはない旨を示す情報を保存して図7のステップ705に引き渡す(1008)。
【0065】
図10の処理を実行することにより、ユーザが最近インストールしたデバイスドライバに対応するPDLを特定して、該PDLに対応するデバイスドライバのみを自動インストール対象とすることができる。つまり、インストール処理を実行する時点における最新のユーザの趣向を反映したPDLを特定して、デバイスドライバをインストールすることが可能となる。
【0066】
(最適アプリケーション基準)
次に着目する基準項目が、「現在使用しているアプリケーションに最適なドライバ」の場合のPDL検出方法を図11のデータベース図とともに説明する。図11のデータベースは、デバイスドライバと基準項目の値との関連を示す関連情報であるともいえる。これは図12についても同様である。
【0067】
本例の場合の手順は非常に単純であるので、手順のフローは省略する。優先インストール部3033は、アプリケーション名とそのアプリケーションに最適なPDL名称をテーブルに持つ図11のようなアプリケーション別PDLデータベースをあらかじめ保持している。優先インストール部3033は、現在インストールされているアプリケーションを、ハードディスクなどの外部記憶装置をスキャンして調査する。たとえばオペレーティングシステムが管理するレジストリなどに、インストールされたアプリケーション名が登録されているので、それを取得できる。そこで取得した名称で図11のデータベースを検索する。検索の結果ヒットすれば、すなわちデータベースに登録されたアプリケーションがインストールされていれば、データベース1101において、そのアプリケーション名に対応するPDL名ごとにカウントを行う。これを、インストールされているアプリケーションすべてについて繰り返す。すべてのアプリケーションについて対応するPDLをカウントし終えたなら、最大のカウント値のPDLが優先するPDLである。そこで、カウンタ値が一番大きかったPDLが一意に決定できるか判定する。そして一意に決定できれば、そのPDLを優先するPDLとして決定し、そのPDLすなわち機能情報を特定するための優先機能情報情報を保存する。そうでなければ見つけられなかったものとして、該当するドライバはない旨を示す情報を保存して図7のステップ705に引き渡す。
【0068】
(ネットワーク負荷基準)
次に、着目する基準項目が、「ネットワーク負荷をかけないドライバ」である場合のPDL検出方法を図12のデータベース図とともに説明する。前述の4通りの基準では、優先機能情報であると決定されたPDLに対応するドライバがプラブアンドプレイの対象として選択された。これに対してネットワーク負荷基準では、図13に示すような手順で探索されたプリンタが対応するPDLのドライバのうち、最もネットワークに負荷をかけないドライバがPnPの対象として選択される。すなわち、プリンタによっては、異なる種類のPDLのドライバがPnPの対象とされる場合がある。本例ではネットワークの負荷はスプールファイルのサイズで示されている。
【0069】
優先インストール部3033は、ある決まったサンプルデータを印刷したときに出力されるPDLデータのスプールファイルサイズとそのPDL名称をテーブルに持つ図12のようなデータベース1201をあらかじめ保持している。すなわち、データベース1201のスプールサイズは、各種類のPDLにより必要とされるスプールファイルの比を表している。もちろん印刷するデータの内容により変動する可能性はあるので、サンプルデータは、各データタイプを、実印刷時の比率で含むようなデータであることが望ましい。
【0070】
優先インストール部3033は、まず、ファンクションディスカバリカテゴリ401の関連データベース4012から、探索されたプリンタのデバイス情報を取得する。デバイス情報に含まれる機能情報情報を参照して、複数のPDLを機能情報として持つプリンタを検索する。該当するデバイス情報があれば、そのPDL名称を、データベース1201内のPDLリストと比較する。そして、そのデバイス情報に含まれるPDLの中でもっともスプールサイズの小さいPDLをデータベース1201から選択する。選択されたPDLを表す情報が、優先機能情報情報として図7のステップ705に引き渡される。もしも一意に決められないときは、見つけられなかったものとして終了する。
【0071】
以上、図7乃至図12を参照して説明したように、ネットワークプラグアンドプレイによりデバイスドライバをインストールする際において、インストール履歴情報を用いて、優先する機能情報を一定の基準で選択する。そして、選択した機能情報に対応するドライバがコンピュータにインストールされる。このため、ネットワークに接続されたすべてのデバイスの全ての機能情報に対応したドライバがインストールされることを防止できる。特に本実施形態では、複数の機能情報として、複数種類のPDLをサポートしたプリンタ(例えば複数種類のデバイスドライバと対応する周辺機器)と通信可能なコンピュータが、その全PDLのドライバに対してインストール処理を実行しない。該一定基準で選択したPDLのドライバをインストールする。このため印刷実行時に、ユーザの意図しないPDLに対応したドライバにて印刷されることを防止でき、ユーザのドライバ選択の選択操作の向上に寄与する。このように、本願に記載の機能情報を特定する処理は、ネットワークに接続された周辺機器から所定のメッセージを取得し、複数種類のデバイスドライバと対応する旨のメッセージを取得した場合に実行される。
【0072】
さらにインストールするドライバを決定するための基準を利用者が指定できる。このため、利用者は最も自己の利用環境に適した基準を選択することで、インストールされるドライバを間接的に選択できる。
【0073】
また、図8乃至図12では、複数のPDLを搭載したデバイスの機能を優先してインストールする仕組みを記述した。しかしこれはPDLではなくてもよい。たとえば、マルチファンクションデバイスにおいて、FAXとプリンタとスキャナの機能を持っている場合で、FAXとプリンタのドライバのみインストールするような手法に置き換えてもよい。この場合PDLを、機能情報と置き換えればよい。デバイスが提供する機能情報は、GetMetadataメッセージによりデバイスから取得できる機能情報情報から特定できる。本実施形態では、機能情報情報はデバイス情報にふくまれるものと説明したが、機能情報情報がデバイス情報とは別のシーケンスで取得されるシステムであっても、本発明が適用できる。
【0074】
以上、この発明の実施の形態について図面を参照して詳述してきたが、具体的な構成はこの実施の形態に限られるものではない。すなわち、本発明の本質を損なわない範囲であれば、実施形態の変形は可能である。
【0075】
なお本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。また本発明の目的は、前述の実施形態の機能を実現するプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0076】
また、本発明には、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた場合についても、本発明は適用される。その場合、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
【0077】
また、発明の実施の形態は、本発明を中核として構成される装置又は方法を説明している。このため本実施形態には本発明の本質的部分っき加えて付加的な構成要件も記載されている。すなわち発明の実施の形態において説明した装置又は方法の構成要件を備えることは、本発明を成立させるための十分条件ではあるものの、必要条件ではない。
【図面の簡単な説明】
【0078】
【図1】本発明の一実施形態として、コンピュータを含むシステムの構成を説明するブロック図である。
【図2】本発明の一実施形態として、コンピュータとプリンタがネットワークで接続された、ネットワークプリンティング環境の簡略図である。
【図3】本発明の一実施形態として、ネットワークプラグアンドプレイの全体システム構成を説明するブロック図である。
【図4】本発明の一実施形態として、図4のネットワークプラグアンドプレイのうちファンクションディスカバリの部分を詳細にしたブロック図である。
【図5】本発明の一実施形態としての、ファンクションディスカバリの「ネットワークデバイスの追加と削除」のユーザインタフェースの一例を示す図である。
【図6】本発明の一実施形態としての、ファンクションディスカバリの「優先インストール」のユーザインタフェースの一例を示す図である。
【図7】本発明の一実施形態としての、優先インストールの処理フローを表したフローチャート図である。
【図8】本発明の一実施形態としての、優先インストールの優先設定項目のうち「もっとも多くインストールしたドライバ」の処理フローを表したフローチャート図である。
【図9】本発明の一実施形態としての、優先インストールの優先設定項目のうち「現在インストール済みドライバ」の処理フローを表したフローチャート図である。
【図10】本発明の一実施形態としての、優先インストールの優先設定項目のうち「最近インストールしたドライバ」の処理フローを表したフローチャート図である。
【図11】本発明の一実施形態としての、優先インストールの優先設定項目のうち「現在使用しているアプリケーションに最適なドライバ」のデータベース図である。
【図12】本発明の一実施形態としての、優先インストールの優先設定項目のうち「ネットワーク負荷をかけないドライバ」のデータベースの一例を示す図である。
【図13】本発明の一実施形態としての、Device Profile for Web Servicesのメッセージシーケンス図である。
【図14】本発明の一実施形態としての、SOAPにおけるWS−DiscoveryのProbeメッセージのサンプルを示す図である。
【図15】本発明の一実施形態としての、SOAPにおけるWS−DiscoveryのProbeMatchメッセージのサンプルを示す図である。
【図16】本発明の一実施形態としての、SOAPにおけるDevice Profile for Web ServicesのGetMetadataメッセージのサンプルを示す図である。
【図17】本発明の一実施形態としての、SOAPにおけるDevice Profile for Web Servicesのメタデータメッセージのサンプルを示す図である。
【図18】プリンタドライバとページ記述言語との対応関係の例を示す図である。
【符号の説明】
【0079】
101 CPU
102 ROM
103 RAM
104 入力I/F
105 外部記憶装置
1051 アプリケーションソフトウェア
1052 印刷関連プログラム
1053 プリンタドライバ
1054 オペレーティングシステム

【特許請求の範囲】
【請求項1】
複数種類のデバイスドライバと対応する周辺機器と通信可能なコンピュータにおけるプログラムであって、
コンピュータに保持されているデバイスドライバのインストール履歴情報を認識する認識手段と、
前記認識手段によって認識されたデバイスドライバのインストール履歴情報に含まれるインストールされたデバイスドライバ情報と対応付けられた機能情報を解析して、インストールの対象となる機能情報を特定する特定手段と、
前記特定手段にて特定された機能情報に基づいて前記周辺機器に対応する複数種類のデバイスドライバからインストールすべきデバイスドライバを決定する決定手段と、
前記決定手段により決定されたデバイスドライバをインストールすべく制御するインストール制御手段と
してコンピュータを機能させることを特徴とするプログラム。
【請求項2】
前記インストール処理を実行する際にインストールすべきデバイスドライバの機能情報を特定するための基準項目を設定する設定手段としてさらにコンピュータを機能させ、
前記特定手段は、前記インストール履歴情報に含まれる複数種類のデバイスドライバ情報に対応する機能情報から前記設定手段によって設定された基準項目に基づいて機能情報を特定することを特徴とする請求項1に記載のプログラム。
【請求項3】
前記設定手段は、前記インストール履歴情報においてインストールされたデバイスドライバ情報に対応する機能情報のうち、最多の機能情報に対応するデバイスドライバをインストールするための情報を前記基準項目に対して設定することを特徴とする請求項2に記載のプログラム。
【請求項4】
前記設定手段は、前記インストール履歴情報において、コンピュータに現在インストールされているデバイスドライバの機能情報と同種の機能情報に対応するデバイスドライバをインストールするための情報を前記基準項目に対して設定することを特徴とする請求項2または3に記載のプログラム。
【請求項5】
前記設定手段は、前記インストール履歴情報において、前記コンピュータに最後にインストールされたデバイスドライバの機能情報と同種の機能情報に対応するデバイスドライバをインストールするための情報を前記基準項目に対して設定することを特徴とする請求項2乃至4のいずれか1項に記載のプログラム。
【請求項6】
前記設定手段は、複数の基準項目に対して順位を設定し、
前記特定手段は、前記複数の基準項目のうち前記順位に従って基準項目に着目して、前記認識機能により認識された周辺機器に対応するデバイスドライバをインストールする際に、前記着目された基準項目に基づいて機能情報を特定し、
前記着目された基準項目に基づいて前記機能情報を特定することができない場合には、インストールする際に使用される機能情報が特定されるまで、前記設定された順位に従って着目すべき基準項目を順次変更する処理を繰り返すことを特徴とする請求項2乃至5のいずれか1項に記載のプログラム。
【請求項7】
前記デバイスにはプリンタが含まれ、前記機能情報はプリンタが解釈可能なページ記述言語であることを特徴とする請求項1乃至6のいずれか1項に記載のプログラム。
【請求項8】
前記インストール履歴情報は、デバイスドライバをインストールすべく制御する時点よりも以前にインストールされたデバイスドライバについての情報であることを特徴とする請求項1乃至7のいずれか1項に記載のプログラム。
【請求項9】
前記インストール履歴情報は、デバイスドライバをインストールすべく制御する時点においてインストールされているデバイスドライバについての情報を含むことを特徴とする請求項1乃至7のいずれか1項に記載のプログラム。
【請求項10】
前記インストール履歴情報は、デバイスドライバをインストールすべく制御する時点よりも以前にインストールされたデバイスドライバについての情報またはデバイスドライバをインストールすべく制御する時点においてインストールされているデバイスドライバについての情報であることを特徴とする請求項1乃至7のいずれか1項に記載のプログラム。
【請求項11】
前記コンピュータは、ネットワークに接続された周辺機器から所定のメッセージを取得するメッセージ取得手段を有し、
前記特定手段は、前記メッセージ取得手段により複数種類のデバイスドライバと対応する旨のメッセージを取得した場合に前記特定処理を実行することを特徴とする請求項1乃至10のいずれか1項に記載のプログラム。
【請求項12】
前記インストール制御手段は、オペレーションシステムに対して前記特定手段によって特定された機能情報に対応するデバイスドライバをインストールするよう指示することを特徴とする請求項1乃至11のいずれか1項に記載のプログラム。
【請求項13】
複数種類のデバイスドライバと対応する周辺機器と通信可能な機能情報提供装置であって、
保持しているデバイスドライバのインストール履歴情報を認識する認識手段と、
前記認識手段によって認識されたデバイスドライバのインストール履歴情報に含まれるインストールされたデバイスドライバ情報と対応付けられた機能情報を解析して、インストールの対象となる機能情報を特定する特定手段と、
前記特定手段にて特定された機能情報に基づいて前記周辺機器に対応する複数種類のデバイスドライバからインストールすべきデバイスドライバを決定する決定手段と、
前記決定手段により決定されたデバイスドライバをインストールすべく制御するインストール制御手段と
を備えることを特徴とする機能情報提供装置。
【請求項14】
前記インストール処理を実行する際にインストールすべきデバイスドライバの機能情報を特定するための基準項目を設定する設定手段をさらに有し、
前記特定手段は、前記インストール履歴情報に含まれる複数種類のデバイスドライバ情報に対応する機能情報から前記設定手段によって設定された基準項目に基づいて機能情報を特定することを特徴とする請求項13に記載の機能情報提供装置。
【請求項15】
前記設定手段は、前記インストール履歴情報においてインストールされたデバイスドライバ情報に対応する機能情報のうち、最多の機能情報に対応するデバイスドライバをインストールするための情報を前記基準項目に対して設定することを特徴とする請求項14に記載の機能情報提供装置。
【請求項16】
前記設定手段は、前記インストール履歴情報において、コンピュータに現在インストールされているデバイスドライバの機能情報と同種の機能情報に対応するデバイスドライバをインストールするための情報を前記基準項目に対して設定することを特徴とする請求項14または15に記載の機能情報提供装置。
【請求項17】
前記設定手段は、前記インストール履歴情報において、前記コンピュータに最後にインストールされたデバイスドライバの機能情報と同種の機能情報に対応するデバイスドライバをインストールするための情報を前記基準項目に対して設定することを特徴とする請求項14乃至16のいずれか1項に記載の機能情報提供装置。
【請求項18】
前記設定手段は、複数の基準項目に対して順位を設定し、
前記特定手段は、前記複数の基準項目のうち前記順位に従って基準項目に着目して、前記認識機能により認識された周辺機器に対応するデバイスドライバをインストールする際に、前記着目された基準項目に基づいて機能情報を特定し、
前記着目された基準項目に基づいて前記機能情報を特定することができない場合には、インストールする際に使用される機能情報が特定されるまで、前記設定された順位に従って着目すべき基準項目を順次変更する処理を繰り返すことを特徴とする請求項14乃至17のいずれか1項に記載の機能情報提供装置。
【請求項19】
前記デバイスにはプリンタが含まれ、前記機能情報はプリンタが解釈可能なページ記述言語であることを特徴とする請求項13乃至18のいずれか1項に記載の機能情報提供装置。
【請求項20】
前記インストール履歴情報は、デバイスドライバをインストールすべく制御する時点よりも以前にインストールされたデバイスドライバについての情報であることを特徴とする請求項13乃至19のいずれか1項に記載の機能情報提供装置。
【請求項21】
前記インストール履歴情報は、デバイスドライバをインストールすべく制御する時点においてインストールされているデバイスドライバについての情報を含むことを特徴とする請求項13乃至19のいずれか1項に記載の機能情報提供装置。
【請求項22】
前記インストール履歴情報は、デバイスドライバをインストールすべく制御する時点よりも以前にインストールされたデバイスドライバについての情報またはデバイスドライバをインストールすべく制御する時点においてインストールされているデバイスドライバについての情報であることを特徴とする請求項13乃至19のいずれか1項に記載の機能情報提供装置。
【請求項23】
ネットワークに接続された周辺機器から所定のメッセージを取得するメッセージ取得手段をさらに有し、
前記特定手段は、前記メッセージ取得手段により複数種類のデバイスドライバと対応する旨のメッセージを取得した場合に前記特定処理を実行することを特徴とする請求項13乃至22のいずれか1項に記載の機能情報提供装置。
【請求項24】
前記インストール制御手段は、オペレーションシステムに対して前記特定手段によって特定された機能情報に対応するデバイスドライバをインストールするよう指示することを特徴とする請求項13乃至23のいずれか1項に記載の機能情報提供装置。
【請求項25】
複数種類のデバイスドライバと対応する周辺機器と通信可能な機能情報提供方法であって、
保持しているデバイスドライバのインストール履歴情報を認識する認識工程と、
前記認識工程によって認識されたデバイスドライバのインストール履歴情報に含まれるインストールされたデバイスドライバ情報と対応付けられた機能情報を解析して、インストールの対象となる機能情報を特定する特定工程と、
前記特定工程にて特定された機能情報に基づいて前記周辺機器に対応する複数種類のデバイスドライバからインストールすべきデバイスドライバを決定する決定工程と、
前記決定工程により決定されたデバイスドライバをインストールすべく制御するインストール制御工程と
を備えることを特徴とする機能情報提供方法。
【請求項26】
前記インストール処理を実行する際にインストールすべきデバイスドライバの機能情報を特定するための基準項目を設定する設定工程をさらに有し、
前記特定工程は、前記インストール履歴情報に含まれる複数種類のデバイスドライバ情報に対応する機能情報から前記設定工程によって設定された基準項目に基づいて機能情報を特定することを特徴とする請求項25に記載の機能情報提供方法。
【請求項27】
前記設定工程は、前記インストール履歴情報においてインストールされたデバイスドライバ情報に対応する機能情報のうち、最多の機能情報に対応するデバイスドライバをインストールするための情報を前記基準項目に対して設定することを特徴とする請求項26に記載の機能情報提供方法。
【請求項28】
前記設定工程は、前記インストール履歴情報において、コンピュータに現在インストールされているデバイスドライバの機能情報と同種の機能情報に対応するデバイスドライバをインストールするための情報を前記基準項目に対して設定することを特徴とする請求項26または27に記載の機能情報提供方法。
【請求項29】
前記設定工程は、前記インストール履歴情報において、前記コンピュータに最後にインストールされたデバイスドライバの機能情報と同種の機能情報に対応するデバイスドライバをインストールするための情報を前記基準項目に対して設定することを特徴とする請求項26乃至28のいずれか1項に記載の機能情報提供方法。
【請求項30】
前記設定工程は、複数の基準項目に対して順位を設定し、
前記特定工程は、前記複数の基準項目のうち前記順位に従って基準項目に着目して、前記認識機能により認識された周辺機器に対応するデバイスドライバをインストールする際に、前記着目された基準項目に基づいて機能情報を特定し、
前記着目された基準項目に基づいて前記機能情報を特定することができない場合には、インストールする際に使用される機能情報が特定されるまで、前記設定された順位に従って着目すべき基準項目を順次変更する処理を繰り返すことを特徴とする請求項26乃至29のいずれか1項に記載の機能情報提供方法。
【請求項31】
前記デバイスにはプリンタが含まれ、前記機能情報はプリンタが解釈可能なページ記述言語であることを特徴とする請求項25乃至30のいずれか1項に記載の機能情報提供方法。
【請求項32】
前記インストール履歴情報は、デバイスドライバをインストールすべく制御する時点よりも以前にインストールされたデバイスドライバについての情報であることを特徴とする請求項25乃至31のいずれか1項に記載の機能情報提供方法。
【請求項33】
前記インストール履歴情報は、デバイスドライバをインストールすべく制御する時点においてインストールされているデバイスドライバについての情報を含むことを特徴とする請求項25乃至31のいずれか1項に記載の機能情報提供方法。
【請求項34】
前記インストール履歴情報は、デバイスドライバをインストールすべく制御する時点よりも以前にインストールされたデバイスドライバについての情報またはデバイスドライバをインストールすべく制御する時点においてインストールされているデバイスドライバについての情報であることを特徴とする請求項25乃至31のいずれか1項に記載の機能情報提供方法。
【請求項35】
ネットワークに接続された周辺機器から所定のメッセージを取得するメッセージ取得工程をさらに有し、
前記特定工程は、前記メッセージ取得工程により複数種類のデバイスドライバと対応する旨のメッセージを取得した場合に前記特定処理を実行することを特徴とする請求項25乃至34のいずれか1項に記載の機能情報提供方法。
【請求項36】
前記インストール制御工程は、オペレーションシステムに対して前記特定工程によって特定された機能情報に対応するデバイスドライバをインストールするよう指示することを特徴とする請求項25乃至35のいずれか1項に記載の機能情報提供方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2007−114900(P2007−114900A)
【公開日】平成19年5月10日(2007.5.10)
【国際特許分類】
【出願番号】特願2005−303710(P2005−303710)
【出願日】平成17年10月18日(2005.10.18)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】