(57)【要約】【課題】アップグレードの際に機器から取得した機器情報を機器ドライバに反映させることができるプログラムを提供することができる。【解決手段】機器へ処理を要求する情報処理装置１０を、プログラムのアップグレードが開始されたことを契機に機器から機器情報を取得する際、前記機器情報を取得できたか否かを通信記録情報として記録する情報取得手段２４と、前記情報取得手段が取得した前記機器情報を記憶部に記憶させる情報記憶手段２５と、アップグレードの終了後、前記設定情報を前記記憶部に反映させる情報反映手段２６と、として機能させ、前記情報反映手段は、前記設定情報を前記記憶部に反映させる際、前記通信記録情報の記録内容に応じて、前記記憶部に記憶された前記機器情報に前記設定情報を反映させるか否かを判断するプログラムを提供する。【選択図】図４
2016173771.tif 000002
【特許請求の範囲】
【請求項１】
機器へ処理を要求する情報処理装置を、
プログラムのアップグレードが開始されたことを契機に前記機器から機器情報を取得する際、前記機器情報を取得できたか否かを通信記録情報として記録する情報取得手段と、
前記情報取得手段が取得した前記機器情報を記憶部に記憶させる情報記憶手段と、
アップグレードの終了後、前記機器の機能が設定されている設定情報を前記記憶部に反映させる情報反映手段と、として機能させ、
前記情報反映手段は、前記設定情報を前記記憶部に反映させる際、前記通信記録情報の記録内容に応じて、前記記憶部に記憶された前記機器情報に前記設定情報を反映させるか否かを判断するプログラム。
【請求項２】
前記通信記録情報に前記機器情報を取得できたと記録されている場合、前記情報反映手段は、前記記憶部に記憶された前記機器情報に前記設定情報を反映させず、
前記通信記録情報に前記機器情報を取得できたと記録されていない場合、前記情報反映手段は、前記記憶部に記憶された前記機器情報に前記設定情報を反映させる請求項１に記載のプログラム。
【請求項３】
前記記憶部には前記機器に対し要求される処理内容が記憶されており、
前記情報記憶手段は、アップグレード前に前記記憶部に記憶されている前記機器情報と前記情報取得手段が取得した前記機器情報とを比較して、前記情報取得手段が取得した前記機器情報では前記機器が実行できない設定を前記処理内容から検出し、前記情報取得手段が取得した前記機器情報に応じて前記処理内容を変更する請求項１又は２に記載のプログラム。
【請求項４】
前記情報取得手段及び前記情報記憶手段はアップグレード後のプログラムの機能として得られるものであり、
前記情報反映手段はアップグレード前のプログラムの機能として得られるものである請求項１〜３いずれか１項に記載のプログラム。
【請求項５】
アップグレード後のプログラムの機能として得られる前記情報反映手段は、アップグレードよりも前に前記記憶部に記憶されている前記機器情報の各項目と、前記情報取得手段が取得した前記機器情報の各項目を比較して変更された項目を前記通信記録情報に記録し、
アップグレード前のプログラムの機能として得られる前記情報反映手段は、前記通信記録情報に記録された前記項目のうち、アップグレード前に前記記憶部に記憶されている前記機器情報の各項目に対し前記設定情報の各項目が変更されている変更項目を検出し、
アップグレード前のプログラムの機能として得られる前記情報記憶手段は、前記変更項目の設定を、前記記憶部に記憶されている前記機器情報の前記項目に反映させる請求項２に記載のプログラム。
【請求項６】
アップグレード後のプログラムの機能として得られる前記情報反映手段は、アップグレード前に前記記憶部に記憶されている前記機器情報の各項目を前記通信記録情報に記録しておき、
アップグレード前のプログラムの機能として得られる前記情報反映手段は、前記通信記録情報を参照して、前記設定情報の各項目とアップグレード前に前記記憶部に記憶されている前記機器情報の各項目を比較して前記変更項目を検出する請求項５に記載のプログラム。
【請求項７】
前記情報処理装置を、さらに、前記設定情報を表示装置に表示すると共に前記設定情報に対するユーザの設定を受け付けて前記設定情報に記録する操作受付手段として機能させ、
アップグレード後のプログラムの機能として得られる前記情報反映手段は、前記操作受付手段により設定の変更が受け付けられた前記設定情報の前記変更項目を、前記設定情報の各項目とアップグレード前に前記記憶部に記憶されている前記機器情報の各項目を比較することで検出する請求項５又は６に記載のプログラム。
【請求項８】
アップグレード後のプログラムの機能として得られる前記情報反映手段は、アップグレードの前後で前記項目の前記記憶部における保存形式が異なる場合、前記通信記録情報にアップグレード後の保存形式と前記項目を対応づけて記録し、
アップグレード前のプログラムの機能として得られる前記情報記憶手段は、前記通信記録情報に記録されているアップグレード後の保存形式に従って、前記変更項目の設定を前記記憶部に記憶されている前記機器情報の前記項目に反映させる請求項７に記載のプログラム。
【請求項９】
アップグレード後のプログラムの機能として得られる前記情報反映手段は、アップグレード後の保存形式と前記項目に加え、前記項目の前記記憶部における保存場所を前記通信記録情報に記録し、
アップグレード前のプログラムの機能として得られる前記情報記憶手段は、前記情報記憶手段は、前記保存場所に前記変更項目の設定を反映させる請求項８に記載のプログラム。
【請求項１０】
機器に対し処理を要求する情報処理装置であって、
プログラムのアップグレードが開始されたことを契機に機器から機器情報を取得する際、前記機器情報を取得できたか否かを通信記録情報として記録する情報取得手段と、
前記情報取得手段が取得した前記機器情報を記憶部に記憶させる情報記憶手段と、
アップグレードの終了後、前記機器の機能が設定されている設定情報を前記記憶部に反映させる情報反映手段と、を有し、
前記情報反映手段は、前記設定情報を前記記憶部に反映させる際、前記通信記録情報の記録内容に応じて、前記記憶部に記憶された前記機器情報に前記設定情報を反映させるか否かを判断する情報処理装置。
【請求項１１】
機器に対し処理を要求する情報処理装置によって行われる情報処理方法であって、
プログラムのアップグレードが開始されたことを契機に前記機器から機器情報を取得する際、前記機器情報を取得できたか否かを通信記録情報として記録する情報取得ステップと、
前記情報取得ステップにより取得された前記機器情報を記憶部に記憶させる情報記憶ステップと、
アップグレードの終了後、前記機器の機能が設定されている設定情報を前記記憶部に反映させる情報反映ステップと、を有し、
前記情報反映ステップでは、前記機器の機能が設定されている設定情報を前記記憶部に反映させる際、前記通信記録情報の記録内容に応じて、前記記憶部に記憶された前記機器情報に前記設定情報を反映させるか否かを判断する情報処理方法。
【請求項１２】
請求項１〜９いずれか１項に記載のプログラムを記憶した情報処理装置により読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理装置、情報処理方法及び記憶媒体に関する。
【背景技術】
【０００２】
ＰＣ（Personal Computer）がプリンタに印刷指示する場合、一般的には使用されるプリンタ用のプリンタドライバがＰＣに組み込まれており、プリンタドライバがユーザの印刷設定に従って印刷データを作成する。また、プリンタの機能をより適切に引き出すためにプリンタドライバはアップグレードされる場合や再インストールされる場合がある。
【０００３】
まず、アップグレードに関する背景を説明するためポイントアンドプリント（Point & Print）というプリンタドライバのインストールの仕組みについて説明する。
【０００４】
図１は、ポイントアンドプリントによりプリンタドライバがインストールされるシステム構成の一例を示す図である。サーバＰＣ１００には複数のプリンタ５０が接続されており、サーバＰＣ１００には３つのクライアントＰＣ９９が接続されている。サーバＰＣ１００にはプリンタドライバがインストールされている。
【０００５】
ポイントアンドプリントではサーバＰＣ１００のプリンタドライバをクライアントＰＣ９９が共有するため、クライアントＰＣ９９にプリンタドライバがコピーされる。したがって、クライアントＰＣ９９の各ユーザがプリンタドライバをインストールしたりポート（ＩＰアドレス）等の設定をすることなくサーバＰＣ１００を介して印刷することができる。
【０００６】
なお、図示するようにサーバＰＣ１００に複数のプリンタが接続されている場合、サーバＰＣ１００では名前などを変えてプリンタアイコン（プリンタアイコンはプリンタ５０と対応づけられたプリンタドライバの実体である。）を複数、作成することにより、サーバＰＣは１つのプリンタドライバから複数のプリンタ５０に接続できる。なお、複数のプリンタ５０は、一般のプリンタドライバの場合は同じ機種であることが前提となるが、後述する機種共通ドライバの場合は複数のプリンタ５０は異なる機種でもよい。このようにプリンタ５０に適した設定が可能なプリンタアイコンがプリンタ５０と接続しているとみなすことができる。
【０００７】
サーバＰＣ１００ではプリンタアイコンごと、つまり接続しているプリンタごとに印刷設定を設定することができる。クライアントＰＣ９９でもポイントアンドプリントによりプリンタアイコンが共有されるが、さらに、クライアントＰＣ９９のユーザはサーバＰＣ１００とは異なるユーザ独自の印刷設定をプリンタアイコンに設定することができる。
【０００８】
次に、プリンタドライバとプリンタの通信について説明する。プリンタドライバは、プリンタドライバが対応しているプリンタの機種が持っている機能をユーザが設定できるように印刷設定画面を表示する。つまり、プリンタドライバが対応している機種によって、ユーザがプリンタドライバで設定できる項目は異なる。さらに、プリンタドライバがプリンタに対応していても、プリンタの状態によって、プリンタドライバでユーザが設定できる項目は異なる。このような項目としては例えば、オプションに関する項目がある。プリンタドライバは出力ポートに設定されているプリンタと双方向通信を行い、オプションの情報を取得する。そして、オプションの１つとしてフィニッシャーがプリンタ本体に着いているという情報が取得できた場合のみ、プリンタドライバはパンチやステープルの印刷設定をユーザが設定できるように印刷設定画面を表示する。このような仕組みにより、ユーザがプリンタとは離れた場所から印刷する場合や、プリンタの状態を確認しないまま印刷する場合に、誤って印刷不可能な印刷設定で印刷を開始してしまうことを防ぐことができる。換言すると、プリンタドライバが自動的にプリンタの状態をユーザに知らせることで、ユーザは期待通りの印刷をすることができる。
【０００９】
次に、機種共通ドライバについて説明する。プリンタドライバは特定のプリンタ機種に専用に作られており、該プリンタのプリンタ機種用の印刷設定画面を表示する。これに対し、プリンタドライバの一種として機種共通ドライバというものがある。機種共通ドライバは、予めいくつかのプリンタ機種に対応させて作成されている。機種共通ドライバは接続されているプリンタと双方向通信を行うことにより、クライアントＰＣ９９が印刷のために接続したプリンタに応じて能力を変更し、接続されたプリンタ専用のプリンタドライバとほぼ同等の機能を提供する（印刷設定画面を表示する）。
【００１０】
このように、プリンタドライバが接続しているプリンタに合わせた設定項目をユーザに提示するためには、プリンタから機器情報を取得したり双方向通信することが不可欠である。
【００１１】
機種共通ドライバかどうかに関係なく、双方向通信するために管理者はプリンタドライバをインストール後に、使用したいプリンタが接続されているＩＰアドレスをポートに設定する。そして、プリンタドライバの画面から管理者が手動で双方向通信を開始することで、機器情報をプリンタドライバに反映させる。
【００１２】
ここで、プリンタから取得した機器情報に関する設定を管理者が手動で変更することも可能である。そこで、プリンタアイコンが接続しているプリンタから取得したプリンタの構成情報と、管理者が手動で設定を変更して保存できる機器情報とを適切に共存させる技術が考案されている（例えば、特許文献１参照。）。特許文献１には、プリンタドライバが接続しているプリンタと通信することにより、最新の構成情報を取得してＵＩ表示用の構成情報とは別の領域に格納しておき、ユーザが手動で設定していない項目だけをＵＩ表示用の構成情報の領域に上書きする情報処理装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、特許文献１では、プリンタドライバのアップグレード時に取得された機器情報を適切に保存できないという問題がある。以下、説明する。
【００１４】
図１に示すようにサーバＰＣ１００に複数のプリンタ５０が接続されており、プリンタ５０ごとにプリンタアイコンが作成されている場合、管理者が１つずつプリンタアイコンを手動で設定することは時間がかかるため好ましくない。
【００１５】
このような不都合に対し、プリンタドライバをインストールする際に、プリンタドライバがインストール処理の中で出力ポートに設定されているプリンタ５０と双方向通信を行い、機器情報を取得してプリンタドライバに反映する技術が知られている。以下、この技術をインストール時双方向通信と称する。なお、同様の技術はアップグレード時にも適用される。
【００１６】
インストール時双方向通信を使用することにより、管理者がプリンタドライバをインストール後、プリンタドライバの画面からプリンタの情報を取得する操作を行わなくても、機器情報をプリンタドライバに反映することが可能である。
【００１７】
しかしながら、同様の仕組みをアップグレード時にも適用しようとすると、管理者がプリンタドライバのバージョンをアップグレードする際に取得した機器情報をプリンタドライバに反映できない。
【００１８】
以下、図２を用いて説明する。図２は、プリンタドライバのアップグレードの概略の手順を模式的に示す。アップグレードはWindows（登録商標。以下、省略する。）との親和性を確保するために推奨されている以下の手順で行われる。ＯＳに標準搭載されているアップグレード用の機能が利用されるため、プリンタドライバの提供元やプリンタドライバの種類を問わず以下の手順で行われる。
１．管理者は図２（ａ）に示すプリンタドライバのデバイスプロパティ画面５０１を開く。デバイスプロパティ画面５０１は、アップグレード時に使用される他、管理者がオプション構成（接続されているフィニッシャー、保有しているトレイと各トレイに格納されている用紙などの対応などの情報）を変更したりするための画面である。
２．「新しいドライバ」ボタン５０３を押下する。
３．管理者は新しいバージョンのプリンタドライバパッケージに同梱されているinfファイル（ソフトウェアのインストール用の設定が記述されたファイル）へのパスを指定する（図２（ｂ））。
４．アップグレードを開始する。
５．アップグレードが終了したら、図２（ｃ）のデバイスプロパティ画面５０１に戻るためＯＫボタン５０４を押下してデバイスプロパティ画面５０１を閉じる。
【００１９】
上記の手順の場合、アップグレード前に管理者がプリンタドライバの例えばオプション構成ボタン５０２を押下して行った様々な設定情報がアップグレード後の新しいバージョンのプリンタドライバに引き継がれる。また、図１に示したようにクライアントＰＣが多数存在している場合でも、サーバＰＣのプリンタドライバさえアップグレードすれば、自動的にクライアントも同期される。すなわち、クライアントＰＣの各々の設定はそのまま引き継ぎつつ、プリンタドライバのバージョンをアップグレードすることが可能である。
【００２０】
上記手順にはこのような利便性があることから、管理者は新しいバージョンのプリンタドライバを導入する際に古いバージョンのプリンタドライバをアンインストールしてから、新しいバージョンのプリンタドライバをインストールするという手順を踏むことはまれである。
【００２１】
しかし、プリンタドライバのアップグレード時には、インストール時双方向通信のように自動的に接続されているプリンタの機器情報を取得し、プリンタドライバにそれを反映することはできない。
【００２２】
図３を用いてその理由を説明する。図３は、プリンタドライバのアップグレード時のＯＳとプリンタドライバ間のシーケンス図の一例である。なお、図３は説明ために実際にＯＳとプリンタドライバ間で行われる手順よりも簡略化されている。また、２本線はＯＳから新しいプリンタドライバへの矢印で、１本線はＯＳから古いプリンタドライバへの矢印である。
【００２３】
アップグレード時に接続されているプリンタの情報を取得できない理由は、端的には、ＯＳから呼ばれるアップグレード時のシーケンスが複雑なためである。
S1：プリンタドライバは例えば新しいバージョンのプリンタドライバを呼び出す。
S2：アップグレード時（図２（ｂ））には、ＯＳは新しいバージョンのプリンタドライバに対してDrvUpgradePrinterというＤＤＩコールを通知する。
S2.1：このＤＤＩコールに対し、新しいバージョンのプリンタドライバはＤＤＩコールされたタイミングでプリンタと双方向通信して機器情報を取得する等、必要な更新処理を行う。
S3、S4：ステップS2.1で取得した機器情報を新しいバージョンのプリンタドライバに合わせて変換するなどの処理を行い、レジストリなどに機器情報を保存する。
S5：アップグレードが終了し、管理者がデバイスプロパティ画面５０１のＯＫボタン５０４を押下して閉じる際（図２（ｃ））、ＯＳは古いバージョンのプリンタドライバに対しDrvDevicePropertySheetsというＤＤＩコールを通知する（キャンセルボタン５０５が押下された場合はこのＤＤＩコールは通知されない。）。すなわち、図２（ｃ）のデバイスプロパティ画面５０１は古いバージョンのプリンタドライバによるものである。このため、古いバージョンのプリンタドライバがすでに保持している設定情報（管理者がオプション構成の変更等ができるように保持されている機器情報や印刷設定）がレジストリなどに保存されてしまい、新たに取得した機器情報が上書きされてしまう。
【００２４】
このように、ＯＳの仕組みにより管理者にとって利便性が高いアップグレードでは、プリンタドライバがプリンタから取得した機器情報を新しいプリンタドライバに反映できないという問題がある。また、機器情報を取得するモジュールはアップグレード後のものであるのに対し、デバイスプロパティ画面５０１が閉じられる際に設定情報を上書きするモジュールはアップグレード前のものなので、両者は直接の通信ができない。このため特許文献１に開示された技術ではアップグレード時の機器情報の取得に対応できない。
【００２５】
また、このような問題のため、以下のような不都合をもたらす。
【００２６】
プリンタドライバのバグが修正された場合、プリンタドライバの提供元がリリースする新しいバージョンにアップグレードすることにより不具合が修正される。不具合が修正されることにより、ユーザ環境等の理由で使用が許可されていなかったプリンタが使用可能になる場合がある。例えば、プリンタＢが使用可能になったとする。このような場合に使用していないプリンタアイコン（プリンタＡとする）からアップグレードすると、アップグレードの前後で、プリンタＡの機器情報が設定されたプリンタアイコンにプリンタＢが接続される状況が生じる。プリンタＢが使用可能になったとすると、プリンタＡのプリンタアイコンにアップグレードによりプリンタＢの機器情報が反映されるが、上記のようにプリンタＡの設定情報で上書きされてしまう。したがって、アップグレードに伴い、接続されているプリンタＢの情報をプリンタＡのプリンタアイコンに管理者が反映させるという不要な処理が生じるおそれがある。
【００２７】
この他にも、アップグレードにより機能が向上する場合があるが、その場合にも新しい機能をプリンタドライバに反映させるという不要な処理が生じるおそれがある。例えば、使用されているプリンタドライバが、提供元がリリースする最新機種や、最新機能に対応したプリンタドライバにアップグレードされる場合がある。
【００２８】
それまでのバージョンではプリンタドライバが最新機種や、最新機能に未対応だったためユーザがジェネリックモードで使わざるを得なかった機種についても、機種共通ドライバがアップグレードされればユーザは機種専用の印刷設定画面か印刷設定できる。なお、ジェネリックモードとは、機種共通ドライバがサポートしているプリンタ機種のうち、汎用性の高い共通機能のみを使用できるように印刷設定画面を表示する動作モードである。
【００２９】
この場合、プリンタアイコンに接続されるプリンタがアップグレード前後で同じだとしても、アップグレード時の双方向通信で取得された機器情報は古いバージョンのプリンタドライバに上書きされてしまう。このため、アップグレードに伴い、別途、機器情報を取得し、プリンタ名やオプション構成をもとに設定可能項目を管理者が設定する必要がある。
【００３０】
本特許は上記問題に鑑み、アップグレードの際に機器から取得した機器情報を機器ドライバに反映させることができるプログラムを提供することを目的とする。
【課題を解決するための手段】
【００３１】
本発明は、機器へ処理を要求する情報処理装置を、プログラムのアップグレードが開始されたことを契機に機器から機器情報を取得する際、前記機器情報を取得できたか否かを通信記録情報として記録する情報取得手段と、前記情報取得手段が取得した前記機器情報を記憶部に記憶させる情報記憶手段と、アップグレードの終了後、前記機器の機能が設定されている設定情報を前記記憶部に反映させる情報反映手段と、として機能させ、前記情報反映手段は、前記設定情報を前記記憶部に反映させる際、前記通信記録情報の記録内容に応じて、前記記憶部に記憶された前記機器情報に前記設定情報を反映させるか否かを判断する。
【発明の効果】
【００３２】
アップグレードの際に機器から取得した機器情報を機器ドライバに反映させることができるプログラムを提供することができる。
【図面の簡単な説明】
【００３３】
【図１】ポイントアンドプリントによりプリンタドライバがインストールされるシステム構成の一例を示す図である。
【図２】プリンタドライバのアップグレードの概略の手順を模式的に示す図である。
【図３】プリンタドライバのアップグレード時のＯＳとプリンタドライバ間のシーケンス図の一例である。
【図４】本実施形態のプリンタドライバによるアップグレード時の機器情報の取得について説明する図の一例である。
【図５】本実施形態に係る印刷システムの構成図の一例である。
【図６】ＰＣのハードウェア構成図の一例である。
【図７】ＰＣの機能ブロック図の一例である。
【図８】プリンタアイコンの一例を示す図である。
【図９】プリンタドライバがアップグレードされる際の機器情報の保存手順などを示すフローチャート図の一例である。
【図１０】設定取得部がプリンタから取得した機器情報のレジストリ２１への反映例を示す図である。
【図１１】プリンタドライバがアップグレードされる際の機器情報の保存手順などを示すフローチャート図の一例である。
【図１２】プリンタドライバがアップグレードされる際の機器情報の保存手順などを示すフローチャート図の一例である。
【図１３】保存形式の変化を模式的に説明する図の一例である。
【発明を実施するための形態】
【００３４】
以下、本発明を実施するための形態について図面を参照しながら説明する。
【実施例１】
【００３５】
まず、図４を用いて本実施形態のプリンタドライバ３０の動作の概略を説明する。図４は、本実施形態のプリンタドライバ３０によるアップグレード時の機器情報の取得について説明する図の一例である。
（１）古いプリンタドライバ３０はアップグレード後の新しいプリンタドライバ３０にプリンタ５０から機器情報１９を取得させる。
（２）新しいプリンタドライバ３０は機器情報１９を取得すると機器情報１９を取得した旨の情報５１０を記録しておく（後述するisUpgradeBidiを記録する）。
（３）また、新しいプリンタドライバ３０は取得した新しい機器情報１９をレジストリ２１に反映させておく。
（４）アップグレードが終了すると制御が古いプリンタドライバ３０に戻り、古いプリンタドライバ３０は機器情報１９を取得した旨の情報５１０を参照する。
（５）そして、機器情報１９を取得した旨の情報５１０があれば、古いプリンタドライバ３０は自分が管理する設定情報２８（古い機器情報が含まれる）をレジストリ２１に反映させない。これにより、新しいプリンタドライバ３０が取得した機器情報１９が上書きされることが防止できる。機器情報１９を取得した旨の情報５１０がない場合には、アップグレードされていないので、古いプリンタドライバ３０は自分が管理する設定情報２８（古い機器情報が含まれる）をレジストリ２１に反映させればよい。
【００３６】
このように本実施例のプリンタドライバ３０は、デバイスプロパティ画面５０１が閉じられる際に、機器情報１９を取得したかどうかの記録を参照する。これにより、古いバージョンのプリンタドライバ３０で保持している設定情報２８を保存するか又はしないかを制御できる。したがって、レジストリ２１の新しい機器情報１９が上書きされることを防止できる。
【００３７】
＜構成例＞
図５は、本実施形態に係る印刷システム１の構成図の一例を示す。印刷システム１は、ネットワーク２を介して接続されたＰＣ１０、及び、複数のプリンタ５０を有している（以下、区別する場合はそれぞれをプリンタ５０−ｎ（ｎは自然数）と記載する）。
【００３８】
ネットワーク２は主に社内ＬＡＮであるが、ＷＡＮ又はインターネットを含んでいてもよい。また、ネットワーク２は全てが有線で構築されていてもよいし、一部又は全てが無線ＬＡＮ、Bluetooth（登録商標）、などの無線にて構築されていてもよい。また、ＰＣ１０とプリンタ５０との間の接続は、ネットワーク２に限られず、例えばシリアル通信でＰＣ１０とプリンタ間を一連に接続してもよい。
【００３９】
ＰＣ１０ではＯＳ（Operating System）及びプリンタドライバ３０が動作すると共に文書作成ソフトなどの後述するアプリケーションソフトが動作する。ＰＣ１０はプリンタドライバ３０が動作する情報処理装置の一例である。したがって、ＰＣ１０以外でもプリンタドライバ３０が動作するのであれば、タブレット型端末、携帯電話、スマートフォン、ＰＤＡ（Personal Digital Assistant）、ウェアラブルＰＣ、ゲーム機器、カーナビゲーション端末、プロジェクタなどの投影装置、又は、電子黒板などでもよい。
【００４０】
なお、ＰＣ１０は図１におけるサーバＰＣ１００に相当するが、クライアントＰＣ９９でもよい。クライアントＰＣ９９でもプリンタドライバ３０のアップグレードは可能である。一方、ＰＣ１０がサーバＰＣであれば、プリンタドライバ３０のアップグレードがクライアントＰＣにも反映されるという優位性がある。また、本実施例では極力、サーバＰＣ１００を管理する者を管理者と、クライアントＰＣ９９を操作する者をユーザと称するが、両者は厳密に区別されなくてよい。
【００４１】
プリンタ５０は、ＰＣ１０からの印刷指示に従って動作する画像形成装置である。印刷方式は、電子写真方式又は液滴吐出方式のどちらでもよいし、これら以外でもよい。また、プリンタ５０は画像形成機能を有していれば、スキャナ機能、コピー機能、複写機能、ＦＡＸ機能などの１つ以上を備えていてよく、スキャナ装置、コピー機、複写装置、ＦＡＸ装置又は複合機などと呼ばれていてもよい。
【００４２】
図５では、説明の便宜上、ＰＣ１０は１台のみを示すものであるが、ＰＣ１０の数はこれに限られず、ＰＣ１０は複数台でもよい。
【００４３】
<<ハードウェア>>
（ＰＣ）
図６は、ＰＣ１０のハードウェア構成図の一例を示す。ＰＣ１０は、それぞれバス１１０で相互に接続されているＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、外部Ｉ／Ｆ１０４、通信装置１０５、入力装置１０６、ディスプレイＩ／Ｆ１０７及び記憶装置１０８を有する。ＣＰＵ１０１は、ＯＳ、アプリケーションソフト、及び、プリンタドライバ３０を記憶装置１０８から読み出して、ＲＡＭ１０３を作業メモリにして実行する。
【００４４】
ＲＡＭ１０３は必要なデータを一時保管する作業メモリ（主記憶メモリ）であり、ＲＯＭ１０２はＩＰＬ（Initial Program Loader）やＢＩＯＳなどを記憶している。
【００４５】
外部Ｉ／Ｆ１０４はＵＳＢケーブル等のケーブルや、可搬型の記憶媒体１１１を装着するインタフェースである。通信装置１０５は、ＬＡＮカードやイーサネット（登録商標）カードであり、ＣＰＵ１０１からの指示によりサーバ７０やプリンタ５０に印刷データを送信する。
【００４６】
入力装置１０６は、キーボード、マウスなど、ユーザの様々な操作指示を受け付けるユーザインタフェースである。タッチパネルや音声入力装置を入力装置とすることもできる。ディスプレイＩ／Ｆ１０７は、アプリケーションソフトが指示する画面情報に基づき所定の解像度や色数等でディスプレイ１２０に画面を描画する。ディスプレイ１２０（表示装置の一例）は、液晶や有機ＥＬなどのＦＰＤ（Flat  Panel  Display）である。
【００４７】
記憶装置１０８は、ＨＤＤ（Hard  Disk  Drive）やフラッシュメモリなどの不揮発メモリを実体とし、ＯＳ、プリンタドライバ３０、及び、アプリケーションソフトを記憶している。
【００４８】
記憶媒体１１１は、例えば、ＳＤカードやＵＳＢメモリ、ＣＤ−ＲＯＭなど不揮発性のメモリである。ＯＳ、アプリケーションソフト、及び、プリンタドライバ３０は、記憶媒体１１１に記録された状態又はプログラム配信用のサーバからダウンロードされる態様で配布される。
【００４９】
＜機能構成＞
次に、図７を用いて、ＰＣ１０の機能構成について説明する。図７は、ＰＣ１０の機能ブロック図の一例である。
【００５０】
<<ＰＣの各機能構成>>
ＰＣ１０は、アプリケーションソフト１１、ＯＳ１２、プリンタドライバ３０及び通信部１３を有する。アプリケーションソフト１１は、プリンタドライバ３０を呼び出してプリンタ５０に印刷要求するものであればよい。アプリケーションソフト１１はアプリケーションソフト１１に応じた機能を備えている。例えば、ワープロ機能、ブラウザ機能などであるがどのような機能を有していてもよい。
【００５１】
ＯＳ１２は例えばWindows（登録商標。以下、省略する）シリーズのＯＳであり、ＰＣがサーバＰＣであればサーバ用のWindowsが動作しており、クライアントＰＣではクライアント用のWindowsが動作している。WindowsシリーズのＯＳ１２としたのは本願のプリンタドライバ３０が奏する効果がWindowsシリーズのＯＳに対し有効であるためである。また、WindowsシリーズのＯＳであればポイントアンドプリントを利用できる。しかしながら、ＯＳ１２が必ずWindowsシリーズのＯＳである必要はなく、本実施形態のプリンタドライバ３０が行うアップグレードが可能なＯＳであればよい。
【００５２】
ＯＳ１２が有するＧＤＩ（Graphics Device Interface）２３はＯＳ１２のモジュールの１つであり、ＯＳ１２と一体であっても、ＯＳ１２とは別に提供される機能であってもよい。ＧＤＩ２９はプリンタ５０やディスプレイなどの表示デバイスの制御に用いられる体系的なＡＰＩの総称である。ＧＤＩ２９はプリンタドライバ３０がＯＳ１２と通信するためのインタフェース（ＡＰＩ）となる。
【００５３】
プリンタドライバ３０は、アプリケーションソフト１１が作成した文書データ（文書が記述されたものには限られず、印刷可能なすべてのデータをいう）やＰＣ１０の記憶装置１０８に記憶された文書データから印刷データを作成してプリンタ５０に送信する。印刷データはＰＤＬ（Page Description Language）で記述されたものでもよいし、レンダリングされた画像データの形式でもよい。
【００５４】
プリンタドライバ３０は、さらに描画部１５、画面表示部１６、及び、設定管理モジュール１７を有している。プリンタドライバ３０が有する各部は、図６に示されている各構成要素のいずれかが記憶装置１０８からＲＡＭ１０３上に展開されたプリンタドライバ３０やＯＳ１２に従ったＣＰＵ１０１からの命令によって動作することで実現される機能又は手段である。プリンタドライバ３０についての詳細は後述する。
【００５５】
通信部１３は、図６に示されているＣＰＵ１０１からの命令及び通信装置１０５によって実現され、ネットワーク２を介してプリンタ５０と各種データの送受信を行う。
【００５６】
また、ＰＣ１０は、図６に示されているＣＰＵ１０１及び記憶装置１０８等によって構築される不揮発性の記憶部１４を有している。記憶部１４にはレジストリ２１、ローカルファイル２３及び設定内容保存ファイル２２が記憶又は構築されている。
【００５７】
レジストリ２１は、WindowsシリーズのＯＳ１２においてシステムやアプリケーションソフトの設定データが記録される記憶領域である。プリンタドライバ３０の設定もレジストリ２１に保持される。レジストリ２１はWindowsシリーズのＯＳ１２の用語なので、他のＯＳではレジストリに対応する記憶領域があり、レジストリ２１と呼ばれていなくてもよい。
【００５８】
レジストリ２１には機器情報１９と印刷設定２７が記憶されるものとする。機器情報１９の具体例については後述する。機器情報１９はプリンタドライバ３０がプリンタ５０から取得したプリンタ５０の機能（保有するトレイ、フィニッシャー、両面印刷機能など）に関する情報である。印刷設定２７はユーザが印刷のために設定する用紙サイズや部数などの設定であり、ユーザが最後に設定した内容や初期の設定が保存されている。レジストリ２１の機器情報１９と印刷設定２７は図８にて説明するプリンタアイコンに設定される。これによりユーザはＰＣ１０においてプリンタアイコンをプリンタ５０として扱える。
【００５９】
ローカルファイル２３は、ＯＳ１２のファイルシステムにより管理されている一般的なファイルである。ファイルに格納されるデータはアプリケーションソフト等により様々である。また、プリンタドライバ３０が使用する機器情報１９や印刷設定２７がローカルファイル２３に記憶されてもよい。このようなローカルファイル２３として、例えば、ｉｎｉファイル（アプリケーションソフトの情報ファイル）が知られているがこれに限るものではない。
【００６０】
設定内容保存ファイル２２にはプリンタドライバ３０のアップグレード時にプリンタドライバ３０がプリンタ５０と双方向通信をしたか否かの情報が記載される。
【００６１】
【表１】
2016173771.tif 000003
表１は、設定内容保存ファイル２２の一例を示す図である。設定内容保存ファイル２２には「isUpgradeBidi」にtrue又はfalseが登録される。プリンタドライバ３０が、プリンタ５０との双方向通信に成功した場合、「isUpgradeBidi＝true」と記載される。一方、ネットワーク２の不具合や、プリンタ５０の電源がＯＦＦになっているなどの原因により双方向通信に失敗した場合、「isUpgradeBidi＝false」と記載される。アップグレード前の初期状態の設定内容保存ファイル２２には何も記載されておらず（ファイルは空であり）、アップグレード時に双方向通信が行われた場合のみtrue又はfalseが記載される。「isUpgradeBidi」に設定されたtrue又はfalseのいずれかの記録内容は通信記録情報の一例である。
【００６２】
なお、アップグレード時にプリンタ５０との双方向通信に成功したか否かの情報は、レジストリ２１やローカルファイル２３に記憶されてもよい。プリンタドライバ３０が読み書きできる記憶領域に記憶されていればよい。
【００６３】
続いて、プリンタドライバ３０の各機能について説明する。本実施例では、プリンタドライバ３０がアップグレードされる際の処理が説明されるため、プリンタドライバ３０の一部機能ではアップグレードされる前とされた後の機能の２つが存在する。図では説明の便宜上、アップグレードの前後で設定管理モジュール１７が２つ存在するものとする。設定管理モジュール１７は、現在インストールされているプリンタドライバ３０のバージョンをレジストリ２１などから読み出して、自分のバージョン情報と比較する。自分のバージョン情報は設定管理モジュール１７が保持している。そして、自分が古いバージョンなのか新しいバージョンなのかを認識することにより、振る舞いを変える。つまり、設定管理モジュール１７は古いバージョン用の機能と新しいバージョン用の機能を備えている。
【００６４】
設定管理モジュール１７以外の描画部１５や画面表示部１６などについてはアップグレードの対象となるかどうかで２つ存在するか否かが変わるが、本実施形態の説明において描画部１５や画面表示部１６の数は１つ又は２つのどちらでも支障はないものとする。
【００６５】
プリンタドライバ３０の描画部１５は図６に示されているＣＰＵ１０１からの命令等により実現され、ユーザが設定した印刷設定２７を参照する。そして、アプリケーションソフト１１によって作成された印刷対象の文書データから印刷設定２７を反映した印刷データを作成する。印刷データには描画データ（例えばＰＤＬデータ）と制御データ（例えばＰＪＬの印刷コマンド）が含まれる。
【００６６】
画面表示部１６は図６に示されているＣＰＵ１０１からの命令及びディスプレイＩ／Ｆ１０７等によって実現され、ユーザがアプリケーションソフト１１に対して文書の印刷操作を入力することで、印刷設定画面をディスプレイ１２０に表示する。なお、画面表示部１６は機器情報１９を参照することで、プリンタ５０が有する機能のみをユーザが選択可能な印刷設定画面を表示する。ユーザは、印刷設定画面に対し、用紙サイズ、白黒／カラー、両面・集約・製本・変倍、ステープルやパンチ、部数等の印刷に関する印刷設定を行うことができる。画面表示部１６はユーザからの印刷設定２７を受け付け、レジストリ２１に記憶させる。また、図２に示した基本的なアップグレード処理などはこの画面表示部１６が行う。
【００６７】
また、画面表示部１６は描画部１５と直接的な通信ができない。このため、画面表示部１６と描画部１５はＧＤＩ２９を介して通信する。また、描画部１５は印刷設定２７を参照して印刷データを作成するが、印刷設定２７はＤｅｖＭｏｄｅなどの構造体に格納され、印刷設定２７はＧＤＩ２９を介して画面表示部１６と描画部１５間でやりとりされる。
【００６８】
画面表示部１６は、印刷設定画面の他、図２のデバイスプロパティ画面５０１を作成してディスプレイ１２０に表示する。作成の際、画面表示部１６はレジストリ２１の機器情報１９及び印刷設定２７を使用する。このため、画面表示部１６は機器情報１９及び印刷設定２７のコピーを一時的にキャッシュしている。また、ユーザが印刷設定を変更したり、キャッシュしている機器情報１９のオプション構成を変更すると、コピーされている機器情報１９及び印刷設定２７はレジストリ２１の機器情報１９及び印刷設定２７と異なったものとなる。本実施例ではこの画面表示部１６が一時的にキャッシュしている機器情報１９及び印刷設定２７を設定情報２８と称することにする。設定情報２８は図６のＲＡＭ１０３や記憶装置１０８に記憶される。
【００６９】
設定管理モジュール１７はさらに設定取得部２４、設定反映部２５、及び、設定管理部２６を有している。設定取得部２４は、図６に示されているＣＰＵ１０１からの命令等によって実現され、新しいバージョンの場合にのみ動作する。設定取得部２４はプリンタ５０と双方向通信を行い、その時点での最新の機器情報１９を取得する。具体的には機器名、プリンタ５０と接続されているフィニッシャー（フィニッシャーがある場合はフィニッシャーの種類）、トレイの種類、各トレイにセットされている用紙サイズなどが取得できる。設定取得部２４は双方向通信に成功し機器情報１９を取得できた場合は、設定内容保存ファイル２２に「isUpgradeBidi＝true」を記載する。なお、設定取得部２４がアップグレード前の古いバージョンの場合、設定取得部２４は何もしない。
【００７０】
設定反映部２５は図６に示されているＣＰＵ１０１からの命令等によって実現され、新しいバージョンの場合にのみ動作する。設定反映部２５は、設定取得部２４が取得した機器情報１９をレジストリ２１に記憶させる（プリンタアイコンに反映させる）。なお、設定反映部２５がアップグレード前の古いバージョンの場合、設定反映部２５は何もしない。
【００７１】
設定管理部２６は図６に示されているＣＰＵ１０１からの命令等によって実現され、古いバージョンの場合にのみ動作する。設定管理部２６は、設定取得部２４がアップグレード時の双方向通信をしたか否かを設定内容保存ファイル２２に基づいて判定する。双方向通信していれば、設定管理部２６は設定情報２８をレジストリ２１に保存しない。
【００７２】
＜プリンタアイコン＞
図８はプリンタアイコン４０の一例を示す図である。プリンタアイコン４０は、プリンタ５０と対応づけられたプリンタドライバの実体である。プリンタアイコン４０はプリンタ５０のＩＰアドレスなどでプリンタ５０と紐づけられ、プリンタ５０から取得された機器情報とユーザがプリンタ５０に処理内容を指示する印刷設定が設定される。
【００７３】
ＰＣ１０にプリンタドライバ３０がインストールされた場合、プリンタ５０を視覚的に表示するために図示するようなプリンタ５０を表す画像データも例えばローカルファイル２３などにインストールされる。あるいは、予めこのような画像がＯＳ１２に用意されている。
【００７４】
プリンタドライバ３０は画像データに自分が対応するプリンタ５０のモデル名などを付与し、また、管理者側でモデル名などを編集できる。また、プリンタアイコン４０にはプリンタ５０の機器情報１９及び印刷設定２７が紐づけられる。この機器情報１９は、インストール時双方向通信により取得されプリンタドライバ３０のインストールと共にＰＣ１０に格納される（本実施例ではレジストリに格納される）。アップグレードされた場合は、プリンタ５０から取得された機器情報１９がレジストリ２１に格納される。印刷設定２７はインストールと共にレジストリ２１に格納されたものか又はユーザが最後に設定したものがプリンタアイコン４０に設定される。
【００７５】
これによりプリンタアイコン４０は、単なる画像データでなくプリンタドライバ３０が対応するプリンタ５０の機能や設定を保持するようになり、ユーザはＰＣ１０のプリンタアイコン４０を実際のプリンタ５０のように扱うことができる。例えば、プリンタアイコン４０をダブルクリックすることなどによりプリンタ５０の機器情報１９を表示させることができる。
【００７６】
また、プリンタアイコン４０はプリンタドライバ３０の実体なので、プリンタドライバ３０のアップグレードは、プリンタアイコンのアップグレードを伴う。したがって、同一のプリンタドライバ３０から複数のプリンタアイコンが作成されている場合は、すべてのプリンタアイコンがアップグレードされる。
【００７７】
＜処理の詳細＞
図９は、プリンタドライバ３０がアップグレードされる際の機器情報１９の保存手順などを示すフローチャート図の一例である。図９の手順は管理者がプリンタドライバ３０のアップグレードを開始することでスタートする。また、上記のようにプリンタドライバ３０はプリンタアイコン４０と紐付いており、プリンタアイコン４０はプリンタ５０と紐付いている。図９では、アップグレード前の古いバージョンのプリンタドライバ３０を「ドライバV1.0」、アップグレード後の新しいバージョンのプリンタドライバ３０を「ドライバV2.0」とする。
【００７８】
まず、管理者は「ドライバV1.0」のプリンタドライバ３０と紐づけられたプリンタアイコン４０を右クリックするなどしてメニューを表示させ、図２のデバイスプロパティ画面５０１を表示させる（Ｓ１０）。
【００７９】
管理者は図２に示したようにデバイスプロパティ画面５０１の「新しいドライバ」ボタン５０３を押下する（Ｓ２０）。これを契機にして「ドライバV1.0」のプリンタドライバ３０はアップグレードを開始する。また、管理者により指定された「ドライバV2.0」のinfファイルへのパスにより、「ドライバV2.0」のプリンタドライバ３０が起動する。
【００８０】
プリンタドライバ３０のアップグレードが開始したことがＯＳ１２に伝えられると、ＯＳ１２の仕組みとしてＯＳ１２はDrvUpgradePrinterというＤＤＩコールをプリンタドライバ３０に通知する。「ドライバV2.0」のプリンタドライバ３０はそのＤＤＩコールが呼ばれたときの処理（アップグレードに必要な引き継ぎ処理など）を開始する。本実施形態では、引き継ぎ処理の一つとして設定取得部２４がプリンタアイコン４０と紐づけられているプリンタ５０と双方向通信を行い、プリンタ５０の最新の機器情報１９を取得する（Ｓ３０）。表２を用いて双方向通信で得られる機器情報１９について説明する。
【００８１】
【表２】
2016173771.tif 000004
表２は設定取得部２４がプリンタ５０から取得した機器情報１９の一例である。機器情報１９のそれぞれの記載の意味は以下のとおりである。
ModelName…プリンタ５０のモデル名を意味する。プリンタＸがモデル名である。
Tray…プリンタ５０に接続されているトレイを意味する。1,2,BypassはそれぞれTray1、Tray2、手差しトレイを意味する。
Finisher1…プリンタ５０に接続されているフィニッシャーを意味する。ｏｎはFinisher1が接続されていることを意味する。
DuplexUnit…プリンタ５０に接続されている両面印刷ユニットを意味する。OffはDuplexUnitが接続されていないことを意味する。
【００８２】
双方向通信に成功しない場合（Ｓ４０のＮｏ）、設定取得部２４は設定内容保存ファイル２２に、アップグレード時に双方向通信をしたが失敗したことを示す「isUpgradeBidi＝false」を記載する（Ｓ７０）。この後、処理はステップＳ８０に進む。
【００８３】
双方向通信に成功した場合（Ｓ４０のＹｅｓ）、設定取得部２４は設定内容保存ファイル２２に、アップグレード時に双方向通信をして成功したことを示す「isUpgradeBidi＝true」を記載する（Ｓ５０）。
【００８４】
次に、設定反映部２５は、機器情報１９や印刷設定２７などが記憶される記憶領域（本実施例ではレジストリ２１）に、ステップＳ３０で取得された機器情報１９を反映させる（Ｓ６０）。詳細は図１０にて説明する。本実施例ではレジストリ２１に最新の機器情報１９が記憶され、かつ、印刷設定２７も更新されてレジストリ２１に記憶される。
【００８５】
機器情報１９のレジストリ２１への反映が完了したら、「ドライバV2.0」へのアップグレードは終了である。
【００８６】
続いて、「ドライバV1.0」のデバイスプロパティ画面５０１が表示されるので、管理者は図２に示したＯＫボタン５０４を押してデバイスプロパティ画面５０１を閉じる（Ｓ８０）。デバイスプロパティ画面５０１が閉じられる場合、ＯＳ１２の仕組みとしてＯＳ１２はDrvDevicePropertySheetsというＤＤＩコールをプリンタドライバ３０に通知する。このＤＤＩコールは、ＯＫボタン５０４でデバイスプロパティ画面５０１を閉じるときに必ず呼ばれる関数である。つまり、ＯＫボタン５０４でデバイスプロパティ画面５０１が閉じられれば、アップグレードの有無に関係なくＤＤＩコールが通知される。このため、プリンタドライバ３０はアップグレード後にＯＫボタン５０４で閉じられたのか、ＯＫボタン５０４で閉じられてもアップグレード以外で（例えばオプション構成の変更後）閉じられたのか）を判断できない。
【００８７】
管理者がオプション構成を変更した場合、変更した内容をレジストリ２１に保存する必要がある。しかし、アップグレード時は変更した内容ではなく、「ドライバV2.0」のプリンタドライバ３０が双方向通信して取得した機器情報１９を優先させてレジストリ２１に保存する必要がある。このため、アップグレード時に双方向通信が行われたか否かの情報が設定内容保存ファイル２２に記載されていることが有効になる。
【００８８】
DrvDevicePropertySheetsというＤＤＩコールを通知された「ドライバV1.0」の設定管理部２６は設定内容保存ファイル２２から「isUpgradeBidi」という記載を取得する（Ｓ９０）。
【００８９】
設定内容保存ファイル２２に「isUpgradeBidi＝true」と記載されている場合（Ｓ１００のＹｅｓ）、機器情報１９を取得してアップグレードが終了しデバイスプロパティ画面５０１が閉じられたことを示している。このため、設定管理部２６は設定情報２８をレジストリ２１に保存しない（Ｓ１２０）。これにより、レジストリ２１に反映されているアップグレード時の双方向通信により取得された機器情報１９が、古いバージョンの機器情報１９や印刷設定２７で上書きされることを防止できる。
【００９０】
次に、設定取得部２４は設定内容保存ファイル２２の記載を消去する（Ｓ１３０）。つまり、「isUpgradeBidi=true」という記載の全体が消去される。これにより、次回のアップグレード時の双方向通信に備えることができる。
【００９１】
設定内容保存ファイル２２に「isUpgradeBidi＝false」と記載されている場合又は「isUpgradeBidi」の記載そのものがない場合（Ｓ１００のＮｏ）、少なくとも機器情報１９がレジストリ２１に記憶されていない。このため、画面表示部１６が受け付けたオプション構成などの変更が含まれる設定情報２８を設定管理部２６がレジストリ２１に保存する（Ｓ１１０）。
【００９２】
設定取得部２４は設定内容保存ファイル２２の記載を消去する（Ｓ１３０）。つまり、「isUpgradeBidi=false」という記載があっても全体を消去する。以上で、図９の処理が終了する。
【００９３】
なお、アップグレードの終了により「ドライバV1.0」の設定管理モジュール１７やその他の古いプリンタドライバ３０のモジュールはＯＳ１２により消去される。
【００９４】
＜機器情報のプリンタドライバへの反映＞
図９で説明したステップＳ６０の処理について、図１０を用いて説明する。図１０は設定取得部２４がプリンタ５０から取得した機器情報１９のレジストリ２１への反映例を示す図である。図１０（ａ）はアップグレード前のレジストリ２１に記憶されている機器情報１９を示し、図１０（ｂ）はアップグレード前のレジストリ２１に記憶されている印刷設定２７の一例を示す。この印刷設定２７は最後にユーザが設定した印刷設定２７又はユーザが使用していなければ初期設定のままの印刷設定２７である。
【００９５】
図１０（ａ）の機器情報１９によればプリンタ５０はトレイとして、Tray１と手差しトレイを有している。図１０（ｂ）の印刷設定２７ではTray１と手差しトレイのうちTray１が設定されている。また、機器情報１９によればFinisher1はoffなので、印刷設定２７においてもStapleとPunchはoffが設定されている。また、機器情報１９によればDuplexUnitはonであり、印刷設定２７においてはOpentoLeft（右閉じ用に両面印刷）が設定されている。
【００９６】
図１０（ｃ）はアップグレード後のレジストリ２１に記憶されている機器情報１９を示し、図１０（ｄ）はアップグレード後のレジストリ２１に記憶されている印刷設定２７の一例を示す。図１０（ｃ）の機器情報１９は表２のものと同じであり、それがそのままレジストリ２１に記憶されている。
【００９７】
しかし、機器情報１９が変更されるとそれに伴い印刷設定２７も変更する必要がある。変更しないとユーザが選択できない印刷設定２７が印刷設定画面で表示され、プリンタ５０が対応していない印刷設定２７がプリンタ５０に送信されるおそれが生じるためである。
【００９８】
図１０（ｃ）によればModelName（モデル名）が変更されているが、モデル名は印刷設定２７には含まれないので図１０（ｄ）の印刷設定２７に関しモデル名は反映されない。図１０（ｃ）の機器情報１９ではTray2が追加されたが、印刷設定２７ではTray1が設定されているため印刷設定２７には変更がない。また、図１０（ｃ）のFinisher1がｏｎになっているが、印刷設定２７でもフィニッシャーは設定されていないので（ユーザが選択していないため自動的には設定しない）、印刷設定２７のStapleとPunchはoffのままでよい。これに対し、図１０（ｃ）の機器情報１９ではDuplexUnitがoffとなっているためプリンタ５０はDuplex機能を使えない。このため、印刷設定２７のDuplexはアップグレード後の設定反映部２５によってoffに変更される。
【００９９】
このように、プリンタドライバ３０はアップグレード時に取得された機器情報１９により印刷設定２７を更新することができる。
【０１００】
以上説明したように、本実施例のプリンタドライバ３０は、デバイスプロパティ画面５０１が閉じられる際に、設定内容保存ファイル２２を参照することで、古いバージョンのプリンタドライバ３０が保持している設定情報２８を保存するかしないかを制御できる。このため、古いバージョンのプリンタドライバ３０が、新しいバージョンのプリンタドライバ３０が取得した機器情報１９を上書きすることを防止できる。また、アップグレード時の双方向通信の結果を印刷設定２７に反映できるため、アップグレードにより変更になったプリンタ５０の状態や新しくサポートするようになった機能をユーザが選択できるようになりユーザが期待するとおりの印刷ができる。さらに、アップグレード時に必要な変更をすべて更新してくれるため管理者の手間が非常に省ける。
【実施例２】
【０１０１】
本実施例では、アップグレード時に、古いバージョンのプリンタドライバ３０に対するオプション構成の変更を受け付けることができるプリンタドライバ３０について説明する。
【０１０２】
なお、本実施例のＰＣ１０の機能ブロック図は実施例１の図７と同様でよい。このため、本実施例においては本実施例の主要な構成要素についてのみ説明する場合がある。以下であ、実施例１とその機能が異なっている図７の手段又は機能について説明する。
【０１０３】
本実施例の設定反映部２５（新しいバージョン）は、実施例１と同様に、設定取得部２４が取得した機器情報１９をレジストリ２１に記憶させる（プリンタアイコン４０に反映させる）。また、設定反映部２５（古いバージョン）は、古いバージョンの画面表示部１６が保持していた設定情報２８（このうちの主に機器情報１９）のうち変更があった項目を新しいバージョンのプリンタドライバ３０でも読み取り可能な形式に変換する。そして、新しいバージョンのプリンタドライバ３０と共有可能な記憶領域（本実施例ではレジストリ２１）の機器情報１９に変更があった項目を反映させる。
【０１０４】
設定管理部２６（新しいバージョン）は、アップグレードの前後で機器情報１９に変更がある項目を検出し設定内容保存ファイル２２に保存する。また、設定管理部２６（新しいバージョン）は、保存形式を変更した機器情報１９の項目を設定内容保存ファイル２２に保存する。また、古いバージョンと新しいバージョン間で機器情報１９の保存形式が変わった項目について、変更点を設定内容保存ファイル２２に記載して保存する。設定管理部２６（古いバージョン）は、設定内容保存ファイル２２を読み出してどの項目をレジストリ２１の機器情報１９に反映させるべきかを判断し、該項目をレジストリ２１に反映させる。
【０１０５】
本実施例の設定内容保存ファイル２２には、新しいバージョンの設定管理部２６がレジストリ２１から取得して保存した機器情報１９、古い機器情報１９と新しい機器情報１９間で変更された項目、該項目のうち古いバージョンと新しいバージョンで機器情報１９の保存形式が変わった項目について新しい保存形式、及び、該項目の保存場所が記載される。また、実施例１と同様に、設定取得部２４はアップグレード時の双方向通信が成功したか否を記載する。
【０１０６】
＜処理の詳細＞
図１１、１２は、本実施例において、プリンタドライバ３０がアップグレードされる際の機器情報１９の保存手順などを示すフローチャート図の一例である。なお、図１１、１２においては図９と異なるステップの処理についてのみ説明する場合がある。
【０１０７】
ステップＳ６０において、「ドライバV2.0」の設定反映部２５はステップＳ３０で取得された機器情報１９をレジストリ２１に反映させる。
【０１０８】
次に、「ドライバV2.0」の設定管理部２６は、２つの機器情報１９を比較してこれらの変更点（項目とその値）を抽出し、設定内容保存ファイル２２に記載する（Ｓ６２）。なお、設定内容保存ファイル２２には設定管理部２６がレジストリ２１から取得した機器情報１９（上書きする前）も記載される。
【０１０９】
【表３】
2016173771.tif 000005
表３は、新しいバージョンの機器情報１９を示す図である。プリンタアイコン４０が紐づけられているプリンタＡと双方向通信によって取得できる機器情報１９の例である。この機器情報１９でプリンタアイコン４０が持つ機器情報１９も上書きされる。プリンタＡの機器情報１９は以下のとおりである。
ModelName…プリンタ５０のモデル名を意味する。プリンタＡがモデル名である。
Tray…プリンタ５０に接続されているトレイを意味する。1,2はそれぞれTray1、Tray2を意味する。
Finisher1…プリンタ５０に接続されているフィニッシャーを意味する。ｏｎはFinisher1が接続されていることを意味する。
Finisher2…プリンタ５０に接続されているフィニッシャーを意味する。ｏｆｆはFinisher２が接続されていないことを意味する。
Tray1…トレイ１に格納されている紙種と用紙サイズを意味する。
Tray2…トレイ２に格納されている紙種と用紙サイズを意味する。
【０１１０】
したがって、表３の機器情報１９は下記のような意味である。
・トレイはトレイ１、トレイ２が装着されている。
・フィニッシャーにはフィニッシャー１が装着されている。
・フィニッシャー２を装着することも可能だが、現在は装着されていない。
・トレイ１にはＡ４の普通紙がセットされている。
・トレイ２にはＡ３の厚紙がセットされている。
【０１１１】
【表４】
2016173771.tif 000006
表４（ａ）はアップグレード前にレジストリ２１に保持されていた機器情報１９である。この機器情報１９は表３の機器情報１９で更新される。表４（ｂ）は、表３と表４（ａ）の機器情報１９の変更点等が記載された設定内容保存ファイル２２の一例である。すなわち、表３と表４（ａ）の機器情報１９を比較すると、下記の点が変更されたことが分かる。
・現在のプリンタにはトレイ３が装着されていない。
・トレイ１にセットされている用紙サイズがＡ５からＡ４になった。
・トレイ２にセットされている紙種が普通紙から厚紙になった。
【０１１２】
この変更を受けて、設定内容保存ファイル２２のChangedSettingセクションには以下の内容が記載される。
【０１１３】
・ChangedSettingセクション
変更された機器情報１９の項目が記載される。
「Tray3=delete」のdeleteはオプションが外されたことを意味する。逆に、新しく装着された場合はputと記載される。フィニッシャーのようにon・offで示せるもので、onからoffに変更された場合はFinisher1=offのように記載される。
「Tray1_papersize」には、トレイ１にセットされている用紙サイズが変更されたためchangedと記載される。「Tray2_mediatype」には、トレイ２にセットされている紙種が変更されたためchangedと記載される。
【０１１４】
次に、図１１に戻り、「ドライバV2.0」の設定管理部２６は、ステップＳ６２で保存した設定内容保存ファイル２２に記載された項目の中に「ドライバV1.0」と「ドライバV2.0」の間で保存形式が変わった項目がないかを確認する（Ｓ６４）。
【０１１５】
一般に、プリンタドライバ３０は上位互換性を有しており、新しいバージョンのプリンタドライバ３０は古いバージョンのプリンタドライバ３０の機器情報１９や印刷設定２７などを読み出すことができる。これにより、どんなに古いバージョンからもアップグレード時に機器情報１９や印刷設定２７を引き継ぐことを可能にしている。このことは、自身のバージョンよりも古いプリンタドライバ３０の設定保存形式を検出しており、読めることを意味する。
【０１１６】
図１３は、保存形式の変化を模式的に説明する図の一例である。図１３（ａ）は古いバージョン（例えばＶｅｒ１．０）のプリンタドライバ３０による機器情報１９の保存形式を示し、図１３（ｂ）は新しいバージョン（例えばＶｅｒ２．０）のプリンタドライバ３０による機器情報１９の保存形式を示す。古いバージョンの保存形式（Tray1=plain,A5）では紙種、用紙サイズの順で保存される。これに対し、新しいバージョン保存形式（Tray1=A5,plain）では用紙サイズ、紙種の順で保存される。このように、機器情報１９の同じ内容がプリンタドライバ３０のバージョンによって異なる保存形式で保存される。
【０１１７】
プリンタドライバ３０は自身のバージョンよりも古いプリンタドライバ３０の保存形式を解析できるように、図１３（ｃ）に示すような保存形式の対応情報を有している。図１３（ｃ）では、Tray1の保存形式について「ドライバV1.0」と「ドライバV2.0」の対応情報が記載されている。したがって、「ドライバV2.0」の設定管理部２６は、図１３（ｃ）のような対応情報を参照して、ステップＳ６２で保存した設定内容保存ファイル２２に記載された項目の中に保存形式が変わった項目があるか否かを判断できる。
【０１１８】
設定内容保存ファイル２２に保存形式が異なる項目が存在する場合（Ｓ６４のＹｅｓ）、処理はステップＳ６６に進む。存在しない場合（Ｓ６４のＮｏ）、「ドライバV2.0」におけるアップグレード処理は終了である。
【０１１９】
次に、「ドライバV2.0」の設定管理部２６は保存形式が変更された項目について、新しい保存形式とその保存場所を設定内容保存ファイル２２に保存する（Ｓ６６）。再び、表４を参照して説明する。
【０１２０】
保存形式が変更された項目の新しい保存形式や保存場所は、表４のChangedDataFormatセクションに記載される。「Tray1_papersize_data」には、トレイ１の用紙サイズの新しい保存場所が記載されている。トレイ１の用紙サイズの保存場所は次のように表すことができる。
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\プリンタA\PrinterDriverData\Tray1」
「ドライバV1.0」からのアップグレードであれば、「ドライバV2.0」はV1.0からV2.0の間に保存形式が変わった項目についてのみここに記載する。保存形式については省略されているが、図１３（ｂ）のような対応情報のうち新しいバージョンの保存形式がChangedDataFormatセクションに記載される。
【０１２１】
なお、この保存場所「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\プリンタ名\PrinterDriverData」は、アップグレード前後で引き継がれる。よって、ここにバージョンを記載しておけば新しいバージョンのプリンタアイコン４０は古いバージョンのプリンタドライバ３０のバージョンを知ることが可能である。
【０１２２】
アップグレードが終了すると、管理者は「ドライバV1.0」のデバイスプロパティ画面５０１を操作できるようになるので、管理者はなんらかのオプション構成を変更する（Ｓ７８）。必ずオプション構成を変更する必要はないが、本実施例では変更したものとする。
【０１２３】
この後の、ステップＳ８０〜Ｓ１１０の処理は実施例１と同様である。
【０１２４】
設定内容保存ファイル２２に「isUpgradeBidi= true」が記載されている場合（Ｓ１００のＹｅｓ）、「ドライバV1.0」の設定管理部２６は、設定内容保存ファイル２２の内容と、設定情報２８に含まれる機器情報１９の現在値を照らし合わせる。そして、レジストリ２１に反映された機器情報１９の変更が必要か否かを判定する（Ｓ１０２）。
【０１２５】
まず、設定内容保存ファイル２２にはアップグレードの前後で機器情報１９の変更点が記載されている。次に、例えば、設定情報２８に含まれる機器情報１９の現在値にTray1=plane,Letterと設定されていたとする。設定内容保存ファイル２２では古い機器情報１９が記憶されているので（Tray1=plane,A5）、両者を比較すると管理者がオプション構成を変更したことが分かる（このTray１は変更項目の一例である。）。また、このTray1は保存形式が変更されたことが設定内容保存ファイル２２に記載されている。したがって、設定情報２８に含まれる機器情報１９のTray1の用紙サイズでレジストリ２１の機器情報１９の変更が必要であると判断する。詳細は表５にて説明する。
【０１２６】
レジストリ２１に反映された機器情報１９の変更が必要でない場合（Ｓ１０２のＮｏ）、レジストリ２１への反映は不要なので処理はステップＳ１３０に進む。
【０１２７】
レジストリ２１に反映された機器情報１９の変更が必要である場合（Ｓ１０２のＹｅｓ）、「ドライバV1.0」の設定反映部２５は、新しいバージョンのプリンタドライバ３０の保存形式を設定内容保存ファイル２２から読み出す。そして、レジストリ２１の機器情報１９に対する設定情報２８の変更を反映させる（Ｓ１０４）。
【０１２８】
次に、「ドライバV1.0」の設定取得部２４は設定内容保存ファイル２２からisUpgradeBidiの記載を削除する（Ｓ１３０）。以上で、図１１、１２の処理が終了する。このように、アップグレード前のプリンタドライバ３０とアップグレード後のプリンタドライバ３０が連携して機器情報を適切にレジストリ２１に保存できる。
【０１２９】
【表５】
2016173771.tif 000007
表５は、図１１，１２のフロー終了後のレジストリ２１における機器情報１９である。表３の機器情報１９と比較して、管理者がトレイ１にセットした用紙サイズがLetterに変更されている。この変更が、Ｓ１０４で設定反映部２５がレジストリ２１の機器情報１９に反映させたものである。
【０１３０】
詳細に説明する。「ドライバV1.0」の設定管理部２６は、設定情報２８に含まれる機器情報１９の現在値（Tray1=plane,Letter）と、設定内容保存ファイル２２の古い機器情報１９から、設定情報２８に含まれる機器情報１９の現在値を管理者が変更したことを検出する。これにより、管理者がTray1のオプション構成を変更していた場合、レジストリ２１の機器情報１９に反映させる必要があることが分かる。すなわち、デバイスプロパティ画面５０１は「ドライバV1.0」に画面表示部１６によって作成されているため、「ドライバV2.0」の機器情報１９はデバイスプロパティ画面５０１に反映されていない。しかし、管理者が手動でオプション構成を変更するということは、その設定で使いたい可能性が高い。そこで、設定管理部２６は管理者による変更に合わせてレジストリ２１の機器情報１９を更新する。これにより、管理者は「ドライバV1.0」のデバイスプロパティ画面５０１からオプション構成などを変更しても、アップグレードされた「ドライバV2.0」の機器情報１９に管理者の設定を反映できる。
【０１３１】
項目の変更が必要である場合、「ドライバV1.0」の設定管理部２６は、設定内容保存ファイル２２からトレイ１の保存形式に変更があるかどうかを判断して、変更後の保存形式を設定反映部２５に渡す。設定内容保存ファイル２２にはTray1の保存形式が変更されたこと（ChangeDataFormat）、保存形式及び保存場所が記載されている。変更が必要な旨と保存形式及び保存場所を受け取った設定反映部２５（古いバージョン）は新しいバージョンの保存形式に従って、レジストリ２１の機器情報１９のTray1の用紙サイズをLetterに変更することができる。
【０１３２】
以上のように本実施例によれば、アップグレード時に、古いバージョンのプリンタドライバ３０に対するオプション構成の変更を受け付けることができる。実施例１にて説明したように、アップグレードにより、最新の機器情報１９を反映するためにアップグレード時の双方向通信で取得した機器情報１９をプリンタアイコンの機器情報１９に反映させる。しかし、アップグレードのタイミングで管理者がオプション構成を変更しておきたい場合がある。変更した場合、管理者としてはアップグレード時でも、デバイスプロパティ画面５０１から設定した内容が保存されていると考えている。実施例１のように、アップグレード時の双方向通信の結果を優先して機器情報１９に反映させてしまうと、管理者によるオプション構成の変更が反映されずに印刷設定画面が表示されてしまい、混乱させる要因となる。また、アップグレード時に取得した機器情報１９は一時的なもので、管理者がオプション構成を変更した状態で今後プリンタ５０を使用することもありうる。
【０１３３】
このような場合に古いバージョンのプリンタドライバが持つオプション構成の現在値をアップグレード後に機器情報１９に反映しようとしても、バージョンによって保存形式が違う場合には適切に保存できない問題が生じてしまう。
【０１３４】
これに対し、本実施例によれば、アップグレード時の双方向通信で取得した機器情報１９をプリンタアイコンの機器情報１９に反映しつつ、管理者の画面を介した設定も適した保存形式で保存して印刷設定２７に反映させることができる。
【０１３５】
＜その他の適用例＞
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【０１３６】
例えば、図７のＰＣ１０の機能ブロックは、ＰＣ１０の処理の理解を容易にするために、主な機能に応じて分割したものである。処理単位の分割の仕方や名称によって本願発明が制限されることはない。ＰＣ１０の処理は、処理内容に応じてさらに多くの処理単位に分割することもできる。また、１つの処理単位がさらに多くの処理を含むように分割することもできる。
【０１３７】
また、例えば、設定管理モジュール１７は画面表示部１６ではなく描画部１５とやりとりしてもいいし、プリンタドライバ３０の既存モジュールを介さずに外部モジュール（ＯＳなど）と直接やり取りしてもよい。またプリンタドライバ３０の外部モジュールとして設定管理モジュール１７をおき、プリンタドライバ３０とやりとりしてもよい。
【０１３８】
また、図７に示した各機能はソフトウェアにより実現される他、ＩＣなどのハードウェアにより実現されてもよい。
【０１３９】
また、本実施形態ではプリンタドライバ３０を例にして説明したが、本実施形態はＰＣ−ＦＡＸドライバにも同様に適用できる。
【符号の説明】
【０１４０】
１      印刷システム
１１    アプリケーションソフト
１６    画面表示部
１７    設定管理モジュール
２１    レジストリ
２２    設定内容保存ファイル
２４    設定取得部
２５    設定反映部
２６    設定管理部
３０    プリンタドライバ
５０    プリンタ
９９    クライアントＰＣ
１００  サーバＰＣ
【先行技術文献】
【特許文献】
【０１４１】
【特許文献１】特開２００８−２６９４８５号公報
【図１】
2016173771.tif 000008
【図２】
2016173771.tif 000009
【図３】
2016173771.tif 000010
【図４】
2016173771.tif 000011
【図５】
2016173771.tif 000012
【図６】
2016173771.tif 000013
【図７】
2016173771.tif 000014
【図８】
2016173771.tif 000015
【図９】
2016173771.tif 000016
【図１０】
2016173771.tif 000017
【図１１】
2016173771.tif 000018
【図１２】
2016173771.tif 000019
【図１３】
2016173771.tif 000020