(57)【要約】      （修正有）【課題】ネットワークに接続できない環境でも、モジュールと機能の依存関係に応じて適正にモジュールの使用を管理できるインストール方法等を提供する。【解決手段】１つのパッケージに含まれる１以上のプログラムコンポーネント（ＰＣ）を、パッケージ単位で記憶装置にインストールする情報処理装置であって、インストール対象のパッケージに添付された設定ファイル（ｉｎｆファイル）を記憶する記憶媒体から、設定ファイルに登録されたＰＣのリストを読み出し、パッケージ情報記憶手段７４に記憶されたリストと突合し、既にインストールされていないＰＣのみをインストールするインストール手段と、インストールしたＰＣをインストール数と共にプログラム情報記憶手段７５に登録し、重複していることが検出されたＰＣのインストール数を１つ増加させるプログラム情報更新手段と、を有する。【選択図】図５
2010113476.tif 000002
【特許請求の範囲】
【請求項１】
１つのパッケージに含まれる１以上のプログラムコンポーネントを、パッケージ単位で記憶装置にインストールする情報処理装置であって、
記憶装置に既にインストールされているパッケージに含まれるプログラムコンポーネントのリストを記憶したパッケージ情報記憶手段と、
インストールされているプログラムコンポーネント毎にインストール数を記憶したプログラム情報記憶手段と、
インストール対象のパッケージに添付された設定ファイルを記憶する記憶媒体から、前記設定ファイルに登録されたプログラムコンポーネントのリストを読み出し、前記パッケージ情報記憶手段に記憶されたリストと突合し、既にインストールされているプログラムコンポーネントを検出する重複プログラム検出手段と、
既にインストールされていないプログラムコンポーネントのみをインストールするインストール手段と、
インストールしたプログラムコンポーネントをインストール数と共に前記プログラム情報記憶手段に登録し、重複していることが検出されたプログラムコンポーネントのインストール数を１つ増加させるプログラム情報更新手段と、
を有することを特徴とする情報処理装置。
【請求項２】
所定のパッケージをアンインストールする際、
前記パッケージ情報記憶手段に記憶されたリストを参照し、アンインストール対象のパッケージに含まれるプログラムコンポーネントが、他のパッケージに含まれているか否かを判定する削除判定手段と、
他のパッケージに含まれていない、アンインストール対象のパッケージに含まれるプログラムコンポーネントを消去するアンインストール手段と、を有し、
前記プログラム情報更新手段は、前記プログラム情報記憶手段に登録されている、アンインストール対象のパッケージに含まれ、かつ、他のパッケージにも含まれているプログラムコンポーネントのインストール数を１つ減少させる、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
インストールされたプログラムコンポーネントを起動又は起動可能状態にする有効化手段と、
起動又は起動可能状態のプログラムコンポーネントを起動不可状態にする無効化手段と、
を有することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
使用権限が認められたことを示すアクティベーション情報をパッケージ単位で生成するアクティベーション手段と、
アクティベーションにより生成されたアクティベーション情報を消去するディアクティベーション手段と、
を有することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記設定ファイルには、起動又は起動可能状態にするためにインストール後にアクティベーションが必要か否か登録されている、
ことを特徴とする請求項４記載の情報処理装置。
【請求項６】
既にインストールされているパッケージと同じパッケージをインストールする際、
同じプログラムコンポーネント同士のバージョンを比較するバージョン判定手段と、
インストール対象のパッケージに含まれていないプログラムコンポーネントを、記憶装置から削除する削除手段と、を有し、
前記インストール手段は、バージョンが新しいプログラムコンポーネントのみインストールする、
ことを特徴とする請求項１〜５いずれか１項記載の情報処理装置。
【請求項７】
複数のプログラムコンポーネントの起動順を登録した起動情報を記憶した起動順情報記憶手段と、
インストール対象のパッケージに添付された起動順定義ファイルに従い、前記起動情報に複数のプログラムコンポーネントの起動順を登録する起動順決定手段と、
を有することを特徴とする請求項１〜６いずれか１項記載の情報処理装置。
【請求項８】
既にインストールされているパッケージに含まれるプログラムコンポーネントのリストを記憶したパッケージ情報記憶手段と、
インストールされているプログラムコンポーネント毎にインストール数を記憶したプログラム情報記憶手段と、を有する情報処理装置に、
１つのパッケージに含まれる１以上のプログラムコンポーネントを、パッケージ単位でインストールするインストール方法であって、
重複プログラム検出手段が、インストール対象のパッケージに添付された設定ファイルを記憶する記憶媒体から、前記設定ファイルに登録されたプログラムコンポーネントのリストを読み出し、前記パッケージ情報記憶手段に記憶されたリストと突合し、既にインストールされているプログラムコンポーネントを検出するステップと、
インストール手段が、既にインストールされていないプログラムコンポーネントのみをインストールするステップと、
プログラム情報更新手段が、インストールしたプログラムコンポーネントをインストール数と共に前記プログラム情報記憶手段に登録し、重複していることが検出されたプログラムコンポーネントのインストール数を１つ増加させるステップと、
を有することを特徴とするインストール方法。
【請求項９】
既にインストールされているパッケージに含まれるプログラムコンポーネントのリストを記憶したパッケージ情報記憶手段と、
インストールされているプログラムコンポーネント毎にインストール数を記憶したプログラム情報記憶手段と、を有する情報処理装置に、
入力手段から、１つのパッケージに含まれる１以上のプログラムコンポーネントを、パッケージ単位でインストールする指示を受け付けるステップと、
インストール対象のパッケージに添付された設定ファイルを記憶する記憶媒体から、前記設定ファイルに登録されたプログラムコンポーネントのリストを読み出し、前記パッケージ情報記憶手段に記憶されたリストと突合し、既にインストールされているプログラムコンポーネントを検出するステップと、
既にインストールされていないプログラムコンポーネントのみをインストールするステップと、
インストールしたプログラムコンポーネントをインストール数と共に前記プログラム情報記憶手段に登録し、重複していることが検出されたプログラムコンポーネントのインストール数を１つ増加させるステップと、
を実行させるプログラム。
【請求項１０】
請求項９記載のプログラムを記載したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを情報処理装置にインストールする情報処理装置等に関し、特に、１つのパッケージに含まれる１以上のプログラムコンポーネントを、パッケージ単位でインストールする情報処理装置、インストール方法、プログラム及び記憶媒体に関する。
【背景技術】
【０００２】
プログラムを実行して種々の機能を実現する情報処理装置では、インストールするプログラムの増減に応じて機能を増減させることができ、ユーザは情報処理装置を購入した後でも、必要な機能を提供するプログラムを購入してインストールすることで、その機能を利用できるようになる。
【０００３】
プログラムの不正利用を防止する観点から、インストールされているプログラムを使用する権限を与えるライセンス情報を利用する技術が考えられている（例えば、特許文献１参照。）。特許文献１には、着脱可能な記録媒体に記憶しておき、記録媒体を情報処理装置に装着した場合に使用を認める情報処理装置において、さらに記録媒体の認証情報を情報処理装置に記憶しておく技術が開示されている。
【０００４】
ところで、このようなプログラムでは複数のモジュールが協調して１以上の機能を実現する構成を採用して、コンピュータや組み込み機器に実装する場合がある。例えば、Ａという機能は、モジュールａ１，ａ２、ａ３が協調することで実現されるような場合、Ａという機能のためモジュールａ１〜ａ３をインストールする。また、他の機能Bを実現したければ、機能Bに必要な１以上のモジュールｂ１等をインストールすればよく、ユーザは必要な場合に必要な機能を使用することができる。
【０００５】
しかしながら、機能とモジュールの間に複雑な関係が生じることも少なくなく、必要な機能を実現するためにインストールすべきモジュールをユーザが把握することは困難である。この点について、サーバがプログラムモジュール間の依存関係を考慮して、組み込みソフトウェアの更新に必要なモジュール群をクライアントである電子機器に送信するプログラムの実装方法が開示されている（例えば、特許文献２参照。）。
【特許文献１】特開２００６−２７９９３５号公報
【特許文献２】特開２００５−１３５８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献２記載の電子機器はサーバと通信できなければ、換言するとスタンドアローンの状態では新たな機能をインストールできないという問題がある。というのは、通信できない環境でも新たな機能を利用できるようにしておくには、予め、必要となると考えられるモジュール群を電子機器に記憶しておく必要があるが、予め記憶しておくとユーザが自由に使用できたり不正利用したりするおそれがある。このため、予め、モジュール群を電子機器に記憶しておく方法を採用するには、インストールしておいても、権限のないユーザが使用できず権限のあるユーザであれば使用可能となる仕組みが必要となる。
【０００７】
本発明は、上記課題に鑑み、ネットワークに接続できない環境でも、モジュールと機能の依存関係に応じて適正にモジュールの使用を管理できる情報処理装置、インストール方法、プログラム及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題に鑑み、本発明は、１つのパッケージに含まれる１以上のプログラムコンポーネントを、パッケージ単位で記憶装置にインストールする情報処理装置であって、記憶装置に既にインストールされているパッケージに含まれるプログラムコンポーネントのリストを記憶したパッケージ情報記憶手段と、インストールされているプログラムコンポーネント毎にインストール数を記憶したプログラム情報記憶手段と、インストール対象のパッケージに添付された設定ファイルを記憶する記憶媒体から、前記設定ファイルに登録されたプログラムコンポーネントのリストを読み出し、前記パッケージ情報記憶手段に記憶されたリストと突合し、既にインストールされているプログラムコンポーネントを検出する重複プログラム検出手段と、既にインストールされていないプログラムコンポーネントのみをインストールするインストール手段と、インストールしたプログラムコンポーネントをインストール数と共に前記プログラム情報記憶手段に登録し、重複していることが検出されたプログラムコンポーネントのインストール数を１つ増加させるプログラム情報更新手段と、を有することを特徴とする。
【発明の効果】
【０００９】
ネットワークに接続できない環境でも、モジュールと機能の依存関係に応じて適正にモジュールの使用を管理できる情報処理装置、インストール方法、プログラム及び記憶媒体を提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
まず、本願の画像形成装置１００におけるプログラムの実装態様（インストール態様）について説明する。本実施形態では、情報処理装置を備えた画像形成装置１００を例にして説明するが、情報処理装置を備えた電子機器、及び、パソコンのような情報処理装置そのものに好適に適用できる。
【００１１】
図１は、本実施形態の画像形成装置１００におけるインストールの概要を模式的に説明する図の一例である。まず、言葉の定義について説明する。本実施形態では、プログラムの実装にインストール、アクティベーション、有効化という概念を用いる。インストールとは、プログラムコンポーネントを画像形成装置１００の記憶装置（後述のＨＤＤ１５）に記憶することをいう。また、アクティベーションとは、その画像形成装置１００でそのプログラムを使用する権限を与えることをいい、原則的にアクティベーションによりインストールされたプログラムコンポーネントが有効化される（起動可能にする）。有効化とは、起動すること又はユーザの起動操作があればいつでもプログラムコンポーネントを起動可能とすることをいう。
【００１２】
なお、販売パッケージは、インストールした後にアクティベーションする必要がある場合と、インストールすることで自動的にアクティベーションされる場合がある。アクティベーションが必要か否かは販売パッケージの属性により定まる（ｉｎｆファイルに規定されている）。インストールした後にアクティベーションが必要な販売パッケージでは、アクティベーションしなければ有効化されずプログラムコンポーネントを起動できない。この場合、アクティベーションすることで同時に有効化もされる。
【００１３】
以上から、アクティベーションと有効化には次の関係がある。
・インストール時に自動的にアクティベーションされる販売パッケージ
インストールにより、アクティベーションかつ有効化
・インストール後にアクティベーションが必要な販売パッケージ
インストール後、アクティベーションすることで同時に有効化
・アクティベーションと有効化が別のプロセスの販売パッケージ
有効化により有効、無効化により無効
図１に基づき説明する。販売パッケージＡには２つの機能パッケージ１，２が含まれている。販売パッケージとは販売単位であり、１以上の機能パッケージが含まれている。機能パッケージは、インストールの最小単位でありプログラムコンポーネントと１対１に対応する（以下、原則的にプログラムコンポーネントを機能パッケージと称する）。
【００１４】
本実施形態のプログラムの実装を実現するため、画像形成装置１００は販売パッケージ情報７４と機能パッケージ情報７５を記憶している。図示するように、販売パッケージＡをインストールするまでは、販売パッケージ情報７４と機能パッケージ情報７５には何の情報も登録されていないか、販売パッケージ情報７４及び機能パッケージ情報７５そのものが記憶されていない。すなわち、販売パッケージ情報７４は、その画像形成装置１００に販売された販売パッケージを登録するファイルで、機能パッケージ情報７５は、販売された販売パッケージに含まれる機能パッケージを登録するファイルである。したがって、販売パッケージ情報７４及び機能パッケージ情報７５を参照することで、既に販売されている販売パッケージと機能パッケージを検出できる。
【００１５】
なお、販売パッケージの「名前」はユーザの管理しやすい名称、「ID」は固有の識別情報、「アクティベーション」は「○」「×」のいずれか状態を取り、「有効」は「○」「×」のいずれか状態を取り、「機能ＩＤリスト」はその販売パッケージが含む機能パッケージのIDが登録される。同様に、機能パッケージ情報７５の「名前」はユーザの管理しやすい名称、「ID」は固有の識別情報、「販売数」は販売された数、「有効販売数」は販売数のうち有効な機能パッケージの数、「有効」は「○」「×」のいずれかの状態を取る。
【００１６】
販売パッケージ情報７４と機能パッケージ情報７５に何も情報が登録されていない状況で、販売パッケージＡがインストールされるものとする。後述するプラグイン管理部７１は、販売パッケージ情報７４を参照して（記憶されていないことを確認して）、販売パッケージＡに含まれる機能パッケージ１，２をインストールする。
【００１７】
なお、販売パッケージＡに含まれる機能パッケージが何であるか（図１では機能パッケージ１，２）は、その販売パッケージに含まれるプログラムコンポーネントであるので明らかであるが、各販売パッケージにはｉｎｆファイルが添付されているので、ｉｎｆファイルを参照して含まれる各機能パッケージを特定できる。なお、ｉｎｆファイルには、販売パッケージの名前、ＩＤ、機能ＩＤリスト、販売パッケージのバージョン、販売パッケージが含む各機能パッケージのバージョン、さらにアクティベーションが必要か否か、等が登録されている。
【００１８】
インストール後の販売パッケージ情報７４には、販売パッケージＡの情報として、名前「dist１」、ID「１１１１」、アクティベーション「○」、有効「○」、機能IDリスト「２１１１，２２２２」が登録される。
【００１９】
アクティベーションするか否かは販売パッケージの属性として定められており、例えば販売時に定まるものである。図１はアクティベーションする販売パッケージを示すものであるため、アクティベーションの欄が「○」になっている。また、有効の欄はアクティベーションされると（有効になると）「○」になる。
【００２０】
機能パッケージ情報７５には、販売パッケージＡのインストールに伴いインストールされる機能パッケージの情報が登録される。したがって、名前「ｆｕｎｃ１」「ｆｕｎｃ２」、ＩＤ「２１１１」「２２２２」、販売数「１」「１」、有効販売数「１」「１」、有効「○」「○」が、それぞれ登録されている。販売数は各機能パッケージの販売数を、有効販売数はそのうち有効化されている機能パッケージの数を示す。これは同じ機能パッケージが複数販売されることがあるためである。販売パッケージＡには、１つの機能パッケージ１，１つの機能パッケージ２が含まれているので販売数は１つずつ増え、それぞれアクティベーションされるので有効販売数も１つずつ増える。また、有効の欄は、有効販売数が１つでもあれば「○」になる。
【００２１】
次に、インストールされてもアクティベーションされない販売パッケージのインストールについて図２に基づき説明する。なお、インストール対象は図１と同じである。販売パッケージＡのインストールに対応して、機能パッケージ１、２がインストールされるが、販売パッケージＡはアクティベーションされない。このため、インストール後の販売パッケージ情報７４のアクティベーションの欄は「×」であり、この結果、有効の欄も「×」である。
【００２２】
同様に、機能パッケージ情報７５では、機能パッケージ１，２がそれぞれ販売されたため販売数は「１」「１」となるが、アクティベーションされないので、有効の欄はそれぞれ「×」「×」となる。
【００２３】
以上のように、販売パッケージ単位で複数の機能パッケージをインストールする際、機能パッケージの重複、バージョン、アクティベーションの要・不要等に応じて、プログラムの実装形態が異なる。本実施例の画像形成装置１００は、このような状況に応じて適切にプログラムを実装する。
【００２４】
インストール単位を販売パッケージの単位とすることにより、機能単位でインストールするユーザは、開発単位であるプログラムコンポーネントの単位を意識する必要がない。また販売パッケージの単位をユーザにとって価値のある単位とすることにより、ユーザにとって使いやすい情報処理装置とすることができる。
【００２５】
〔画像形成装置１００〕
画像形成装置１００について簡単に説明する。図３は、画像形成装置１００のハードウェア構成図の一例を示す。画像形成装置１００は、コントローラ５０と、プロッタ２７、スキャナ２８、ファックス制御ユニット２６、及びその他ハードウェアリソース２９とがＰＣＩバス、ＰＣＩ−Ｘバス又はＰＣＩ−Ｅｘｐｒｅｓｓ等のシリアルインターバスで接続された構成となる。また、コントローラ５０には操作部２４が接続されている。なお、インストール管理プログラム２０を記憶する記憶媒体（メモリーカード３０）を示した。
【００２６】
コントローラ５０は、画像形成装置１００全体の制御、すなわち、ファックス制御ユニット２６、プロッタ２７，スキャナ２８及びその他ハードウェアリソース２９を用いて、原稿の読み取り、印刷、ファクシミリ送受信、操作部２４からの入力等を処理する制御部である。
【００２７】
プロッタ２７は、白黒プロッタ及び／又は１ドラムカラープロッタであり、印刷ジョブデータやスキャナ２８が読み取った画像データに基づき、１ページ毎の画像を形成し、用紙に転写する。例えば、レーザービームを用いた電子写真プロセスを使って、感光ドラム等に形成したトナー画像を用紙に転写し、定着装置により熱と圧力により定着して出力する。
【００２８】
また、スキャナ２８は、コンタクトガラスに載置された原稿を光学的に走査して、その反射光をＡ／Ｄ変換して誤差拡散やガンマ変換などの画像処理を施し所定の解像度のデジタルデータに変換し画像データを生成する。
【００２９】
ファックス制御ユニット２６は、ＮＣＵ（Network Control Unit）を介して公衆通信網に接続し、例えばＧ３、Ｇ４規格のファクシミリに対応した通信手順（通信プロトコル）等に従いファクシミリの送受信を行う。ファックス制御ユニット２６は、画像データにデータ圧縮や変調等の信号処理を施して送信すると共に、相手先から受信した画像データにデータの伸長やエラー訂正等を施し画像データを復元する。
【００３０】
コントローラ５０は、ＣＰＵ１１と、ノースブリッジ （以下、ＮＢ１３という）と、システムメモリ（以下、ＭＥＭ−Ｐ１２という）と、サウスブリッジ （以下、ＳＢという）と、ローカルメモリ（以下、ＭＥＭ−Ｃ１４という）と、ＡＳＩＣ（Application Specific Integrated Circuit）１６と、ハードディスクドライブ（以下、ＨＤＤ１５という）と、ワイヤレスＵＳＢホスト１７と、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）１８と、無線ＬＡＮＩ／Ｆ１９と、ＵＳＢホスト２２と、メモリカードＩ／Ｆ２３と、を有する。なお、ＡＳＩＣ１６とＮＢ１３の間はＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ ＧｒａｐｈｉｃｓＰｏｒｔ）で接続されている。
【００３１】
ＣＰＵ１１は、ＭＥＭ−Ｐ１２、ＡＳＩＣ１６、及び、ワイヤレスＵＳＢホスト１７等を結ぶバスに流通するデータの送信制御を行うＮＢ１３を介して、画像形成装置１００の全体を制御する。
【００３２】
ＮＢ１３は、ＣＰＵ１１とＭＥＭ−Ｐ１２、ＡＧＰとを接続するためのブリッジＩＣであり、ＭＥＭ−Ｐ１２は、画像形成装置１００の描画用メモリなどとして用いるシステムメモリである。
【００３３】
ＭＥＭ−Ｃ１４は、コピー用画像バッファ、符号バッファとして用いられるローカルメモリであり、ＡＳＩＣ１６は、多数のレジスタや論理回路を備え、各モータドライバの制御部の他、ヘッドパルス生成部等として機能する。また、ＡＳＩＣ１６は、ＡＧＰ、ＨＤＤ１５およびＭＥＭ−Ｃ１４をそれぞれ接続するブリッジの役割も果たす。
【００３４】
操作部２４は、ユーザからの入力操作の受け付け並びにユーザに向けた表示をおこなう操作部であり、キーボードの他にタッチパネルを入力手段として有し、ＬＣＤ（液晶ディスプレイ）等の表示部と兼用されている。
【００３５】
ＨＤＤ１５は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うための記憶手段であるが、フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory）など不揮発メモリなどでもよい。本実施形態ではＨＤＤ１５に、アクティベーションを管理するインストール管理プログラム２０、販売パッケージ情報７４，機能パッケージ情報７５、起動情報７７、プラグインコンポーネント７３が記憶されている。
【００３６】
ＡＧＰは、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、システムメモリに高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードの処理を高速化する。
【００３７】
ＮＩＣ１８は、例えばイーサネット（登録商標）カードであり、OSI基本参照モデルの物理層、データリンク層に規定されたプロトコルに従う処理を実行する。これに後述のメールアプリがＳＭＴＰやＰＯＰ３等の上位のプロトコルを実行して電子メールを送受信したり、ＷｅｂアプリがＦＴＰ、ＨＴＴＰなどのプロトコルを実行してライセンスファイルをライセンスサーバ２００や画像形成装置１００の間で送受信する。
【００３８】
無線ＬＡＮＩ／Ｆ１９は、例えばIEEE 802.11a/b/g等の通信規格に準拠し、アクセスポイントに介してＬＡＮ等のネットワークに接続する。
【００３９】
ＩＥＥＥ１３９４Ｉ／Ｆ２１は、ＩＥＥＥ１３９４の通信規格を備えた機器と通信するインターフェイスであり、複数台の機器をデイジーチェーン接続することができる。動画などのサイズの大きなデータを送信するのに適しており、接続される機器は、例えばデジタルカメラやビデオカメラ等である。
【００４０】
ＵＳＢホスト２２はＵＳＢコントローラと呼ばれるＩＣで、これをＣＰＵ１１が実行するデバイスドライバ（ドライバソフトウェア）が制御してＵＳＢＩ／Ｆを構成し、接続された例えばＵＳＢメモリ３１と通信する。同様に、メモリカードＩ／Ｆ２３は、メモリカード３０からデータを読み出しまた記録媒体にデータを書き込むインターフェイスである。メモリカード３０は、例えばＳＤカード、マルチメディアカード、ｘＤカード等である
〔ソフトウェアモジュール〕
図４は、画像形成装置１００のソフトウェアモジュールの一例を示す図である。ソフトウェアモジュールは、上記のプロッタ２７、スキャナ２８、その他ハードウェアリソース２９とＨＷ（Ｈａｒｄ  Ｗａｒｅ） Ｉ／Ｆを介して接続された構成となり、主に、プラットホーム８０とアプリケーション７０とから構成される。
【００４１】
プラットホーム８０は、アプリケーション７０からの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービス５５と、１以上のハードウェア資源の管理を行い、コントロールサービス５５からの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ６３）と、ＯＳ（Operating  System）６４と、インストール管理部６０と、を有する。
【００４２】
コントロールサービス５５は、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）６２と、ＥＣＳ（エンジンコントロールサービス）５６と、ＭＣＳ（メモリコントロールサービス）５７と、ＯＣＳ（オペレーションパネルコントロールサービス）５８と、ＦＣＳ（ファックスコントロールサービス）５９と、ＮＣＳ（ネットワークコントロールサービス）６１とから構成される。なお、プラットホーム８０は、あらかじめ定義されたプログラムによりアプリケーション７０から処理要求を受け取るＡＰＩ（プリケーションプログラムインタフェース）を有する。
【００４３】
ＯＳ６４は、ＬＩＮＵＸ（登録商標）やＵＮＩＸ(登録商標)などの汎用オペレーティングシステムであり、プラットホーム８０及びアプリケーション７０の各ソフトウェアをそれぞれプロセスとして並列に実行することができる。ＯＳ６４は、ＮＩＣ１８、無線ＬＡＮＩ／Ｆ１９、ＩＥＥＥ１３９４Ｉ／Ｆ２１、ＵＳＢホスト２２、及び、メモリカードＩ／Ｆ２３と通信する各種のデバイスドライバを有する。
【００４４】
ＳＲＭ６３は、ＳＣＳ６２とともにシステムの制御およびリソースの管理を行う。ＳＲＭ６３のプロセスは、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、ハードウェアリソースによる動作を制御する。
【００４５】
ＳＣＳ６２は、アプリ管理、操作部２４の制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御等を行う。ＥＣＳ５６は、ハードウェアリソースのエンジンの制御を行う。
【００４６】
ＭＣＳ５７は、画像メモリの取得および解放、ＨＤＤ１５の利用、画像データの圧縮および伸張などを行う。ＦＣＳ５９は、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ網を利用したファクシミリ送受信、バックアップＳＲＡＭに記憶されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのＡＰＩを提供する。
【００４７】
ＮＣＳ６１は、ネットワークＩ／Ｏを必要とするアプリケーション７０に対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーション７０に振り分けたり、アプリケーション７０からデータをネットワーク側に送信する際の仲介を行う。具体的には、ＦＴＰ等のプロトコルの各種デーモンや、同プロトコルのクライアント機能などを有している。
【００４８】
ＯＣＳ５８は、ユーザＡと本体制御間の情報伝達手段となる操作部（オペレーションパネル）２４の制御を行う。ＯＣＳ５８は、操作部２４からキー押下をキーイベントとして取得し、取得したキーに対応したキーイベント関数をＳＣＳ６２に送信する部分と、アプリケーション７０またはコントロールサービス５５からの要求により表示部２５に各種画面を描画出力する描画関数やその他操作部に対する制御を行う関数などがあらかじめ登録されたＯＣＳ関数ライブラリの部分とから構成される。
【００４９】
アプリケーション７０は、電子メールを送受信するメールアプリ４９、プリンタ用のプリンタアプリ５１と、コピー用のコピーアプリ５２と、ファクシミリ用のファックスアプリ５３と、スキャナ２８用のスキャナアプリ５４と、を有している。
【００５０】
コントロールサービス５５には、インストール管理部６０が設けられる。インストール管理部６０は、コントロールサービス５５でプロセスとして動作し、機能パッケージを構成する各種のプラグインコンポーネント７３、アクティベーション、ディアクティベーション、有効化／無効化等の種々の処理を実行する。
【００５１】
〔インストール管理部６０〕
図５は、インストール管理部６０の機能ブロック図の一例を示す。インストール管理部６０は、ＣＰＵ１１がインストール管理プログラム２０を実行するか所定の演算回路により実現される、プラグイン管理部７１及びプラグインスタータ７２を有する。
【００５２】
プラグイン管理部７１は、各種プラグインコンポーネント７３のインストール/アンインストール、アクティベーション／ディアクティベーション、有効化／無効化などの処理を実行する。プラグインスタータ７２は、起動情報７７を参照し、画像形成装置１００のシステムの起動時に、各プラグインコンポーネント７３の起動処理を実行する。すなわち、プラグインスタータ７２は、起動情報７７に登録されているプラグインコンポーネント７３を起動する。
【００５３】
プラグインコンポーネント７３、販売パッケージ情報７４及び機能パッケージ情報７５は、例えばＨＤＤ１５に記憶される。プラグインコンポーネント７３は、画像形成装置１００にインストールされる各種のプログラムをいい、プラグイン管理部７１が管理する機能パッケージと1対1で対応するものである。
【００５４】
〔プラグイン管理部７１の機能ブロック図〕
図６は、プラグイン管理部７１の機能ブロック図の一例を示す。インストール部８１は、例えば、メモリーカード３０に記憶された販売パッケージをＨＤＤ１５にインストールする。具体的には販売パッケージ毎に、販売パッケージが含む機能パッケージ（プラグインコンポーネント７３）をインストールする。
【００５５】
アクティベーション部８２は、その販売パッケージの属性又はユーザの指示に応じて、販売パッケージと販売パッケージに含まれる機能パッケージをアクティベーションする。有効化部８３は、機能パッケージを有効化する。インストールはアクティベーションを、アクティベーションは有効化を含む場合があるので図示するように上位の機能は下位の機能を備える。
【００５６】
同様に、ＨＤＤ１５から機能パッケージを削除するアンインストール部８７、ディアクティベーションするディアクティベーション部８８、無効化する無効化部８９を備える。詳細は後述する。処理内容決定部９１は、アンインストール時に、機能パッケージをアンインストールするか、無効化するか、何もしないかの処理内容を決定する。
【００５７】
また、販売パッケージ情報更新部９３は、販売パッケージ情報７４を更新し、機能パッケージ情報更新部９２は機能パッケージ情報７５を更新する。重複機能検出部８４は、ｉｎｆファイルを参照しこれからインストールする販売パッケージに含まれる機能パッケージのうち、既にインストールされている機能パッケージと重複するものを検出する。バージョン判定部８５は、重複した機能パッケージについて、どちらのバージョンが新しいかを判定する。削除部８６は、アップデートにより販売パッケージに含まれなくなった機能パッケージを削除する。以下、これらの機能ブロックを用いた本実施形態のプログラムの実装を詳細に説明する。
【００５８】
〔プログラムの種々の実装態様〕
以下、インストールされている販売パッケージの有無、インストール時のアクティベーションの有無等に応じた種々のプログラムの種々の実装態様について説明する。
＜インストール・アクティベーション不要＞
インストール時にアクティベーションされるプログラムの実装態様について図7に基づき説明する。すでに画像形成装置１００には販売パッケージＢがインストールされている。このため、販売パッケージ情報７４には、販売パッケージＢの情報が登録されている。図示するように販売パッケージＢはアクティベーションされておらず有効の欄は「×」となっている。
【００５９】
販売パッケージＢには、２つの機能パッケージ２，３が含まれる。このため、機能パッケージ情報７５には機能パッケージ２，３の情報がそれぞれ登録されているが、販売パッケージＢがアクティベーションされていないので、機能パッケージ２，３の有効販売数はそれぞれ「０」「０」となっている。
【００６０】
この状態でアクティベーションの不要な販売パッケージＡを販売した場合、インストール管理部は、必要な機能パッケージのみをインストールする。重複機能検出部８４は、これからインストールする販売パッケージに含まれる機能パッケージのうち、既にインストールされている機能パッケージと重複するものを検出する。販売パッケージＡには、機能パッケージ１，２が含まれ、既にインストールされている販売パッケージには機能パッケージ２、３が含まれる。したがって、重複機能検出部８４は機能パッケージ２が重複していることを検出する。インストール部８１は、検出された機能パッケージ２をインストールしない。
【００６１】
したがって、インストール部８１は、機能パッケージ１のみをインストールする。また、アクティベーション部８２は、ｉｎｆファイルを参照しインストール時にアクティベーションされる販売パッケージであることを検出して、インストールした機能パッケージ１をアクティベーションし、有効化部は機能パッケージ１を有効化する。なお、販売パッケージＢは有効化されていないままである。
【００６２】
販売パッケージ情報更新部９３は、販売パッケージ情報７４に機能パッケージ１の情報を登録し、登録の際、有効の欄を「○」とする。また、機能パッケージ情報更新部９２は、機能パッケージ情報７５に新たにインストールされた機能パッケージ１の情報を登録する。機能パッケージ１は、それまで機能パッケージ情報７５に登録されていなかったので、新たに名前等が登録される。販売数は「１」で、販売パッケージＡはアクティベーションされたので有効販売数は「１」となる。
【００６３】
一方、機能パッケージ２はすでに機能パッケージ情報７５に登録されているため、販売数が１つ増え「２」となる。これに対し、既にインストールされていた機能パッケージ２はアクティベーションされず、新たにインストールされた機能パッケージ２のみがアクティベーションされたので、有効販売数は「１」のままである。
【００６４】
以上説明したように、既にインストールされている機能パッケージはインストールされず、機能パッケージ情報７５の販売数だけが増大する点が、本実施形態の画像形成装置１００の特徴の１つである。
【００６５】
＜インストール・アクティベーション必要＞
インストール時にアクティベーションされないプログラムの実装態様について図８に基づき説明する。アクティベーションは、使用権限を認めること、使用権限を認めたことを示すアクティベーション情報を生成すること、等をいう。アクティベーション情報は、例えば、プログラムコンポーネントのシリアル番号と、画像形成装置１００又はユーザの識別情報を関連付けた認証情報である。アクティベーション情報により、プログラムコンポーネントだけをコピーしても他の情報処理装置では利用を困難にすることができる。
【００６６】
図８では、図7と同様にすでに販売パッケージＢがインストールされた状態で、販売パッケージＡをインストールするが、図8では販売パッケージＡはアクティベーションされない。販売パッケージＡがインストールされる前の販売パッケージ情報７４と機能パッケージ情報７５は図7と同じである。
【００６７】
この状態でアクティベーションが必要な販売パッケージＡを販売した場合、重複機能検出部８４は、機能パッケージ２が重複していることを検出し、インストール部８１は、重複していない機能パッケージ１のみをインストールする。また、アクティベーション部８２は、インストール時にアクティベーションしない販売パッケージであることを検出するので、機能パッケージ１をアクティベーションしない。なお、販売パッケージＢは有効化されていないままである。
【００６８】
販売パッケージ情報更新部９３は、販売パッケージ情報７４に機能パッケージ１の情報を登録し、登録の際、有効の欄を「×」とする。また、機能パッケージ情報更新部９２は、機能パッケージ情報７５に新たにインストールされた機能パッケージ１の情報を登録する。機能パッケージ１は、それまで機能パッケージ情報７５に登録されていなかったので、新たに名前等が登録される。販売数は「１」で、販売パッケージＡはアクティベーションされないので有効販売数は「０」となる。
【００６９】
一方、機能パッケージ２はすでに機能パッケージ情報７５に登録されているため、販売数が１つ増え「２」となる。これに対し、既にインストールされていた機能パッケージ２はアクティベーションされず、新たにインストールされた機能パッケージ２もアクティベーションされないので、有効販売数は増えることなく「０」となる。
【００７０】
＜インストール・アクティベーション不要（バージョン違い）＞
同じ機能パッケージが既にインストールされているが、バージョンが異なる場合のインストールについて図9に基づき説明する。
図9では、すでに画像形成装置１００に販売パッケージＢがインストールされ、アクティベーションされている。このため、販売パッケージ情報７４の販売パッケージＢでは、アクティベーションと有効の欄がそれぞれ「○」となっている。
【００７１】
販売パッケージＢには、２つの機能パッケージ２，３が含まれるので、機能パッケージ情報７５には機能パッケージ２，３の情報がそれぞれ登録されている。販売パッケージＢがアクティベーションされているので、機能パッケージ２，３の有効販売数はそれぞれ「１」「１」となっている。
【００７２】
この状態でアクティベーションの不要な販売パッケージＡを販売してインストールする。ここで、重複機能検出部８４は、機能パッケージ２が重複していることを検出するが、バージョン判定部８５は、重複した機能パッケージがある場合、どちらのバージョンが新しいかを判定する。図９では、販売パッケージＡの機能パッケージ２のバージョンが「２」で、販売パッケージＢの機能パッケージ２のバージョンが「１」であるので、既にインストールされている機能パッケージ２の方がバージョンが古い。このため、インストール部８１は、重複していても、販売パッケージＡに含まれる機能パッケージ２をインストールする。これにより、機能パッケージ２をバージョンアップすることができる。
【００７３】
販売パッケージ情報７４と機能パッケージ情報７５の登録・更新は上記のとおりである。すなわち、販売パッケージ情報更新部９３は、販売パッケージ情報７４に機能パッケージ１の情報を登録する。販売パッケージＡはアクティベーションが不要なので、アクティベーションの欄は「○」、有効の欄は「○」になる。
【００７４】
また、機能パッケージ情報更新部９２は、機能パッケージ情報７５に機能パッケージ１の情報を登録する。機能パッケージ１はアクティベーションが不要なので、有効販売数は「１」、有効の欄は「○」になる。また、機能パッケージ情報７５がバージョンの欄を有する場合には機能パッケージのバージョンを登録する。
【００７５】
また、機能パッケージ２が販売パッケージＡに含まれていたので、機能パッケージ情報更新部９２は、機能パッケージ２の販売数を１つ増やし「２」にして、有効販売数も１つ増やして「２」にする。なお、同じ機能パッケージの異なるバージョンがインストールされた場合、バージョンアップ後のバージョンが登録される。
【００７６】
＜インストール・アクティベーション必要（バージョン違い）＞
同様に、異なるバージョンで同じ機能パッケージをインストールする場合において、アクティベーションが必要な場合を図１０に基づき説明する。インストール前の販売パッケージ情報７４と機能パッケージ情報７５は図９と同じである。したがって、インストール部８１は、機能パッケージ２がすでにインストールされていても、バージョンが新しい販売パッケージＡに含まれる機能パッケージ２をインストールする。
【００７７】
販売パッケージ情報更新部９３は、販売パッケージ情報７４に機能パッケージ１の情報を登録する。販売パッケージＡはアクティベーションが必要なので、アクティベーションの欄は「×」、有効の欄は「×」になる。
【００７８】
また、機能パッケージ情報更新部９２は、機能パッケージ情報７５に機能パッケージ１の情報を登録する。機能パッケージ１はアクティベーションが必要なので、販売数は「１」でも有効販売数は「０」、有効の欄は「×」になる。
【００７９】
また、機能パッケージ２が販売パッケージＡに含まれていたので、機能パッケージ情報更新部９２は、機能パッケージ２の販売数を１つ増やし「２」にする。しかし、販売パッケージＡはアクティベーションが必要なので、有効販売数は増えず「１」のままである。
【００８０】
＜インストール・アクティベーション不要（バージョン違い２）＞
同じ機能パッケージが既にインストールされており両者のバージョンが異なるが、後からインストールする機能パッケージのバージョンの方が古い場合について図１１に基づき説明する。なお、図１１において図９と同一部の説明は省略する。
【００８１】
図１１では、これからインストールする販売パッケージＡに含まれる機能パッケージ２のバージョンが「１」で、販売パッケージＢに含まれる機能パッケージ２のバージョンが「２」であるので、既にインストールされている機能パッケージ２の方がバージョンが新しい。このような場合、販売パッケージＡに含まれる機能パッケージ２をインストールする必要はない。
【００８２】
なお、インストールによる販売パッケージ情報７４と機能パッケージ情報７５の変化は図９と同じである。
【００８３】
＜インストール・アクティベーション必要（バージョン違い２）＞
図１１と同様の状況で、販売パッケージＡのアクティベーションが必要な場合を図１２に基づき説明する。なお、図１２において図１０と同一部の説明は省略する。図１２では、これからインストールする販売パッケージＡに含まれる機能パッケージ２のバージョンが「１」で、販売パッケージＢに含まれる機能パッケージ２のバージョンが「２」であるので、既にインストールされている機能パッケージ２の方がバージョンが新しい。このような場合、販売パッケージＡに含まれる機能パッケージ２をインストールする必要はない。
【００８４】
なお、インストールによる販売パッケージ情報７４と機能パッケージ情報７５の変化は図１０と同じである。
【００８５】
＜アップデート＞
同じ販売パッケージのアップデートについて説明する。図１３は、販売パッケージＡのアップデートを説明する図の一例である。販売パッケージのアップデートでも機能パッケージ毎にインストールされるのはこれまでと同じである。アップデートという実装態様は、ユーザが意識的か無意識かに関わらず同じ販売パッケージをインストールする際に生じる状況であり、インストールの一形態である。
【００８６】
画像形成装置１００にすでにバージョン「１」の販売パッケージＡがインストールされている状態で、ユーザは新しいバージョン「２」の販売パッケージＡをインストール（アップデート）する。販売パッケージＡには、機能パッケージ１，２が含まれているが、機能パッケージ２のバージョンはいずれも「２」であり変化がない。このような場合は、バージョンが新しくなった機能パッケージのみをインストールすればよい。
【００８７】
したがって、バージョン判定部８５は、機能パッケージ毎にバージョンを比較して、バージョンが新しい機能パッケージのみをインストールするよう、インストール部８１に要求する。以上から、インストール部８１は、販売パッケージＡの機能パッケージ１のみインストールする。
【００８８】
アップデートの場合、販売パッケージ情報７４と機能パッケージ情報７５とで変化があるのはバージョンの欄だけである。販売パッケージ情報更新部９３は、販売パッケージ情報７４のバージョンの欄を「１」から「２」に更新し、機能パッケージ情報更新部９２は、機能パッケージ１のバージョンの欄を「１」から「２」に更新する。なお、機能パッケージ２はアップデートされなかったので機能パッケージ２のバージョンの欄は変更がない。
【００８９】
＜アップデート２＞
同じ販売パッケージのアップデートの別の形態について図１４に基づき説明する。アップデートの際、機能パッケージの一部又は全てが一新される場合がある。このような場合、同じ販売パッケージでもアップデートにより異なる機能パッケージに切り替わったり追加される場合がある。
【００９０】
図１４では、バージョン「２」の販売パッケージＡは、バージョン「１」の販売パッケージＡに含まれていた機能パッケージ２がなくなり、新たに機能パッケージ３が含まれるようになっている。このような場合、機能パッケージ２はインストールしている必要がない。そこで、削除部８６は、新たなバージョンの販売パッケージに含まれていて、古いバージョンの販売パッケージに含まれていない機能パッケージを検出し、その機能パッケージを削除する。削除とはＨＤＤ１５から消去することをいい、アンインストールと同義である。
【００９１】
なお、インストール部８１は、新しいバージョンの販売パッケージ１にのみ含まれている機能パッケージ３をインストールする。この機能パッケージ３をアクティベーションするか否かはアップデート前の販売パッケージの状況に従う。
【００９２】
図１４では、機能パッケージ２が新しい販売パッケージＡに含まれなくなったので、削除部８６は機能パッケージ２を削除する。また、インストール部８１は、バージョンが新しくなった機能パッケージ１と、新たに追加された機能パッケージ３をインストールする。
【００９３】
販売パッケージ情報更新部９３は、販売パッケージ情報７４のバージョンの欄を「１」から「２」に更新し、機能パッケージ情報更新部９２は、機能パッケージ１のバージョンの欄を「１」から「２」に更新する。また、機能パッケージ情報更新部９２は、機能パッケージ情報７５から機能パッケージ２の情報を削除する。そして、新たにインストールした機能パッケージ３の情報を登録する。アップデート前の機能パッケージ２の有効の欄が「○」なので、機能パッケージ３の有効販売数は「１」、有効の欄も「○」になる。
【００９４】
＜インストールの処理手順＞
図１５は、以上のインストール手順を説明するフローチャート図の一例である。図１５ではユーザからの指示によりインストールが開始されるとした（Ｓ１０）。
【００９５】
まず、インストール部８１は、ＨＤＤ１５へのアクセスが可能か否かを判定する（Ｓ２０）。アクセスが可能とは、例えばアクセスする権限があることをいう。アクセスが可能でない場合、ＨＤＤ１５へのアクセスを可能にできるか否かを判定する（Ｓ３０）。アクセスを可能にするとは、例えば、アクセス権限のあるログイン名で新たにログインしたり、ＨＤＤ１５のセキュリティを調整することである（Ｓ４０）。最終的にＨＤＤ１５にアクセスできなければ（Ｓ３０のＮｏ）、図１５の処理を終了する。
【００９６】
ＨＤＤ１５へのアクセスが可能な場合（Ｓ２０のＹｅｓ、Ｓ３０のＹｅｓ）、インストールする予定の販売パッケージを用意する（Ｓ５０）。販売パッケージの用意の方法はいくつかあり、例えばサーバからダウンロードすること、ＨＤＤ１５に記憶されているファイルを解凍すること、メモリカード３０等の記録媒体を画像形成装置１００に装着して読み出すこと等ができる。いずれの場合もｉｎｆファイルが添付されている（各記憶メディアに記憶されている）。
【００９７】
インストール部８１は、この用意された販売パッケージの正当性を確認する（Ｓ６０）。正当性の確認は、例えばユーザが入力したキーコードが販売パッケージに格納されているキーコードと一致するか否か、販売パッケージに格納されている使用可能期間内か否か、画像形成装置１００の識別番号に対応づけられているか否か、等により判定される。
【００９８】
正当性が確認されない場合（Ｓ７０のＮｏ）、インストール部８１は不当な販売パッケージをインストールしようとした場合の後処理を行う（Ｓ８０）。例えば、エラーメッセージの表示等である。
【００９９】
正当性が確認された場合（Ｓ７０のＹｅｓ）、インストール部８１は販売パッケージの情報ファイル（＊．ｉｎｆ）から販売パッケージの情報を取得する（Ｓ９０）。ｉｎｆファイルには、販売パッケージの名前、ＩＤ、機能ＩＤリスト、販売パッケージのバージョン、販売パッケージが含む各機能パッケージのバージョン、アクティベーションの要・不要が登録されている。インストール部８１は、機能パッケージに関する情報をｉｎｆファイルから読み出す（Ｓ１００）。
【０１００】
そして、重複機能検出部８４は、販売パッケージに含まれる機能パッケージが既に画像形成装置１００にインストールされているか否かを確認し（Ｓ１１０）、インストール部８１は販売パッケージに含まれる機能パッケージ毎に、画像形成装置１００のインストール状況に応じた処理を実行する（Ｓ１２０）。すなわち、
・まだインストールされていない機能パッケージはインストールする。
・インストールされているがバージョンが古い場合は新しい機能パッケージをインストールする。
・インストールされておりバージョンが同等以上の場合はインストールしない。
・新たなバージョンの販売パッケージに含まれていて、古いバージョンの販売パッケージに含まれていない機能パッケージは削除する。
【０１０１】
ついで、販売パッケージ情報更新部９３はインストールした販売パッケージ情報７４を更新し、機能パッケージ情報更新部９２はインストールした機能パッケージに関し機能パッケージ情報７５を更新する（Ｓ１３０）。インストール部８１等は以上の処理を機能パッケージ毎に繰り返し実行する。
【０１０２】
＜アクティベーション＞
インストール後にアクティベーションが必要な販売パッケージのアクティベーションについて図１６に基づき説明する。図２において説明したように、アクティベーションが必要な販売パッケージでは、ＨＤＤ１５にインストールされてもアクティベーションされなければ起動することができない。インストールされたがアクティベーションされていない販売パッケージＡの販売パッケージ情報７４は、アクティベーションの欄が「×」、有効の欄も「×」である。当然ながら、機能パッケージ情報７５の有効販売数の欄も全て「０」になっている。
【０１０３】
アクティベーション部８２は、例えば、ユーザからの指示により販売パッケージＡをアクティベーションする。アクティベーションにより同時に有効化される。アクティベーションされると、販売パッケージ情報更新部９３は、販売パッケージ情報７４のアクティベーションの欄と有効の欄にそれぞれ「○」を登録する。また、機能パッケージ情報更新部９２は、機能パッケージ１、２の有効販売数をそれぞれ「１」に増やし、有効の欄にそれぞれ「○」を登録する。
【０１０４】
＜有効化＞
有効化とは、起動することや最終的な使用が許可された状態とすることである。アクティベーションされたが有効化されてない状態となることがあるが、アクティベーションしておけば、有効化は簡単な処理で完了するので、販売パッケージを起動可能な状態の直前の状態にしておくことができ、いつもで起動を許可することができる。
【０１０５】
図１７は、販売パッケージの有効化を説明する図の一例である。すでに販売パッケージＡはアクティベーションされているが有効化されていないので、販売パッケージ情報７４のアクティベーションの欄は「○」が、有効の欄は「×」がそれぞれ登録されている。販売パッケージが有効化されていないので、機能情報パッケージの有効販売数の欄は「０」であり、有効の欄も「×」である。
【０１０６】
例えば、ユーザからの指示、タイマー、ＨＤＤ１５のアクセスが許可されたこと、などをトリガーに、有効化部８３は、販売パッケージＡを有効化する。すなわち、機能パッケージ１，２をそれぞれ有効化する。
【０１０７】
有効化されると、販売パッケージ情報更新部９３は、販売パッケージ情報７４の有効の欄に「○」に登録する。また、機能パッケージ情報更新部９２は、機能パッケージ１、２の有効販売数をそれぞれ「１」に増やし、有効の欄にそれぞれ「○」を登録する。
【０１０８】
＜アクティベーション（一部機能パッケージを共有）＞
アクティベーションは販売パッケージ毎に行われるので、複数の販売パッケージがインストールされた状態でアクティベーションすると、アクティベーションした販売パッケージに含まれる機能パッケージが、別の販売パッケージに含まれている場合がある。しかしながら、このような場合でもアクティベーションされるのは１つの機能パッケージだけである。
【０１０９】
図１８は、インストール後にアクティベーションが必要な販売パッケージのアクティベーションを説明する図の一例である。画像形成装置１００には販売パッケージＡとＢがインストールされているが、販売パッケージＡはアクティベーションされておらず販売パッケージＢはアクティベーションされている。したがって、インストールされたがアクティベーションされていない販売パッケージＡの販売パッケージ情報７４は、アクティベーションの欄が「×」、有効の欄も「×」、販売パッケージＢの販売パッケージ情報７４は、アクティベーションの欄が「○」、有効の欄も「○」である。
【０１１０】
これに対応して、機能パッケージ情報７５において、機能パッケージ１の販売数は「１」、有効販売数は「０」、有効の欄は「×」である。また、機能パッケージ２の販売数は「２」、有効販売数は「１」、有効の欄は「○」である。機能パッケージ３の販売数は「１」、有効販売数は「１」、有効の欄は「○」である。
【０１１１】
アクティベーション部８２は、例えば、ユーザからの指示により販売パッケージＡをアクティベーションする。アクティベーションにより同時に有効化されるが、機能パッケージ２はすでに有効化されているので、有効化する必要はない。
【０１１２】
アクティベーションされると、販売パッケージ情報更新部９３は、販売パッケージ情報７４のアクティベーションの欄と有効の欄にそれぞれ「○」に登録する。また、機能パッケージ情報更新部９２は、機能パッケージ１の有効販売数を「１」に増やし、有効の欄に「○」を登録する。また、機能パッケージ２の有効販売数も１つ増え「２」になる。
【０１１３】
＜有効化（一部機能パッケージを共有）＞
アクティベーションだけされ有効化を後から実行する場合も、アクティベーションと有効化を同時に実行する場合と同様である。
【０１１４】
図１９は、アクティベーション後の有効化を説明する図の一例である。画像形成装置１００には販売パッケージＡとＢがインストールされているが、販売パッケージＡは有効化されておらず、販売パッケージＢはアクティベーションかつ有効化されている。したがって、インストールされたが有効化されていない販売パッケージＡの販売パッケージ情報７４は、アクティベーションの欄が「○」、有効の欄は「×」、販売パッケージＢの販売パッケージ情報７４は、アクティベーションの欄が「○」、有効の欄も「○」である。
【０１１５】
これに対応して、機能パッケージ情報７５において、機能パッケージ１の販売数は「１」、有効販売数は「０」、有効の欄は「×」である。また、機能パッケージ２の販売数は「２」、有効販売数は「１」、有効の欄は「○」である。機能パッケージ３の販売数は「１」、有効販売数は「１」、有効の欄は「○」である。
【０１１６】
例えば、ユーザからの指示、タイマー、ＨＤＤ１５のアクセスが許可されたこと、などをトリガーに、有効化部８３は、販売パッケージＡを有効化する。有効化の具体的な作業は、図１５と同様である。すなわち、有効化部８３は機能パッケージ１を有効化する。なお、機能パッケージ２は既に有効化されているので、有効化する必要はない。
【０１１７】
有効化されると、販売パッケージ情報更新部９３は、販売パッケージ情報７４の有効の欄に「○」に登録する。また、機能パッケージ情報更新部９２は、機能パッケージ１の有効販売数を「１」に増やし、有効の欄に「○」を登録する。また、機能パッケージ２の有効販売数も１つ増え「２」になる。
【０１１８】
＜有効化の処理手順＞
図２０は、有効化手順を説明するフローチャート図の一例である。図２０ではユーザからの指示により有効化が開始されるとした。なお、アクティベーションの処理は有効化と同じであるので省略した。また、図２０において図１５と同一ステップには同じ符号を付しその説明は簡単に行う。
【０１１９】
まず、有効化部８３は、ＨＤＤ１５へのアクセスが可能か否かを判定する（Ｓ２０〜Ｓ４０）。ＨＤＤ１５へのアクセスが可能な場合（Ｓ２０のＹｅｓ、Ｓ３０のＹｅｓ）、有効化は機能パッケージ毎に実行するので、有効化部８３は有効化対象の販売パッケージに含まれる機能パッケージを特定する（Ｓ２１０）。
【０１２０】
図２１は、ステップＳ２１０の機能パッケージの特定手順を説明するフローチャート図である。すなわち、有効化部８３は販売パッケージ情報７４、機能パッケージ情報７５をＨＤＤ１５から読み出す（Ｓ２１０１）。そして、有効化の対象となっている販売パッケージが含む機能パッケージ（機能ＩＤリスト）を特定する（Ｓ２１０２）。以上で、有効化すべき機能パッケージを特定できた。
【０１２１】
図２０に戻り、有効化部８３は機能パッケージ情報７５を参照して、有効化する機能パッケージの現在の状態を確認する（Ｓ２２０）。他の販売パッケージに含まれている機能パッケージではすでに有効化されている可能性があるからである。
【０１２２】
有効化する機能パッケージが既に有効化されている場合（Ｓ２３０の無効状態）、有効化する必要はないので次の機能パッケージの処理に移行する。
【０１２３】
有効化する機能パッケージが有効化されていない場合（Ｓ２３０の有効状態）、有効化部８３はその機能パッケージを有効化する（Ｓ２４０）。以上の処理を、有効化する販売パッケージに含まれる機能パッケージについて繰り返す。
【０１２４】
全ての機能パッケージの有効化処理が完了すると、販売パッケージ情報更新部９３は販売パッケージ情報７４を更新し、機能パッケージ情報更新部９２は機能パッケージ情報７５を更新する（Ｓ２５０）。
【０１２５】
〔実装後のアンインストール、ディアクティベーション、無効化〕
これまで、プログラムの実装態様について説明してきたが、実装とは逆方向のプロセスを辿ることも可能である。すなわち、アンインストールによりHDD１５から販売パッケージを削除し、ディアクティベーションによりアクティベーションされていない状態にし、無効化により有効化されていない状態にすることができる。なお、ディアクティベーションされると同時に無効化される。インストール、アクティベーション、有効化の順に起動状態に近づくという意味では、無効化と有効化が対応し、ディアクティベーションとアクティベーションが対応し、インストールとアンインストールが対応する。以下、順に説明する。
【０１２６】
＜無効化＞
無効化とは有効化した販売パッケージを有効でない状態にすることをいう。無効化により、アクティベーションされているが有効化されてない状態となる。
【０１２７】
図２２は、販売パッケージの無効化を説明する図の一例である。販売パッケージＡはアクティベーションされ有効化されている。このため、販売パッケージ情報７４のアクティベーションの欄と有効の欄はそれぞれ「○」が登録されている。販売パッケージＡが有効化されているので、機能パッケージ１，２の有効販売数の欄は共に「１」であり、有効の欄も共に「○」である。
【０１２８】
例えば、ユーザからの指示、有効期間切れによる更新要求などをトリガーに、無効化部８９は、販売パッケージＡを有効化する。完全にディアクティベーションやアンインストールする前に無効化することで、期限切れ等を知らせるメッセージを確認した後、再度、有効化するなどの使い方が可能になる。無効化部８９は、例えばプログラムコンポーネントを終了させるなど、簡単な処理で使用を中断、禁止するものである。
【０１２９】
無効化されると、販売パッケージ情報更新部９３は、販売パッケージ情報７４の有効の欄に「×」に登録する。また、機能パッケージ情報更新部９２は、機能パッケージ１、２の有効販売数にそれぞれ「０」を登録し、有効の欄にそれぞれ「×」を登録する。
【０１３０】
＜無効化の処理手順＞
図２３は、無効化手順を説明するフローチャート図の一例である。図２３ではユーザからの指示により無効化が開始されるとした。また、図２３において図２０と同一ステップには同じ符号を付しその説明は簡単に行う。
【０１３１】
まず、無効化部８９は、ＨＤＤ１５へのアクセスが可能か否かを判定する（Ｓ２０〜Ｓ４０）。ＨＤＤ１５へのアクセスが可能な場合（Ｓ２０のＹｅｓ、Ｓ３０のＹｅｓ）、無効化は機能パッケージ毎に実行するので、無効化部８９は無効化対象の販売パッケージに含まれる機能パッケージを特定する（Ｓ２１０）。ステップＳ２１０の処理は図２１に示したとおりである。次いで、無効化部８９は機能パッケージ情報７５を参照して、無効化する機能パッケージの現在の状態を確認する（Ｓ３２０）。その機能パッケージではすでに無効化されている可能性があるからである。
【０１３２】
無効化する機能パッケージが既に無効化されている場合（Ｓ３３０の無効状態）、無効化する必要はないので次の機能パッケージの処理に移行する。
【０１３３】
無効化する機能パッケージが無効化されていない場合（Ｓ３３０の有効状態）、無効化部８９は、無効化しようとした機能パッケージが他の有効な販売パッケージに含まれているか否かを確認する（Ｓ３４０）。１つでも有効な販売パッケージがあればその有効性が優先されるからである。
【０１３４】
含まれている場合（Ｓ３５０の含まれている）、無効化できないので次の機能パッケージの処理に移行する。
【０１３５】
含まれていない場合（Ｓ３５０の含まれていない）、無効化部８９はその機能パッケージを無効化する（Ｓ３６０）。以上の処理を、有効化する販売パッケージに含まれる機能パッケージについて繰り返す。
【０１３６】
全ての機能パッケージの無効化処理が完了すると、販売パッケージ情報更新部９３は販売パッケージ情報７４を更新し、機能パッケージ情報更新部９２は機能パッケージ情報７５を更新する（Ｓ３７０）。
【０１３７】
＜ディアクティベーション＞
ディアクティベーションとはアクティベーションかつ有効化された状態の販売パッケージをアクティベーションされていない状態にすることをいう。ディアクティベーションにより、例えば、アクティベーションする権限を残して機能パッケージを起動できない状態にでき、別の画像形成装置１００や情報処理装置において改めてアクティベーションすることができる。
【０１３８】
図２４は、販売パッケージのディアクティベーションを説明する図の一例である。販売パッケージＡはアクティベーションされ有効化されている。このため、販売パッケージ情報７４のアクティベーションの欄と有効の欄はそれぞれ「○」が登録されている。販売パッケージＡが有効化されているので、機能パッケージ１，２の有効販売数の欄は共に「１」であり、有効の欄も共に「○」である。
【０１３９】
例えば、ユーザからの指示、有効期間切れによる更新要求などをトリガーに、ディアクティベーション部８８は、販売パッケージＡをディアクティベーションする。前者の場合、ディアクティベーションにより、例えば、販売パッケージがアクティベーションされていた画像形成装置１００からアクティベーション情報を取り出し両者の関係を解消するので、そのアクティベーション情報を用いて別の画像形成装置１００でアクティベーションすることが可能となる。後者の場合、有効期限が切れたので、ＨＤＤ１５に機能パッケージを残したまま使用を禁止できる。
【０１４０】
ディアクティベーションされると、販売パッケージ情報更新部９３は、販売パッケージ情報７４のアクティベーションの欄と有効の欄にそれぞれ「×」を登録する。また、機能パッケージ情報更新部９２は、機能パッケージ１、２の有効販売数にそれぞれ「０」を登録し、有効の欄にそれぞれ「×」を登録する。
【０１４１】
＜アンインストール＞
アンインストールとはＨＤＤ１５から販売パッケージを削除することをいう。すなわち、再インストールしなければその販売パッケージによる機能を実行することができなくなり、プログラムコンポーネントの不正利用を防止しやすくできる。
【０１４２】
図２５は、販売パッケージのアンインストールを説明する図の一例である。販売パッケージＡはアクティベーションされ有効化されている。このため、販売パッケージ情報７４のアクティベーションの欄と有効の欄はそれぞれ「○」が登録されている。なお、アンインストールは、アクティベーションされていない状態又は有効化されていない状態でも可能である。販売パッケージＡが有効化されているので、機能パッケージ１，２の有効販売数の欄は共に「１」であり、有効の欄も共に「○」である。
【０１４３】
例えば、ユーザからの指示、有効期間切れになどをトリガーに、アンインストール部８７は、販売パッケージＡをＨＤＤ１５からアンインストールする。前者の場合、例えば、有効期限が切れたのでＨＤＤ１５から削除する場合、逆に有効期限を残して別の画像形成装置１００にインストールしたり、残期間の料金を返還してもらうような場合が考えられる。後者の場合は、有効期限が切れたので自動的にアンインストールすることが考えられる。
【０１４４】
アンインストールされると、販売パッケージ情報更新部９３は、販売パッケージ情報７４をＨＤＤ１５から削除し、機能パッケージ情報更新部９２は、機能パッケージ１情報をＨＤＤ１５から削除する。
【０１４５】
＜無効化（一部機能パッケージを共有）＞
同じ機能パッケージを含む販売パッケージの一部が無効化された場合を説明する。図２６は、販売パッケージの無効化を説明する図の一例である。販売パッケージＡ、Ｂは共にアクティベーションされ有効化されている。このため、販売パッケージＡ，Ｂのアクティベーションの欄と有効の欄はそれぞれ「○」が登録されている。販売パッケージＡ、Ｂが有効化されているので、機能パッケージ１の有効販売数は「１」有効の欄は「○」、機能パッケージ２の有効販売数は「２」有効の欄は「○」、機能パッケージ３の有効販売数は「１」有効の欄は「○」である。
【０１４６】
無効化部８９が販売パッケージＡを無効化すると、販売パッケージ情報更新部９３は、販売パッケージＡの有効の欄に「×」に登録する。これにより、機能パッケージ１と販売パッケージＡに含まれている機能パッケージ２が無効化されるので、機能パッケージ情報更新部９２は、機能パッケージ１の有効販売数を１減らして「０」に有効の欄に「×」を登録し、機能パッケージ２の有効販売数を１減らして「１」を登録する。なお、機能パッケージ２は有効販売数は「１」であるので、機能パッケージ２は無効化されない。
【０１４７】
＜ディアクティベーション（一部機能パッケージを共有）＞
同じ機能パッケージを含む販売パッケージの一部がディアクティベーションされた場合を説明する。図２７は、販売パッケージのディアクティベーションを説明する図の一例である。販売パッケージＡ、Ｂは共にアクティベーションされ有効化されている。このため、販売パッケージＡ、Ｂのアクティベーションの欄と有効の欄はそれぞれ「○」が登録されている。販売パッケージＡ、Ｂが有効化されているので、機能パッケージ１の有効販売数は「１」有効の欄は「○」、機能パッケージ２の有効販売数は「２」有効の欄は「○」、機能パッケージ３の有効販売数は「１」有効の欄は「○」である。
【０１４８】
ディアクティベーション部８８が販売パッケージＡをディアクティベーションすると、販売パッケージ情報更新部９３は、販売パッケージＡのアクティベーションの欄と有効の欄にそれぞれ「×」を登録する。また、機能パッケージ１と販売パッケージＡに含まれている機能パッケージ２が無効化されるので、機能パッケージ情報更新部９２は、機能パッケージ１の有効販売数を１減らして「０」に有効の欄に「×」を登録し、機能パッケージ２の有効販売数を１減らして「１」を登録する。なお、機能パッケージ２は有効販売数が「１」であるので、機能パッケージ２は無効化されない。
【０１４９】
＜アンインストール（一部機能パッケージを共有）＞
一部の機能パッケージを共有したアンインストールには、アンインストール前の販売パッケージが有効か否かに応じて３つの態様がある。以下、順番に説明する。
・いずれも有効な販売パッケージの一方をアンインストール
同じ機能パッケージを含む販売パッケージの一部が無効化された場合を説明する。図２８は、販売パッケージのアンインストールを説明する図の一例である。販売パッケージＡ、Ｂは共にアクティベーションされ有効化されている。このため、販売パッケージＡ、Ｂのアクティベーションの欄と有効の欄はそれぞれ「○」が登録されている。販売パッケージＡ、Ｂが有効化されているので、機能パッケージ１の有効販売数は「１」有効の欄は「○」、機能パッケージ２の有効販売数は「２」有効の欄は「○」、機能パッケージ３の有効販売数は「１」有効の欄は「○」である。
【０１５０】
アンインストール部８７が販売パッケージＡをアンインストールすると、販売パッケージ情報更新部９３は、販売パッケージＡの情報を全て消去する。これにより、機能パッケージ１と販売パッケージＡに含まれている機能パッケージ２がアンインストールされるので、機能パッケージ情報更新部９２は、機能パッケージ１の情報を消去する。また、機能パッケージ２の販売数を１減らして「１」に、有効販売数を１減らして「１」にする。なお、機能パッケージ２は有効販売数が「１」であるので、機能パッケージ２は無効化されない。
・一方が有効でない販売パッケージのうち有効な方をアンインストール
図２９は、販売パッケージのアンインストールを説明する図の一例である。販売パッケージＡはアクティベーションされ有効化されているが、販売パッケージＢはアクティベーションされているが有効化されていない。この状態で販売パッケージＡをアンインストールすると、有効な販売パッケージがなくなることになる。
【０１５１】
販売パッケージＡのアクティベーションの欄と有効の欄はそれぞれ「○」が、販売パッケージＢのアクティベーションの欄は「○」だが有効の欄は「×」が登録されている。販売パッケージＡだけ有効化されているので、機能パッケージ１の有効販売数は「１」有効の欄は「○」、機能パッケージ２の有効販売数は「１」有効の欄は「○」、機能パッケージ３の有効販売数は「０」有効の欄は「×」である。
【０１５２】
アンインストール部８７が販売パッケージＡをアンインストールすると、販売パッケージ情報更新部９３は、販売パッケージＡの情報を全て消去する。これにより、機能パッケージ１と販売パッケージＡに含まれている機能パッケージ２がアンインストールされるので、機能パッケージ情報更新部９２は、機能パッケージ１の情報を全て消去する。また、機能パッケージ２の販売数を１減らして「１」を、有効販売数を１減らして「０」をそれぞれ登録する。有効販売数が「０」なので、機能パッケージ２の有効の欄は「×」になる。したがって、機能パッケージ２，３のいずれも有効でなくなる。
・一方が有効でない販売パッケージのうち有効でない方をアンインストール
図３０は、販売パッケージのアンインストールを説明する図の一例である。販売パッケージＡはアクティベーションされているが有効化されておらず、販売パッケージＢはアクティベーションされ有効化されている。この状態で販売パッケージＡをアンインストールする。
【０１５３】
販売パッケージＡのアクティベーションの欄は「○」が有効の欄は「×」が、販売パッケージＢのアクティベーションの欄と有効の欄は「○」が、それぞれ登録されている。販売パッケージＢだけ有効化されているので、機能パッケージ１の有効販売数は「０」有効の欄は「×」、機能パッケージ２の有効販売数は「１」有効の欄は「○」、機能パッケージ３の有効販売数は「１」有効の欄は「○」である。
【０１５４】
アンインストール部８７が販売パッケージＡをアンインストールすると、販売パッケージ情報更新部９３は、販売パッケージＡの情報を全て消去する。これにより、機能パッケージ１と販売パッケージＡに含まれている機能パッケージ２がアンインストールされるので、機能パッケージ情報更新部９２は、機能パッケージ１の情報を全て消去する。また、機能パッケージ２の販売数を１減らして「１」を登録する。機能パッケージ２の有効販売数は変化しないので「１」のままであり、有効の欄も「○」のままである。したがって、機能パッケージ２は有効のままである。また、機能パッケージ３の機能パッケージ情報７５には変化がない。
【０１５５】
＜アンインストールの処理手順＞
図３１は、アンインストール手順を説明するフローチャート図の一例である。図３１ではユーザからの指示により有効化が開始されるとした。なお、図３１において図２０と同一ステップには同じ符号を付しその説明は簡単に行う。
【０１５６】
まず、アンインストール部８７は、ＨＤＤ１５へのアクセスが可能か否かを判定する（Ｓ２０〜Ｓ４０）。ＨＤＤ１５へのアクセスが可能な場合（Ｓ２０のＹｅｓ、Ｓ３０のＹｅｓ）、アンインストールは機能パッケージ毎に実行するので、アンインストール部８７はアンインストール対象の販売パッケージに含まれる機能パッケージを特定する（Ｓ２１０）。ステップＳ２１０の処理は図２１に示したとおりである。  
販売パッケージをアンインストールすると、含まれている機能パッケージが他の販売パッケージに含まれているか否かや有効化されているか否かにより処理が変わってくるので、処理内容決定部９１は機能パッケージ毎に適切な処理（以下、アンインストール時処理という）を決定する（Ｓ４１０）。  
図３２はアンインストール時処理の手順を示すフローチャート図の一例である。処理内容決定部９１は、アンインストールする販売パッケージに含まれている機能パッケージが現在有効か否かを確認する（Ｓ４０１０）。
【０１５７】
例えば、図２８では、機能パッケージ１、２は共に有効であり、図２９では、機能パッケージ１、２は共に有効であり、図３０では、機能パッケージ１は有効でないが機能パッケージ２が有効である。
【０１５８】
有効状態な場合（Ｓ４０２０のＹｅｓ）、アンインストールする販売パッケージに含まれている有効な機能パッケージが、他の有効な販売パッケージに含まれているか否かを確認する（Ｓ４０３０）。
【０１５９】
他の有効な販売パッケージに含まれている場合は（Ｓ４０４０のＹｅｓ）、アンインストールも無効化もできないので、何もしない（Ｓ４１００）。すなわち、図２８の機能パッケージ２，図３０の機能パッケージ２は有効なままである。
【０１６０】
他の有効な販売パッケージに含まれていない場合（Ｓ４０４０のＮｏ）、アンインストールする販売パッケージに含まれている有効な機能パッケージが、他の販売パッケージに含まれているか否かを確認する（Ｓ４０５０）。有効でない販売パッケージに含まれているため、今回のアンインストールでその機能パッケージは有効でなくなる。
【０１６１】
このため、他の販売パッケージに含まれている場合（Ｓ４０６０のＹｅｓ）、処理内容決定部９１はその機能パッケージを無効化すると決定する（Ｓ４０７０）。すなわち、図２９の機能パッケージ２は無効化される。
【０１６２】
一方、他の販売パッケージに含まれていない場合（Ｓ４０６０のＮｏ）、消去してよいことになるので、処理内容決定部９１はその機能パッケージをアンインストールすると決定する（Ｓ４１１０）。すなわち、図２８、２９の機能パッケージ１はＨＤＤ１５から消去される。
【０１６３】
ステップＳ４０２０に戻り、有効状態でない場合（Ｓ４０２０のＮｏ）、アンインストールする販売パッケージに含まれている機能パッケージが、他の販売パッケージに含まれているか否かを確認する（Ｓ４０８０）。例えば、図３０の機能パッケージ１は有効でないが、他の販売パッケージに含まれていない。
【０１６４】
含まれていない場合（Ｓ４０９０のＮｏ）、処理内容決定部９１はその機能パッケージをアンインストールすると決定する（Ｓ４１１０）。すなわち、図３０の機能パッケージ１はＨＤＤ１５から消去される。
【０１６５】
含まれている場合（Ｓ４０９０のＹｅｓ）、すでに有効でないことになるので、アンインストール対象の機能パッケージには何もしない（Ｓ４１００）。
【０１６６】
以上のロジックで機能パッケージ毎に処理内容を決定すると、図３１に戻り、アンインストール部８７は、処理内容に基づき、販売パッケージに含まれる機能パッケージがアンインストール可能か否かを判定する（Ｓ４２０）。
【０１６７】
アンインストールが可能な機能パッケージであれば（Ｓ４３０のＹｅｓ）、アンインストール部８７は販売パッケージに含まれる機能パッケージをアンインストールする（Ｓ４４０）。
【０１６８】
アンインストールすると、販売パッケージ情報更新部９３は販売パッケージ情報７４を更新し、機能パッケージ情報更新部９２は機能パッケージ情報７５を更新する（Ｓ４５０）。
【０１６９】
以上のように、アンインストールする際、機能パッケージの共用状態、有効化の有無等に応じて、適切にアンインストールすることができる。
【０１７０】
〔起動処理〕
続いて、実装されたプログラムの起動について説明する。上記のように、各プラグインコンポーネント（機能パッケージ）７３の起動は、起動情報７７に基づいてプラグインスタータ７２により制御される。このため、販売パッケージのインストールする際は、販売パッケージが含む各機能パッケージの起動順を起動情報７７に登録する。このため、各販売パッケージには起動情報７７を生成するための情報が含まれている。
【０１７１】
図３３（ａ）は、販売パッケージに含まれるパッケージ内容を模式的に説明する図の一例である。例えば、この販売パッケージには３つの機能パッケージＡ〜Ｃが含まれている。また、上記のｉｎｆファイルと起動順を定義した起動順定義ファイル９５がパッケージされている。起動順定義ファイル９５には、例えば、「起動順：１．機能パッケージＡ、２．機能パッケージＢ、３．機能パッケージＣ」のように起動順が定義されている。
【０１７２】
図３３（ｂ）は、起動処理におけるインストール管理部の機能ブロック図の一例を示す。起動情報更新部９４は、インストールした販売パッケージの起動順定義ファイル９５に従い、起動情報７７に起動順を登録する。同様に、インストール時だけでなく、アクティベーション又は有効化により機能パッケージが有効化された場合、起動情報更新部９４は有効化された機能パッケージを起動情報７７に登録する。
【０１７３】
起動情報７７に登録される順番は、起動情報７７への登録順である。しかし、起動順定義ファイル９５に他の販売パッケージの機能パッケージに対する起動順が定義されている場合は、それに従い既に登録されている機能パッケージより前に登録されてもよい。
【０１７４】
また、起動情報更新部９４は、有効化されている機能パッケージを起動情報７７に登録するので、機能パッケージ情報７５を参照して有効な機能パッケージを登録し、無効になった機能パッケージは削除する。
以下、いくつかの例を具体的に説明する。
【０１７５】
＜起動情報７７の更新１＞
図３４は、販売パッケージの実装と起動情報７７の関係の一例を説明する図である。図３４では、販売パッケージと矢印で結ばれた機能パッケージがその販売パッケージに含まれることを示す。販売パッケージＡには、機能パッケージ１、２，５が含まれ、販売パッケージＢには機能パッケージ１，３が含まれ、販売パッケージＣには機能パッケージ２，３、４が含まれる。
【０１７６】
初期状態の販売パッケージＡは有効、販売パッケージＢは無効である。このため、機能パッケージ１，２，５は有効化されており、起動情報７７には機能パッケージ１，２、５が登録されている。この状態から販売パッケージＣをインストールする。したがって、販売パッケージＣに含まれる機能パッケージ２、３、４は、それまで有効であればそのままに、インストールされていてそれまで無効であれば有効になり、インストールされていなければ有効になる。
機能パッケージ２：有効のまま
機能パッケージ３：無効→有効
機能パッケージ４：アンインストール→有効
したって、起動情報更新部９４は新たに有効になった機能パッケージ３，４を起動情報７７に登録する。機能パッケージ３，４の登録順は、起動順定義ファイル９５に定義されている順番である。
【０１７７】
＜起動情報７７の更新２＞
図３５は、販売パッケージの実装と起動情報７７の関係の一例を説明する図である。図３５は、図３４で販売パッケージＣが有効になった状態であるので、初期状態の機能パッケージ１〜５はいずれも有効である。この状態から販売パッケージＣをアンインストールする。
【０１７８】
したがって、販売パッケージＣにのみ含まれる機能パッケージ４は、アンインストールされる。また、販売パッケージＢはもともと無効なので、販売パッケージＣとＢにのみ含まれる機能パッケージＣは無効化される。
機能パッケージ２：販売パッケージＡが有効なので有効のまま
機能パッケージ３：有効→無効
機能パッケージ４：有効→アンインストール
したって、起動情報更新部９４は新たに無効になった機能パッケージ３、アンインストールされた機能パッケージ４を、起動情報７７から削除する。
【０１７９】
＜起動情報７７の更新３＞
起動順に制約がある場合を説明する。図３６は、販売パッケージの実装と起動情報７７の関係の一例を説明する図である。なお、図３６の初期状態は図３４と同じで、その初期状態に販売パッケージＣをインストール点でも同様である。
機能パッケージ２：有効のまま
機能パッケージ３：無効→有効
機能パッケージ４：アンインストール→有効
したって、起動情報更新部９４は新たに有効になった機能パッケージ３，４を起動情報７７に登録するが、販売パッケージCは起動順定義ファイル９５に起動順を定義している。図３６では、「１．機能パッケージ２、２．機能パッケージ３、３．機能パッケージ４」の順番である。このような起動順は、機能パッケージ間の依存関係がある場合に定義される。図３６では、例えば機能パッケージ４は機能パッケージ３の機能を利用するため、機能パッケージ４よりも前に機能パッケージ３が起動している必要がある場合等である。
【０１８０】
起動情報更新部９４は、有効化された機能パッケージがある場合、起動順定義ファイル９５を参照して、適切な順番で機能パッケージを起動情報７７に登録する。
【０１８１】
以上説明したように、本実施形態の画像形成装置１００は、既にインストールされている機能パッケージはインストールしないので、効率的なインストールが可能となる。また、アンインストール時は、アンインストールしない販売パッケージに含まれている機能パッケージは削除しないので、残った販売パッケージに影響を与えることもない。すなわち、複数の販売パッケージが含む複数の機能パッケージが、一部重複するような構成の場合、実用的なプログラムの実装が容易に実現できる。
【図面の簡単な説明】
【０１８２】
【図１】画像形成装置におけるインストールの概要を模式的に説明する図の一例である。
【図２】インストールされても有効化されない販売パッケージのインストールを説明する図の一例である。
【図３】画像形成装置のハードウェア構成図の一例である。
【図４】画像形成装置のソフトウェアモジュールの一例を示す図である。
【図５】インストール管理部の機能ブロック図の一例である。
【図６】プラグイン管理部の機能ブロック図の一例である。
【図７】インストール時にアクティベーションされるプログラムの実装態様の一例を説明する図である。
【図８】インストール時にアクティベーションされないプログラムの実装態様の一例を説明する図である。
【図９】同じ機能パッケージが既にインストールされているが、バージョンが異なる場合のインストールの一例を説明する図である。
【図１０】異なるバージョンで同じ機能パッケージをインストールする場合において、アクティベーションが必要な場合の一例を説明する図である。
【図１１】同じ機能パッケージが既にインストールされており、バージョンが異なるが、後からインストールする機能パッケージのバージョンの方が古い場合の一例を説明する図である。
【図１２】販売パッケージのアクティベーションが必要な場合の一例を説明する図の一例である。
【図１３】販売パッケージのアップデートを説明する図の一例である。
【図１４】同じ販売パッケージのアップデートの別の形態を説明する図の一例である。
【図１５】インストール手順を説明するフローチャート図の一例である。
【図１６】インストール後にアクティベーションが必要な販売パッケージのアクティベーションの一例を説明する図である。
【図１７】販売パッケージの有効化を説明する図の一例である。
【図１８】インストール後にアクティベーションが必要な販売パッケージのアクティベーションを説明する図の一例である。
【図１９】アクティベーション後の有効化を説明する図の一例である。
【図２０】有効化手順を説明するフローチャート図の一例である。
【図２１】機能パッケージの特定手順を説明するフローチャート図の一例である。
【図２２】販売パッケージの無効化を説明する図の一例である。
【図２３】有効化手順を説明するフローチャート図の一例である。
【図２４】販売パッケージのディアクティベーションを説明する図の一例である。
【図２５】販売パッケージのアンインストールを説明する図の一例である。
【図２６】販売パッケージの無効化を説明する図の一例である。
【図２７】販売パッケージのディアクティベーションを説明する図の一例である。
【図２８】販売パッケージのアンインストールを説明する図の一例である。
【図２９】販売パッケージのアンインストールを説明する図の一例である。
【図３０】販売パッケージのアンインストールを説明する図の一例である。
【図３１】アンインストール手順を説明するフローチャート図の一例である。
【図３２】アンインストール時処理の手順を示すフローチャート図の一例である。
【図３３】販売パッケージに含まれるパッケージ内容を模式的に説明する図の一例である。
【図３４】販売パッケージの実装と起動情報の関係の一例を説明する図である。
【図３５】販売パッケージの実装と起動情報の関係の一例を説明する図である。
【図３６】販売パッケージの実装と起動情報の関係の一例を説明する図である。
【符号の説明】
【０１８３】
１５      ＨＤＤ
６０      インストール管理部
７１      プラグイン管理部
７２      プラグインスタータ
７３      プラグインコンポーネント（機能パッケージ）
７４      販売パッケージ情報
７５      機能パッケージ情報
７７      起動情報
１００    画像形成装置
【図１】
2010113476.tif 000003
【図２】
2010113476.tif 000004
【図３】
2010113476.tif 000005
【図４】
2010113476.tif 000006
【図５】
2010113476.tif 000007
【図６】
2010113476.tif 000008
【図７】
2010113476.tif 000009
【図８】
2010113476.tif 000010
【図９】
2010113476.tif 000011
【図１０】
2010113476.tif 000012
【図１１】
2010113476.tif 000013
【図１２】
2010113476.tif 000014
【図１３】
2010113476.tif 000015
【図１４】
2010113476.tif 000016
【図１５】
2010113476.tif 000017
【図１６】
2010113476.tif 000018
【図１７】
2010113476.tif 000019
【図１８】
2010113476.tif 000020
【図１９】
2010113476.tif 000021
【図２０】
2010113476.tif 000022
【図２１】
2010113476.tif 000023
【図２２】
2010113476.tif 000024
【図２３】
2010113476.tif 000025
【図２４】
2010113476.tif 000026
【図２５】
2010113476.tif 000027
【図２６】
2010113476.tif 000028
【図２７】
2010113476.tif 000029
【図２８】
2010113476.tif 000030
【図２９】
2010113476.tif 000031
【図３０】
2010113476.tif 000032
【図３１】
2010113476.tif 000033
【図３２】
2010113476.tif 000034
【図３３】
2010113476.tif 000035
【図３４】
2010113476.tif 000036
【図３５】
2010113476.tif 000037
【図３６】
2010113476.tif 000038