(57)【特許請求の範囲】
【請求項１】
複数の画像形成装置と通信する情報処理装置であって、
複数種類の画像形成装置に対して指示をすることができる第１デバイスドライバのインストールを制御する第１インストール手段と、
前記第１デバイスドライバのインストールに伴い、前記第１デバイスドライバから渡されるデータを受け取って、画像形成装置に対して送信して処理させるための処理データを生成する際に実行される第２デバイスドライバのインストールを制御する第２インストール手段と、を有し、
前記第１インストール手段によるインストールに際しては、前記第１デバイスドライバのポートを確定することなく、インストールの制御が行われ、
前記第１インストール手段によるインストールに際しては、前記第１デバイスドライバに対応するプリントキューが作成され、
前記第２インストール手段によるインストールに際しては、前記第２デバイスドライバに対応するプリントキューが作成されないことを特徴とする情報処理装置。
【請求項２】
複数の画像形成装置と通信する情報処理装置であって、
複数種類の画像形成装置に対して指示をすることができる第１デバイスドライバのインストールを制御する第１インストール手段と、
前記第１デバイスドライバのインストールに伴い、前記第１デバイスドライバから渡されるデータを受け取って、画像形成装置に対して送信して処理させるための処理データを生成する際に実行される第２デバイスドライバのインストールを制御する第２インストール手段と、
複数の画像形成装置の中からひとつの画像形成装置を選択する選択手段と、
前記第２インストール手段によるインストールの後に行われる前記選択手段による選択に応答して、該選択された画像形成装置を出力先とするためのポートを第２デバイスドライバに対して設定する設定手段と、を有し、
前記第１インストール手段によるインストールに際しては、前記第１デバイスドライバのポートを確定することなく、インストールの制御が行われ、
前記第２デバイスドライバは、前記第１デバイスドライバから渡されるデータから、前記設定されたポートに対応する画像形成装置に処理させる処理データを生成することを特徴とする情報処理装置。
【請求項３】
前記第１デバイスドライバは、複数種類のデバイスドライバにより解釈されることが可能な中間データを生成して、前記第２デバイスドライバに渡すことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第２インストール手段は、既に第２デバイスドライバがインストールされていた場合には、前記インストールの制御を行わないことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第２インストール手段によるインストールに際しては、前記第２デバイスドライバとして、複数種類の画像形成装置に対して指示をすることができる汎用デバイスドライバのインストールの制御が行われることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
複数の画像形成装置と通信する情報処理装置における制御方法であって、
複数種類の画像形成装置に対して指示をすることができる第１デバイスドライバのインストールを制御する第１インストール工程と、
前記第１デバイスドライバのインストールに伴い、前記第１デバイスドライバから渡されるデータを受け取って、画像形成装置に対して送信して処理させるための処理データを生成する際に実行される第２デバイスドライバのインストールを制御する第２インストール工程と、を有し、
前記第１インストール工程でのインストールに際しては、前記第１デバイスドライバのポートを確定することなく、インストールの制御が行われ、
前記第１インストール工程でのインストールに際しては、前記第１デバイスドライバに対応するプリントキューが作成され、
前記第２インストール工程でのインストールに際しては、前記第２デバイスドライバに対応するプリントキューが作成されないことを特徴とする制御方法。
【請求項７】
複数の画像形成装置の中からひとつの画像形成装置を選択する選択工程と、
前記第２インストール工程でのインストールの後に行われる前記選択工程での選択に応答して、該選択された画像形成装置を出力先とするためのポートを第２デバイスドライバに対して設定する設定工程と、を更に有し、
前記第２デバイスドライバは、前記第１デバイスドライバから渡されるデータから、前記設定されたポートに対応する画像形成装置に処理させる処理データを生成することを特徴とする請求項６に記載に記載の制御方法。
【請求項８】
前記第１デバイスドライバは、複数種類のデバイスドライバにより解釈されることが可能な中間データを生成して、前記第２デバイスドライバに渡すことを特徴とする請求項６または７に記載の制御方法。
【請求項９】
請求項１乃至５のいずれか１項に記載の手段としてコンピュータを機能させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置から画像形成装置に対してデータを転送して処理させる印刷システム及び当該印刷システムの構成要素に関わるものである。
【背景技術】
【０００２】
従来、パーソナルコンピュータなどの情報処理装置からプリンタなどの出力デバイスを利用するには、通常その出力デバイスに対応した特定のプリンタドライバを組み込む必要があった。利用する出力デバイスが複数台ある場合は利用する台数分だけプリンタドライバを組み込まなければならず、ユーザーはその度にＩＰアドレスを調べたり、対応するプリンタドライバをインターネットから探してきたり、といった面倒なインストール作業を強いられてきた。しかも、近年はパーソナルコンピュータが爆発的に増加したため、プリンタドライバのメンテナンスコストも無視できないほど増加してきた。
【０００３】
そこで、出力デバイスの種類によらず複数の出力デバイスを利用可能なのプリンタドライバが研究・開発されつつある。すなわち、複数のモジュールに分割されたプリンタドライバのコアとなるコアモジュールを、接続されているポート先のプリンタと双方向通信を行って取得する。そして、取得したコアモジュールからポート先のプリンタ機種から機種依存モジュールを取得して必要なモジュールを構成し、ポート先のプリンタ機種対応のドライバとして動作させるという技術が存在する。（例えば、特許文献１）。
【０００４】
また、アプリケーションからの印刷データを受け取ったプリンタドライバが印刷描画を一旦スプールし、スプールデータを加工後、デスプール処理をして再印刷する方法が実現されている（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２５９０８５
【特許文献２】特許第３３６３７９３号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ドライバインストールをするたびごとに、例えば、ドライバをダウンロードしたり、プリンタのアドレスを調べてデバイスドライバに対して設定するなど、ポートの設定等を含むプリンタキュー等に関わる煩雑な設定を逐一行う必要があった。
【０００７】
本発明の目的は、プリンタドライバのセットアップの手間を軽減する仕組みを提供することである。
【０００８】
さらに、本発明は、上記設定の煩雑さを軽減するための事前セットアップの仕組みを提供することをさらに別の目的とする。
【課題を解決するための手段】
【０００９】
上記目的の少なくとも一つを達成するため、本発明の情報処理装置は、複数の画像形成装置と通信する情報処理装置であって、複数種類の画像形成装置に対して指示をすることができる第１デバイスドライバのインストールを制御する第１インストール手段と、前記第１デバイスドライバのインストールに伴い、前記第１デバイスドライバから渡されるデータを受け取って、画像形成装置に対して送信して処理させるための処理データを生成する際に実行される第２デバイスドライバのインストールを制御する第２インストール手段と、を有し、前記第１インストール手段によるインストールに際しては、前記第１デバイスドライバのポートを確定することなく、インストールの制御が行われ、前記第１インストール手段によるインストールに際しては、前記第１デバイスドライバに対応するプリントキューが作成され、前記第２インストール手段によるインストールに際しては、前記第２デバイスドライバに対応するプリントキューが作成されないことを特徴とするを特徴とする。
【発明の効果】
【００１０】
本発明の一つの側面によれば、デバイスドライバのインストール時の設定の煩雑さを軽減する事前セットアップを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】システムの構成図およびホストコンピューターならびに出力デバイス内部の装置構成の一例を示すブロック図
【図２】プリンタドライバインストーラのユーザーインターフェースの一例を表す図
【図３】プリンタドライバ、プリントキュー、ポート等の各情報の一例を表す図
【図４】プリンタドライバのインストール処理の一例を示す図
【図５】仮想・汎用・専用プリンタドライバのインストール処理の一例を示す図
【図６】印刷処理のデータの一例を示す図
【図７】印刷処理のシーケンスの一例を示す図
【図８】アプリケーションおよびプリントジョブマネージャーのユーザーインターフェース例を示す図
【図９】プリントジョブマネージャーのユーザーインターフェースの一例を表す図
【図１０】プリントジョブマネージャーのユーザーインターフェースの一例を表す図
【図１１】ユーザーインターフェースの遷移の一例を示す図
【図１２】出力準備処理のフローチャートの一例を示す図
【図１３】汎用・専用プリンタドライバインストール処理のフローチャートの一例を示す図
【図１４】プリントキュー整理処理のフローチャートの一例を示す図
【図１５】プリントキュー削除処理のフローチャートの一例を示す図
【図１６】出力デバイス特定ダイアログへ戻る場合のシーケンスの一例を示す図
【図１７】プリンタフォルダの一例を示す図
【図１８】プリンタドライバの設定の値を格納するＤＥＶＭＯＤＥの一例を示す図
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１３】
図１（Ａ）は、本発明の実施形態に係るネットワークシステムの概略構成を示すブロック図である。このネットワークシステムは、ホストコンピュータ（１０１）と、このホストコンピュータ（１０１）より印刷データを受信して印刷を行なう複数の出力デバイス（１０２Ａ，１０２ｂ，…）とプリンタドライバ配信サーバー（１０３）等を備える。これらはネットワーク（１０４）を介して接続されている。
【００１４】
図１（Ｂ）は、図１（Ａ）のホストコンピュータ（１０１）と出力デバイス（１０２）の装置構成を示すブロック図である。ホストコンピュータ（１０１）において、ＣＰＵ（１１１）は、ＲＡＭ（１１２）に記憶されているプログラムに従って、システムバス（１１４）に接続される各デバイスを総括的に制御している。もちろん、このＣＰＵは複数であってもよい。以下図１（Ｂ）について詳細に説明する。
【００１５】
命令の処理及び計算をするハードウェア回路であればよい。このＲＡＭ（１１２）は、ＣＰＵ（１１１）の主メモリ、ワークエリア等としても機能している。ＲＯＭ（１１３）は、各種プログラム及びデータを格納しており、各種フォントを記憶するフォントＲＯＭ（１１３ａ）、ブートプログラムやＢＩＯＳ等を記憶するプログラムＲＯＭ（１１３ｂ）、及び各種データを記憶するデータＲＯＭ（１１３ｃ）に区分けして構成されている。キーボードコントローラＩ／Ｆ（１１５）は、キーボード（１１９）や不図示のポインティングデバイス（マウス）からのキー入力を制御する。ディスプレイＩ／Ｆ（１１６）は、ディスプレイ（１２０）への表示を制御している。外部メモリＩ／Ｆ（１１７）は、例えばハードディスク（ＨＤ）、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ（ＳＳＤ）等の外部メモリ（１２１）とのアクセスを制御する。外部メモリ（１２１）は、オペレーティングシステムプログラム（以下、ＯＳ）（１２２）をはじめ各種アプリケーション（１２３）、印刷処理関連プログラム（１２４）、さらに、ユーザファイル、編集ファイル（図示省略）等を記憶するコンピュータが読み取り可能な記憶媒体として機能する。
【００１６】
ここで、外部メモリ１２１に記憶されるプログラム群を説明する。ＯＳ（１２２）としてＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）を使用するものとする。ここで、印刷処理関連プログラム（１２４）は、本実施形態に係るプリントジョブマネージャー（１２５）、仮想プリンタドライバ（１２６）及びドライバインストーラ（１２９）などを含むプログラム領域となる。これらプログラムを任意の手段でダウンロードし、後述するようなインストール処理を行うことで、このプログラムに基づく印刷処理が可能となる。また、印刷処理関連プログラム（１２４）においては、情報処理装置にインストールされる汎用プリンタドライバ（１２７）や専用プリンタドライバ（１２８）も含まれることになる。仮想プリンタドライバとは、本実施形態特有のドキュメントを物理的な出力デバイスに対して直接ではなく、間接的に印刷するために利用されるプログラムである。間接的なプログラムであるため「仮想」と呼称しているが、仮想プリンタドライバ（１２６）はＯＳ（１２２）上では一般的なプリンタドライバとして登録されるため、ユーザは通常の印刷作業手順に近い感覚で作業を行うことができる。一方、汎用プリンタドライバと専用プリンタドライバは、一般的なプリンタドライバとして分類される。具体的には、汎用プリンタドライバとは、複数のモデルに印刷可能なプリンタドライバである。汎用プリンタドライバは、対応するモデルが共通で持つ機能を利用することができる。一方、専用プリンタドライバとは、単一のモデルにのみ対応したプリンタドライバである。専用プリンタドライバは、対応するモデルの機能を最大限に引き出すことが可能である。
【００１７】
ネットワークＩ／Ｆ（１１８）は、ネットワーク（１０４）を介して出力デバイス（１０２）に接続され、出力デバイス（１０２）との間で通信制御処理を行なう。なお、プリンタドライバ配信サーバー（１０３）もホストコンピュータ（１０１）と同様の装置構成を備える。
【００１８】
次に出力デバイス（１０２）の構成について説明する。ＣＰＵ（１３２）は、出力デバイス（１０２）の全体の動作を制御している。ＲＡＭ（１３９）は、ＣＰＵ（１３２）の主メモリ、ワークエリア等として機能するとともに、出力情報展開領域、環境データ格納領域としても用いられる。またこのＲＡＭ（１３９）は、ＮＶＲＡＭ（Ｎｏｎ−ｖｏｌａｔｉｌｅ  ＲＡＭ：不揮発性ＲＡＭ）領域も備えている。そして、ＲＡＭは、増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。ＲＯＭ（１３３）は、各種フォントを記憶するフォントＲＯＭ（１３３ａ）、ＣＰＵ（１３２）により実行される制御プログラム等を記憶するプログラムＲＯＭ（１３３ｂ）、及び各種データを記憶するデータＲＯＭ（１３３ｃ）を備えている。
【００１９】
ネットワークＩ／Ｆ（１３８）は、ホストコンピュータ（１０１）との間でデータの送受信を行なう。印刷部Ｉ／Ｆ（１３６）は、プリンタエンジンである印刷部（１３７）とのインターフェースを制御している。外部メモリ（１３４）は、外部メモリＩ／Ｆ（１４０）によりアクセスが制御されており、オプションとして接続されるハードディスク（ＨＤ）、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ（ＳＳＤ）等を含んでおり、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。さらに、本実施形態に係る専用プリンタドライバ（１４３）を記憶することも可能である。なお、ハードディスク等の外部メモリ（１３４）が接続されていない場合には、ＲＯＭ（１３３）のデータＲＯＭ（１３３ｃ）に、ホストコンピュータ（１０１）で利用される情報等を記憶することになる。なお、この外部メモリ（１３４）は１個に限らず複数備えるものであってもよく、例えば、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラム等を格納した外部メモリを複数接続できるように構成されていてもよい。操作部（１４２）には、ユーザーによる操作を受け付ける操作パネルが設けられ、その操作パネルには操作のためのスイッチ及びＬＥＤ表示器等が配されている（不図示）。また、不図示のＮＶＲＡＭを有し、操作パネルからのプリンタモード設定情報を記憶するようにしてもよい。ＣＰＵ（１３２）は、ＲＯＭ（１３３）のプログラムＲＯＭ（１３３ｂ）に記憶された制御プログラム等に基づき、印刷部Ｉ／Ｆ（１３６）を介して印刷部（１３７）に出力情報としての画像信号を出力する。また、ＣＰＵ（１３２）はネットワークＩ／Ｆ（１３８）を介してホストコンピュータ（１０１）との通信処理が可能となっており、ホストコンピュータ（１０１）から送信される印刷データを受信すると共に、出力デバイス（１０２）内の情報等をホストコンピュータ（１０１）に通知可能に構成されている。
【００２０】
図２は、図１（Ｂ）のプリンタドライバインストーラ（１２９）が備えるユーザーインターフェース（２００）である。プリンタドライバインストーラ（１２９）を実行すると、ディスプレイ（１２０）上に表示される。プリンタ一覧（２０１）にインストール可能なプリンタドライバの一覧が表示される。Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ａは、デバイスモデルＡの出力デバイスに対応した専用プリンタドライバである。Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ｂは、デバイスモデルＢの出力デバイスに対応した専用プリンタドライバである。Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ｃは、デバイスモデルＣの出力デバイスに対応した専用プリンタドライバである。Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ｄは、デバイスモデルＤの出力デバイスに対応した専用プリンタドライバである。Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １は、デバイスモデルＡ、Ｂに対応した汎用プリンタドライバである。Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２は、デバイスモデルＣ、Ｄに対応した汎用プリンタドライバである。Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌは、デバイスモデルＡ、Ｂ、Ｃ、Ｄだけではなく、あらゆる出力デバイスに対応可能な仮想プリンタドライバである。ユーザーが任意のモデルを選択し、追加ボタン（２０２）を押下し、インストールするプリンタ一覧（２０３）に選択したモデルを加える。その後、ユーザーがインストールボタン（２０４）を押下することで、プリンタドライバインストーラ（１２９）は指定されたモデルのプリンタドライバをインストールする。
【００２１】
図３は、プリンタドライバとプリントキューとポートの各情報とそれらの関係を説明した図である。後述の実施形態の前提として比較のため説明する。以下は、ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）のオブジェクト図を使って表現している。プリントキュー（３０２）は、アプリケーションから印刷する際の印刷対象に対応するオブジェクトである。同一デバイスモデルのプリンタドライバ（３０１）から複数作成することができる。例えば、オフィスにＤｅｖｉｃｅ  Ｍｏｄｅｌ  Ａの出力デバイスが３台導入された場合、Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  Ａに対応したプリンタドライバを１つインストールして、そのプリンタドライバを使ったプリントキューを３つ作成することになる。ポート（３０３）は、ネットワークの出力先を特定するオブジェクトである。プリントキューとポートの関係は通常は一対一であるが、図のように同じポートを複数のプリントキューが使用してもかまわない。また、プリンタドライバ（３０１）はプリンタドライバ構成情報（３０４）を保持している。プリンタドライバ構成情報（３０４）は、ドライババージョン、デバイスモデル名、ハードウェア情報、ドライバモジュール名、等から構成される。このプリンタドライバ構成情報（３０４）は、ＯＳ（１２２）によって管理される。プリントキュー（３０２）は、プリントキュー構成情報（３０５）を保持している。プリントキュー構成情報（３０５）は、プリントキュー名、ポート名、印刷設定情報、ジョブ投入時刻、ジョブステータス、等から構成される。このプリントキュー構成情報（３０５）は、ＯＳ（１２２）によって管理される。さらに、プリントキュー（３０２）は、本実施形態特有の自動生成識別子（３０６）と更新日時（３０７）をも保持する。これらの情報は、プリントジョブマネージャー（１２５）によって管理される。詳細は後述する。ポート（３０３）は、ポート構成情報（３０８）を保持している。ポート構成情報（３０８）は、ポート名、モジュール名、ＩＰアドレス、等から構成される。このポート構成情報（３０８）は、ＯＳ（１２２）によって管理される。
【００２２】
図４は、図１（Ｂ）のプリンタドライバインストーラ（１２９）による、通常のプリンタドライバのインストール処理を示すフローチャートである。ここで、通常のプリンタドライバとは、専用プリンタドライバおよび汎用プリンタドライバを指す。ユーザの指示により、プリンタドライバのインストールを開始（Ｓ４００）する。すると、ドライバインストーラ（１２９）は、ＩＮＦファイルを読み込みその中に記載されているプリンタドライバのリストを表示する。そして、ユーザーによるデバイスモデルの選択を受け付ける（Ｓ４０１）。ここでは、図２のプリンタ一覧（２０１）において、Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ以外のデバイスモデルを選択された場合を想定する。本実施形態特有のＶｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌの選択も含んだインストール処理については後述する。
【００２３】
専用プリンタドライバもしくは汎用プリンタドライバの選択を受け付けると、選択されたデバイスモデルのプリンタドライバをインストールする（Ｓ４０２）。プリンタドライバのインストールは、プリンタドライバインストーラが、ＯＳのインストールＡＰＩであるスプーラＡＰＩに対して設定ファイルのパスを渡すことにより行われる。ＯＳの一部であるスプーラＡＰＩは、設定ファイルに従って、プリンタドライバを構成するＤＬＬ（Ｄｙｎａｍｉｃ  Ｌｉｎｋ  Ｌｉｂｒａｒｙ）をＣＤ−ＲＯＭやインストールセットの中から探索する。そして、スプーラＡＰＩは、所定のＯＳのシステムディレクトリに対して、探索されたＤＬＬをコピーする。スプーラＡＰＩは、設定ファイルに従って、レジストリ内にドライバ名などを記録する。
【００２４】
次に、プリンタドライバインストーラ（１２９）は、ユーザーによるＩＰアドレス等のポート情報の入力を受け付ける（Ｓ４０３）。そして、プリンタドライバインストーラ（１２９）は、ポート（３０３）を作成する（Ｓ４０４）。次に、プリンタドライバインストーラ（１２９）は、ユーザーによるプリントキュー名の入力を受け付ける（Ｓ４０５）。そして、Ｓ４０２でインストールしたプリンタドライバとＳ４０４で作成したポートを関連付けて、図３で説明したプリントキュー（３０２）を作成する（Ｓ４０６）。
【００２５】
以上で、専用プリンタドライバ及び汎用プリンタドライバのインストール処理が終了する（Ｓ４０７）。
【００２６】
図５は、図１（Ｂ）のプリンタドライバインストーラ（１２９）による本実施形態特有のプリンタドライバのインストール処理を示すフローチャートである。プリンタドライバのインストールを開始（Ｓ５００）すると、プリンタドライバインストーラが保持する設定ファイルに記載されたプリンタドライバのリストがディスプレイ１２０に表示される。そして、表示されたプリンタドライバのリストの中から、ユーザーによるデバイスモデルの選択を受け付ける（Ｓ５０１）。そして、選択されたデバイスモデルが仮想プリンタドライバかどうか判断する（Ｓ５０２）。選択されたデバイスモデルが仮想プリンタドライバではない場合、専用・汎用プリンタドライバのインストール処理を行う（Ｓ５０３）。Ｓ５０３は、図４のＳ４０２以降の処理部と等価である。そして、当該インストール処理を終了する（Ｓ５１６）。
【００２７】
Ｓ５０２にて選択されたデバイスモデルが仮想プリンタドライバの場合、仮想プリンタドライバをインストールする（Ｓ５０４）。仮想プリンタドライバ自体は、ポートに対する印刷データの出力を行わないので、ユーザーによる入力を伴わずにダミーのポートの作成指示を発行する（Ｓ５０５）。ダミーのポートの作成指示とは、例えば、存在しないファイル名など適当な名前を指定してポートをＯＳに対して作成指示する。そうすると、当該作成指示は、エラーとしてＯＳに認識され、作成指示されたポート名を捨てる。
【００２８】
ここでは、仮想プリンタドライバに対し複数のプリントキューを作る必要性が無いので、ユーザーによる入力を伴わずにデバイスモデル名と同じ名前でプリントキューを作成する（Ｓ５０６）。図２の例でＶｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌが選択された場合は、Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌといいうデバイスモデル名で、プリントキューを作成する。
【００２９】
図４で一般的なプリンタドライバのインストール処理について説明した際、ユーザーによる入力は、Ｓ４０１とＳ４０３とＳ４０５の３回あった。一方、本実施形態の図５のプリンタドライバのインストール処理においては、ユーザーによる入力はＳ５０１だけである。もし、プリンタドライバインストーラ（１２９）が仮想プリンタドライバだけを対象としたプログラムだったら、Ｓ５０１も不要となる。仮想プリンタドライバ専用のドライバインストーラを作成することで、Ｓ５０１、Ｓ５０２の処理が不要になる。
【００３０】
つまり、仮想プリンタドライバのインストール処理方法は、ユーザーの負担と運用コストを低減させる効果がある。仮想プリンタドライバは、ポートに対する印刷データの出力を行わない。そこで、印刷を最低限保証するために汎用プリンタドライバを設置する。
【００３１】
引き続き、汎用プリンタドライバのインストール処理について説明する。インストールセットに含まれる全ての汎用プリンタドライバを列挙する（Ｓ５０７）。
【００３２】
ここで、プリンタドライバインストーラが保持する設定ファイルに記載されたプリンタドライバのリストに基づき表示される図２のプリンタ一覧（２０１）において、汎用プリンタは、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １とＧｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２が存在する。よって、１回目のループ処理では、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １を取り出し、２回目のループ処理では、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２を取り出す。
【００３３】
Ｓ５０８で、取り出した汎用プリンタドライバについて、全て処理済か否かをドライバインストーラが判定する。Ｓ５０８で、全て処理済と判定されると処理が終了する。Ｓ５０８で全て処理済でないと判定されると、Ｓ５０７で列挙された汎用プリンタドライバの中から、未処理の汎用プリンタドライバをひとつ選んでＳ５０８−１へ進む。
取り出した汎用プリンタドライバがホストコンピュータ（１０１）にインストール済みかどうか判断する（Ｓ５０８−１）。この処理は、このドライバインストーラの起動前に、以前に同種の汎用プリンタドライバがインストールされていないかどうかを判別する処理である。
【００３４】
まだ、汎用プリンタドライバをインストールしていない場合は、選択した汎用プリンタドライバをインストールする（Ｓ５０９）。
【００３５】
このとき、汎用プリンタドライバを使ったプリントキューを作成しない。このため、ユーザーが汎用プリンタドライバのインストールを意識することはない（内部的なインストール処理となる）。つまり、図１７のプリンタフォルダその他のＯＳが管理するプリンタのアイコンは登録されず、表示されない。そして、Ｓ５０８へ進む。ループ処理が終了（Ｓ５０８−ＹＥＳ）したら、当インストール処理を終了する。図１７では、Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌのみが図２のユーザインタフェースで選択された際の、インストール処理後のプリンタフォルダ１８００を示す図である。図１７では、Ｖｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌがインストールされると共に、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １及びＧｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２は内部的にインストールされるが、プリントキューが作成されないため、プリンタアイコンも表示されない。もちろん、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １及びＧｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２を図２のＵＩで選択した場合は、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １や、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２のプリンタドライバが一般的な方法（Ｓ５０３）でインストールされる。よって、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １や、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２のプリントキューが設定される。これにより、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １や、Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２のアイコンがプリンタフォルダ１００１に表示される（図示省略）。アイコンはプリントキューに対応するオブジェクトである。
【００３６】
一方、Ｓ５０８−１にて、取り出した汎用プリンタドライバがホストコンピュータ（１０１）にインストール済みの場合は、インストール済みの汎用プリンタドライバのバージョンを取得する（Ｓ５１１）。バージョン数から継続使用可能どうか判断する（Ｓ５１２）。継続使用可能と判断した場合、Ｓ５１０へ進む。ここで、継続使用可能か否かの判断は、インストール済の汎用プリンタドライバのバージョンが非常に旧く、仮想プリンタドライバが当該汎用プリンタドライバに対して対応できないなどの例が考えられる。
【００３７】
Ｓ５１２にて、インストール済みの汎用プリンタドライバが継続使用不可能と判断した場合、インストール済みの汎用プリンタドライバをアンインストールする（Ｓ５１３）。ここで、アンインストールとは、汎用プリンタドライバのＤＬＬの所定のシステムディレクトリからの削除、及び、レジストリのクリアなどが挙げられる。この際、プリントキューやポートの情報はバックアップしておく。
【００３８】
そして、今回ドライバインストーラが実行されているインストールセット内の汎用プリンタドライバをインストールする（Ｓ５１４）。さらに、Ｓ５１３の実行の前に、インストール済み汎用プリンタドライバを使って構成されていたプリントキューを、Ｓ５１４でインストールした汎用プリンタドライバを使って復元する（Ｓ５１５）。ここで、バックアップした情報を全て戻してもよいが、互換性の問題もあるため、次の情報を選択して復元し、他の情報は復元しなくてもよい。すなわち、ポートの設定に関する情報、デバイス名称、プリントキューに含まれるＤＥＶＭＯＤＥのうち、パブリックＤＥＶＭＯＤＥ、のうち、少なくとも１以上を選択的に復元してもよい。これらの情報は、互換性の高い情報だからである。逆に、プライベートのＤＥＶＭＯＤＥなどは、復元しないほうがよい場合もある。また、復元すべき情報を表示し、ユーザにドライバインストーラやＯＳなどのユーザインタフェースにおいて選ばせることも可能である。
【００３９】
Ｓ５１５の後、Ｓ５０８へ進む。ループ処理が終了したら（Ｓ５０８−ＮＯ）、当インストール処理を終了する（Ｓ５１６）。以上、プリンタドライバインストーラ（１２９）が、仮想プリンタドライバをインストールしてそのプリントキューを作成すると、自動的に汎用プリンタドライバをインストールすることを説明した。
【００４０】
なお、Ｓ５０７以降の汎用プリンタドライバのインストール処理については、図１（Ｂ）のプリンタドライバインストーラ（１２９）が実施することで説明をしたが、仮想プリンタドライバ（１２６）の初期化処理において実施してもかまわない。また、一般にＶｅｎｄｏｒＳｅｔｕｐと呼ばれるＯＳ（１２２）から呼び出される不図示のプリンタドライバのセットアップモジュールで実施してもかまわない。
【００４１】
図６は印刷処理のデータフロー図である。本図を用いて、印刷処理関連プログラムの各コンポーネント間でどのような入出力が行われているか明らかにする。１０１で囲われているボックスが、図１の１１に対応する。アプリケーション（１２３）は仮想プリンタドライバ（１２６）に対して、ＯＳ（１２２）の提供する描画インターフェースであるＧＤＩ（Ｇｒａｐｈｉｃ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）（６００）を通じて印刷指示命令を出力する。次に仮想プリンタドライバ（１２６）は、入力された印刷指示命令をＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａ  Ｆｉｌｅ）（６０１）の形式に変換してプリントジョブマネージャー（１２５）に出力する。ここでＥＭＦ（６０１）とは、ＧＤＩ（６００）の印刷指示命令と互換性のある中間データ形式であり、アプリケーション（１２３）から出力された一連の印刷指示命令を再現可能なデータとして記録したものである。本実施例では中間データ形式としてＥＭＦ（６０１）を用いて説明しているが、印刷指示命令を再現可能なデータであれば、例えばＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）、あるいは独自に定義した任意の形式であっても良い。次にプリントジョブマネージャー（１２５）は、後述する出力デバイスの特定、汎用・専用プリンタドライバの管理など固有の処理を行い、ＧＤＩ（６００）を通じて印刷指示命令を出力する。出力された印刷指示命令は、汎用プリンタドライバ（１２７）あるいは専用プリンタドライバ（１２８）に対して入力される。次に、汎用プリンタドライバ（２１７）あるいは専用プリンタドライバ（２１８）は、出力デバイス（１０２）が処理可能なＰＤＬ（Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）（６０２）の形式に変換し、出力デバイス（１０２）に出力する。最後に出力デバイス（１０２）は、入力されたＰＤＬ（６０２）を処理して印刷出力を行う。ここで、汎用プリンタドライバ１２７、及び、専用プリンタドライバは、図３に示すとおり、プリントキュー３０２及びポート１のデータ構造と対応付けられている。すなわち、入力されたＰＤＬは、ジョブとしてパッキングされ、プリントキューにキューイングされる。印刷キューにキューイングされたジョブは、ポート構成情報３０８にて定義されている印刷先に対応する出力デバイスに順次送信され、印刷出力される。
【００４２】
図７は印刷処理のシーケンス図である。本図を用いて、一連の印刷処理中に関連プログラムの各コンポーネントの内部、およびそれらの間でどのような処理が行われているか明らかにする。
【００４３】
まず、ユーザはアプリケーション（１２３）に対して印刷したいドキュメントの印刷指示を図８（ａ）で示すユーザインターフェース（８０００）を通じて入力する（Ｓ７００）。８００１〜８００３はプリントキューを表すアイコンである。このうち、事前に図５の処理でセットアップされた、８００１は仮想プリンタドライバのプリントキューである。８００２、及び８００３は専用プリンタドライバのプリントキューである。
ここでは仮想プリンタドライバを通じて出力を行うため、ユーザは８００１のアイコンを選択し、印刷ボタン（８００４）を押して、印刷を指示する（Ｓ７００）。次に、アプリケーション（１２３）は、仮想プリンタドライバ（１２６）に対して、印刷初期化処理を行う（Ｓ７０１）。仮想プリンタドライバ（１２６）は印刷初期化が行われるとプリントジョブマネージャー（１２５）の起動処理を行う（Ｓ７０２）。プリントジョブマネージャー（１２５）は、このように仮想プリンタドライバ（１２６）に対するドキュメントの印刷開始後に起動されるプログラムであり、後述する出力デバイスの特定、汎用・専用プリンタドライバの管理など固有の処理などを担う。また、プリントジョブマネージャー（１２５）は内部的なコンポーネントとして、出力デバイス特定部（１２５１）、ドライバ管理部（１２５２）、及びデスプール処理部（１２５３）を含む。
【００４４】
次に、アプリケーション（１２３）はプリントジョブマネージャー（１２５）が起動されると、仮想プリンタドライバ（１２６）に対して印刷を開始し、一連の印刷描画命令をＧＤＩ（２１９）を通じて出力する（Ｓ７０３）。仮想プリンタドライバ（１２６）は、入力された一連の印刷描画命令をＥＭＦ（６０１）形式に変換し、あとで印刷描画命令を再現できるよう外部メモリ（１２１）に保存する。これをスプール処理と呼ぶ（Ｓ７０４）。アプリケーション（１２３）は一連の印刷描画命令の最後に印刷終了の処理を行い（Ｓ７０５）、仮想プリンタドライバ（１２６）はそれを受けて保存されたＥＭＦ（６０１）の外部メモリ（１２１）における保存位置情報をプリントジョブマネージャー（１２５）に通知する（Ｓ７０６）。なお、Ｓ７０４は、外部メモリ（１２１）に対してスプール処理を実施するが、外部メモリ（１２１）を介さずプリントジョブマネージャー（１２５）へ直接スプール処理してもかまわない。
【００４５】
次に、出力デバイス特定部（１２５１）は、出力デバイスの検索を行う（Ｓ７０７）。ここで検索とは、ネットワーク（１０４）に接続された出力デバイス１０２ａ、１０２ｂと通信し、それらの名称、設置場所、ＩＰアドレス、ハードウェアＩＤといった情報を取得することである。通信手段としては公知の技術であるＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）などのプロトコルが使用される。通常、出力デバイス１０２ａ、１０２ｂの状態、すなわち電源が入っているかや、ネットワーク（１０４）に接続されているかを事前に把握することは不可能であるため、出力デバイス特定部（１２５１）は印刷指示の都度、すべての出力デバイスとの通信を試みる。ネットワーク内のすべての装置との通信には、これも公知の技術であるブロードキャストという手段を用いる。出力デバイス特定部（１２５１）がこのブロードキャストの方法で、ネットワークＩ／Ｆ（１１８）を通じてＳＮＭＰの情報取得用データを送信すると、ネットワーク（１０４）で到達可能なすべての出力デバイス（１０２）が情報取得用データを受信する。そして、各出力デバイス（１０２）が、取得対象として指定された出力デバイスの名称や設置場所などの情報を応答のデータとしてネットワークＩ／Ｆ（１３８）を通じて送信すると、出力デバイス特定部（１２５１）は順次それらの応答を受信する。そして、受信した情報をＲＡＭ（１１２）に保存する。出力デバイス特定部（１２５１）は、順次受信した応答からデバイス名や設置場所などの情報を取り出し、リストとして出力デバイスを特定する図８（ｂ）のユーザインターフェース（８１００）に表示する（Ｓ７０７）。図８（ｂ）では、デバイスの名前、場所、ネットワークアドレス（図示省略）などが表示される。ユーザは、デバイスの名前や場所、ネットワークアドレスを頼りにデバイスの選択が出来る。図では、コピールーム、居室２、居室３において、同じ名前であるＤｅｖｉｃｅＢというデバイスが表示されている。名前はユーザが任意につけたものであり、機種とは無関係でにつけてよい。
【００４６】
８１００には情報を表示するためのリストコントロール（８１０１）が配置され、その中からひとつをカーソル（８１０２）によって選択することができる。ボタン（８１０３）を押すと、ネットワーク内で再検索が行われ、利用可能な出力デバイスのリストを最新の状態に更新できる。ボタン（８１０４）を押すと、カーソル（８１０２）で現在選択されているデバイスが出力先として決定される。出力デバイス特定部（１２５１）は、その決定を受け（Ｓ７０９）、次の処理に移る。チェックボックス（８１０５）とボタン（８１０６）はプリントキューを管理する際にユーザが操作する。これらの操作方法については後述する。
【００４７】
Ｓ７０９で出力先のデバイスが決定されると、出力デバイス特定部（１２５１）はドライバ管理部（１２５２）に対して出力準備処理を実行するよう依頼する（Ｓ７１０）。Ｓ７１１における出力準備処理の結果、ＯＳ（１２２）には選択された出力デバイス（１０２）に印刷可能な汎用プリンタドライバ（１２７）または不図示の専用プリンタドライバ（１２８）のプリントキューが登録される。これにより、ＯＳが管理するプリンタ（プリンタキュー）が列挙される図１７や、アプリケーションから印刷指示されると開かれるＵＩである図８（ａ）において、プリンタのオブジェクトが表示されるようになる。出力準備処理（Ｓ７１１）については後で図１２、図１３を用いて詳述する。
【００４８】
次に図７の出力デバイス特定部（１２５１）は、図８（ｂ）の出力デバイス特定用の画面から、図７のデスプール処理部（１２５３）が表示制御する図９（ａ）の画面（８２００）に遷移する（Ｓ７１２）。デスプール処理部（１２５３）は、プレビューエリア（８２０１）に印刷ドキュメントを実際に印刷したときのイメージを表示する（Ｓ７１３）。このとき表示されるイメージは、Ｓ７０４においてスプールされたＥＭＦ（６０１）をデスプール処理部（１２５３）が読み込み、解析して、プレビューエリア（８２０１）の大きさに合わせて描画したものである。スピンコントロール（８２０２）やチェックボックス（８２０３）はそれぞれ印刷部数、白黒印刷といった一般的な印刷設定を変更するための入力手段である。さらに特殊な印刷設定を変更するためには、ボタン（８２０４）を押下することにより、不図示のプリンタドライバ固有のユーザインターフェースを表示させ、印刷設定の変更指示を入力することができる。このとき、出力先に対応するプリントキューが専用プリンタドライバ（１２８）のものである場合、汎用プリンタドライバ（１２７）のものに比べて、より高度な印刷設定が可能である。ボタン（８２０６）は、現在の画面（８２００）から、ひとつ前の画面である出力デバイス特定画面（８１００）に遷移して戻るための入力手段である。ボタン（８２０５）をユーザが押下すると（Ｓ７１４）、デスプール処理部（１２５３）は汎用プリンタドライバ（１２７）に対してデスプール処理を行い、一連の印刷描画命令を発行する（Ｓ７１５）。ここで、デスプール処理というのはスプール処理の逆で、Ｓ７０６によって通知された保存位置情報からＥＭＦ（６０１）データを読み出し、解析して、印刷描画命令を再現することである。これにより、プリントジョブマネージャー（１２５）固有の処理のために中断していた印刷処理が再開され、印刷ドキュメントの出力が行われる。汎用プリンタドライバ（１２７）は、入力された印刷描画命令をＰＤＬ（６０２）に変換し、ネットワークＩ／Ｆ（１３８）を通じて出力デバイス（１０２）に送信する（Ｓ７１６）。印刷処理が終わると出力デバイス特定部（１２５１）は、ドライバ管理部（１２５２）へプリントキュー整理処理（Ｓ７１８）を実行するよう依頼する（Ｓ７１７）。プリントキュー整理処理（Ｓ７１８）については後で図１４〜図１６を用いて詳述する。最後に、プリントジョブマネージャー（１２５）はプログラムを終了する。
【００４９】
図１１にプリントジョブマネージャー（１２５）のユーザインターフェースの遷移の概要を示す。
【００５０】
まず、プリントジョブマネージャー（１２５）は、「出力デバイス特定」ダイアログ（８１００）を表示する。出力デバイスの特定と「次へ」のボタン（８１０４）の押下をうけて、プリントジョブマネージャー（１２５）は、「編集プレビュー」ダイアログ（８２００）を表示する。「編集プレビュー」ダイアログ（８２００）では、プリントジョブのプレビュー確認と基本的な印刷設定が可能である。「印刷」ボタン（８２０５）の押下をうけてプリントジョブマネージャー（１２５）は出力デバイスへ印刷を実行し同ダイアログを閉じる。加えて、「編集プレビュー」ダイアログ（８２００）には、プリンタドライバが持っている特有の機能を設定するために「詳細設定」ボタン（８２０４）が存在する。「詳細設定」ボタン（８２０４）の押下をうけて、プリントジョブマネージャー（１２５）は、プリンタドライバの「印刷設定」ダイアログ（９０００）を表示する。具体的には、プリントジョブマネージャーが、プリンタドライバのＵＩプログラムを呼び出すことにより実現する。
【００５１】
また、８２０４の右となりに初期状態に戻すボタンがあるが、このボタンが押下されると、図９の８２０３や、８２０２の値が初期化される。
【００５２】
図１８は、ＯＳ１２２が管理する、プリンタドライバの設定の値を格納するＤＥＶＭＯＤＥを示す図である。ＯＳ内のレジストリに登録される。ＤＥＶＭＯＤＥ１８００は、プリンタドライバごとに用意される。
【００５３】
１８００には、１８０１のＰｕｂｌｉｃ  ＤＥＶＭＯＤＥを格納する。プリントジョブマネーか１２５、汎用プリンタドライバ１２７、専用プリンタドライバ１２８からアクセス可能なデータ構造である。１８０１は、各種プログラムに対して公開される領域である。１８０２には、Ｐｒｉｖａｔｅ  ＤＥＶＭＯＤＥを格納する。この領域は、各種プリンタドライバからアクセス可能である。１８０２には、専用プリンタドライバからしかアクセスできない領域と、汎用プリンタドライバからアクセスできる領域がある。図示したように、汎用プリンタドライバは、１８０４を管理しており、専用プリンタドライバは、１８０５の全領域を管理可能である。ここで、図９（ａ）の詳細設定ボタンが押されると、図１８のプリントジョブマネージャが、選択対象となっているプリンタに対応する汎用プリンタドライバ若しくは、専用プリンタドライバのユーザインタフェースプログラムを呼び出す。これにより、図１１の９０００で示したような汎用プリンタドライバ若しくは専用プリンタドライバのユーザインタフェース９０００が開く。この図１８のＵＩの操作により、図１８のＤＥＶＭＯＤＥ１８０５や１８０５が編集可能となる。
【００５４】
更に、「編集プレビュー」ダイアログ（８２００）には「戻る」ボタン（８２０６）が存在する。この「戻る」ボタン（８２０６）は現在の出力先デバイスでは所望の機能が実現できないことが分かった際の出力デバイスの再設定のために存在する。「戻る」ボタン（８２０６）の押下をうけて、プリントジョブマネージャー（１２５）は、「出力デバイス特定」ダイアログ（８１００）を表示し、再度出力デバイスの指定が可能になる。
【００５５】
図１２は、ドライバ管理部（１２５２）における出力準備処理（Ｓ７１１）の詳細な流れを表すフローチャートである。本処理によって、出力デバイス（１０２）へ印刷するためのプリントキューがあればそれを選定し、なければ新しいプリントキューを作成、あるいは最適なプリンタドライバをインストールする。
【００５６】
まず、ドライバ管理部（１２５２）は、出力準備処理を開始すると（Ｓ１０００）、出力デバイス（１０２）のＩＰアドレス情報を取得する（Ｓ１００１）。ＩＰアドレス情報は出力デバイスの検索処理（Ｓ７０７）において取得されＲＡＭ（１１２）に記憶されているものを取り出す。次にＯＳ（１２２）に登録されているすべてのプリントキューからプリントキューに関連付けられているポートのＩＰアドレスを取得する（Ｓ１００２〜Ｓ１００４）。
【００５７】
次に、出力デバイス（１０２）のＩＰアドレスと、ポートのＩＰアドレスが合致するプリントキューが存在するかどうか判断する（Ｓ１００５）。後述するが、本システムにおいて、プリントキューは出力デバイスごとに作成される。しかし、同じ出力デバイスに印刷を行うたびに別のプリントキューを毎回作成すると大量のプリントキューが重複して登録されてしまう。このような事態を避けるため、出力デバイスとすべてのプリントキューのＩＰアドレス同士を比較することによって、既存のプリントキューの中に出力可能なものがないかを判断する。もし出力可能なプリントキューが存在すればＳ１００６に、存在しなければＳ１０１１に進む。
【００５８】
次にＳ１００６ではさらに汎用プリンタドライバを優先させるモードであるかどうか判断する。所望の出力デバイス（１０２）に出力可能なプリントキューの中には専用プリンタドライバ（１２８）のものが含まれている可能性もある。しかしながら、高度な機能は必要とせず、シンプルで安定した汎用プリンタドライバ（１２７）を使用したいユーザもいるため、例えば不図示のユーザインターフェースによって汎用プリンタドライバを優先させるかどうか切り替え可能なモードを設けることが考えられる。このモードが真すなわち汎用プリンタドライバを優先させる場合は、Ｓ１００７に進み、そうでなければＳ１００９に進む。
【００５９】
次にＳ１００７ではプリントキューのモデル名を取得する。そして、デバイスもモデル名が汎用プリンタドライバのものであるかどうか判断する（Ｓ１００８）。プリントキューの名前がユーザによって変更可能であるのに対し、汎用プリンタドライバのモデル名は「Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １」のように固有の名称なので、プリントキューのモデル名を知ればどの種類のドライバなのか判断できる。汎用プリンタドライバである場合はＳ１００９へ進み、そうでなければＳ１０１０へ進む。
【００６０】
Ｓ１００９へ進んだ場合、Ｓ１００５で見つかった既存のプリントキューを出力先として決定し、出力準備処理を終了する（Ｓ１０１４）。
【００６１】
Ｓ１０１０へ進んだ場合、すなわち既存のプリントキューが専用プリンタドライバのものであると判断された場合は、図１３で後述する処理において、汎用プリンタドライバを優先インストールすることに決定し、Ｓ１０１３に進む。
Ｓ１０１１ではＳ１００６と同様に汎用プリンタドライバを優先させるモードかどうかを判断し、真ならＳ１０１０に、偽ならＳ１０１２へ進む。Ｓ１０１２では、図１３で後述する処理において、適合する最適なドライバを検索してインストールすることに決定し、Ｓ１０１３に進む。ここでＳ１０１２では、既存のプリントキューに出力可能なものが存在せず、汎用プリンタドライバを優先させるモードでもないので、適合する最適なドライバ（専用プリンタドライバ）を優先インストールすることが決定される。
【００６２】
汎用・専用プリンタドライバインストール処理（Ｓ１０１３）については図１３を用いて詳述する。
【００６３】
図１３は、ドライバ管理部（１２５２）における汎用・専用プリンタドライバインストール処理（Ｓ１０１３）の詳細な流れを表すフローチャートである。
【００６４】
まず、ドライバ管理部（１２５２）は処理を開始すると（Ｓ１１００）、出力用のポートを作成する（Ｓ１１０１）。次に、図１２の専用プリンタドライバを優先インストールすることに決定されているか否かで判断し（Ｓ１１０２）、真であればＳ１１０３に、偽であればＳ１１０８に進む。ここで真となり、Ｓ１１０３に進む場合とは、図１２でＳ１０１２のステップから遷移してＳ１０１３の処理に入った場合である。一方、偽となり、Ｓ１１０８に進む場合とは、図１２でＳ１０１０のステップから遷移してＳ１０１３の処理に入った場合である。
【００６５】
Ｓ１１０３〜Ｓ１１０７はホストコンピュータ（１０１）や配信サーバ（１０３）、あるいは出力デバイス１０２ａ、１０２ｂの中から出力に最適な専用プリンタドライバ（１２８）を検索するステップである。まず、Ｓ１１０３では出力デバイスのハードウェア情報を取得する。本実施例ではハードウェア情報として、プラグアンドプレイによるインストールに用いられるハードウェアＩＤを取得する。ハードウェアＩＤは出力デバイスの検索処理（Ｓ７０７）において取得されＲＡＭ（１１２）に記憶されているものを取り出す。
【００６６】
次に、Ｓ１１０４ではインストール済みプリンタドライバ内に適合するプリンタドライバがあるかどうか判断する。具体的には、ドライバ管理部（１２５２）は、ＯＳ（１２２）に登録されている各プリンタドライバのハードウェア情報と、Ｓ１１０３で取得した出力デバイス（１０２）のハードウェア情報とを比較し、一致するものがあればすべてピックアップする。１つ以上適合するものがあればＳ１１１６へ、なければＳ１１０５へ進む。
【００６７】
次に、Ｓ１１０５ではドライバストア内に適合するプリンタドライバがあるかどうか判断する。ドライバストアとはＷｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）で導入されたデバイスドライバのデータベースシステムであり、インストール前のデバイスドライバのパッケージをＯＳ（１２２）に格納する仕組みである。ドライバ管理部（１２５２）は、このドライバストアに格納されているプリンタドライバの中に、Ｓ１１０３で取得した出力デバイス（１０２）のハードウェア情報に一致するものがないかＯＳ（１２２）に問い合わせることができる。問い合わせの結果、１つ以上適合するものがあればＳ１１１２へ、なければＳ１１０６へ進む。
【００６８】
次に、Ｓ１１０６では配信サーバ（１０３）内に適合するプリンタドライバがあるかどうか判断する。ドライバ管理部（１２５２）は、ドライバ配信サーバ（１０３）にＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）やＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などの手段で、ネットワーク（１０４）を経由して、あるハードウェア情報に適合するプリンタドライバがあるか問い合わせることができる。問い合わせの結果、１つ以上適合するものがあれば配信サーバ（１０３）からプリンタドライバのパッケージをホストコンピュータ（１０１）に転送して、外部メモリ（１２１）に記憶し、Ｓ１１１２へ進む。そうでなければＳ１１０７へ進む。
【００６９】
次に、Ｓ１１０７では出力デバイス（１０２）内を検索し、適合するドライバがあるかどうか判断する。前述したとおり、出力デバイス（１０２）はその外部メモリ（１３４）に、出力デバイス自身を利用するために必要な専用プリンタドライバ（１２８）を記憶することができる。ドライバ管理部（１２５２）は、この出力デバイス（１０２）に記憶されたプリンタドライバも、Ｓ１１０６と同様の手段でネットワーク（１０４）を経由して、問い合わせることが可能である。問い合わせの結果、１つ以上適合するものがあれば出力デバイス（１０２）から専用プリンタドライバ（１２８）のデータをホストコンピュータ（１０１）に転送して、外部メモリ（１２１）に記憶し、Ｓ１１１２へ進む。外部メモリ（１３４）の設定変更等により専用プリンタドライバ（１２８）が消去されているため、問い合わせの結果が１つも適合するものがないと判断された場合はＳ１１０８へ進む。
【００７０】
Ｓ１１０８〜Ｓ１１１１では、前記Ｓ１１０３〜Ｓ１１０６の一連の処理の結果、適合するプリンタドライバがどこにも見つからない場合の代替手段として、あらかじめＳ５００〜Ｓ５１６でインストールされた汎用プリンタドライバのプリントキューを作成する。まず、ドライバ管理部（１２５２）はネットワーク（１０４）を経由して、出力デバイス（１０２）のコマンドタイプ情報を取得し（Ｓ１１０８）、その判断を行う（Ｓ１１０９）。ここで、コマンドタイプ情報とは、出力デバイス（１０２）が処理可能なＰＤＬ（６０２）の種類を表す情報である。汎用プリンタドライバ（１２７）は複数のモデルに出力可能なＰＤＬを発行するドライバであるが、あくまで１種類のＰＤＬしか発行できない。したがって、異なるＰＤＬをサポートするモデルに対しては出力できないため、コマンドタイプ情報を取得して、互換性の確認を行う。本実施例においては２種類のＰＤＬ（「１」または「２」）のどちらかに対応した出力デバイスを利用することを前提としている。しかしながら、対応できないコマンドタイプ情報も存在する。Ｓ１１０９では、コマンドタイプ情報「１」、「２」、それ以外であるかどうか判断している。「１」の場合はＳ１１１０へ、「２」の場合はＳ１１１１に進む。Ｓ１１１０ではコマンドタイプ「１」に対応した「Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  １」のプリントキューを作成し、処理を終了する（Ｓ１１１８）。Ｓ１１１１ではコマンドタイプ「２」に対応した「Ｇｅｎｅｒｉｃ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ  ２」のプリントキューを作成し、処理を終了する（Ｓ１１１８）。なお、プリントキューを作成する際はＳ１１０１で作成したポートを関連付ける。一方、Ｓ１１０９で、「１」、「２」以外のコマンドタイプ情報が取得されたと判断された場合は、画面を介して、ユーザに「他の出力デバイスを選択してください」などの警告を通知するとともに、本処理を終了（Ｓ１１１８）する。
【００７１】
Ｓ１１１２〜Ｓ１１１４では検索の結果として適合した専用プリンタドライバ（１２８）をインストールする。まず、Ｓ１１１２では適合するプリンタドライバが２つ以上見つかったかどうか判断し、真であればＳ１１１３、偽であればＳ１１１４へ進む。Ｓ１１１３ではその中から最もプリンタドライバのバージョンの新しいものをインストールすべき対象として選択する。各プリンタドライバにはバージョンが付与されており、たとえ同じモデルのプリンタドライバであっても作成された時期が違えば、通常は異なるバージョンを有する。バージョンの表現方法としては例えば「１０／１０／２００８．２．５．０．０」のように日付と数値の組み合わせで表現し、どちらの方が新しく作成されたものか容易に判断することができる。しかしながら、まれに古いバージョンのドライバをあえて使用する必然性が生じる場合がある。そのような場合はドライバ管理処理部１２５２等の処理により、図９（ｂ）の８３００に示すようなユーザインターフェースを表示して、ユーザに選択させることが好ましい。８３０１には適合すると判断された複数のプリンタドライバの情報（名称、バージョン）がリストで表示される。ユーザは８３０１のリストの中から所望のプリンタドライバを選び、ボタン（８３０２）を押すことで決定できる。次にＳ１１１４では適合したプリンタドライバ、もしくは複数あった場合はＳ１１１３で選択されたプリンタドライバをインストールする。
【００７２】
ここで、Ｓ１１１６〜Ｓ１１１７はＳ１１１２〜Ｓ１１１４の特殊なケースに関しての処理である。具体的には、プリントキューが未作成のインストール済みプリンタドライバの中に、適合するプリンタドライバがあった場合の処理であり、Ｓ１１１６はＳ１１１２と、またＳ１１１７はＳ１１１７と同様の処理である。Ｓ１１１４が不要なのは、もはやプリンタドライバをインストールする必要がないからである。最後にＳ１１１５では、Ｓ１１０１において作成したポートに関連付けてプリントキューを作成し、処理を終了する（Ｓ１１１８）。
【００７３】
ここまで述べてきたように、プリントジョブマネージャー（１２５）は印刷時にプリントキューをＯＳ（１２２）に登録する。次回以降の印刷で出力デバイスがわかっている場合は、仮想プリンタドライバ（１２６）を介さずに直接プリントキューを指定し、出力先デバイスの指定ステップがない通常手順で印刷できる。しかしながら、オフィス内に多数の出力デバイスが設置されている場合や、複数のオフィスを移動して印刷を行う場合、その都度プリントキューは作成されるので、プリントキューは増加傾向にある。
【００７４】
また、図１１のユーザインターフェースの遷移で示したように、プリントジョブマネージャー（１２５）は、「出力デバイス特定」ダイアログ（８１００）と「編集プレビュー」ダイアログ（８２００）の遷移を何度でも繰り返すことが可能である。「出力デバイス」のリストボックス（８１０１）で選択された出力デバイス用のプリントキューがホストコンピュータ（１０１）に存在しない場合プリントジョブマネージャー（１２５）は推移のたびに新たにプリントキューを作成する。そのため、「戻る」ボタン（８２０６）の押下を繰り返すと、ホストコンピュータ（１０１）上のプリントキューはさらに増加傾向になる。
ホストコンピュータ（１０１）上のプリントキューの総数が多くなると、印刷時に最初に表示される「印刷」ダイアログ（８０００）で表示されるプリントキューが多くなり、ユーザによる適切なプリンタの選択が難しくなる。そのため自動生成されたプリントキューの削除などを行える管理手段があれば、ユーザビリティの向上に繋がる。
【００７５】
図１０に「削除方法指定」のダイアログ（８４００）を示す。
【００７６】
「出力デバイス特定」のダイアログ（８１００）上の「詳細設定」ボタン（８１０６）の押下をうけて、プリントジョブマネージャー（１２５）はディスプレイ（１２０）へ表示する。同ダイアログ上の「ＯＫ」ボタン（８４０７）の押下をうけて、プリントジョブマネージャー（１２５）は「削除方法指定」のダイアログ（８４００）を閉じる。その後、図８（ｂ）に示す「出力デバイス特定」のダイアログ（８１００）が表示され、プリントジョブマネージャー（１２５）はそのダイアログ（８１００）へ処理を移行する。
【００７７】
「削除方法指定」のダイアログ（８４００）には、「削除方法を指定する」チェックボックス（８４０１）が存在する。このチェックボックス（８４０１）の初期状態はチェックなしである。このチェックボックス（８４０１）がチェックされると８４０２〜８４０５のアイテムが有効となり、プリントキューの削除方法の詳細指定が可能となる。
【００７８】
プリントキューの削除方法の詳細指定のために、「削除方法指定」のダイアログ（８４００）には、「選択したプリントキューを残す」ラジオボタン（８４０２）と、「最新のプリントキューを残す」ラジオボタン（８４０４）が存在する。この２つのラジオボタンへの指定は排他となっており、「選択したプリントキューを残す」ラジオボタン（８４０２）が選択された場合は、「最新のプリントキューを残す」ラジオボタン（８４０４）は非選択状態となる。またその逆に「最新のプリントキューを残す」ラジオボタン（８４０４）が選択された場合は、「選択したプリントキューを残す」ラジオボタン（８４０２）が非選択状態になる。デフォルト状態では「選択したプリントキューを残す」ラジオボタン（８４０２）が選択状態となる。
【００７９】
「選択したプリントキューを残す」ラジオボタン（８４０２）が選択状態の場合、リストボックス（８４０３）の選択が有効になる。プリントジョブマネージャー（１２５）は、ホストコンピュータ（１０１）上に存在するプリントキューの内、ドライバ管理部（１２５２）が作成したものをリストアップし、リストボックス（８４０３）へ表示する。但しドライバ管理部（１２５２）が作成したものではなく特殊なものであるので、このリストには仮想プリンタドライバ（１２６）のプリントキューであるＶｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ（８００１）は含まれない。「選択したプリントキューを残す」ラジオボタン（８４０２）が選択状態で「ＯＫ」ボタン（８４０６）が押下された場合、プリントジョブマネージャー（１２５）は、リストボックス（８４０３）で選択されていないものを削除対象と認識する。
【００８０】
「最新のプリントキューを残す」ラジオボタン（８４０４）が選択状態の場合、個数のスピンボックス（８４０５）での指定が有効になる。「最新のプリントキューを残す」ラジオボタン（８４０４）が選択状態で「ＯＫ」ボタン（８４０６）が押下された場合、プリントジョブマネージャー（１２５）は、個数のスピンボックス（８４０５）での設定が有効であることを認識する。この設定で削除対象とするプリントキューは、「選択したプリントキューを残す」ラジオボタン（８４０２）で選択と同様に、ホストコンピュータ（１０１）上にドライバ管理部（１２５２）が作成したものに限定される。この設定では、指定された個数まで、利用された日時が新しいプリントキューを残し、それ以外のプリントキューを削除することになる。また仮想プリンタドライバ（１２６）のプリントキューであるＶｉｒｔｕａｌ  Ｄｅｖｉｃｅ  Ｍｏｄｅｌ（８００１）も同様に含まれない。
【００８１】
加えて、「削除方法指定」のダイアログ（８４００）には、「不要となったプリンタドライバを削除する」チェックボックス（８４０６）が存在する。デフォルト状態では、このチェックボックス（８４０６）は、チェックなしである。このチェックボックス（８４０１）がチェックされた状態で、「ＯＫ」ボタン（８４０６）が押下された場合、プリントジョブマネージャー（１２５）は、プリントキューと関連付けがなくなったプリンタドライバ自体の削除要求を受けたと判断する。「削除方法指定」のダイアログ（８４００）で設定された情報を元にプリントジョブマネージャー（１２５）は、ドライバ管理部（１２５２）へプリンタドライバ整理処理を依頼する。プリンタドライバ整理処理の詳細は図１４のフローチャートを用いて後述する。
【００８２】
図１４にドライバ管理部（１２５２）によるプリントキューの整理処理のフローチャートを示す。本実施例では、この処理は図７で示した印刷処理のシーケンスにおいて、印刷完了後のプリントキュー整理処理（Ｓ７１８）のタイミングでドライバ管理部（１２５２）によって実行される。
【００８３】
プリントキューの整理処理はＳ１２００より開始され、ドライバ管理部（１２５２）は、プリントキューのデータ構造（３０２）に対して、ドライバ管理部（１２５２）が自動生成したプリントキューであることを示す自動生成識別子（３０６）を追加する。更に加えてドライバ管理部（１２５２）は、プリントキューのデータ構造（３０２）の更新日時（３０７）に現在の日時を記す（Ｓ１２０１）。
【００８４】
次に、図７のデスプール（Ｓ７１５）のタイミングで、実際の印刷描画に用いたプリントキューが自動生成されたものであれば、プリントキューのデータ構造（３０２）の更新日時（３０７）を現在の日時に更新する（Ｓ１２０２）。ドライバ管理部（１２５２）は、一旦、図７の出力準備処理（Ｓ７１１）のタイミングで新規作成されたプリントキューのすべてのリストを取得する（Ｓ１２０３）。このリストをここでは削除候補プリントキューリストと呼称する。
【００８５】
ドライバ管理部（１２５２）は、「出力デバイス特定」ダイアログ（８１００）の「印刷したプリントキューを残す」のチェックボックス（８１０５）が選択状態かを確認する（Ｓ１２０４）。もし非選択状態だった場合、Ｓ１２０６へ進む。もし選択状態だった場合、ドライバ管理部（１２５２）は、実際の印刷描画に用いたプリントキューが削除候補プリントキューリストにあれば除外（Ｓ１２０５）し、その後、Ｓ１２０６へ進む。この処理により、図７のデスプール（Ｓ７１５）のタイミングで実際の印刷描画に用いたプリントキューを、削除候補より外すことができる。
【００８６】
ドライバ管理部（１２５２）は、「削除方法を指定する」チェックボックス（８４０１）が選択状態であるか確認する。もし非選択状態だった場合、図１０の「削除方法指定」のダイアログ（８４００）で追加の詳細な削除方法が指定されていないので、Ｓ１２１３へ進む。その後、ドライバ管理部（１２５２）は、削除候補プリントキューリスト中のプリントキューを削除し（Ｓ１２１３）、プリントキューの整理処理を終了する（Ｓ１２１４）。Ｓ１２１３の削除候補プリントキューリスト中のプリントキューの削除処理は、図１５を用いて後で説明する。一方、「削除方法を指定する」チェックボックス（８４０１）が選択状態の場合、「選択したプリントキューを残す」ラジオボタン（８４０２）もしくは「最新のプリントキューを残す」ラジオボタン（８４０４）の選択状態で処理フローを切り替える（Ｓ１２０７）。
【００８７】
「選択したプリントキューを残す」ラジオボタン（８４０２）が選択状態である場合、Ｓ１２０８へ進む。Ｓ１２０８においてドライバ管理部（１２５２）はリストボックス（８４０３）上で選択されたプリントキューを削除候補プリントキューリストより除外する。その後、ドライバ管理部（１２５２）は削除候補プリントキューリスト中のプリントキューを削除し（Ｓ１２１３）、プリントキューの整理処理を終了する（Ｓ１２１４）。
【００８８】
「最新のプリントキューを残す」ラジオボタン（８４０４）が選択状態である場合、Ｓ１２０９へ進む。Ｓ１２０９においてドライバ管理部（１２５２）は削除候補プリントキューリストを一旦クリアーする。続けて、ドライバ管理部（１２５２）はホストコンピュータ（１０１）上に存在するプリントキューのうち自動生成識別子（３０６）を有するプリントキューのリストを取得する（Ｓ１２１０）。ドライバ管理部（１２５２）は取得したプリントキューのリスト中のプリントキューの個数を、「個数」スピンボックス（８４０５）で指定された数値と比較する（Ｓ１２１１）。もしプリントキューの個数が指定数を超えていない場合、Ｓ１２１４へ進み、プリントキューの整理処理を終了する。もしプリントキューの個数が指定数を超えている場合、取得したプリントキューのリストを更新日時（３０７）でソートし、古い日時のものから超過数分のプリントキューを削除候補プリントキューリストとする（Ｓ１２１２）。その後、ドライバ管理部（１２５２）は削除候補プリントキューリスト中のプリントキューを削除し（Ｓ１２１３）、プリントキューの整理処理を終了する（Ｓ１２１４）。
【００８９】
図１５にドライバ管理部（１２５２）によるプリントキューの削除処理のフローチャートを示す。このフローチャートは図１４のプリントキューの整理処理のフローチャートのＳ１２１３の詳細処理を示すものである。
【００９０】
本処理はＳ１３００より開始され、ドライバ管理部（１２５２）は、ＯＳ（１２２）提供の関数をコールすることにより、図３に示したプリンタドライバ、プリントキュー、ポートの各種情報を取得する。それらの情報を用いて、図１４のプリントキューの整理処理のフローチャートで生成した削除候補プリントキューリストに含まれるすべてのプリントキュー（３０２）に関連付けられているプリンタドライバ（３０１）のリストを作成し保存する（Ｓ１３０１）。このリストは、削除候補プリンタドライバリストであり、Ｓ１３０９以降で、もし不要となったプリンタドライバがあれば削除されることになる。
【００９１】
次にドライバ管理部（１２５２）は、削除候補プリントキューリストのすべてのプリントキューを処理したか判断する（Ｓ１３０２）。ドライバ管理部（１２５２）は、削除候補プリントキューリストに未処理のプリントキューがある場合はＳ１３０３へ進み、未処理のプリントキューの何れかを取得し、現在の削除候補プリントキューとする。ドライバ管理部（１２５２）は、現在の削除候補プリントキューに印刷中もしくは待機中のジョブがあり、プリントキューを使用中か判断する（Ｓ１３０４）。もしプリントキューが使用中の場合は、ドライバ管理部（１２５２）は、ユーザへ削除してよいかの確認メッセージ（不図示）を表示する（Ｓ１３０５）。ここで、ドライバ管理部（１２５２）は、ユーザからの削除要求をうけた否かを判断する（Ｓ１３０６）。ユーザからの削除要求が「はい」の場合、現在の削除候補プリントキューの削除処理を行うためにＳ１３０７へ進む。ユーザからの削除要求が「いいえ」の場合はＳ１３０８へ進み、現在の削除候補プリントキューの削除処理を行わず、Ｓ１３０２に戻る。Ｓ１３０４で、現在の削除候補プリントキューが使用中でないと判断された場合は、現在の削除候補プリントキューの削除処理を行うために、Ｓ１３０７へ進む。Ｓ１３０７において、ドライバ管理部（１２５２）は、ＯＳ（１２２）提供の関数をコールすることにより、現在の削除候補プリントキューの削除処理を実施し、その後、Ｓ１３０２へ戻る。ここで、もし何らかの理由でＯＳ（１２２）が現在の削除候補プリントキューを削除できない場合は、削除できなかった旨のエラーメッセージ（不図示）を表示してからＳ１３０２へ戻る。Ｓ１３０２で、ドライバ管理部（１２５２）が削除候補プリントキューリストのすべてのプリントキューを処理したと判断した場合、Ｓ１３０９へ進む。
【００９２】
Ｓ１３０９においてドライバ管理部（１２５２）は、「不要となったプリンタドライバを削除する」チェックボックス（８４０６）が選択されているか確認する。もし選択されていない場合は、Ｓ１３１６へ進み、プリントキューの削除処理を終了する。もし選択されている場合は、Ｓ１３１０へ進む。
【００９３】
Ｓ１３１０において、ドライバ管理部（１２５２）は、Ｓ１３０１で生成した削除候補プリンタドライバリストのすべてのプリンタドライバについてＳ１３１１以降の処理を行ったかを判断する。もし削除候補プリンタドライバリストのすべてのプリンタドライバについて処理した場合、ループ処理から抜けてＳ１３１６へ進み、プリントキューの削除処理を終了する。もし削除候補プリンタドライバリストに未処理のものがある場合はＳ１３１１へ進み、未処理のプリンタドライバの何れかを取得して現在の削除候補プリンタドライバとする。Ｓ１３１２では、ドライバ管理部（１２５２）は、現在の削除候補プリンタドライバが、汎用プリンタドライバ（１２７）か、もしくは仮想プリンタドライバ（１２６）でないことを、そのモデル名を用いて判断する。もし現在の削除候補プリンタドライバが、それらのプリンタドライバである場合、次回以降の仮想プリンタドライバ（１２６）を用いた印刷を可能とするために、Ｓ１３１５へ進み、ドライバ管理部（１２５２）は現在の削除候補プリンタドライバを削除せずに、Ｓ１３１０に戻る。もし現在の削除候補プリンタドライバが、汎用もしくは、仮想プリンタドライバでない場合、Ｓ１３１３へ進む。なお本実施例では、モデル名を用いて、汎用プリンタドライバ（１２７）か、もしくは仮想プリンタドライバ（１２６）であるかを判断したが、特に識別情報や方法を限定する必要はない。例えばプリントードライバ構成情報（３０４）の一部の情報として、別に識別子を持っていてもよい。
【００９４】
Ｓ１３１３において、ドライバ管理部（１２５２）は、ＯＳ（１２２）提供の関数をコールすることにより、図３に示したプリンタドライバ、プリントキュー、ポートの各種情報を取得する。現在の削除候補プリンタドライバが他のプリントキューに関連付けられているかを判断する。もし現在の削除候補プリンタドライバに関連付けられたプリントキューが存在しなければ、Ｓ１３１４に進み、現在の削除候補プリンタドライバを削除する。もし現在の削除候補プリンタドライバに関連付けられたプリントキューが存在する場合、Ｓ１３１５に進み、現在の削除候補プリンタドライバを削除せずに、Ｓ１３１０に戻る。Ｓ１３１４において、ドライバ管理部（１２５２）は、ＯＳ（１２２）提供の関数をコールすることにより、現在の削除候補プリントードライバの削除処理を実施し、その後Ｓ１３１０へ戻る。もし何らかの理由でＯＳ（１２２）が現在の削除候補プリンタドライバを削除できない場合は、削除できなかった旨のエラーメッセージ（不図示）を表示し、Ｓ１３１０に戻る。
【００９５】
以上より、ホストコンピュータ上のプリントキューを適切に管理することにより、ユーザが必要とするプリントキューのみ残すことが可能となり、次回以降のプリントキューの選択が容易になる。よって、ユーザの利便性が著しく向上する。
【００９６】
図１６のシーケンス図を用いて「編集プレビュー」ダイアログ（８２００）の「戻る」ボタン（８２０６）を押下した場合のプリントキュー整理処理を示す。Ｓ７００〜Ｓ７１３までシーケンスは図７と同じ処理である。ここでは説明を省略する。
【００９７】
Ｓ１４００で「戻る」ボタン（８２０６）のユーザによる押下をうけて、プリントジョブマネージャー（１２５）は、「編集プレビュー」ダイアログ（８２００）から「出力デバイス特定」ダイアログ（８１００）へ画面遷移を行う（Ｓ１４０１）。その画面遷移をうけて出力デバイス特定処理（１２５１）は、ドライバ管理部（１２５２）へプリントキュー整理依頼を出す（Ｓ７１７）。そして、ドライバ管理部（１２５２）は、「削除方法指定」のダイアログで指定された情報でプリントキュー整理処理を実行する（Ｓ７１８）。この処理により、印刷処理の過程であっても、プリントキューの総数を抑えることができる。
なお、「編集プレビュー」ダイアログ（８２００）から「出力デバイス特定」ダイアログ（８１００）へ画面遷移を行う度に、ドライバ管理部（１２５２）はプリントキュー整理処理（Ｓ７１８）を実行する必要はない。例えば現在の印刷シーケンスの「戻る」ボタン（８２０６）の回数をカウントし、一定回数毎にドライバ管理部（１２５２）がプリントキュー整理処理を実行する方法でもよい。その後の印刷シーケンスは図７のＳ７０９以降の手順と同様であり、ここでは説明を省略する。
【００９８】
以上、図７と図１６のシーケンスを用いて、仮想プリンタドライバを用いた印刷処理シーケンス内でのプリントキュー整理処理の実行を説明した。
【００９９】
実際に印刷につかったプリントキューなどの外部メモリに保存管理することにより、プリントキュー整理処理（Ｓ７１８）の実行は、上記タイミングに限定する必要はなく、他のタイミングでも実施することが可能になる。例えば、次回の印刷のタイミングで、出力準備処理（Ｓ７１１）を行う前にプリントキュー整理処理（Ｓ７１８）を実行しても良い。また仮想プリンタドライバ（１２６）などのユーザインターフェースにボタンを設け、印刷とは関係のないタイミングでユーザによるその押下を受け実行してもよい。さらに、例えば印刷処理と直接関係ないタイミングであるホストコンピュータ（１０１）へのユーザのログオンまたはログオフ時や、定期的なタイマー間隔を設けて実行してもよい。
【０１００】
ＯＳ（１２２）が提供する機能として、設置後のプリントキュー名称を別名に変更できる機能が存在する。このプリントキュー名称の変更に追従するために、上記では、プリントキューのデータ構造（３０２）に、自動生成識別子（３０６）と更新日時（３０７）を保存し、プリントキュー名称変更に影響を受けない構成とした。もし特に設置後のプリントキュー名称がなされない運用を前提とすれば、それらの情報保存先をプリントキューのデータ構造（３０２）に限定する必要はない。例えばプリントキュー名称をキーとしたプリントキューのデータ構造（３０２）と同様なデータ構造を用意し、外部メモリ（１２１）へ自動生成識別子（３０６）や更新日時（３０７）を保存することも可能である。またアクセス制限などにより、プリントキューのデータ構造（３０２）に書き込めない場合も同様に他のデータ構造を用意して管理することもできる。
【０１０１】
図１４のＳ１２０２では、ドライバ管理部（１２５２）が、プリントキューのデータ構造（３０２）の更新日時（３０７）に現在の日時を記した。仮に汎用プリンタドライバ（１２７）や専用プリンタドライバ（１２８）が印刷完了時の更新日時（３０７）の更新をする仕組み（Ｓ１２０２）を持てば、仮想プリンタドライバ経由でないそれらの直接指定の印刷時も更新日時（３０７）の更新が可能になる。更にＯＳ（１２２）が印刷の監査機能を持っている場合、その監査ログよりプリントキューの利用状況を判断することができる。その場合、更新日時（３０７）として独自データ構造を持たなくても実現可能である。
【０１０２】
図５で説明した如く、複数の画像形成装置の一例である１０２ａや１０２ｂと通信する情報処理装置の一例であるコンピュータ１０１を開示した。このコンピュータにおいて、
１０２ａ、１０２ｂに対して指示をすることができる第１デバイスドライバの一例である仮想プリンタドライバを開示した。そして、仮想プリンタドライバをインストールする第１デバイスドライバインストール手段の一例であるプリンタドライバインストーラ１２９を説明した。さらに、仮想プリンタドライバから渡されるデータを受け取って、１０２、ａ、１０２ｂに対して送信して処理させるためのデータを生成する際に実行される第２デバイスドライバの一例である専用プリンタドライバ若しくは汎用プリンタドライバを開示した。さらに、これらのプリンタドライバのインストール時にそのドライバ自身のポート（印刷先）を確定することなく、すなわち、ポートを印先に対応するプリンタに設定された所定のアドレスに設定すること等をすることなく、インストールする第２デバイスドライバインストール手段の一例としてプリンタドライバインストーラを開示した。
【０１０３】
仮想プリンタドライバをインストールするときには、前記仮想プリンタドライバに対応するプリントキューをプリンタドライバインストーラは設定する。そして、専用又は汎用プリンタドライバをインストールするときには、仮想プリンタドライバに対応するプリントキューをプリンタドライバインストーラは設定しないことを説明した。
【０１０４】
コンピュータにおいて、予め汎用又は専用プリンタドライバとは適合しない旧バージョンのプリンタドライバがインストールされている場合には、旧バージョンのプリンタドライバを更新し、旧バージョンのプリンタドライバに対して設定されているプリントキューを、プリンタドライバインストーラがインストールする汎用又は専用プリンタドライバに対して設定する。
【０１０５】
１０２ａ、１０２ｂの中からひとつの装置を選択するドライバインストーラがある。そして、その選択に応答して、選択された装置を出力先とするためのポートを汎用又は専用プリンタドライバに対してドライバインストーラが設定する。
【０１０６】
仮想プリンタドライバは、複数種類のプリンタドライバにより解釈されることが可能な中間データの一例であるＥＭＦデータを生成し、汎用又は専用プリンタドライバは、ＥＦＦからその汎用又は専用プリンタドライバに対して設定されるポートに対応する画像形成装置が処理できるデータの一例であるＰＤＬを生成する。
【０１０７】
本実施形態によれば、ユーザーはプリンタドライバをインストールすることで、以後出力デバイスが追加導入されたとしても、プリンタドライバの更新作業やプリントキューの作成作業は不要になる。これにより、ユーザーは面倒なインストール作業を強いられることなく、メンテナンスコストも低減する。
【０１０８】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005455527.tif 000002
【図２】
0005455527.tif 000003
【図３】
0005455527.tif 000004
【図４】
0005455527.tif 000005
【図５】
0005455527.tif 000006
【図６】
0005455527.tif 000007
【図７】
0005455527.tif 000008
【図８】
0005455527.tif 000009
【図９】
0005455527.tif 000010
【図１０】
0005455527.tif 000011
【図１１】
0005455527.tif 000012
【図１２】
0005455527.tif 000013
【図１３】
0005455527.tif 000014
【図１４】
0005455527.tif 000015
【図１５】
0005455527.tif 000016
【図１６】
0005455527.tif 000017
【図１７】
0005455527.tif 000018
【図１８】
0005455527.tif 000019