(57)【特許請求の範囲】
【請求項１】
情報処理装置にインストール済みのプログラムに対してモジュールの追加が指示されると、該インストール済みのプログラムを構成する１又は複数のモジュールを検出する検出ステップと、
該検出された前記１又は複数のモジュールと前記追加が指示されたモジュールとを動作させるべき順番を判定する判定ステップと、
該判定された動作の順番で前記複数のモジュールが処理を実行するように、前記追加が指示されたモジュールを前記情報処理装置にインストールするモジュールインストールステップと、を有し、
前記インストール済みのプログラムはプリンタドライバプログラムであって、
改ざん検知モジュールと暗号化モジュールとの追加が指示された際に、
前記判定ステップでは、前記動作の順番として、暗号化モジュールより後に改ざん検知モジュールが動作されるべきと判定され、
前記モジュールインストールステップでは、前記暗号化モジュールがデータが処理を実行した後、該処理されたデータに対して前記改ざん検知モジュールが改ざん検知処理を実行するようにインストール順序を変更して、前記暗号化モジュールと前記改ざん検知モジュールをインストールされることを特徴とするモジュールインストール方法。
【請求項２】
前記モジュールインストールステップでは、前記追加が指示されたモジュールが前記情報処理装置の記憶領域に記憶され、該追加モジュールが前記動作の順番で処理を実行するように、前記情報処理装置の記憶領域に記憶される前記インストール済みのプログラムの構成情報への該追加モジュールの登録が制御されることを特徴とする請求項１に記載のモジュールインストール方法。
【請求項３】
前記モジュールインストールステップでは、前記検出ステップで検出された前記１又は複数のモジュールが前記動作の順番で処理を実行するように、前記インストール済みのプログラムの構成情報の前記１又は複数のモジュールの登録が変更制御されることを特徴とする請求項２に記載のモジュールインストール方法。 
【請求項４】
前記判定ステップにおいて、前記検出ステップで検出された前記１つまたは複数のモジュールと前記追加が指示されたモジュールとを動作させるべき順番が存在しないと判定された場合、前記動作の順番が存在しない旨を通知する通知ステップを有することを特徴とする請求項１乃至３のいずれか１項に記載のモジュールインストール方法。
【請求項５】
前記判定ステップにおいて、前記検出ステップで検出された前記１つまたは複数のモジュールと前記追加が指示されたモジュールとを動作させるべき順番が存在しないと判定された場合、前記追加が指示されたモジュールのインストール処理を中止するインストール中止ステップを有することを特徴とする請求項４に記載のモジュールインストール方法。
【請求項６】
前記モジュールインストールステップにおいて、前記動作の順番で前記検出ステップで検出された前記１又は複数のモジュールと前記追加が指示されたモジュールとが処理を実行するようにモジュールのインストールが完了された際に、該インストールの完了を表示するインストール結果表示ステップを有することを特徴とする請求項１乃至５のいずれか１項に記載のモジュールインストール方法。
【請求項７】
前記モジュールインストールステップでインストールされた複数のモジュールを、前記プログラムの構成情報に基づいて、前記動作の順番で呼び出すことを特徴とする請求項２又は３に記載のモジュールインストール方法。
【請求項８】
追加指示されるモジュールの順序を変更してもよいかどうかを表示する表示ステップと、
前記表示ステップによる表示後、前記モジュールインストールステップでは、前記暗号化モジュールがデータが処理を実行した後、該処理されたデータに対して前記改ざん検知モジュールが改ざん検知処理を実行するように、前記暗号化モジュールと前記改ざん検知モジュールをインストールされることを特徴とする請求項１記載のモジュールインストール方法。
【請求項９】
情報処理装置にインストール済みのプログラムに対してモジュールの追加が指示されると、該インストール済みのプログラムを構成する１又は複数のモジュールを検出する検出手段と、
該検出された前記１又は複数のモジュールと前記追加が指示されたモジュールとを動作させるべき順番を判定する判定手段と、
該判定された動作の順番で前記複数のモジュールが処理を実行するように、前記追加が指示されたモジュールを前記情報処理装置にインストールするモジュールインストール手段と、を有し、
前記インストール済みのプログラムはプリンタドライバプログラムであって、改ざん検知モジュールと暗号化モジュールとの追加が指示された際に、
前記判定手段が、前記動作の順番として、暗号化モジュールより後に改ざん検知モジュールが動作されるべきと判定し、
前記モジュールインストール手段が、前記暗号化モジュールがデータが処理を実行した後、該処理されたデータに対して前記改ざん検知モジュールが改ざん検知処理を実行するようにインストール順序を変更して、前記暗号化モジュールと前記改ざん検知モジュールをインストールすることを特徴とするモジュールインストール装置。
【請求項１０】
請求項１乃至８のいずれか１項に記載された工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モジュールインストール方法、モジュールインストール装置、及びプログラムに関するものである。
【背景技術】
【０００２】
近年、印刷結果の付加価値を高めるために、例えばコピーガード機能、フォームオーバーレイ、電子透かし、ジョブ追跡機能等の高度な新規付加機能をプリンタドライバに追加する動きがある。多くの場合、これらの付加機能は、通常印刷以上の付加価値を有するために、基本プリンタドライバセットに同梱せずに有償オプションとして提供されることが想定される。
【０００３】
また、複数のプリンタドライバのバージョンや印刷装置のモデルとの依存性を極力抑えるために、これらの機能は共通拡張インタフェースをもつ追加のアドイン（プラグイン）モジュールとして提供される。
【０００４】
この共通拡張インタフェースに対応していれば、過去にリリースした基本プリンタドライバセットとの組み合わせでも、アドインモジュールを提供しさえすれば、新規付加機能を実現可能という利点が存在する。言い換えると、新規機能をアドインで提供することにより、印刷装置の発売当初には想定されていない、印刷装置が認識できない機能も、付加的に後からプリンタドライバに追加することが可能である。
【０００５】
特許文献１においては、前述のような共通拡張インタフェースに対応したプリンタドライバに対してプログラムファイルやデータファイルなどの機能拡張モジュールを追加、削除するための詳細な方法が提示されている。
【０００６】
また、特許文献２には、ファイル検索プログラム７はレジストリファイル１２に登録されているプリンタドライバを検索し、チェックプログラム６はレジストリファイル１２に第２のプリンタ１１のドライバと同一ラインナップのプリンタドライバが既に登録されているか否かを確認する。そして、新たに登録する第２のプリンタ１１のドライバのリソースと、既に登録されている第１のプリンタのドライバのリソースとの競合の有無を判断する。すなわち、第２のプリンタ１１に割り当てられるＩ／Ｏポートアドレスと、第１のプリンタに割り当てられているＩ／Ｏポートアドレスとが競合した場合はステップ１０６へ移行し、競合しなかった場合はステップ１０５へ移行する。そして、ファイル書き込みプログラム５によって第２のプリンタ１１のドライバをレジストリファイル１２に登録し、このプリンタドライバをコンピュータのハードディスク等の補助記憶装置に書き込むことによりインストールを実施する。また、Ｉ／Ｏポートアドレスが競合した場合はステップ１０６において、インストール順序が正しくないことを使用者に知らせるため、アラーム表示プログラム９によってモニタ１３上に所定の警告を表示させる。そして、ドライバを消去し、インストール順序を変更するという技術が記載されている。
【特許文献１】特開２００５−２０８８９５号公報
【特許文献２】特開平１０−１２４４３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら従来の技術においてはモジュールを追加するときに既にインストールされているモジュールとの動作順番について考慮されていない。そのため、既存のプリンタドライバを構成するモジュールに対して追加で機能拡張モジュールを追加した際に、動作をしない場合や、正常な動作をしない場合があるという問題があった。
【０００８】
さらに、特許文献２は、一度インストールしてみて、ポートの設定が競合する場合に、インストール順序を入れ換えるものである。
【０００９】
なお、上記の問題は、プリンタドライバに限られるものではなく、モジュールを追加可能なプログラム全体に起こり得るものであった。
【００１０】
本発明は、上記の問題点を解決するためになされたものである。本発明の目的は、プリンタドライバ等のプログラムにモジュールを追加する際に、該追加するモジュールとプログラムを構成する既存のモジュールとの動作順番を正しく制御し、印刷処理の実行時に、プログラムを構成する各モジュールが適切に動作するようにする仕組を提供することである。
【００１１】
さらに本発明の別の目的として、本願発明は、前記の動作順番に応じて適切なインストール手順を事前に決定してインストールする仕組みを提供するという別の側面がある。
【課題を解決するための手段】
【００１２】
情報処理装置にインストール済みのプログラムに対してモジュールの追加が指示されると、該インストール済みのプログラムを構成する１又は複数のモジュールを検出する検出ステップと、該検出された前記１又は複数のモジュールと前記追加が指示されたモジュールとを動作させるべき順番を判定する判定ステップと、該判定された動作の順番で前記複数のモジュールが処理を実行するように、前記追加が指示されたモジュールを前記情報処理装置にインストールするモジュールインストールステップと、を有し、前記インストール済みのプログラムはプリンタドライバプログラムであって、改ざん検知モジュールと暗号化モジュールとの追加が指示された際に、前記判定ステップでは、前記動作の順番として、暗号化モジュールより後に改ざん検知モジュールが動作されるべきと判定され、前記モジュールインストールステップでは、前記暗号化モジュールがデータが処理を実行した後、該処理されたデータに対して前記改ざん検知モジュールが改ざん検知処理を実行するようにインストール順序を変更して、前記暗号化モジュールと前記改ざん検知モジュールをインストールされることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、プリンタドライバ等のプログラムにモジュールを追加する際に、該追加するモジュールとプログラムを構成する既存のモジュールとの動作順番を正しく設定制御することが可能になる。
【００１７】
従って、プリンタドライバ等のプログラムを構成する各モジュールを適切な順番で適用し、適切に動作させることができる等の効果を奏する。
【発明を実施するための最良の形態】
【００１８】
〔第１実施形態〕
以下、本発明を適用するのに好適である実施形態について説明を行う。
【００１９】
図１は、本発明を適用可能な情報処理装置の一例を示すブロック図である。
【００２０】
図１において、１００は情報処理装置としてのコンピュータ（例えば、パーソナルコンピュータ）である。本発明の印刷システムでは、コンピュータ１００とプリンタ３０はセントロニクス等のインタフェースあるいはイーサネット（登録商標）等のネットワークによって接続されている。なお、図１においては、コンピュータ１００とプリンタ３０がネットワーク２０によって接続されている場合を示しているが、図示しないインタフェース（例えば、ＵＳＢ，セントロニクスインタフェース等）を介して接続される構成であってもよい。
【００２１】
１はＣＰＵで、ＲＯＭ３のプログラム用ＲＯＭ，外部メモリ１２に記憶されたプログラム（ＢＩＯＳ，ＯＳ，アプリケーションプログラム，後述する、アドインインストーラを含む各種インストーラ等）に基づいてシステムバス４に接続された各デバイスを制御し、装置全体を統括制御する。
【００２２】
また、ＲＯＭ３のフォント用ＲＯＭにはフォントデータ等を記憶し、ＲＯＭ３のデータ用ＲＯＭには各種データを記憶する。２はＲＡＭで、ＣＰＵ１の主メモリ，ワークエリア等として機能する。
【００２３】
５はキーボードコントローラ（ＫＢＣ）で、ポインティングデバイス９（例えばマウス）やキーボード（ＫＢ）１０等からの入力を制御する。６はディスプレイコントローラ（ＤＣ）で、ディスプレイ１１の表示を制御する。なお、ディスプレイ１１は、ＣＲＴであってもＬＣＤ等のその他の形式の表示装置であってもよい。
【００２４】
７はメモリコントローラ（ＭＣ）で、外部メモリ１２（ハードディスク（ＨＤ），図示しないフレキシブルディスク（ＦＤ），ＣＤ−ＲＯＭ等）とのアクセスを制御する。８はネットワークインタフェース（ＮＷＩ／Ｆ）で、ネットワーク２０を介してプリンタ３０との通信を制御する。
【００２５】
＜システムの構成＞
以下、図１に示したコンピュータ１００を例にして、プリンタドライバおよびアドインモジュール、および本発明を実現するために必要なその他の構成について説明する。
【００２６】
図２は、本発明の第１実施形態に係る印刷システムの構成例を示すブロック図であり、図１と同一のものには同一の符号を付してある。
【００２７】
図２において、１０１はプリンタドライバである。プリンタドライバ１０１は、コンピュータ１００からプリンタ３０へ印刷を行うためのプログラムで、コンピュータ１００のアプリケーション１０８等からの印刷命令をＯＳ内の描画エンジン１０９を介して入力する。そして、プリンタドライバ１０１は、入力した印刷命令をプリンタ３０が認識可能な制御コマンドに変換し、印刷サービス１０５を介してプリンタに転送する。
【００２８】
なお、プリンタドライバ１０１は、プリンタドライバインストーラ１０７またはＯＳが提供する図示しないプリンタドライバインストール方法によってインストールされ、利用可能となる。
【００２９】
アドインモジュール１０２は、例えばＤＬＬ（Dynamic Link Library）などのプログラムファイルを含むファイル群である。アドインモジュール１０２は、アドインインストーラ１０６にもしくはプリンタドライバ１０１によってインストールされることによって、プリンタドライバの共通インタフェースを用いて通信可能となり、機能拡張を実現する。即ち、アドインインストーラ１０６は、プリンタドライバ１０１がインストール済みの状態で実行可能なプログラムであり、アドインモジュール１０２はプリンタドライバの一部として動作する構成となっている。
【００３０】
次に、アドインモジュール情報ファイル１０３について説明する。
【００３１】
アドインモジュール情報ファイル１０３は、アドインモジュールを構成するファイル群の１ファイルであり、図３に例示するような情報を有する。なお、アドインモジュール情報ファイル１０３のファイル形式は可読性のあるテキスト形式やＸＭＬ形式であってもかまわないし、バイナリファイルのような非可読形式であってもよい。ここで、図３を参照して、アドインモジュール情報ファイル１０３のデータ構成について説明する。
【００３２】
図３は、図２に示したアドインモジュール情報ファイル１０３のデータ構成を示すデータ構成図である。
【００３３】
図３において、２０１はアドインモジュール構成ファイル情報であり、アドインモジュール１０２のファイル構成が記述されている領域である。２０２はアドインモジュール１０２のバージョン情報が記述されている領域である。２０３はアドインモジュール１０２のリリース日が記述されている領域である。２０４はアドインモジュール１０２の製品名情報が記述されている領域である。２０５はアドインモジュール１０２の詳細情報が記述されている領域である。
【００３４】
２０６はPriorityNumber（プライオリティナンバ）であり、動作の順番を決定する一意の番号が記述されている領域である。２０７はアドインモジュール１０２のCopyright情報が記述されている領域である。
【００３５】
以下、図２の説明に戻る。
【００３６】
プリンタドライバファイル情報１０４は、ＯＳが印刷サービス１０５を用いてプリンタドライバを利用するための一管理情報（構成情報）であり、外部メモリ１２の所定領域（ＯＳにより管理される所定の記憶領域）に登録されている。このプリンタドライバファイル情報１０４は、例えばWindows（登録商標）ではレジストリ中の「DependentFiles」が該当する。なお、プリンタドライバが複数インストールされている場合には、各プリンタドライバ毎に、プリンタドライバファイル情報１０４が外部メモリ１２に登録される。
【００３７】
図２においては、アドインモジュール１０２がインストール済であり、プリンタドライバファイル情報１０４に、アドインモジュールファイル情報１１１が登録されている。このアドインモジュールファイル情報１１１には、アドインモジュール情報ファイルを特定する情報（例えば、アドインモジュール情報ファイル名称）１１２が含まれる。
【００３８】
また、図示しないがアドインモジュール１０２とは異なるアドインモジュールが別途インストールされていても、プリンタドライバ１０１は動作可能である。なお、プリンタドライバ１０１に複数のアドインモジュールがインストールされている場合には、各アドインモジュール毎にアドインモジュールファイル情報１１１（アドインモジュール情報ファイルを特定する情報１１２を含む）が登録される。
【００３９】
印刷サービス１０５は、オペレーティングシステム（ＯＳ）上で印刷やプリンタドライバ１０１のインストールを制御するサービスプログラムである。
【００４０】
アドインインストーラ１０６は、本発明の目的を達成するための中心となるものであり、インストール済のプリンタドライバ１０１にアドインモジュールを追加インストールするプログラムである。なお、追加インストールするアドインモジュールファイルは、アドインインストーラ１０６内又は外部メモリ１２内の他の記憶領域に格納されているものとする。
【００４１】
なお、アドインインストーラ１０６は、主に以下の（１）〜（５）の機能を有する。
【００４２】
（１）１つまたは複数のプリンタドライバを構成する１つまたは複数のモジュールを検出する構成モジュール検出機能
（２）追加するアドインモジュールと、プリンタドライバ１０１を構成する１つまたは複数のモジュール（インストール済みのアドインモジュール１０２）との適切な動作の順番（該複数のアドインモジュールを動作させるべき順番）を判定するモジュール適正動作順番判定機能
（３）アドインモジュールファイルを追加するファイル追加機能
（４）上述のモジュール適正動作順番判定機能で判定された動作順番に従って追加された追加ファイルをプリンタドライバファイル情報１０４に登録するファイル登録機能
（５）印刷サービス１０５にモジュール構成の変更を認識させる認識機能
なお、アドインインストーラ１０６における処理の流れについては、後述する図４以降を用いて詳細に説明する。
【００４３】
プリンタドライバインストーラ１０７は、プリンタドライバ１０１をコンピュータ１００にインストールするプログラムである。
【００４４】
なお、アドインインストーラ１０６，プリンタドライバインストーラ１０７は、図１に示したＣＰＵ１が外部メモリ１２に格納されたプログラムをＲＡＭ２上で実行することにより実現されるものである。
【００４５】
＜アドインインストーラ１０６における処理の流れ＞
図４は、本発明における第１の制御処理手順の一例を示すフローチャートであり、アドインインストーラ１０６の処理の流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたアドインインストーラ１０６に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ３０００〜Ｓ３４００は各ステップを示す。
【００４６】
まず、ステップＳ３０００において、アドインインストーラ１０６は、アドインモジュールの追加対象プリンタドライバについて、インストール済みのアドインモジュールの検出を行う。なお、このアドインモジュールの追加対象プリンタドライバは、コンピュータ１００にインストール済みのプリンタドライバであり、ユーザによってアドインモジュールの追加対象として選択されたものが対応する。ここでは、図２のプリンタドライバ１０１とする。また、このステップＳ３０００の処理の詳細は図５において説明する。
【００４７】
次に、ステップＳ３１００において、アドインインストーラ１０６は、アドインモジュール順番情報を作成する。この処理は、ステップＳ３０００で検出されたインストール済みのアドインモジュール１０２と、アドインインストーラ１０６により追加するアドインモジュールを合わせた印刷処理において、適正な順番情報（前記複数のアドインモジュールを動作させるべき順番）を保持するアドインモジュール順番情報を作成する。なお、このアドインモジュール順番情報は、適正に動作可能な順番（前記複数のアドインモジュールを動作させるべき順番）が存在した場合にのみ作成される。
【００４８】
また、このアドインモジュール順番情報の保持形態としては、ファイル形式やＲＡＭ２上に保持する等形態は問わないが、ここではＲＡＭ２上に保持するものとして説明する。このアドインモジュール順番情報は、最小の情報構成として順番を示す番号とモジュール名称を保持している。なお、このステップＳ３１００の処理の詳細は図６において説明する。
【００４９】
次に、ステップＳ３２００において、アドインインストーラ１０６は、アドインモジュール順番情報がＲＡＭ２上に存在するか否かを判定する。そして、アドインモジュール順番情報がＲＡＭ２上に存在しないと判定した場合には、アドインインストーラ１０６は、ステップＳ３４００に処理を進める。
【００５０】
ステップＳ３４００では、アドインインストーラ１０６は、アドインモジュールインストール処理を中止し、本フローチャートの処理を終了する。
【００５１】
一方、ステップＳ３２００で、アドインモジュール順番情報がＲＡＭ２上に存在すると判定した場合には、アドインインストーラ１０６は、ステップＳ３３００に処理を進める。
【００５２】
ステップＳ３３００では、アドインインストーラ１０６は、アドインモジュールインストール処理を行い、本フローチャートの処理を終了する。なお、このステップＳ３３００の処理の詳細は図７において説明する。
【００５３】
図５は、本発明における第２の制御処理手順の一例を示すフローチャートであり、図４のステップＳ３０００に示したアドインモジュール検出処理の詳細な流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたアドインインストーラ１０６に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ４０００〜Ｓ４６００は各ステップを示す。
【００５４】
まず、ステップＳ４０００において、アドインインストーラ１０６は、プリンタドライバファイル情報１０４を参照して、プリンタドライバ１０１についての構成情報を取得する。
【００５５】
次に、ステップＳ４１００において、アドインインストーラ１０６は、アドインモジュール情報ファイル１０３が存在するか否かを判定する。なお、この判定は、ステップＳ４０００によって取得された構成情報内にアドインモジュール情報ファイル１０３に関するファイル情報（アドインモジュールファイル情報１１１）が１つでも含まれている場合にアドインモジュール情報ファイル１０３が存在すると判定する。一方、構成情報内にアドインモジュールファイル情報１１１が１つも含まれていない場合にはアドインモジュール情報ファイル１０３が存在しないと判定する。
【００５６】
ステップＳ４１００で、アドインモジュール情報ファイル１０３が存在しないと判定した場合には、アドインインストーラ１０６は、そのまま本フローチャートの処理を終了して、図４のステップＳ３１００に処理を進める。
【００５７】
一方、ステップＳ４１００で、アドインモジュール情報ファイル１０３が存在すると判定した場合には、アドインインストーラ１０６は、ステップＳ４２００に処理を進める。
【００５８】
ステップＳ４２００では、アドインインストーラ１０６は、ステップＳ４０００で取得した構成情報内に登録された全てのアドインモジュール情報ファイル１０３の参照が終了したか否かを判定する。
【００５９】
そして、ステップＳ４２００で、まだ全てのアドインモジュール情報ファイル１０３の参照が終了していないと判定した場合には、アドインインストーラ１０６は、ステップＳ４３００に処理を進める。
【００６０】
ステップＳ４３００では、アドインインストーラ１０６は、ステップＳ４０００で取得した構成情報内に登録されており且つ未だ参照していないアドインモジュール情報ファイル１０３を１つ選択し、該アドインモジュール情報ファイル１０３内の情報を参照する。
【００６１】
次に、ステップＳ４４００において、アドインインストーラ１０６は、ステップＳ４３００でアドインモジュール情報ファイル１０３内の情報が正常に参照されたか否かを判定する。
【００６２】
ステップＳ４４００において、ステップＳ４３００でアドインモジュール情報ファイル１０３内の情報が正常に参照されなかったと判定した場合には、アドインインストーラ１０６は、ステップＳ４５００に処理を進める。
【００６３】
ステップＳ４５００では、アドインインストーラ１０６は、このアドインモジュールは正常に動作していない、即ちアドインされていないとみなし、ステップＳ４６００に処理を進める。
【００６４】
一方、ステップＳ４４００において、ステップＳ４３００でアドインモジュール情報ファイル１０３内の情報が正常に参照さたと判定した場合には、アドインインストーラ１０６は、ステップＳ４６００に処理を進める。
【００６５】
ステップＳ４６００では、アドインインストーラ１０６は、次のアドインモジュール情報ファイル１０３の参照へ処理を進め、ステップＳ４２００に処理を戻す。
【００６６】
そして、ステップＳ４２００で、構成情報内に登録された全てのアドインモジュール情報ファイル１０３の参照が終了したと判定した場合には、アドインインストーラ１０６は、本フローチャートの処理を終了して、図４のステップＳ３１００に処理を進める。
【００６７】
以上が、図４のステップＳ３０００に示したアドインモジュール検出処理の詳細動作となり、アドインを追加するプリンタドライバが複数選択されている場合には、選択されているプリンタドライバの数だけ同様の処理を繰り返す。
【００６８】
図６は、本発明における第３の制御処理手順の一例を示すフローチャートであり、図４のステップＳ３１００に示したアドインモジュール順番情報作成処理の詳細な流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたアドインインストーラ１０６に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ５０００〜Ｓ５８００は各ステップを示す。
【００６９】
まず、ステップＳ５０００において、アドインインストーラ１０６は、アドインモジュール順番情報の新規作成など初期化処理を行う。
【００７０】
ステップＳ５１００において、アドインインストーラ１０６は、アドインの追加対象プリンタドライバに対し、図４のステップ３０００で検出された及びこれから追加する全てのアドインモジュールのアドインモジュール情報ファイル取得を終了したか否かを判定する。即ち、アドインモジュール順番情報の作成処理を完了したか否かを判定する。
【００７１】
ステップＳ５１００で、図４のステップＳ３０００で検出された及びこれから追加するアドインモジュールの全てのアドインモジュール情報ファイル取得を未だ終了していないと判定した場合には、アドインインストーラ１０６は、ステップＳ５２００に処理を進める。
【００７２】
ステップＳ５２００では、アドインインストーラ１０６は、図４のステップＳ３０００で検出された及びこれから追加するアドインモジュール内のまだ取得していないアドインモジュール情報ファイル１０３を１つ取得する。以下、このアドインモジュール情報ファイル１０３に対応するアドインモジュールを現在注目しているアドインモジュールと呼ぶ。
【００７３】
ステップＳ５３００では、アドインインストーラ１０６は、ステップＳ５２００で取得したアドインモジュール情報ファイル１０３からPriorityNumber２０６を取得する。なお、PriorityNumberとは例えば1以上の整数などであり、数値の大小によって動作する順番を定義するものである。このPriorityNumberによって新規にモジュールを追加した場合にも対応が可能となる。
【００７４】
ステップＳ５４００では、アドインインストーラ１０６は、本ステップまでにアドインモジュール順番情報内に書き込み済みのアドインモジュールのPriorityNumberと現在注目しているアドインモジュールのPriorityNumberとを比較する。そして、アドインインストーラ１０６は、PriorityNumberの大きい順となるように順番（アドインモジュール順番情報への書き込み位置）を決定する。
【００７５】
次に、ステップＳ５５００において、アドインインストーラ１０６は、ステップＳ５４００で決定された書込位置に書き込みが可能か否かを判定する。なお、書き込みが不可能な場合としては、PriorityNumberが同一のものや共存が不可能なモジュールの競合等が考えられる。
【００７６】
ステップＳ５５００で、書き込みが不可能であると判定した場合、アドインインストーラ１０６は、ステップＳ５８００に処理を進める。
【００７７】
ステップＳ５８００では、アドインインストーラ１０６は、適正な順番（予め追加されているアドインモジュールとこれから追加するアドインモジュールとを動作させるべき順番）が存在しないと判断して、現在ＲＡＭ２に保持しているアドインモジュール順番情報を削除する。そして、アドインインストーラ１０６は、図示しないステップにおいて、PriorityNumberが同一であったり、共存が不可能なモジュールの競合等が発生しモジュールを適用する適正な順番（動作させるべき順番）が存在しない旨の通知をディスプレイ１１に表示する。そして、本フローチャートの処理を終了し、図４のステップＳ３２００に処理を進める。
【００７８】
一方、ステップＳ５５００で、書き込みが可能であると判定した場合には、アドインインストーラ１０６は、ステップＳ５６００に処理を進める。
【００７９】
ステップＳ５６００では、アドインインストーラ１０６は、現在注目しているアドインモジュールのアドインモジュール名称を、ステップＳ５４００で決定したアドインモジュール順番情報内の書込位置に書込処理する。本実施形態では、順番を示す番号とアドインモジュール名称を書込処理する。
【００８０】
次に、ステップＳ５７００において、アドインインストーラ１０６は、次のアドインモジュール情報ファイルへ処理を進め、ステップＳ５１００に処理を戻す。
【００８１】
そして、ステップＳ５１００で、図４のステップ３０００で検出された及びこれから追加するアドインモジュールの全てのアドインモジュール情報ファイル取得を終了したと判定した場合には、本フローチャートの処理を終了し、図４のステップＳ３２００に処理を進める。
【００８２】
以上が図４のステップＳ３１００に示したアドインモジュール順番情報作成処理の詳細動作となり、アドインを追加するプリンタドライバが複数選択されている場合には選択されているプリンタドライバの数だけ同様の処理を繰り返す。
【００８３】
なお、図６では各アドインモジュールがPriorityNumberを保持することでアドインモジュール順番情報を作成したが、アドインモジュール順番情報をファイル情報として外部から提供するようにしてもよい。例えば、アドインモジュール順番情報をファイル情報としてＷｅｂ上で公開し、該Ｗｅｂ上でから取得して提供するように構成してもよい。
【００８４】
また、アドインモジュール順番情報は、ＸＭＬのようなテキスト形式でも非可読のバイナリ形式でもよくデータ形式は問わない。
【００８５】
図７は、本発明における第４の制御処理手順の一例を示すフローチャートであり、図４のステップＳ３３００に示したアドインモジュールインストール処理の詳細な流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたアドインインストーラ１０６に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ６０００〜６５００は各ステップを示す。
【００８６】
まず、ステップＳ６０００において、アドインインストーラ１０６は、プリンタドライバファイル情報１０４内に登録されたアドインモジュールファイル情報１１１を初期化する。
【００８７】
次に、ステップＳ６１００において、アドインインストーラ１０６は、ステップＳ３１００で作成されたアドインモジュール順番情報を取得する。
【００８８】
次に、ステップＳ６２００において、アドインインストーラ１０６は、ステップＳ６１００で取得したアドインモジュール順番情報に記載されているアドインモジュールのインストール処理が全て完了したか否かを判定する。
【００８９】
ステップＳ６２００で、ステップＳ６１００で取得したアドインモジュール順番情報に記載されているアドインモジュールのインストール処理がまだ全て完了していないと判定した場合には、アドインインストーラ１０６は、ステップＳ６３００に処理を進める。
【００９０】
ステップＳ６３００では、アドインインストーラ１０６は、アドインモジュール順番情報に従い動作の順番が早いものから１つアドインモジュール（アドインモジュール構成ファイル）を取得する。
【００９１】
次に、ステップＳ６４００において、アドインインストーラ１０６は、ステップＳ６３００で取得したアドインモジュール構成ファイルを外部メモリ１２内の所定領域（ＯＳの記憶領域）に追加する。なお、このステップは、今回新たに追加インストールするアドインモジュールに対してのみ行い、予め追加済みであったアドインモジュールに関してはスキップするものとする。
【００９２】
次に、ステップＳ６５００において、アドインインストーラ１０６は、プリンタドライバ構成情報（プリンタドライバファイル情報１０４）内にアドインモジュールファイル情報１１１（アドインモジュール情報ファイルを特定する情報１１２を含む）を登録する。
【００９３】
次に、ステップＳ６６００において、アドインインストーラ１０６は、アドインモジュール順番情報に次の記載されているアドインモジュールに処理を移し、ステップＳ６２００へ処理を戻す。
【００９４】
そして、ステップＳ６２００で、アドインモジュール順番情報に記載されているアドインモジュールのインストール処理が全て完了したと判定した場合には、本フローチャートの処理を終了する。
【００９５】
以上のようにインストール処理することで、予め追加されているアドインモジュールと新たに追加したアドインモジュールとが、図４のステップＳ３１００で判定された動作の順番で処理を実行するように、新たなアドインモジュールを登録することができる。
【００９６】
＜アドインインストーラＵＩについて＞
図８は、本発明における第５の制御処理手順の一例を示すフローチャートであり、アドインインストーラ１０６によるアドインインストール時のＵＩ表示の流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたアドインインストーラ１０６に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ７０００〜Ｓ７４００は各ステップを示す。
【００９７】
また、図９〜図１３は、アドインインストーラ１０６によるアドインインストール時のＵＩ表示処理時の表示画面の一例を示す模式図である。
【００９８】
まず、アドインセットアップウィザードが開始されると、アドインインストーラ１０６は、ステップS７０００において、図９に示すようなスタート画面をディスプレイ１１に表示する。
【００９９】
図９に示すスタート画面において、「次へ」ボタン８０１が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図８のステップＳ７１００に処理を進める。
【０１００】
なお、図８のフローチャートには示していないが、図９に示すスタート画面において、「キャンセル」ボタン８０２が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図８のフローチャートの処理を中止する。
【０１０１】
次に図８のステップＳ７１００では、アドインインストーラ１０６は、図１０(ａ)のようなドライバ機種選択画面をディスプレイ１１に表示する。
【０１０２】
図１０（ａ）に示すドライバ機種選択画面では、９０１に示すように、現在アドインモジュールのインストール対象となっているプリンタドライバの一覧が表示されている。
【０１０３】
このドライバ機種選択画面で、「追加と削除」ボタン９０２が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図１０（ｂ）のような画面をディスプレイ１１に表示する。
【０１０４】
図１０（ｂ）に示す画面では、９０６に示すように、アドインモジュールがインストール可能なプリンタドライバの一覧が表示される。
【０１０５】
図１０（ｂ）に示す画面で、「インストールするドライバ一覧へ追加」ボタン９０７が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、９０６において選択されているプリンタドライバをアドインモジュールのインストール対象となっているプリンタドライバの一覧を表す９１０に追加処理する。
【０１０６】
また、図１０（ｂ）に示す画面で、「削除」ボタン９０８が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、９１０で選択されているプリンタドライバをインストール対象から削除する。
【０１０７】
また、図１０（ｂ）に示す画面で、「ＯＫ」ボタン９０９が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図１０（ｂ）を閉じ、９１０の内容を９０１に反映させて図１０（ａ）の画面に戻す。
【０１０８】
図１０（ｂ）に示す画面で、「キャンセル」ボタン９１０が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図１０（ｂ）を閉じ、図１０（ａ）の画面に戻す。
【０１０９】
図１０（ａ）の画面で、「戻る」ボタン９０３が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図８のステップＳ７０００に処理を戻す。
【０１１０】
図１０（ａ）の画面で、「開始」ボタン９０４が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図８のステップＳ７２００に処理を進める。
【０１１１】
なお、図８のフローチャートには示していないが、図１０（ａ）の画面で、「キャンセル」ボタン９０５が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図８のフローチャートの処理を中止する。
【０１１２】
図８のステップＳ７２００において、アドインインストーラ１０６は、図１１のようなインストール警告表示画面をディスプレイ１１に表示する。
【０１１３】
図１１の画面で、「いいえ」ボタン１００５が指示されると（ＰＤ９でクリックされると）、図８のフローチャートには示していないが、アドインインストーラ１０６は、図８のフローチャートの処理を中止する。
【０１１４】
また、図１１の画面で、「はい」ボタン１００１が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、ステップＳ７３００に処理を進める。
【０１１５】
次に、図８のステップＳ７３００において、アドインインストーラ１０６は、図１２のようなステータス画面をディスプレイ１１に表示し、図４のフローチャートに示した処理（インストール実処理）を実行する。
【０１１６】
そして図４に示したインストール実処理の完了後、アドインインストーラ１０６は、図８のステップＳ７４００に処理を進める。
【０１１７】
図８のステップＳ７４００では、アドインインストーラ１０６は、図１３のようなインストール結果画面をディスプレイ１１に表示することで、アドインインストールが成功したか否かを表示する。図１３に示した例では、図４に示した処理でアドインのインストールが成功（完了）した場合に対応する。
【０１１８】
なお、アドインインストーラ１０６は、図４に示した処理で、動作において適切なインストール順番が存在しない場合等は、このインストール結果画面で、アドインのインストールが失敗した旨を表示する。
【０１１９】
図１３のインストール結果画面において、ＰＤ９で１２０１が選択されて「終了」ボタン１２０３が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図１３の画面を閉じ、コンピュータ１００の再起動を行う。これにより、アドインインストーラ１０６によって行われたプリンタドライバ１０１の変更をコンピュータ１００に反映させる。
【０１２０】
また、図１３のインストール結果画面において、ＰＤ９で１２０２が選択されて「終了」ボタン１２０３が指示されると（ＰＤ９でクリックされると）、アドインインストーラ１０６は、図１３を閉じる。
【０１２１】
＜アドインモジュール１０２の呼び出し処理の流れ＞
本実施形態によりインストールされたアドインモジュールを備えたプリンタドライバの印刷処理の詳細を図１、図２、および図１４を用いて説明する。
【０１２２】
アプリケーション１０８、グラフィックエンジン１０９、プリンタドライバ１０１、および印刷サービス１０５は、外部メモリ１２に保存されたファイルとして存在する。そして、これらは、ＣＰＵ１により実行されるＯＳやそのモジュールを利用するモジュールによってＲＡＭ２にロードされて実行されるプログラムモジュールである。
【０１２３】
また、アプリケーション１０８およびプリンタドライバ１０１は、外部メモリ１２のＦＤやＣＤ−ＲＯＭ、あるいは不図示のネットワーク２０を経由して外部メモリ１２のＨＤに追加することが可能となっている。
【０１２４】
外部メモリ１２に保存されているアプリケーション１０８は、ＣＰＵ１によりＲＡＭ２にロードされて実行される。しかし、このアプリケーション１０８からプリンタ３０に対して印刷を行う際には、同様にＲＡＭ２にロードされ実行可能となっているグラフィックエンジン１０９を利用して出力（描画）を行う。
【０１２５】
グラフィックエンジン１０９は、プリンタなどの印刷装置毎に用意されたプリンタドライバ１０１を外部メモリ１２からＲＡＭ２にロードし、アプリケーション１０８の出力をプリンタドライバ１０１に設定する。また、グラフィックエンジン２０２は、アプリケーション１０８から受け取るＧＤＩ（Graphic Device Interface）関数をＤＤＩ（Device Driver Interface）関数に変換して、プリンタドライバ１０１へ出力する。
【０１２６】
プリンタドライバ１０１は、グラフィックエンジン１０９から受け取ったＤＤＩ関数に基づいて、プリンタが認識可能な制御コマンド、例えばＰＤＬ（Page Description Language）に変換する。該変換されたプリンタ制御コマンドは、ＯＳによってＲＡＭ２にロードされた印刷サービス１０５を経てプリンタ３０へ印刷データとして出力される仕組みとなっている。
【０１２７】
本実施形態の印刷システムは、プリンタドライバ１０１内にアドインモジュール処理部１１０を有する。
【０１２８】
プリンタドライバ１０１は、アドインモジュール１０２の実行に際し、アドインモジュール処理部１１０を通してアドインモジュール１０２を呼び出し、処理を行う。アドインモジュール１０２の呼び出し処理の詳細に関しては図１４を用いて示す。
【０１２９】
図１４は、本発明における第６の制御処理手順の一例を示すフローチャートであり、プリンタドライバ１０１によるアドインモジュールの呼び出し処理の流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたアドインインストーラ１０６に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ１３０００〜Ｓ１３７００は各ステップを示す。
【０１３０】
まず、ステップＳ１３０００において、プリンタドライバ１０１は、プリンタドライバファイル情報１０４を参照して、プリンタドライバ１０１についての構成情報を取得する。
【０１３１】
次に、ステップＳ１３１００において、プリンタドライバ１０１は、アドインモジュール情報ファイル１０３が存在するか否かを判定する。なお、この判定は、ステップＳ１３０００によって取得された構成情報内にアドインモジュール情報ファイル１０３に関するファイル情報（アドインモジュールファイル情報１１１）が１つでも含まれている場合にアドインモジュール情報ファイル１０３が存在すると判定する。一方、構成情報内にアドインモジュールファイル情報１１１が１つも含まれていない場合にはアドインモジュール情報ファイル１０３が存在しないと判定する。なお、本実施形態において図７の処理が実行されている場合には、アドインモジュールファイル情報１１１は、プリンタドライバファイル情報１０４において動作順番の早いものから順番に登録されている。
【０１３２】
ステップＳ１３１００で、アドインモジュール情報ファイル１０３が存在しないと判定した場合には、プリンタドライバ１０１は、のまま本フローチャートの処理を終了する。
【０１３３】
一方、ステップＳ１３１００で、アドインモジュール情報ファイル１０３が存在すると判定した場合には、プリンタドライバ１０１は、ステップＳ１３２００に処理を進める。
【０１３４】
ステップＳ１３２００では、プリンタドライバ１０１は、ステップＳ１３０００で取得した構成情報内に登録された全てのアドインモジュール情報ファイルの参照が終了したか否かを判定する。
【０１３５】
そして、ステップＳ１３２００で、まだ全てのアドインモジュール情報ファイル１０３の参照が終了していないと判定した場合には、プリンタドライバ１０１は、ステップＳ１３３００に処理を進める。
【０１３６】
ステップＳ１３３００では、プリンタドライバ１０１は、ステップＳ１３０００で取得した構成情報内に登録されており且つ未だ参照していないアドインモジュール情報ファイル１０３を１つ選択し、該アドインモジュール情報ファイル１０３内の情報を参照する。
【０１３７】
次に、ステップＳ１３４００において、プリンタドライバ１０１は、ステップＳ１３３００でアドインモジュール情報ファイル内の情報が正常に参照されたか否かを判定する。
【０１３８】
ステップＳ１３４００において、ステップＳ１３３００でアドインモジュール情報ファイル内の情報が正常に参照されなかったと判定した場合には、プリンタドライバ１０１は、ステップＳ１３５００に処理を進める。
【０１３９】
そして、ステップＳ１３５００では、プリンタドライバ１０１は、このアドインモジュールは正常に動作していない、即ちアドインされていないとみなし、ステップＳ１３７００に処理を進める。
【０１４０】
一方、ステップＳ１３４００において、ステップＳ１３３００でアドインモジュール情報ファイル内の情報が正常に参照さたと判定した場合には、プリンタドライバ１０１は、ステップＳ１３６００に処理を進める。
【０１４１】
そして、ステップＳ１３６００では、プリンタドライバ１０１は、ステップＳ１３３００で参照したアドインモジュールを呼び出す。
【０１４２】
なお、プリンタドライバ１０１は、ステップＳ１３６００において呼び出された対象アドインモジュールの動作にとって、不都合なその他のアドインモジュールがないかの確認を行う。そして、不都合がある場合には、警告画面をディスプレイ１１に表示することでさらに順番制御の精度を高めることも可能である。例えば、機能制限を行うことを目的とするモジュールが対象モジュールとして呼び出された場合、対象モジュールは、後段モジュールからの書き換えによる機能制限を無効にするのを防止するために改ざん検知としてハッシュ値をデータに追加する。なお、ハッシュ値とは、ある規則に従って算出されたデータを代表する値である。例えば、ホスト側で埋め込んだハッシュ値とデバイス側で得られるハッシュ値を比較することで改ざんの検知を行うことができる。
【０１４３】
ここで、後段の呼び出しモジュールとして暗号化モジュールのような、さらに印刷データに対して暗号表となる鍵を使用して暗号化を行うことで書き換えを行うような暗号化モジュールをアドインモジュール情報ファイル１０３において発見した場合を考える。このように、上述のようなハッシュ値が算出された後で、上述のような暗号化モジュールが実行されると、暗号化することで得られるハッシュ値も異なったものとなるため、改ざんされたとして検知されてしまう。そのため印刷を中止し、該当モジュールをアンインストールまたは暗号化モジュールと改ざん検知を含む機能制限モジュールの順番を換えてインストールする旨などを表示する。
【０１４４】
つまり、ジョブの改ざん検知モジュールの処理の後に、暗号化モジュールが動作して、ジョブを暗号化すると、暗号化される前のデータは改ざんされていないにもかかわらず、改ざんされてしまっていると検知される場合がある。係る場合、暗号化処理の後にジョブの改ざん検知モジュールの処理を行うようにするほうがよい。
【０１４５】
以下、フローチャートの説明に戻る。
【０１４６】
ステップＳ１３６００の処理が終了すると、プリンタドライバ１０１は、ステップＳ１３７００に処理を進める。
【０１４７】
ステップＳ１３７００では、プリンタドライバ１０１は、次のアドインモジュール情報ファイルの参照へ処理を進め、ステップＳ１３２００に処理を戻す。
【０１４８】
そして、ステップＳ１３２００で、全てのアドインモジュール情報ファイルの参照が終了したと判定した場合には、プリンタドライバ１０１は、本フローチャートの処理を終了する。
【０１４９】
以上説明したように、本実施形態によれば、プリンタドライバにアドインモジュールを追加する際に、該追加するアドインモジュールとプリンタドライバを構成する既存のアドインモジュールとの動作順番（適用順）が正しくなるように設定制御することが可能になる。
【０１５０】
従って、印刷処理の実行時に、プリンタドライバは、プリンタドライバを構成する各アドインモジュールを適切な順序（動作させるべき順序）で適用して適切に動作させることが可能となる。
【０１５１】
〔第２実施形態〕
上記第１実施形態では、プリンタドライバにアドインモジュールを追加する場合について説明したが、本実施形態では、Windows（登録商標） VistaのFilter Pipelineにおいてフィルタ構成で提供されるフィルタモジュールをプリンタドライバに追加する場合について説明する。なお、ハードウェア構成については第１実施形態と同様とする。
【０１５２】
＜システムの構成＞
図１５は、本発明の第２実施形態に係る印刷システムの構成例を示すブロック図であり、図２と同一のものには同一の符号を付してある。
【０１５３】
図１５において、１４０１はプリンタドライバ１０１においてフィルタ構成で提供されるフィルタモジュールの配置情報であり、フィルタモジュール１４０４の呼び出し順番を規定している。フィルタモジュール配置情報ファイル１４０１は、Windows（登録商標） VistaにおいてはFilter Configuration File対応する。
【０１５４】
１４０４はプリンタドライバを構成しているフィルタモジュールであり、フィルタモジュール情報ファイル１４０５を含む。ここで、図１６を参照して、フィルタモジュール情報ファイル１４０５のデータ構成について説明する。
【０１５５】
図１６は、図１５に示したフィルタモジュール情報ファイル１４０５のデータ構成を示すデータ構成図である。
【０１５６】
図１６において、１５０１はフィルタモジュール１４０４のファイル構成が記述されている領域である。１５０２はフィルタモジュール１４０４のバージョン情報が記述されている領域である。１５０３はフィルタモジュール１４０４のリリース日が記述されている領域である。１５０４はフィルタモジュール１４０４の製品名情報が記述されている領域である。１５０５はフィルタモジュール１４０４の詳細情報が記述されている領域である。
【０１５７】
１５０６はPriorityNumber（プライオリティナンバ）であり、動作の順番を決定する一意の番号が記述されている領域である。１５０７はフィルタモジュール１４０４のCopyright情報が記述されている領域である。
【０１５８】
なお、プリンタドライバファイル情報１０４はOSが印刷サービス１０５を用いてプリンタドライバを利用するための一管理情報で、例えばWindows（登録商標）ではレジストリ中のDependentFilesが該当する。
【０１５９】
以下、図１５の説明に戻る。
【０１６０】
プリンタドライバ１０１は、０個または１つ以上のフィルタモジュールを保持することが可能である。フィルタモジュール１４０４は、例えばＤＬＬ（Dynamic Link Library）などのプログラムファイルを含むファイル群である。
【０１６１】
図１５においては、フィルタモジュール１４０４がインストール済であり、プリンタドライバファイル情報１０４に、フィルタモジュール配置情報ファイル１４０１が登録されている。このフィルタモジュール配置情報ファイル１４０１には、フィルタモジュール情報ファイルを特定する情報（例えば、フィルタモジュール情報ファイル名称）１４０２が含まれる。
【０１６２】
なお、プリンタドライバ１０１に複数のフィルタモジュールがインストールされている場合には、フィルタモジュール配置情報ファイル１４０１内には、各フィルタモジュール毎にフィルタモジュール情報ファイルを特定する情報１４０２が含まれる（呼出順）。
【０１６３】
フィルタアドインインストーラ１４０３は、本発明の目的を達成するための中心となるものであり、フィルタモジュール１４０４をインストール済のプリンタドライバ１０１に追加インストールするプログラムである。なお、追加インストールするフィルタモジュールファイルは、フィルタアドインインストーラ１４０３内又は外部メモリ１２内の他の記憶領域に格納されているものとする。
【０１６４】
なお、フィルタアドインインストーラ１４０３は、主に以下の（１）〜（６）の機能を有する。
【０１６５】
（１）１つまたは複数のプリンタドライバを構成する１つまたは複数のフィルタモジュールを検出する構成フィルタモジュール検出機能
（２）フィルタモジュールとプリンタドライバを構成する１つまたは複数のフィルタモジュールとの適切な動作の順番（該複数のフィルタモジュールを動作させるべき順番）を判定するフィルタモジュール適正動作順番判定機能
（３）フィルタモジュールファイルを追加するファイル追加機能
（４）上述の動作順番に従って（上述の動作順番で動作するように）フィルタモジュール配置情報を変更するフィルタモジュール配置情報変更機能
（５）追加された追加ファイルをプリンタドライバファイル情報１０４に登録するファイル登録機能
（６）印刷サービスにモジュール構成の変更を認識させる認識機能
なお、フィルタアドインインストーラ１４０３における処理の流れについては、後述する図１７以降を用いて詳細に説明する。
【０１６６】
＜フィルタアドインインストーラ１４０３における処理の流れ＞
図１７は、本発明における第７の制御処理手順の一例を示すフローチャートであり、フィルタアドインインストーラ１４０３の処理の流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたアドインインストーラ１０６に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ１６０００〜Ｓ１６４００は各ステップを示す。
【０１６７】
まず、ステップＳ１６０００において、フィルタアドインインストーラ１４０３は、フィルタモジュールの追加対象プリンタドライバについて、インストール済みのフィルタモジュールの検出を行う。なお、このフィルタモジュールの追加対象プリンタドライバは、コンピュータ１００にインストール済みのプリンタドライバであり、ユーザによってフィルタモジュールの追加対象として選択されたものが対応する。ここでは、図１５のプリンタドライバ１０１とする。また、このステップＳ１６０００の処理の詳細は図１８において説明する。
【０１６８】
次に、ステップＳ１６１００において、フィルタアドインインストーラ１４０３は、リルタモジュール順番情報を作成する。この処理は、ステップＳ１６０００で検出されたインストール済みのフィルタモジュール１４０４と、フィルタアドインインストーラ１４０３により追加するフィルタモジュールを合わせた印刷処理において、適正な順番情報（前記複数のフィルタモジュールを動作させるべき順番）を保持するフィルタモジュール順番情報を作成する。なお、このフィルタモジュール順番情報は、適正に動作可能な順番（前記複数のフィルタモジュールを動作させるべき順番）が存在した場合にのみ作成される。
【０１６９】
また、このフィルタモジュール順番情報の保持形態としては、ファイル形式やＲＡＭ２上に保持する等形態は問わないが、ここではＲＡＭ２上に保持するものとして説明する。このフィルタモジュール順番情報は、最小の情報構成として順番を示す番号とモジュール名称を保持している。なお、このステップＳ１６１００の処理の詳細は図１９において説明する。
【０１７０】
次に、ステップＳ１６２００において、フィルタアドインインストーラ１４０３は、フィルタモジュール順番情報がＲＡＭ２上に存在するか否かを判定する。そして、フィルタモジュール順番情報がＲＡＭ２上に存在しないと判定した場合には、フィルタアドインインストーラ１４０３は、ステップＳ１６４００に処理を進める。
【０１７１】
ステップＳ１６４００では、フィルタアドインインストーラ１４０３は、フィルタモジュールインストール処理を中止し、本フローチャートの処理を終了する。
【０１７２】
一方、ステップＳ１６２００で、アドインモジュール順番情報がＲＡＭ２上に存在すると判定した場合には、フィルタアドインインストーラ１４０３は、ステップＳ１６３００に処理を進める。
【０１７３】
ステップＳ１６３００では、フィルタアドインインストーラ１４０３は、フィルタモジュールインストール処理を行い、本フローチャートの処理を終了する。なお、このステップＳ１６３００の処理の詳細は図２０において説明する。
【０１７４】
図１８は、本発明における第８の制御処理手順の一例を示すフローチャートであり、図１７のステップＳ１６０００に示したフィルタモジュール検出処理の詳細な流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたフィルタアドインインストーラ１４０３に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ１７０００〜Ｓ１７６００は各ステップを示す。
【０１７５】
まず、ステップＳ１７０００において、フィルタアドインインストーラ１４０３は、プリンタドライバファイル情報１０４を参照して、プリンタドライバ１０１についての構成情報を取得する。
【０１７６】
次に、ステップＳ１７１００において、フィルタアドインインストーラ１４０３は、ステップＳ１７０００によって取得された構成情報内にフィルタモジュール配置情報ファイル１４０１が存在するか否かを判定する。
【０１７７】
ステップＳ１７１００で、フィルタモジュール配置情報ファイル１４０１が存在しないと判定した場合には、フィルタアドインインストーラ１４０３は、そのまま本フローチャートの処理を終了して、図１７のステップＳ１６１００に処理を進める。
【０１７８】
一方、ステップＳ１７１００で、フィルタモジュール配置情報ファイル１４０１が存在すると判定した場合には、フィルタアドインインストーラ１４０３は、ステップＳ１７２００に処理を進める。
【０１７９】
ステップＳ１７２００では、フィルタアドインインストーラ１４０３は、フィルタモジュール配置情報ファイル１４０１内に登録された全てのフィルタモジュール情報ファイル１４０５の参照が終了したか否かを判定する。
【０１８０】
そして、ステップＳ１７２００で、まだ全てのフィルタモジュール情報ファイル１４０５の参照が終了していないと判定した場合には、フィルタアドインインストーラ１４０３は、ステップＳ１７３００に処理を進める。
【０１８１】
ステップＳ１７３００では、フィルタアドインインストーラ１４０３は、フィルタモジュール配置情報ファイル１４０１内に登録されており且つ未だ参照していないフィルタモジュール情報ファイル１４０５を１つ選択し、該フィルタモジュール情報ファイル１４０５内の情報を参照する。
【０１８２】
次に、ステップＳ１７４００において、フィルタアドインインストーラ１４０３は、ステップＳ１７３００でフィルタモジュール情報ファイル１４０５内の情報が正常に参照されたか否かを判定する。
【０１８３】
ステップＳ１７４００において、ステップＳ１７３００でフィルタモジュール情報ファイル１４０５内の情報が正常に参照されなかったと判定した場合には、フィルタアドインインストーラ１４０３は、ステップＳ１７５００に処理を進める。
【０１８４】
ステップＳ１７５００では、フィルタアドインインストーラ１４０３は、このフィルタモジュールは正常に動作していない、即ちインストールされていないとみなし、ステップＳ１７６００に処理を進める。
【０１８５】
一方、ステップＳ１７４００において、ステップＳ１７３００でフィルタモジュール情報ファイル１４０５内の情報が正常に参照さたと判定した場合には、フィルタアドインインストーラ１４０３は、ステップＳ１７６００に処理を進める。
【０１８６】
ステップＳ１７６００では、フィルタアドインインストーラ１４０３は、次のフィルタモジュール情報ファイル１４０５の参照へ処理を進め、ステップＳ１７２００に処理を戻す。
【０１８７】
そして、ステップＳ１７２００で、フィルタモジュール配置情報ファイル１４０１内に登録された全てのフィルタモジュール情報ファイル１４０５の参照が終了したと判定した場合には、フィルタアドインインストーラ１４０３は、本フローチャートの処理を終了して、図１７のステップＳ１６１００に処理を進める。
【０１８８】
以上が、図１７のステップＳ１６０００に示したフィルタモジュール検出処理の詳細動作となり、フィルタモジュールを追加するプリンタドライバが複数選択されている場合には、選択されているプリンタドライバの数だけ同様の処理を繰り返す。
【０１８９】
図１９は、本発明における第９の制御処理手順の一例を示すフローチャートであり、図１７のステップＳ１６１００に示したフィルタモジュール順番情報作成処理の詳細な流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたフィルタアドインインストーラ１４０３に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ１８０００〜Ｓ１８８００は各ステップを示す。
【０１９０】
まず、ステップＳ１８０００において、フィルタアドインインストーラ１４０３は、フィルタモジュール順番情報の新規作成など初期化処理を行う。
【０１９１】
ステップＳ１８１００において、フィルタアドインインストーラ１４０３は、フィルタモジュールの追加対象プリンタドライバに対し、図１７のステップ１６０００で検出された及びこれから追加する全てのフィルタモジュールのフィルタ情報ファイル取得を終了したか否かを判定する。即ち、フィルタモジュール順番情報の作成処理を完了したか否かを判定する。
【０１９２】
ステップＳ１８１００で、図１７のステップＳ１６０００で検出された及びこれから追加するアドインモジュールの全てのフィルタモジュール情報ファイル取得を未だ終了していないと判定した場合には、フィルタアドインインストーラ１４０３は、ステップＳ１８２００に処理を進める。
【０１９３】
ステップＳ１８２００では、フィルタアドインインストーラ１４０３は、図１７のステップＳ１６０００で検出された及びこれから追加するフィルタモジュール内のまだ取得していないフィルタモジュール情報ファイル１４０５を１つ取得する。以下、このフィルタモジュール情報ファイル１４０５に対応するアドインモジュールを現在注目しているアドインモジュールと呼ぶ。
【０１９４】
ステップＳ１８３００では、フィルタアドインインストーラ１４０３は、ステップＳ１８２００で取得したフィルタモジュール情報ファイル１４０５からPriorityNumber１５０６を取得する。なお、PriorityNumberとは例えば1以上の整数などであり、数値の大小によって動作する順番を定義するものである。このPriorityNumberによって新規にモジュールを追加した場合にも対応が可能となる。
【０１９５】
ステップＳ１８４００では、フィルタアドインインストーラ１４０３は、本ステップまでにフィルタモジュール順番情報内に書き込み済みのフィルタモジュールのPriorityNumberと現在注目しているフィルタモジュールのPriorityNumberとを比較する。そして、フィルタアドインインストーラ１４０３は、PriorityNumberの大きい順となるように順番（フィルタモジュール順番情報への書き込み位置）を決定する。
【０１９６】
次に、ステップＳ１８５００において、フィルタアドインインストーラ１４０３は、ステップＳ１８４００で決定された書込位置に書き込みが可能か否かを判定する。なお、書き込みが不可能な場合としては、PriorityNumberが同一のものや共存が不可能なモジュールの競合等が考えられる。
【０１９７】
ステップＳ１８５００で、書き込みが不可能であると判定した場合、フィルタアドインインストーラ１４０３は、ステップＳ１８８００に処理を進める。
【０１９８】
ステップＳ１８８００では、フィルタアドインインストーラ１４０３は、適正な順番（予め追加されているフィルタモジュールとこれから追加するフィルタモジュールとを動作させるべき順番）が存在しないと判断して、現在ＲＡＭ２に保持しているフィルタモジュール順番情報を削除する。そして、フィルタアドインインストーラ１４０３は、図示しないステップにおいて、PriorityNumberが同一であったり、共存が不可能なモジュールの競合等が発生しモジュールを適用する適正な順番（動作させるべき順番）が存在しない旨の通知をディスプレイ１１に表示する。そして、本フローチャートの処理を終了し、図１７のステップＳ１６２００に処理を進める。
【０１９９】
一方、ステップＳ１８５００で、書き込みが可能であると判定した場合には、フィルタアドインインストーラ１４０３は、ステップＳ１８６００に処理を進める。
【０２００】
ステップＳ１８６００では、フィルタアドインインストーラ１４０３は、現在注目しているフィルタモジュールのフィルタモジュール名称を、ステップＳ１８４００で決定したフィルタモジュール順番情報内の書込位置に書込処理する。本実施形態では、順番を示す番号とフィルタモジュール名称を書込処理する。
【０２０１】
次に、ステップＳ１８７００において、フィルタアドインインストーラ１４０３は、次のフィルタモジュール情報ファイルへ処理を進め、ステップＳ１８１００に処理を戻す。
【０２０２】
そして、ステップＳ１８１００で、図１７のステップ１６０００で検出された及びこれから追加するフィルタモジュールの全てのフィルタモジュール情報ファイル取得を終了したと判定した場合には、本フローチャートの処理を終了し、図１７のステップＳ１６２００に処理を進める。
【０２０３】
以上が図１７のステップＳ１６１００に示したフィルタモジュール順番情報作成処理の詳細動作となり、フィルタモジュールを追加するプリンタドライバが複数選択されている場合には選択されているプリンタドライバの数だけ同様の処理を繰り返す。
【０２０４】
なお、図１９では各フィルタモジュールがPriorityNumberを保持することでフィルタモジュール順番情報を作成したが、フィルタモジュール順番情報をファイル情報として外部から提供するようにしてもよい。例えば、フィルタモジュール順番情報をファイル情報としてＷｅｂ上で公開し、該Ｗｅｂ上でから取得して提供するように構成してもよい。
【０２０５】
また、フィルタモジュール順番情報は、ＸＭＬのようなテキスト形式でも非可読のバイナリ形式でもよくデータ形式は問わない。
【０２０６】
図２０は、本発明における第１０の制御処理手順の一例を示すフローチャートであり、図１７のステップＳ１６３００に示したフィルタモジュールアドインインストール処理の詳細な流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたフィルタアドインインストーラ１４０３に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ１９０００〜１９７００は各ステップを示す。
【０２０７】
まず、ステップＳ１９０００において、フィルタアドインインストーラ１４０３は、プリンタドライバファイル情報１０４内に登録されたフィルタモジュール配置情報ファイル１４０１を初期化する。ここでは一度、フィルタモジュール配置情報ファイル１４０１に記載されている各フィルタモジュール情報ファイルを特定する情報１４０２についての消去を行う。
【０２０８】
次に、ステップＳ１９１００において、フィルタアドインインストーラ１４０３は、ステップＳ１６１００で作成されたフィルタモジュール順番情報を取得する。
【０２０９】
次に、ステップＳ１９２００において、フィルタアドインインストーラ１４０３は、ステップＳ１９１００で取得したフィルタモジュール順番情報に記載されているフィルタモジュールのアドインインストール処理が全て完了したか否かを判定する。
【０２１０】
ステップＳ１９２００で、ステップＳ１９１００で取得したフィルタモジュール順番情報に記載されているフィルタモジュールのアドインインストール処理がまだ全て完了していないと判定した場合には、フィルタアドインインストーラ１４０３は、ステップＳ１９３００に処理を進める。
【０２１１】
ステップＳ１９３００では、フィルタアドインインストーラ１４０３は、フィルタモジュール順番情報に従い動作の順番が早いものから１つフィルタモジュール（フィルタモジュール構成ファイル）を取得する。
【０２１２】
次に、ステップＳ１９４００において、フィルタアドインインストーラ１４０３は、ステップＳ１９３００で取得したフィルタモジュール構成ファイルを外部メモリ１２内の所定領域（ＯＳの記憶領域）に追加する。なお、このステップは、今回新たに追加インストールするフィルタモジュールに対してのみ行い、予め追加済みであったフィルタモジュールに関してはスキップするものとする。
【０２１３】
次に、ステップＳ１９５００において、フィルタアドインインストーラ１４０３は、ステップＳ９４００で取得したプリンタドライバ構成情報（プリンタドライバファイル情報１０４）内にフィルタモジュールを登録する。
【０２１４】
次に、ステップＳ１９６００において、フィルタアドインインストーラ１４０３は、追加したフィルタモジュールのフィルタモジュール情報ファイルを特定する情報１１２を現在のフィルタモジュール配置情報ファイルのフィルタ構成の終端に追加する。
【０２１５】
次に、ステップＳ１９７００において、フィルタアドインインストーラ１４０３は、フィルタモジュール順番情報に次の記載されているフィルタモジュールに処理を移し、ステップＳ１９２００へ処理を戻す。
【０２１６】
そして、ステップＳ１９２００で、フィルタモジュール順番情報に記載されているフィルタモジュールのインストール処理が全て完了したと判定した場合には、本フローチャートの処理を終了する。
【０２１７】
以上のようにインストール処理することで、予め追加されているフィルタモジュールと新たに追加したフィルタモジュールとが、図１６のステップＳ１３１００で判定された動作の順番で処理を実行するように、新たなフィルタモジュールを登録することができる。
【０２１８】
＜フィルタアドインインストーラＵＩについて＞
フィルタアドインインストーラＵＩについては、上述した第１実施形態におけるアドインインストーラＵＩと同様である。なお、アドインインストール処理自体は、図４の処理が図１７の処理に置き換わるものとする。
【０２１９】
＜フィルタモジュール１４０４の呼び出し処理の流れ＞
本実施形態によりインストールされたフィルタモジュールを備えたプリンタドライバの印刷処理の詳細を、図１、図１５、および図２１を用いて説明する。なお、第１実施形態において用いた図と番号が等しいものは同様のものを示している。
【０２２０】
尚、Windows（登録商標） VistaのXPS(XML Paper Specification) Print Pathにおいてグラフィックエンジン１０９は、アプリケーション１０８から受け取る描画命令またはＸＰＳドキュメントをＸＰＳドキュメントとしてプリンタドライバ１０１へ出力する。
【０２２１】
プリンタドライバ１０１は、グラフィックエンジン１０９から受け取ったＸＰＳドキュメントをプリンタが認識可能な制御コマンド、例えばＰＤＬ（Page Description Language）に変換する。本実施形態の印刷システムは、プリンタドライバ１０１内のフィルタモジュール１４０４をＯＳが呼び出すことで印刷が実行される。プリンタドライバ１０１は、フィルタモジュール１４０４の実行に際しＯＳを通してフィルタモジュール１４０４を呼び出し、処理を行う。フィルタモジュールの呼び出し処理の詳細に関しては図２１を用いて示す。
【０２２２】
図２１は、本発明における第１１の制御処理手順の一例を示すフローチャートであり、プリンタドライバ１０１によるフィルタモジュールの呼び出し処理の流れに対応する。即ち、このフローチャートの処理は、ＣＰＵ１が外部メモリ１２に格納されたアドインインストーラ１０６に対応するプログラムをＲＡＭ２上で実行することにより実現されるものである。なお、図中、Ｓ２００００〜Ｓ２０７００は各ステップを示す。
【０２２３】
まず、ステップＳ２００００において、プリンタドライバ１０１は、プリンタドライバファイル情報１０４を参照して、プリンタドライバ１０１についての構成情報を取得する。
【０２２４】
次に、ステップＳ２０１００において、プリンタドライバ１０１は、ステップＳ２００００によって取得された構成情報内にフィルタモジュール配置情報ファイル１４０１が存在するか否かを判定する。なお、本実施形態では、図２０に示した処理によりフィルタモジュール配置情報ファイル１４０１は動作順番の早いものから順番にファイルタモジュール情報ファイルを特定する情報１４０２を登録している。
【０２２５】
ステップＳ２０１００で、フィルタモジュール配置情報ファイル１４０１が存在しないと判定した場合には、プリンタドライバ１０１は、そのまま本フローチャートの処理を終了する。
【０２２６】
一方、ステップＳ２０１００で、フィルタモジュール配置情報ファイル１４０１が存在すると判定した場合には、プリンタドライバ１０１は、ステップＳ２０２００に処理を進める。
【０２２７】
ステップＳ２０２００では、プリンタドライバ１０１は、フィルタモジュール配置情報ファイル１４０１内に登録された全てのフィルタモジュール１４０４の呼出が終了したか否かを判定する。
【０２２８】
そして、ステップＳ２０２００で、まだ全てのフィルタモジュール１４０４の呼出が終了していないと判定した場合には、プリンタドライバ１０１は、ステップＳ２０３００に処理を進める。
【０２２９】
ステップＳ２０３００では、プリンタドライバ１０１は、フィルタモジュール配置情報ファイル１４０１内に登録されており且つ未だ呼び出されていないフィルタモジュール１４０４を１つ選択し、該フィルタモジュール１４０４を呼出処理する。
【０２３０】
以上説明したように、本実施形態によれば、プリンタドライバにフィルタモジュールを追加する際、該追加するフィルタモジュールとプリンタドライバを構成する既存のフィルタモジュールとの印刷処理時の動作順番（適用順）が正しくなるように設定制御することが可能になる。
【０２３１】
従って、印刷処理の実行時に、プリンタドライバは、プリンタドライバを構成する各フィルタモジュールを適切な順序（動作させるべき順番）で適用して適切に動作させることが可能となる。
【０２３２】
なお、第１，２実施形態では、プリンタドライバに新たなモジュールを追加する際、該追加するモジュールとプリンタドライバを構成する既存のモジュールとの印刷処理時の動作順番（適用順）が正しくなるように新たなモジュールを追加するとともに、既存のモジュールの登録状態を変更制御する構成について説明した。
【０２３３】
しかし、新たなに追加するモジュールがない状態で図４〜図８又は図１７〜図２０に示したフローチャートの処理を実行することにより、既存のモジュールの印刷処理時の動作順番（適用順）が正しくなるように既存のモジュールの登録を変更制御することが可能になる。
【０２３４】
例えば、図４〜図８又は図１７〜図２０に示したフローチャートの処理を実行することなくユーザが従来の方法で新たなモジュールを追加した場合、該モジュールは既にインストールされているモジュールとの動作順番について考慮されず、正常な動作をしない場合がある。
【０２３５】
このような場合、モジュール自体は追加済みであるので、新たなに追加するモジュールがない状態で図１７〜図２０に示したフローチャートの処理を実行する。これにより、インストーラは、新たなモジュールは追加しないが、既にインストールされているモジュールの動作順番（適用順）が正しくなるように、既存のモジュールの登録を変更制御する。
【０２３６】
なお、上記各実施形態では、コンピュータにインストールされた１つまたは複数のプリンタドライバに１又は複数のアドインモジュール（フィルタモジュール）を追加するインストーラ及びプリンタドライバにおけるモジュールの適用制御について説明した。
【０２３７】
しかしながら、アドインモジュール等を追加する対象は、プリンタドライバでなくても、アドインモジュール等を追加可能なアプリケーションプログラムであればどのようなアプリケーションプログラムであってもよい。即ち、コンピュータにインストールされた１つまたは複数のアプリケーションプログラムに１又は複数のアドインモジュール（フィルタモジュール）を追加するインストーラ及びアプリケーションプログラムにおけるモジュールの適用制御にも本発明は適用可能である。
【０２３８】
なお、本実施形態では、上述の各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０２３９】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０２４０】
以下、図２１に示すメモリマップを参照して、本発明に係る情報処理装置（コンピュータ１００）で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップの構成について説明する。
【０２４１】
図２１は、本発明に係る情報処理装置（コンピュータ１００）で読み取り可能な各種データ処理プログラムを格納する記憶媒体（記録媒体）のメモリマップを説明する図である。
【０２４２】
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０２４３】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０２４４】
本実施形態における図４，図５，図６，図７，図８，図１４，図１７，図１８，図１９，図２０，図２１に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD-ROMやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０２４５】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０２４６】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２４７】
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
【０２４８】
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD-ROM、CD-R、CD-RW、磁気テープ、不揮発性のメモリカード、ROM、DVDなどを用いることができる。
【０２４９】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２５０】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のプログラムそのものをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、該ホームページから圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバやFTPサーバ等も本発明の請求項に含まれるものである。
【０２５１】
また、本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布する。さらに、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。さらに、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０２５２】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、以下のような構成も含まれることは言うまでもない。例えば、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２５３】
さらに、記憶媒体から読み出されたプログラムコードを、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込む。そして、該メモリに書き込まれたプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２５４】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０２５５】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組み合わせを含む）が可能であり、それらを本発明の範囲から排除するものではない。
【０２５６】
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではない。
【０２５７】
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【０２５８】
以上説明したように、本発明は、情報処理装置にインストールされたプリンタドライバに対してモジュールを追加することが可能なインストーラであって、モジュールを追加するときに現在インストールされているモジュールを検出し、追加するモジュールとインストールされているモジュールとの動作順番を考慮してインストールを行う。よって、プリンタドライバにモジュールを追加する際に、該追加するモジュールとプリンタドライバを構成する既存のモジュールとの動作順番を正しくなるように設定制御することが可能になる。
【０２５９】
また、本発明は、印刷実行時には前記インストール方法に基づき適切な順番（動作させるべき順番）でインストールされているモジュールを動作させるプリンタドライバも含む。従って、印刷処理の実行時に、プリンタドライバは、プリンタドライバを構成する各タモジュールを適切に適用して動作させることが可能となる。
【０２６０】
以上のように新規機能をアドインモジュールやフィルタモジュールで提供することにより、印刷装置の発売当初には想定されていない機能や、付加的に後から追加したい機能したい機能を、動作順序正しく追加することが可能なフレキシブルなプリンタドライバの新機能提供環境を構築することができる。
【０２６１】
なお、上述した各実施形態及びその変形例のいずれか又は全てを組み合わせた構成も本発明に含まれるものである。
【図面の簡単な説明】
【０２６２】
【図１】本発明を適用可能な情報処理装置の一例を示すブロック図である。
【図２】本発明の第１実施形態に係る印刷システムの構成例を示すブロック図である。
【図３】図２に示したアドインモジュール情報ファイルのデータ構成を示すデータ構成図である。
【図４】本発明における第１の制御処理手順の一例を示すフローチャートである。
【図５】本発明における第２の制御処理手順の一例を示すフローチャートである。
【図６】本発明における第３の制御処理手順の一例を示すフローチャートである。
【図７】本発明における第４の制御処理手順の一例を示すフローチャートである。
【図８】本発明における第５の制御処理手順の一例を示すフローチャートである。
【図９】アドインインストーラによるアドインインストール時のＵＩ表示処理時の表示画面の一例を示す模式図である。
【図１０】アドインインストーラによるアドインインストール時のＵＩ表示処理時の表示画面の一例を示す模式図である。
【図１１】アドインインストーラによるアドインインストール時のＵＩ表示処理時の表示画面の一例を示す模式図である。
【図１２】アドインインストーラによるアドインインストール時のＵＩ表示処理時の表示画面の一例を示す模式図である。
【図１３】アドインインストーラによるアドインインストール時のＵＩ表示処理時の表示画面の一例を示す模式図である。
【図１４】本発明における第６の制御処理手順の一例を示すフローチャートである。
【図１５】本発明の第２実施形態に係る印刷システムの構成例を示すブロック図である。
【図１６】図１５に示したフィルタモジュール情報ファイルのデータ構成を示すデータ構成図である。
【図１７】本発明における第７の制御処理手順の一例を示すフローチャートである。
【図１８】本発明における第８の制御処理手順の一例を示すフローチャートである。
【図１９】本発明における第９の制御処理手順の一例を示すフローチャートである。
【図２０】本発明における第１０の制御処理手順の一例を示すフローチャートである。
【図２１】本発明における第１１の制御処理手順の一例を示すフローチャートである。
【図２２】本発明に係る情報処理装置（コンピュータ）で読み取り可能な各種データ処理プログラムを格納する記憶媒体（記録媒体）のメモリマップを説明する図である。
【符号の説明】
【０２６３】
１  ＣＰＵ
２  ＲＡＭ
３  ＲＯＭ
１２  外部メモリ
３０  プリンタ
１００  コンピュータ
１０１  プリンタドライバ
１０２  アドインモジュール
１０３  アドインモジュール情報ファイル
１０４  プリンタドライバファイル情報
１０５  印刷サービス
１０６  アドインインストーラ
１０７  プリンタドライバインストーラ
【図１】
0004810282.tif 000002
【図２】
0004810282.tif 000003
【図３】
0004810282.tif 000004
【図４】
0004810282.tif 000005
【図５】
0004810282.tif 000006
【図６】
0004810282.tif 000007
【図７】
0004810282.tif 000008
【図８】
0004810282.tif 000009
【図９】
0004810282.tif 000010
【図１０】
0004810282.tif 000011
【図１１】
0004810282.tif 000012
【図１２】
0004810282.tif 000013
【図１３】
0004810282.tif 000014
【図１４】
0004810282.tif 000015
【図１５】
0004810282.tif 000016
【図１６】
0004810282.tif 000017
【図１７】
0004810282.tif 000018
【図１８】
0004810282.tif 000019
【図１９】
0004810282.tif 000020
【図２０】
0004810282.tif 000021
【図２１】
0004810282.tif 000022
【図２２】
0004810282.tif 000023