(57)【特許請求の範囲】
【請求項１】
第一のプログラムからの呼び出しを受け付ける呼び出し受付手順と、
前記呼び出しに応じ、前記第一のプログラムより利用される第二のプログラムをインストールするインストール手順とを画像形成装置に実行させ、
前記第一のプログラムに付随して前記画像形成装置にインストールされるインストールプログラム。
【請求項２】
前記呼び出し受付手順は、前記第一のプログラムの起動時に、前記第一のプログラムからの前記呼び出しを受け付ける請求項１記載のインストールプログラム。
【請求項３】
前記第一のプログラムのアンインストールの検知に応じ、前記第二のプログラムをアンインストールするアンインストール手順を前記画像形成装置に実行させる請求項１又は２記載のインストールプログラム。
【請求項４】
前記インストール手順は、前記呼び出しに応じ、前記第一のプログラムのアンインストールを当該インストールプログラムに対して通知させるためのコールバック情報を前記画像形成装置に設定し、
前記アンインストール手順は、前記コールバック情報に基づく前記第一のプログラムのアンインストールの通知に応じ、前記第二のプログラムをアンインストールする請求項３記載のインストールプログラム。
【請求項５】
第一のプログラムからの呼び出しを受け付ける呼び出し受付手順と、
前記呼び出しに応じ、前記第一のプログラムより利用される第二のプログラムをインストールするインストール手順とを画像形成装置が実行し、
前記呼び出し受付手順及び前記インストール手順を前記画像形成装置に実行させるインストールプログラムは、前記第一のプログラムに付随して前記画像形成装置にインストールされるインストール方法。
【請求項６】
前記呼び出し受付手順は、前記第一のプログラムの起動時に、前記第一のプログラムからの前記呼び出しを受け付ける請求項５記載のインストール方法。
【請求項７】
前記第一のプログラムのアンインストールの検知に応じ、前記第二のプログラムをアンインストールするアンインストール手順を前記画像形成装置が実行する請求項５又は６記載のインストール方法。
【請求項８】
前記インストール手順は、前記呼び出しに応じ、前記第一のプログラムのアンインストールを通知させるためのコールバック情報を前記画像形成装置に設定し、
前記アンインストール手順は、前記コールバック情報に基づく前記第一のプログラムのアンインストールの検知に応じ、前記第二のプログラムをアンインストールする請求項７記載のインストール方法。
【請求項９】
画像形成装置であって、
第一のプログラムからの呼び出しを受け付ける呼び出し受付手段と、
前記呼び出しに応じ、前記第一のプログラムより利用される第二のプログラムをインストールするインストール手段とを有し、
前記呼び出し受付手段及び前記インストール手段として当該画像形成装置を機能させるインストールプログラムは、前記第一のプログラムに付随して当該画像形成装置にインストールされる画像形成装置。
【請求項１０】
請求項１乃至４いずれか一項記載のインストールプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インストールプログラム、インストール方法、画像形成装置、及び記録媒体に関し、特に画像形成装置に対するプログラムのインストールを実行するインストールプログラム、インストール方法、画像形成装置、及び記録媒体に関する。
【背景技術】
【０００２】
従来、その出荷後にアプリケーションプログラム等をプラグインとして追加可能な画像形成装置が存在する。例えば、特許文献１に記載された画像形成装置には、Ｃ言語によって開発されたアプリケーション（以下、「Ｃアプリ」という。）と、Ｊａｖａ（登録商標）によって開発されたアプリケーション（以下、「Ｊアプリ」という。）とをインストールすることができる。
【０００３】
但し、Ｃアプリ用のプラットフォームとＪアプリ用のプラットフォームとは異なる。具体的には、Ｊアプリ用のプラットフォームは、Ｃアプリ用のプラットフォーム上に、Ｊａｖａ（登録商標）用のＡＰＩ（Application Program Interface）を備えたプラットフォーム（特許文献１におけるＪＳＤＫプラットフォーム）が存在する。
【０００４】
ＪＳＤＫプラットフォームは、Ｃアプリ用のプラットフォームに対して機種依存性が著しく低下されている。すなわち、ＪＳＤＫプラットフォームが有するＡＰＩは、機種に対して平滑化されている。したがって、アプリケーションの開発者からすると、開発対象のアプリケーションをＪアプリとして作成する方が有利である。Ｊアプリは、機種ごとにソースコードを変える必要性が低く、開発コストを削減することができるからである。
【０００５】
しかし、ＪＳＤＫプラットフォームが提供しているＡＰＩの機能範囲は、Ｃアプリ用のプラットフォームが提供しているＡＰＩの機能範囲よりも狭い。すなわち、純粋なＪアプリが実現可能な機能は、純粋なＣアプリによって実現可能な機能よりも少ない。ここで、純粋なＪアプリとは、ＪＳＤＫプラットフォームにおいて動作するプログラムモジュールのみによって構成されるＪアプリをいう。
【０００６】
したがって、Ｊアプリのみでは実現できない機能に関しては、Ｃアプリとして実装する必要がある。その場合、一つのアプリケーションとして販売されるパッケージの中に、ＪアプリとしてのモジュールとＣアプリとしてのモジュールとが混在することになる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＪアプリとＣアプリとが混在したアプリケーションは、ユーザから見れば一つのアプリケーションであるにも拘わらず、斯かる構成のアプリケーションの存在が考慮されていない画像形成装置から見れば、二つのアプリケーションである。したがって、ユーザは、２回分のインストール作業を行わなければならない（インストールの実行指示を２回行わなければならない）という問題がある。
【０００８】
このような画像形成装置に関して、斯かる構成のアプリケーションの存在を考慮してアプリケーションのインストール機構を修正することにより、１回のインストール指示に応じてＪアプリのインストール処理と、Ｃアプリのインストール処理とを実行させることは技術的に可能である。
【０００９】
しかし、ＪアプリとＣアプリとが混在したアプリケーションの存在が考慮されていない画像形成装置は、既に多数販売されており、エンドユーザによって利用されている。これらの画像形成装置に関して、上記修正を適用するのは、多大なコストと労力とを必要とする。
【００１０】
本発明は、上記の点に鑑みてなされたものであって、プログラムのインストール操作を簡便化させることのできるインストールプログラム、インストール方法、画像形成装置、及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【００１１】
そこで上記課題を解決するため、インストールプログラムは、第一のプログラムの起動時に、前記第一のプログラムからの呼び出しを受け付ける呼び出し受付手順と、前記呼び出しに応じ、前記第一のプログラムより利用される第二のプログラムをインストールするインストール手順とを画像形成装置に実行させる。
【００１２】
このようなインストールプログラムでは、プログラムのインストール操作を簡便化させることができる。
【発明の効果】
【００１３】
本発明によれば、プログラムのインストール操作を簡便化させることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。
【図２】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図３】ＣＳＤＫアプリとＪＳＤＫアプリの管理機構の例を示す図である。
【図４】第一の実施の形態においてインストール対象とされるＳＤＫアプリの構成例を示す図である。
【図５】第一の実施の形態におけるＳＤＫアプリのインストール処理及びアンインストール処理の処理手順の一例を説明するためのシーケンス図である。
【図６】第二の実施の形態においてインストール対象とされるＳＤＫアプリの構成例を示す図である。
【図７】代行ライブラリを含むＳＤＫアプリに関するインストール機構を説明するための図である。
【図８】第二の実施の形態におけるＳＤＫアプリのインストール処理及びアンインストール処理の処理手順の一例を説明するためのシーケンス図である。
【図９】代行ライブラリによるＣＳＤＫアプリのインストール処理の処理手順の一例を説明するための図である。
【図１０】代行属性ファイルに記録されている情報の内容の一例を示す図である。
【図１１】代行ライブラリによるＣＳＤＫアプリのアンインストール処理の処理手順の一例を説明するための図である。
【発明を実施するための形態】
【００１５】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における画像形成装置のハードウェア構成例を示す図である。同図において、画像形成装置１０は、コントローラ１１、スキャナ１２、プリンタ１３、モデム１４、操作パネル１５、ネットワークインタフェース１６、及びＳＤカードスロット１７等のハードウェアを有する。
【００１６】
コントローラ１１は、ＣＰＵ１１１、ＲＡＭ１１２、ＲＯＭ１１３、ＨＤＤ１１４、及びＮＶＲＡＭ１１５等を有する。ＲＯＭ１１３には、各種のプログラムやプログラムによって利用されるデータ等が記録されている。ＲＡＭ１１２は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。ＣＰＵ１１１は、ＲＡＭ１１２にロードされたプログラムを処理することにより、各種の機能を実現する。ＨＤＤ１１４には、プログラムやプログラムが利用する各種のデータ等が記録される。ＮＶＲＡＭ１１５には、各種の設定情報等が記録される。
【００１７】
スキャナ１２は、原稿より画像データを読み取るためのハードウェア（画像読取手段）である。プリンタ１３は、印刷データを印刷用紙に印刷するためのハードウェア（印刷手段）である。モデム１４は、電話回線に接続するためのハードウェアであり、ＦＡＸ通信による画像データの送受信を実行するために用いられる。操作パネル１５は、ユーザからの入力の受け付けを行うためのボタン等の入力手段や、液晶パネル等の表示手段等を備えたハードウェアである。ネットワークインタフェース１６は、ＬＡＮ等のネットワーク（有線又は無線の別は問わない。）に接続するためのハードウェアである。ＳＤカードスロット１７は、ＳＤカード８０に記録されたプログラムを読み取るために利用される。すなわち、画像形成装置１０では、ＲＯＭ１１３に記録されたプログラムだけでなく、ＳＤカード８０に記録されたプログラムもＲＡＭ１１２にロードされ、実行されうる。
【００１８】
図２は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。同図において、画像形成装置１０は、標準アプリ１５１、ＳＡＳ１５２、ＣＳＤＫアプリ１５３、ＪＶＭ１５４、ＪＳＤＫプラットフォーム１５５、ＪＳＤＫアプリ１５６、ＶＡＳ１５７、コントロールサービス１５８、及びＯＳ１５９等を有する。
【００１９】
標準アプリ１５１は、画像形成装置１０に標準的に（出荷時に予め）実装されているアプリケーションの集合である。同図では、スキャンアプリ１５１１、印刷アプリ１５１２、コピーアプリ１５１３、及びＦＡＸアプリ１５１４が例示されている。スキャンアプリ１５１１は、スキャンジョブを実行する。印刷アプリ１５１２は印刷ジョブを実行する。コピーアプリ１５１３は、コピージョブを実行する。ＦＡＸアプリ１５１４は、ＦＡＸの送信ジョブ又は受信ジョブを実行する。
【００２０】
コントロールサービス１５８は、各種のハードウェアリソース等を制御するための機能を上位アプリケーション等に対して提供したり、画像形成装置１０の基盤的な機能等を実行したりするソフトウェアモジュール群である。
【００２１】
ＶＡＳ１５７（Virtual Application Service）は、コントロールサービス１５８のインタフェースをラッピングし、コントロールサービス１５８のバージョンアップに伴うインタフェースの相違点を吸収する。したがって、ＶＡＳ１５７上で動作するプログラム（特に、ＣＳＤＫアプリ１５３）に対しては、コントロールサービス１５８のパージョン間の互換性が保証される。
【００２２】
ＣＳＤＫアプリ１５３及びＪＳＤＫアプリ１５６は、それぞれ、ＳＤＫアプリの一種である。ＳＤＫアプリとは、画像形成装置１０に対するプラグインとして、画像形成装置１０の機能拡張を図るために開発されるアプリケーションをいう。すなわち、画像形成装置１０は、ＳＤＫアプリ用の、公開された専用のＡＰＩ（Application Program Interface）を備える。一つは、ＶＡＳ１５７によって提供されるＣ言語のＡＰＩである。もう一つは、後述されるＪＳＤＫプラットフォーム１５５によって提供されるＪａｖａ（登録商標）言語のＡＰＩである。Ｃ言語のＡＰＩを利用して作成されるＳＤＫアプリを「ＣＳＤＫアプリ１５３」という。Ｊａｖａ（登録商標）言語のＡＰＩを利用して作成されるＳＤＫアプリを「ＪＳＤＫアプリ１５６」という。なお、同図において、ＣＳＤＫアプリ１５３は、一つのブロック（矩形）によって表現されているが、複数のＣＳＤＫアプリ１５３が一台の画像形成装置１０にインストールされうる。
【００２３】
ＪＶＭ１５４は、いわゆるＪａｖａ（登録商標）仮想マシン（Java（登録商標） Virtual Machine）であり、Ｊａｖａ（登録商標）バイトコードによって定義された命令を解釈して実行する。本実施の形態において、ＪＶＭ１５４は、ＣＳＤＫアプリの一つとして実装されている。
【００２４】
ＳＡＳ１５２（ＳＤＫアプリケーションサービス）は、ＣＳＤＫアプリ１５３のライフサイクルを管理する。例えば、ＳＡＳ１５２は、ＣＳＤＫアプリ１５３のインストール処理、起動処理、停止処理、及びアンインストール処理等を制御する。
【００２５】
ＪＳＤＫプラットフォーム１５５は、ＪＳＤＫアプリ１５６の実行環境を提供する。すなわち、ＪＳＤＫプラットフォーム１５５は、Ｊａｖａ（登録商標）言語によるＡＰＩをＪＳＤＫアプリ１５６に対して提供する。ＪＳＤＫプラットフォーム１５５は、また、ＪＳＤＫ管理部１５５１及びコールバック制御部１５５２等を有する。ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６のライフサイクルを管理する。例えば、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６のインストール処理、起動処理、停止処理、及びアンインストール処理等を制御する。なお、ＪＳＤＫ管理部１５５１は、一つのＪＳＤＫアプリ１５６として実装されてもよい。コールバック制御部１５５２は、コールバック処理の制御を行う。コールバックとは、プログラミングにおけるいわゆるコールバックである。すなわち、コールバックとは、イベント（事象）の種別と通知先（コールバック関数）とを予め登録しておくことにより、当該イベントの発生に応じて、当該通知先への呼び出しを発生させるための仕組み又は機構である。
【００２６】
ＯＳ１５９は、いわゆるＯＳ（Operating System）である。画像形成装置１０上の各ソフトウェアは、ＯＳ１５９上においてプロセス又はスレッドとして動作する。
【００２７】
図３は、ＣＳＤＫアプリとＪＳＤＫアプリの管理機構の例を示す図である。同図に示されるように、ＣＳＤＫアプリ１５３のライフサイクルは、ＳＡＳ１５２によって管理される。各ＣＳＤＫアプリ１５３は、それぞれ別個のプロセスとして起動される。なお、ＪＶＭ１５４もＣＳＤＫアプリ１５３の一つである。したがって、ＪＶＭ１５４もＳＡＳ１５２によって一つのプロセスとして起動される。
【００２８】
一方、ＪＳＤＫアプリ１５６のライフサイクルは、ＪＳＤＫ管理部１５５１によって管理される。各ＪＳＤＫアプリ１５６は、それぞれ別個のスレッドとしてＪＶＭ１５４のプロセス上で起動される。
【００２９】
このように、ＣＳＤＫアプリ１５３とＪＳＤＫアプリ１５６とによってそれぞれ管理機構体が異なるのは、それぞれのアプリケーションの開発言語が異なる点がその理由の一つとして挙げられる。例えば、ＳＡＳ１５２によって、ＪＳＤＫアプリ１５６の制御を直接行おうとすると、Ｃ言語のソースコードの中からＪａｖａ（登録商標）言語によるインタフェースを呼び出さなければならず、高度なプログラミング技術が必要とされると共に、その処理内容が煩雑となるからである。また、ＣＳＤＫアプリ１５３の方はプロセスとして実行され、ＪＳＤＫアプリ１５６の方はスレッドとして実行されるといったように、両者の実行形態が異なる点を考慮しても、ＣＳＤＫアプリ１５３用のアプリケーション管理機構とＪＳＤＫアプリ１５６用のアプリケーション管理機構とを別個に設けた方が、管理機構の単純化といった観点から有利である。
【００３０】
但し、ＣＳＤＫアプリ１５３及びＪＳＤＫアプリ１５６のインストール、アンインストール、起動、又は停止等をユーザに指示させるためのユーザインタフェースは、統合されている。具体的には、当該ユーザインタフェースを提供するアプリ管理画面５１０は、ＳＡＳ１５２によって一元的に操作パネル１５に表示される。アプリ管理画面５１０においてＣＳＤＫアプリ１５３が操作対象とされた場合、ＳＡＳ１５２は、自らが直接的に操作指示に応じた処理（インストール、アンインストール、起動、又は停止等）を実行する。一方、アプリ管理画面５１０においてＪＳＤＫアプリ１５６が操作対象とされた場合、ＳＡＳ１５２は、操作指示をＪＳＤＫ管理部１５５１に通知する。ＪＳＤＫ管理部１５５１は、ＳＡＳ１５２からの通知に応じ、当該操作指示に応じた処理（インストール、アンインストール、起動、又は停止等）を実行する。
【００３１】
なお、ＳＡＳ１５２とＪＳＤＫ管理部１５５１との間のやり取りは、ＨＴＴＰ（HyperText Transfer Protocol）やＳＯＡＰ（Simple Object Access Protocol）等、開発言語の別を問わず簡便に利用できるプロトコルを用いるとよい。そうすることによって、Ｃ言語のソースコードの中からＪａｖａ（登録商標）言語によるインタフェースを呼び出す必要がなくなり、処理内容の煩雑さが解消される。
【００３２】
第一の実施の形態においてインストール対象とされるＳＤＫアプリの構成例について説明する。第一の実施の形態では、ＣＳＤＫアプリ１５３とＪＳＤＫアプリ１５６とが単純に混在したＳＤＫアプリがインストール対象とされる。ここで、「単純に」とは、ＣＳＤＫアプリ１５３とＪＳＤＫアプリ１５６とが混在したＳＤＫアプリを、一つのＳＤＫアプリとしてインストール等させるための工夫がされていないことをいう。
【００３３】
図４は、第一の実施の形態においてインストール対象とされるＳＤＫアプリの構成例を示す図である。
【００３４】
同図において、ＳＤＫアプリＡ１は、ＪＳＤＫファイル１５６Ｆａ及びＣＳＤＫファイル１５３Ｆｂを含む。ＪＳＤＫファイル１５６Ｆａは、ＪＳＤＫアプリ１５６ａ及びＪＳＤＫ属性ファイル１５６Ｐａ等を含む一つの書庫ファイル（例えば、ＪＡＲ（Java（登録商標） Archive）ファイル）である。ＪＳＤKアプリａは、ＳＤＫアプリＡ１における、ＪＳＤＫアプリ１５６の実体である。ＪＳＤＫ属性ファイル１５６Ｐは、ＪＳＤＫファイル１５６Ｆａの構成情報やＪＳＤＫアプリ１５６ａに関する属性情報（識例えば、ＪＳＤＫアプリ１５６ａの識別子（アプリ識別子）等）を含むファイルである。
【００３５】
ＣＳＤＫファイル１５３Ｆａは、ＣＳＤＫアプリ１５３ａ及びＣＳＤＫ属性ファイル１５３Ｐａ等を含む一つの書庫ファイルである。ＣＳＤＫアプリ１５３ａは、ＳＤＫアプリＡ１における、ＣＳＤＫアプリ１５３の実体である。ＣＳＤＫ属性ファイル１５３Ｐは、ＣＳＤＫファイル１５３Ｆａの構成情報やＣＳＤＫアプリ１５３ａに関する属性情報（例えば、ＣＳＤＫアプリ１５３ａのアプリ識別子等）を含むファイルである。
【００３６】
なお、ＪＳＤＫアプリ１５６ａは、ＣＳＤＫアプリ１５３ａを利用して所定の機能を実現するＪＳＤＫアプリ１５６である。すなわち、ＳＤＫアプリＡ１において、ＣＳＤＫアプリ１５３ａは、一つのプログラムモジュールとして位置付けられる。なお、ＪＳＤＫアプリ１５６ａによるＣＳＤＫアプリ１５３ａのメソッドの呼び出しは、例えば、ＪＮＩ（Java（登録商標） Native Interface）を利用して実現される。
【００３７】
同図には、ＳＤＫアプリＡ１がＳＤカード８０ａに記録された状態が示されている。この場合、ＪＳＤＫファイル１５６ＦａとＣＳＤＫファイル１５３Ｆａとはそれぞれ独立したファイルとして、ＳＤカード８０ａに記録される。すなわち、同図において、ＳＤＫアプリＡ１を示す破線の矩形は、一つのＳＤＫアプリＡ１の論理的又は概念的な範囲を示すものである。
【００３８】
以下、図４に示されるＳＤＫアプリＡ１に関する画像形成装置１０へのインストール及びアンインストールの処理手順について説明する。
【００３９】
図５は、第一の実施の形態におけるＳＤＫアプリのインストール処理及びアンインストール処理の処理手順の一例を説明するためのシーケンス図である。同図の処理の開始前において、図４に示されるＳＤカード８０ａがＳＤカードスロット１７に挿入さている。また、アプリ管理画面５１０の一つであるメイン画面がＳＡＳ１５２によって操作パネル１５に表示されている。
【００４０】
メイン画面において、インストールの実行が選択されると、ＳＡＳ１５２は、ＳＤカード８０ａ内のＪＳＤＫファイル１５６Ｆａに含まれているＪＳＤＫ属性ファイル１５６Ｐａ及びＣＳＤＫファイル１５３Ｆａに含まれているＣＳＤＫ属性ファイル１５３Ｐａに基づいて、ＪＳＤＫアプリ１５６ａ及びＣＳＤＫアプリ１５３ａのそれぞれを別個の行とするＳＤＫアプリの選択リストを含むインストール画面を操作パネルに表示させる。なお、インストール画面は、アプリ管理画面５１０の一つである。
【００４１】
ステップＳ１０１において、ユーザは、インストール画面に含まれているＪＳＤＫアプリ１５６ａの行を選択状態として、インストールの実行指示をインストール画面を介して入力する。当該インストールの実行指示は、ＳＡＳ１５２を介してＪＳＤＫ管理部１５５１に通知される。なお、図５において、ＳＡＳ１５２の経由は省略されている。
【００４２】
続いて、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ａのインストール処理を実行する（Ｓ１０２）。具体的には、ＳＤカード８０ａよりＪＳＤＫファイル１５６Ｆａが読み込まれ、展開される。また、ＪＳＤＫプラットフォーム１５５が所定の記憶媒体を用いて管理するＪＳＤＫアプリ１５６のインストール情報（インストールされているＪＳＤＫアプリ１５６の一覧情報）に、ＪＳＤＫアプリ１５６ａのアプリ識別子等を含むエントリが追加される。更に、ＪＳＤＫアプリ１５６ａ及びＪＳＤＫ属性ファイル１５６Ｐａが所定の記憶領域（以下、「ＪＳＤＫインストール領域」という。）にコピーされる。インストール処理が終了すると、ＪＳＤＫ管理部１５５１は、ＳＡＳ１５２に対してインストール処理が終了したことを応答する。当該応答に応じて、インストール処理が終了したことが、ＳＡＳ１５２によってインストール画面を介してユーザに通知される（Ｓ１０３）。
【００４３】
続いて、ユーザが、メイン画面において起動の実行を選択すると、ＳＡＳ１５２は、ＮＶＲＡＭ１１５を用いて管理されているＣＳＤＫアプリ１５３のインストール情報（インストールされているＣＳＤＫアプリ１５３の一覧情報）、又はＪＳＤＫアプリ１５６のインストール情報に含まれているＣＳＤＫアプリ１５３及びＪＳＤＫアプリ１５６の一覧を含む起動画面を操作パネル１５に表示させる。ＳＡＳ１５２は、ＪＳＤＫ管理部１５５１に問い合わせることにより、ＪＳＤＫアプリ１５６のインストール情報を取得する。なお、起動画面は、アプリ管理画面５１０の一つである。
【００４４】
ユーザは、起動画面に含まれているＪＳＤＫアプリ１５６ａの行を選択状態として、起動指示を起動画面を介して入力する（Ｓ１０４）。当該起動指示は、ＳＡＳ１５２を介してＪＳＤＫ管理部１５５１に通知される。
【００４５】
続いて、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ａに対して起動要求を入力する（Ｓ１０５）。当該起動要求に応じ、ＪＳＤＫアプリ１５６ａは、ＪＶＭ１５４上においてスレッドとして起動される（Ｓ１０６）。
【００４６】
続いて、ユーザによる指示に応じて、ＳＡＳ１５２は、インストール画面を再度表示させる。ユーザは、インストール画面に含まれているＣＳＤＫアプリ１５３ａの行を選択状態として、インストールの実行指示をインストール画面を介して入力する（Ｓ１１１）。続いて、ＳＡＳ１５２は、ＣＳＤＫアプリ１５３ａのインストール処理を実行する（Ｓ１１２）。具体的には、ＳＤカード８０ａよりＣＳＤＫファイル１５３Ｆａが読み込まれ、展開される。また、ＮＶＲＡＭ１１５を用いて管理されている、ＣＳＤＫアプリ１５３のインストール情報に、ＣＳＤＫアプリ１５３ａのアプリ識別子等を含むエントリが追加される。更に、ＣＳＤＫアプリ１５３ａ及びＣＳＤＫ属性ファイル１５３Ｐａが、所定の記憶領域（以下、「ＣＳＤＫインストール領域」という。）にコピーされる。
【００４７】
インストールが終了すると、ＳＡＳ１５２は、インストールが終了したことを、インストール画面を介してユーザに通知する（Ｓ１１３）。
【００４８】
その後、ＳＤＫアプリＡ１が不要となった場合、ユーザは、メイン画面においてアンインストールの実行を選択する。ＳＡＳ１５２は、ＣＳＤＫアプリ１５３のインストール情報又はＪＳＤＫアプリ１５６のインストール情報に含まれているＣＳＤＫアプリ１５３及びＪＳＤＫアプリ１５６の一覧を含むアンインストール画面を操作パネル１５に表示させる。なお、アンインストール画面は、アプリ管理画面５１０の一つである。
【００４９】
ユーザは、アンインストール画面に含まれているＪＳＤＫアプリ１５６ａの行を選択状態として、アンインストール指示をアンインストール画面を介して入力する（Ｓ１２１）。当該アンインストール指示は、ＳＡＳ１５２を介してＪＳＤＫ管理部１５５１に通知される。
【００５０】
アンインストール指示に応じ、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ａに対して停止要求を入力する（Ｓ１２２）。当該停止要求に応じ、ＪＳＤＫアプリ１５６ａに係るスレッドは終了する（Ｓ１２３）。続いて、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ａのアンインストール処理を実行する（Ｓ１２４）。例えば、ＪＳＤＫプラットフォーム１５５によって管理されている、ＪＳＤＫアプリ１５６のインストール情報より、ＪＳＤＫアプリ１５６ａのエントリが削除される。また、ＪＳＤＫインストール領域にコピーされていたＪＳＤＫアプリ１５６ａ及びＪＳＤＫ属性ファイル１５６Ｐａが削除される。
【００５１】
続いて、ユーザは、アンインストール画面に含まれているＣＳＤＫアプリ１５３ａの行を選択状態として、アンインストール指示をアンインストール画面を介して入力する（Ｓ１３１）。アンインストール指示に応じ、ＳＡＳ１５２は、ＣＳＤＫアプリ１５３ａのアンインストール処理を実行する（Ｓ１３２）。例えば、ＮＶＲＡＭ１１５を用いて管理されている、ＣＳＤＫアプリ１５３のインストール情報より、ＣＳＤＫアプリ１５３ａに関するエントリが削除される。また、ＣＳＤＫインストール領域にコピーされていたＣＳＤＫアプリ１５３ａ及びＣＳＤＫ属性ファイル１５３Ｐａが削除される。
【００５２】
以上のように、第一の実施の形態では、一つのＳＤＫアプリＡ１であるにも拘わらず、インストール操作及びアンインストール操作のそれぞれについて、２回の操作（ステップＳ１０１及びＳ１１１とステップＳ１２１及びＳ１３１）が必要とされる。
【００５３】
このような不都合を是正するため、第二の実施の形態では、図６に示されるようにＳＤＫアプリが構成される。
【００５４】
図６は、第二の実施の形態においてインストール対象とされるＳＤＫアプリの構成例を示す図である。
【００５５】
同図に示されるＳＤカード８０ｂには、ＳＤＫアプリＢ１として、一つのＪＳＤＫファイル１５６Ｆｂが記録されている。ＪＳＤＫファイル１５６Ｆｂは、ＪＳＤＫアプリ１５６ｂ、ＪＳＤＫ属性ファイル１５６Ｐｂ、ＣＳＤＫファイル１５３Ｆｂ、代行ライブラリ２１１、及び代行属性ファイル２１１Ｐ等を含む書庫ファイル（例えば、ＪＡＲファイル）である。ＪＳＤＫアプリ１５６ｂは、ＳＤＫアプリＡ１における、ＪＳＤＫアプリ１５６の実体である。ＪＳＤＫ属性ファイル１５６Ｐは、ＪＳＤＫファイル１５６Ｆｂの構成情報やＪＳＤＫアプリ１５６ｂに関する属性情報（例えば、ＪＳＤＫアプリ１５６ｂのアプリ識別子等）を含むファイルである。
【００５６】
ＣＳＤＫファイル１５３Ｆｂは、図４におけるＣＳＤＫファイル１５３Ｆａと同様の構成を有する書庫ファイルである。すなわち、ＣＳＤＫファイル１５３Ｆｂには、ＳＤＫアプリＡ１における、ＣＳＤＫアプリ１５３の実体であるＣＳＤＫアプリ１５３ｂと、ＣＳＤＫファイル１５３Ｆｂの構成情報やＣＳＤＫアプリ１５３ｂに関する属性情報（例えば、ＣＳＤＫアプリ１５３ｂのアプリ識別子等）を含むＣＳＤＫ属性ファイル１５３Ｐｂと等が含まれる。
【００５７】
このように、第二の実施の形態では、ＣＳＤＫアプリ１５３ｂは、ＪＳＤＫアプリ１５６ａのＪＡＲファイル内に格納されている。
【００５８】
なお、第二の実施の形態において、ＪＳＤＫアプリ１５６ｂとＣＳＤＫアプリ１５３ｂとの依存関係は、第一の実施の形態におけるＪＳＤＫアプリ１５６ａとＣＳＤＫアプリ１５３ａとの依存関係と同様である。すなわち、ＪＳＤＫアプリ１５６ｂは、ＣＳＤＫアプリ１５３ｂを一つのプログラムモジュールとして利用する。
【００５９】
代行ライブラリ２１１は、ＣＳＤＫアプリ１５３ｂのインストール処理及びアンインストール処理を実行するプログラムモジュール（ライブラリ）である。同図に示されるように、代行ライブラリ２１１は、Ｊａｖａ（登録商標）層２１１ｊとネイティブ層２１１ｃとを有する。Ｊａｖａ（登録商標）層２１１ｊは、ＪＳＤＫアプリ１５６ｂに対するインタフェース（メソッド等）を提供する層であり、Ｊａｖａ（登録商標）言語によって実装されている。Ｎａｔｉｖｅ層は、インストール処理及びアンインストール処理のアルゴリズムがＣ言語によって実装されている層である。すなわち、代行ライブラリ２１１において、本質的な機能はＣ言語によって実装され、Ｃ言語によって実装された部分は、Ｊａｖａ（登録商標）言語によってラッピングされている。代行ライブラリ２１１の本質的な機能がＣ言語によって実装されているのは、代行ライブラリ２１１は、ＮＶＲＡＭ１１５等にアクセスする必要があるところ、ＮＶＲＡＭ１１５へのアクセスをＪａｖａ（登録商標）言語によって実装するのは困難だからである。また、代行ライブラリ２１１がＪａｖａ（登録商標）層２１１ｊを有するのは、ＪＳＤＫアプリ１５６ｂによる代行ライブラリ２１１の利用（呼び出し）を容易なものとするためのである。なお、代行ライブラリ２１１は、例えば、一つのＪＡＲファイルとしてＪＳＤＫアプリ１５６ｂに含まれている。
【００６０】
代行属性ファイル２１１Ｐは、代行ライブラリ２１１によるＣＳＤＫアプリ１５３ｂのインストール等に必要な情報が含まれているファイルである。
【００６１】
代行ライブラリ２１１を含むＳＤＫアプリに関して、画像形成装置１０におけるインストールの機構（仕組み）について説明する。図７は、代行ライブラリを含むＳＤＫアプリに関するインストール機構を説明するための図である。
【００６２】
同図に示されるように、ＪＳＤＫアプリ１５６ｂのインストールに関しては、第一の実施の形態と同様に行われる。すなわち、アプリ管理画面５１０に対して入力された指示が、ＳＡＳ１５２からＪＳＤＫ管理部１５５１に通知される。ＪＳＤＫ管理部１５５１は、通知され指示に応じてＪＳＤＫアプリ１５６ｂのインストール又はアンインストールを実行する。
【００６３】
インストールされたＪＳＤＫアプリ１５６ｂは、起動時に代行ライブラリ２１１を呼び出す。代行ライブラリ２１１は、呼び出しに応じ、ＣＳＤＫアプリ１５３ｂのインストール処理を、ＳＡＳ１５２に代わって実行する。
【００６４】
また、ＪＳＤＫアプリ１５６ｂがアンインストールされると、その旨がコールバック制御部１５５２により代行ライブラリ２１１にコールバックされる（通知される）。代行ライブラリ２１１は、コールバックに基づいてＪＳＤＫアプリ１５６ｂのアンインストールを検知する。代行ライブラリ２１１は、当該アンインストールの検知に応じ、ＣＳＤＫアプリ１５３ｂのアンインストール処理を、ＳＡＳ１５２に代わって実行する。
【００６５】
このように、代行ライブラリ２１１を含むＳＤＫアプリＢ１においては、ＣＳＤＫアプリ１５３ｂのインストール処理及びアンインストール処理が、代行ライブラリ２１１によって代行される。
【００６６】
以下、図６に示されるＳＤＫアプリＢ１に関する画像形成装置１０へのインストール及びアンインストールの処理手順について説明する。
【００６７】
図８は、第二の実施の形態におけるＳＤＫアプリのインストール処理及びアンインストール処理の処理手順の一例を説明するためのシーケンス図である。同図の処理の開始前において、図６に示されるＳＤカード８０ｂがＳＤカードスロット１７に挿入さている。また、アプリ管理画面５１０の一つであるメイン画面がＳＡＳ１５２によって操作パネル１５に表示されている。
【００６８】
メイン画面においてインストールの実行が選択されると、ＳＡＳ１５２は、ＳＤカード８０ｂ内のＪＳＤＫファイル１５６Ｆｂに含まれているＪＳＤＫ属性ファイル１５６Ｐｂに基づいて、ＪＳＤＫアプリ１５６ｂの行を選択候補として含むインストール画面を操作パネル１５に表示させる。
【００６９】
ステップＳ２０１において、ユーザは、インストール画面に含まれているＪＳＤＫアプリ１５６ｂの行を選択状態として、インストールの実行指示をインストール画面を介して入力する。当該インストールの実行指示は、ＳＡＳ１５２を介してＪＳＤＫ管理部１５５１に通知される。なお、図８において、ＳＡＳ１５２の経由は省略されている。
【００７０】
続いて、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ｂのインストール処理を実行する（Ｓ２０２）。具体的には、ＳＤカード８０ｂよりＪＳＤＫファイル１５６Ｆｂが読み込まれ、展開される。また、ＪＳＤＫプラットフォーム１５５が所定の記憶媒体を用いて管理するＪＳＤＫアプリ１５６のインストール情報に、ＪＳＤＫアプリ１５６ｂのアプリ識別子等を含むエントリが追加される。更に、ＪＳＤＫファイル１５６Ｆｂに含まれている、ＪＳＤＫアプリ１５６ｂ、ＪＳＤＫ属性ファイル１５６Ｐｂ、ＣＳＤＫファイル１５３Ｆｂ、代行ライブラリ２１１、及び代行属性ファイル２１１ＰがＪＳＤＫインストール領域にコピーされる。なお、ＣＳＤＫファイル１５３Ｆｂ、代行ライブラリ２１１、及び代行属性ファイル２１１Ｐ等は、ＪＳＤＫ管理部１５５１にとっては、ＪＳＤＫアプリ１５６ｂのリソースファイルとして見える。したがって、ＪＳＤＫ管理部１５５１は、ＣＳＤＫファイル１５３Ｆｂ、代行ライブラリ２１１、及び代行属性ファイル２１１Ｐについて特別な処理を実行することはない。但し、代行ライブラリ２１１については、ＪＳＤＫアプリ１５６ｂのリソースファイルとして保存されることにより、そのインストールは完了する。すなわち、代行ライブラリは、ＪＳＤＫアプリ１５６ｂのインストールに付随して（ＪＳＤＫアプリ１５６ｂと共に）インストールされる。
【００７１】
インストール処理が終了すると、ＪＳＤＫ管理部１５５１は、ＳＡＳ１５２に対してインストールが終了したことを応答する。当該応答に応じて、インストールが終了したことが、ＳＡＳ１５２によってインストール画面を介してユーザに通知される（Ｓ２０３）。
【００７２】
続いて、ユーザが、メイン画面において起動の実行を選択すると、ＳＡＳ１５２は、ＣＳＤＫアプリ１５３のインストール情報、又はＪＳＤＫアプリ１５６のインストール情報に含まれているＣＳＤＫアプリ１５３及びＪＳＤＫアプリ１５６の一覧を含む起動画面を操作パネル１５に表示させる。
【００７３】
ユーザは、起動画面に含まれているＪＳＤＫアプリ１５６ｂの行を選択状態として、起動指示を起動画面を介して入力する（Ｓ２０４）。当該起動指示は、ＳＡＳ１５２を介してＪＳＤＫ管理部１５５１に通知される。
【００７４】
続いて、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ａに対して起動要求を入力する（Ｓ２０５）。当該起動要求に応じ、ＪＳＤＫアプリ１５６ａは、ＪＶＭ１５４上においてスレッドとして起動される（Ｓ２０６）。続いて、ＪＳＤＫアプリ１５６ａは、代行ライブラリ２１１をＲＡＭ１１２にロードし、ロードされた代行ライブラリ２１１のＪａｖａ（登録商標）層２１１ｊにおける所定のメソッド（又は関数）を呼び出す（Ｓ２０７）。すなわち、代行ライブラリ２１１は、ＪＳＤＫアプリ１５６ａからの呼び出しを受け付ける。なお、代行ライブラリ２１１のロードに応じ、代行属性ファイル２１１ＰもＲＡＭ１１２にロードされる。
【００７５】
代行ライブラリ２１１は、呼び出しに応じ、ＪＳＤＫアプリ１５６ｂのアンインストールを代行ライブラリ２１１に対して通知させるためのコールバック情報をＪＳＤＫプラットフォーム１５５のコールバック制御部１５５２に登録する（Ｓ２０８）。すなわち、イベントとして、「ＪＳＤＫアプリ１５６ｂのアンインストール」が指定され、通知先（コールバック関数）として代行ライブラリ２１１の所定のメソッドが指定されたコールバック情報の登録が要求される。コールバック制御部１５５２は、当該コールバック情報を、例えば、ＲＡＭ１１２を用いて記憶し、コールバック情報が登録されたことを代行ライブラリ２１１に応答する（Ｓ２０９）。
【００７６】
続いて、代行ライブラリ２１１のネイティブ層２１１ｃは、ＣＳＤＫファイル１５３Ｆｂに基づいて、ＣＳＤＫアプリ１５３ｂのインストール処理を実行する（Ｓ２１０）。当該インストール処理の詳細については後述する。インストール処理の終了後、代行ライブラリ２１１のＪａｖａ（登録商標）層２１１ｊは、インストール処理の結果を、呼び出し元のＪＳＤＫアプリ１５６ｂに応答する（Ｓ２１１）。続いて、ＪＳＤＫアプリ１５６ｂは、処理の制御をＪＳＤＫ管理部１５５１に戻す（Ｓ２１２）。ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ｂが起動されたことをＳＡＳ１５２に通知する。ＳＡＳ１５２は、当該通知に応じて、ＪＳＤＫアプリ１５６ｂが起動されたことを、起動画面に表示させる（Ｓ２１３）。
【００７７】
このように、第二の実施の形態では、ＪＳＤＫアプリ１５６ｂの起動に応じて、代行ライブラリ２１１によってＣＳＤＫアプリ１５３ｂのインストールが自動的に実行される。
【００７８】
その後、ＳＤＫアプリＡ１が不要となった場合、ユーザは、メイン画面においてアンインストールの実行を選択する。ＳＡＳ１５２は、ＣＳＤＫアプリ１５３のインストール情報又はＪＳＤＫアプリ１５６のインストール情報に含まれているＣＳＤＫアプリ１５３及びＪＳＤＫアプリ１５６の一覧を含むアンインストール画面を操作パネル１５に表示させる。
【００７９】
ユーザは、アンインストール画面に含まれているＪＳＤＫアプリ１５６ｂの行を選択状態として、アンインストール指示をアンインストール画面を介して入力する（Ｓ２２１）。当該アンインストール指示は、ＳＡＳ１５２を介してＪＳＤＫ管理部１５５１に通知される。
【００８０】
アンインストール指示に応じ、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ｂに対して停止要求を入力する（Ｓ２２２）。当該停止要求に応じ、ＪＳＤＫアプリ１５６ｂに係るスレッドは終了する（Ｓ２２３）。続いて、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ｂのアンインストール処理を実行する（Ｓ２２４）。例えば、ＪＳＤＫプラットフォーム１５５によって管理されている、ＪＳＤＫアプリ１５６のインストール情報より、ＪＳＤＫアプリ１５６ｂのエントリが削除される。また、ＪＳＤＫインストール領域にコピーされていたＪＳＤＫアプリ１５６ｂ、ＪＳＤＫ属性ファイル１５６Ｐｂ、ＣＳＤＫファイル１５３Ｆｂ、代行ライブラリ２１１、及び代行属性ファイル２１１Ｐが削除される。
【００８１】
続いて、ＪＳＤＫプラットフォーム１５５のコールバック制御部１５５２は、ＪＳＤＫアプリ１５６ｂのアンインストールに応じ、ステップＳ２０８において登録されていたコールバック情報に指定されているコールバック関数を呼び出す（Ｓ２２５）。当該コールバック関数は、代行ライブラリ２１１のＪａｖａ（登録商標）層２１１ｊの所定のメソッドである。したがって、当該所定のメソッドが呼び出される。その結果、ＪＳＤＫアプリ１５６ｂがアンインストールされたことが、代行ライブラリ２１１に通知される。なお、ステップＳ２２４において、代行ライブラリ２１１のモジュールファイルは削除されているが、当該モジュールファイル及び代行属性ファイル２１１Ｐの内容は、ＲＡＭ１１２にロードされている。したがって、代行ライブラリ２１１は、継続して処理を実行することができる。続いて、代行ライブラリ２１１のネイティブ層２１１ｃは、ＣＳＤＫアプリ１５３ｂのアンインストール処理を実行する（Ｓ２２６）。
【００８２】
アンインストール処理の終了後、代行ライブラリ２１１のＪａｖａ（登録商標）層２１１ｊは、処理の制御を、呼び出し元のコールバック制御部１５５２に戻す（Ｓ２２７）。続いて、ＪＳＤＫ管理部１５５１は、ＪＳＤＫアプリ１５６ｂがアンインストールされたことをＳＡＳ１５２に通知する。ＳＡＳ１５２は、当該通知に応じて、ＪＳＤＫアプリ１５６ｂがアンインストールされたことを、アンインストール画面に表示させる（Ｓ２２８）。
【００８３】
このように、第二の実施の形態では、ＪＳＤＫアプリ１５６ｂのアンインストールに応じて、代行ライブラリ２１１によってＣＳＤＫアプリ１５３ｂのアンインストールが自動的に実行される。
【００８４】
続いて、図８のステップＳ２１０の詳細について説明する。図９は、代行ライブラリによるＣＳＤＫアプリのインストール処理の処理手順の一例を説明するための図である。同図の説明において、「代行ライブラリ２１１」とは、代行ライブラリ２１１のネイティブ層２１１ｃを意味する。
【００８５】
ステップＳ３０１において、代行ライブラリ２１１は、インストール対象のＣＳＤＫアプリ１５３ｂが、画像形成装置１０に既にインストール済みであるか否かを判定する。当該判定は、代行属性ファイル２１１Ｐと、ＮＶＲＡＭ１１５を用いて管理されている、ＣＳＤＫアプリ１５３のインストール情報とを比較又は照合することにより行われる。
【００８６】
図１０は、代行属性ファイルに記録されている情報の内容の一例を示す図である。同図に示されるように、代行属性ファイル２１１Ｐｂには、ＣＳＤＫアプリ１５３ｂが対応可能な画像形成装置１０の機種ごとに、機種名、アプリ識別子、及びＣＳＤＫファイル名等が記録されている。
【００８７】
機種名は、画像形成装置１０の機種の名前（モデル名）である。アプリ識別子は、ＣＳＤＫアプリ１５３ｂの識別子である。同一の機能を実現するＣＳＤＫアプリ１５３ｂであっても、機種によってファイルの内容が異なる場合は、異なるアプリ識別子が付与される。ＣＳＤＫファイル名は、ＣＳＤＫファイル１５３Ｆｂの名前である。同図では、各機種に対して、共通のＣＳＤＫファイル１５３Ｆｂが適用可能な例が示されている。したがって、各機種名に対応するアプリ識別子も共通している。
【００８８】
機種に応じて、適用すべきＣＳＤＫファイル１５３Ｆｂが異なる場合、各アプリ識別子及び各ＣＳＤＫファイル名は異なる。この場合、ＪＳＤＫファイル１５６Ｆｂには、複数のＣＳＤＫファイル１５３Ｆｂが含まれる。
【００８９】
ステップＳ３０１では、インストール先の画像形成装置１０の機種名に対して代行属性ファイル２１１Ｐにおいて対応付けられているアプリ識別子と同一のアプリ識別子が、ＮＶＲＡＭ１１５を用いて管理されている、ＣＳＤＫアプリ１５３のインストール情報に含まれているか否かが判定される。該当するアプリ識別子が、ＣＳＤＫアプリ１５３のインストール情報に含まれている場合、代行ライブラリ２１１は、ＣＳＤＫアプリ１５３ｂについてインストール済みであると判定し、図９の処理を正常終了させる。したがって、この場合、ＣＳＤＫアプリ１５３ｂのインストールは実行されない。
【００９０】
該当するアプリ識別子が、ＣＳＤＫアプリ１５３のインストール情報に含まれていない場合、代行ライブラリ２１１は、ＣＳＤＫアプリ１５３ｂについて未インストールであると判定する。続いて、代行ライブラリ２１１は、代行属性ファイル２１１Ｐに基づいて、インストール先の画像形成装置１０の機種名に対応するＣＳＤＫファイル名を判定する（Ｓ３０２）。
【００９１】
インストール先の画像形成装置１０の機種名に対するＣＳＤＫファイル名が代行属性ファイル２１１Ｐに記録されていない場合、代行ライブラリ２１１は、図９の処理を異常終了させる（Ｓ３０５）。異常終了とは、インストールに失敗したことをＪＳＤＫアプリ１５６ｂに返却することをいう。
【００９２】
インストール先の画像形成装置１０の機種名に対するＣＳＤＫファイル名が代行属性ファイル２１１Ｐに記録されている場合、代行ライブラリ２１１は、ＣＳＤＫアプリ１５３ｂのインストールの可否を判定する（Ｓ３０４）。例えば、インストール可能なＣＳＤＫアプリ１５３の数に上限が有る場合や、他の制限がある場合には、ＣＳＤＫアプリ１５３ｂのインストールが、これらの上限又は制限を超えるものでないか否かに基づいて、インストールの可否が判定される。
【００９３】
インストールが不可能であると判定された場合、代行ライブラリ２１１は、図９の処理を異常終了させる（Ｓ３０５）。インストールが可能であると判定された場合、代行ライブラリ２１１は、ステップＳ３０２において判定されたＣＳＤＫファイル名に係るＣＳＤＫファイル１５３Ｆｂに基づいて、ＣＳＤＫアプリ１５３ｂのインストール処理を実行する（Ｓ３０６）。具体的には、図８のステップＳ２０２においてＪＳＤＫインストール領域に保存されたＣＳＤＫファイル１５３Ｆｂが展開され、ＣＳＤＫアプリ１５３ｂ及びＣＳＤＫ属性ファイル１５３Ｐｂが、ＣＳＤＫインストール領域に保存される。また、ＮＶＲＡＭ１１５を用いて管理されている、ＣＳＤＫアプリ１５３のインストール情報に、ＣＳＤＫアプリ１５３ｂのアプリ識別子等を含むエントリが追加される。
【００９４】
インストール処理に失敗した場合、例えば、ＣＳＤＫインストール領域へのＣＳＤＫアプリ１５３ｂ等の保存又はインストール情報の追加等に失敗した場合、代行ライブラリ２１１は、図９の処理を異常終了させる。
【００９５】
続いて、図８のステップＳ２２６の詳細について説明する。図１１は、代行ライブラリによるＣＳＤＫアプリのアンインストール処理の処理手順の一例を説明するための図である。同図の説明において、「代行ライブラリ２１１」とは、代行ライブラリ２１１のネイティブ層２１１ｃを意味する。
【００９６】
ステップＳ４０１において、代行ライブラリ２１１は、ＣＳＤＫアプリ１５３ｂのアンインストールの要否を判定する。具体的には、例えば、ステップＳ２２５において呼び出されたコールバック関数の引数に指定されているアンインストール対象のＣＳＤＫアプリ１５３ｂのアプリ識別子が、ＮＶＲＡＭ１１５を用いて管理されている、ＣＳＤＫアプリ１５３のインストール情報に含まれているか否かが判定される。すなわち、ＣＳＤＫアプリ１５３ｂがインストールされているか否かに基づいて、アンインストールの要否が判定される。
【００９７】
アンインストールは不要であると判定される場合（ＣＳＤＫアプリ１５３ｂはインストールされていない場合）、代行ライブラリ２１１は、図１１の処理を異常終了させる（Ｓ４０３）。アンインストールは必要であると判定される場合（ＣＳＤＫアプリ１５３ｂはインストールされている場合）、代行ライブラリ２１１は、ＣＳＤＫアプリ１５３ｂのアンインストール処理を実行する（Ｓ４０２）。例えば、ＮＶＲＡＭ１１５を用いて管理されている、ＣＳＤＫアプリ１５３のインストール情報より、ＣＳＤＫアプリ１５３ｂに関するエントリが削除される。また、ＣＳＤＫインストール領域にコピーされていたＣＳＤＫアプリ１５３ｂ及びＣＳＤＫ属性ファイル１５３Ｐｂが削除される。
【００９８】
アンインストール処理に失敗した場合、例えば、インストール情報からのエントリの削除又はＣＳＤＫアプリ１５３ｂ等の削除に失敗した場合、代行ライブラリ２１１は、図１１の処理を異常終了させる（Ｓ４０３）。
【００９９】
上述したように、本実施の形態によれば、ＪＳＤＫアプリ１５６ｂの起動時において、代行ライブラリ２１１によって自動的にＣＳＤＫアプリ１５３ｂのインストールが実行される。また、ＪＳＤＫアプリ１５６ｂのアンインストール時において、代行ライブラリ２１１によって自動的にＣＳＤＫアプリ１５３ｂのアンインストールが実行される。
【０１００】
したがって、ユーザは、ＣＳＤＫアプリ１５３ｂについてインストール操作を行う必要はない。
【０１０１】
また、ＣＳＤＫアプリ１５３ｂのインストール又はアンインストールのためのロジックは、ＪＳＤＫアプリ１５６ｂと共に配布される（ＪＳＤＫアプリ１５６ｂの一部としてＪＳＤＫファイル１５６Ｆｂ含まれている）代行ライブラリ２１１に実装されている。換言すれば、当該ロジックは、画像形成装置１０のインストール機構の既存部分（ＳＡＳ１５２やＪＳＤＫ管理部１５５１等）に実装される必要はない。したがって、画像形成装置１０のインストール機構の既存部分に対する修正を要することはない。
【０１０２】
また、ＣＳＤＫアプリ１５３ｂ（ＣＳＤＫファイル１５３Ｆｂ）は、ＪＳＤＫアプリ１５６ｂの一部としてＪＳＤＫファイル１５６Ｆｂに含まれている。したがって、ＳＡＳ１５２は、インストール対象を一つのＪＳＤＫアプリ１５６ｂとして、インストール画面に表示させることができる。また、ＪＳＤＫ管理部１５５１は、図５において説明したＪＳＤＫアプリ１５６ａのインストール処理と同様の処理によって、ＣＳＤＫアプリ１５３ｂ（ＣＳＤＫファイル１５３Ｆｂ）を画像形成装置１０内に取り込む（保存する）ことができる。
【０１０３】
なお、本実施の形態では、ＪＳＤＫアプリ１５６とＣＳＤＫアプリ１５３とのインストールを簡便化する例について説明したが、組み合わされるプログラムのプログラミング言語は、必ずしも異なっていなくてもよい。また、３つ以上のプログラムの組み合わせに関して、本実施の形態が適用されてもよい。具体的には、ＪＳＤＫファイル１５６Ｆｂに、二種類以上のＪＳＤＫアプリ１５６や二種類以上のＣＳＤＫアプリ１５３等が含まれていてもよい。
【０１０４】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１０５】
１０          画像形成装置
１１          コントローラ
１２          スキャナ
１３          プリンタ
１４          モデム
１５          操作パネル
１６          ネットワークインタフェース
１７          ＳＤカードスロット
８０          ＳＤカード
１１１        ＣＰＵ
１１２        ＲＡＭ
１１３        ＲＯＭ
１１４        ＨＤＤ
１１５        ＮＶＲＡＭ
１５１        標準アプリ
１５２        ＳＡＳ
１５３        ＣＳＤＫアプリ
１５３Ｆａ、１５３Ｆｂ    ＣＳＤＫファイル
１５３Ｐａ、１５３Ｆｂ    ＣＳＤＫ属性ファイル
１５４        ＪＶＭ
１５５        ＪＳＤＫプラットフォーム
１５６        ＪＳＤＫアプリ
１５６Ｆａ、１５６Ｆｂ    ＪＳＤＫファイル
１５６Ｐａ、１５６Ｐｂ    ＪＳＤＫ属性ファイル
１５７        ＶＡＳ
１５８        コントロールサービス
１５９        ＯＳ
２１１        代行ライブラリ
２１１Ｐ      代行属性ファイル
２１１ｊ      Ｊａｖａ（登録商標）層
２１１ｃ      ネイティブ層
１５１１      スキャンアプリ
１５１２      印刷アプリ
１５１３      コピーアプリ
１５１４      ＦＡＸアプリ
１５５１      ＪＳＤＫ管理部
１５５２      コールバック制御部
【先行技術文献】
【特許文献】
【０１０６】
【特許文献１】特開２００７−４９６７７号公報
【図１】
0005699500.tif 000002
【図２】
0005699500.tif 000003
【図３】
0005699500.tif 000004
【図４】
0005699500.tif 000005
【図５】
0005699500.tif 000006
【図６】
0005699500.tif 000007
【図７】
0005699500.tif 000008
【図８】
0005699500.tif 000009
【図９】
0005699500.tif 000010
【図１０】
0005699500.tif 000011
【図１１】
0005699500.tif 000012