(57)【特許請求の範囲】
【請求項１】
パッケージに記憶された所定のプログラムを読み出してインストールを行うパッケージのインストール対象装置であって、
実行環境に依存せずに実行可能なプログラム言語によって記述されたインストール用プログラム、実行環境に依存するプログラム言語によって記述され実行環境毎に登録された同一ファイル名の複数の第１のプログラム、及び、前記第１のプログラムをファイル名で呼び出す、実行環境に依存せずに実行可能なプログラム言語で記述され実行環境に共通に登録された第２のプログラム、が含まれるパッケージを、記憶媒体又はネットワーク経由で取得するパッケージ取得手段と、
前記インストール用プログラムを実行することで実現された、
当該インストール対象装置の実行環境を取得する情報取得手段と、
前記情報取得手段が取得した実行環境に基づき、当該インストール対象装置にて実行可能な前記第１のプログラムを特定するプログラム特定手段と、
前記プログラム特定手段が特定した前記第１のプログラム、及び、前記第２のプログラムを、当該インストール対象装置の記憶手段にコピーするコピー手段と、
を有することを特徴とするパッケージのインストール対象装置。
【請求項２】
前記パッケージには、実行環境に対応づけて前記第１のプログラムの登録位置情報が登録された対応ファイルが含まれており、
前記プログラム特定手段は、前記対応ファイルから、前記情報取得手段が取得した実行環境に対応づけられた前記第１のプログラムの登録位置情報を取得する、
ことを特徴とする請求項１記載のパッケージのインストール対象装置。
【請求項３】
前記登録位置情報は、ツリー構造のファイルシステムにおいて前記第１のプログラムが記憶されたディレクトリ情報であり、
前記プログラム特定手段は、前記ディレクトリ情報に基づき、当該インストール対象装置にて実行可能な前記第１のプログラムを特定する、
ことを特徴とする請求項２記載のパッケージのインストール対象装置。
【請求項４】
前記パッケージには、実行環境に依存する前記第１のプログラムが含まれているか否かを示す第１プログラム存在情報が含まれており、
前記第１プログラム存在情報に基づき、前記情報取得手段に当該インストール対象装置の実行環境を取得させるか否かを判断する判断手段、
を有することを特徴とする請求項１〜３いずれか１項記載のパッケージのインストール対象装置。
【請求項５】
前記インストール用プログラムを実行した場合、
前記第１のプログラム又は前記第２のプログラムをインストール中である旨を表示手段に表示する、ことを特徴とする請求項１〜４いずれか１項記載のパッケージのインストール対象装置。
【請求項６】
前記インストール用プログラムが、既に当該インストール対象装置の記憶手段に記憶されている場合、当該インストール対象装置の記憶手段に記憶されている前記インストール用プログラムを、前記パッケージに含まれる前記インストール用プログラムに置き換える、
ことを特徴とする請求項１〜５いずれか１項記載のパッケージのインストール対象装置。
【請求項７】
前記実行環境は、当該インストール対象装置のハードウェア情報、及び、ソフトウェア情報により特定される、
ことを特徴とする請求項１〜６いずれか１項記載のパッケージのインストール対象装置。
【請求項８】
前記ハードウェア情報はＣＰＵの名称、種類又は型番であり、前記ソフトウェア情報はＯＳの名称、ＯＳのバージョン又はライブラリファイルのバージョンである、
ことを特徴とする請求項７項記載のパッケージのインストール対象装置。
【請求項９】
実行環境に依存せずに実行可能なプログラム言語は、Java（登録商標）である、
ことを特徴とする請求項１項記載のパッケージのインストール対象装置。
【請求項１０】
パッケージに記憶された所定のプログラムを読み出してインストールを行うパッケージのインストール対象装置のインストール方法であって、
パッケージ取得手段が、実行環境に依存せずに実行可能なプログラム言語によって記述されたインストール用プログラム、実行環境に依存するプログラム言語によって記述され実行環境毎に登録された同一ファイル名の複数の第１のプログラム、及び、前記第１のプログラムをファイル名で呼び出す、実行環境に依存せずに実行可能なプログラム言語で記述され実行環境に共通に登録された第２のプログラム、が含まれるパッケージを、記憶媒体又はネットワーク経由で取得するステップと、
ＣＰＵが、前記インストール用プログラムを実行して、情報取得手段、プログラム特定手段、及び、コピー手段を実現するステップと、
前記情報取得手段が、インストール対象装置の実行環境を取得するステップと、
前記情報取得手段が取得した実行環境に基づき、前記プログラム特定手段が、前記インストール対象装置にて実行可能な前記第１のプログラムを特定するステップと、
前記プログラム特定手段が特定した前記第１のプログラム、及び、前記第２のプログラムを、前記コピー手段が前記インストール対象装置の記憶手段にコピーするステップと、
を有することを特徴とするインストール方法。
【請求項１１】
実行環境に依存するプログラム言語によって記述され実行環境毎に登録された同一ファイル名の複数の第１のプログラム、及び、前記第１のプログラムをファイル名で呼び出す、実行環境に依存せずに実行可能なプログラム言語で記述され実行環境に共通に登録された第２のプログラム、と共にパッケージされた、実行環境に依存せずに実行可能なプログラム言語によって記述されたプログラムであって、
パッケージに記憶された所定のプログラムを読み出してインストールを行うパッケージのインストール対象装置のコンピュータに、
前記インストール対象装置の実行環境を取得する情報取得ステップと、
前記情報取得ステップにより取得された実行環境に基づき、前記インストール対象装置にて実行可能な前記第１のプログラムを特定するプログラム特定ステップと、
前記プログラム特定ステップにより特定された前記第１のプログラム、及び、前記第２のプログラムを、前記インストール対象装置の記憶手段にコピーするステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムをインストール可能な画像形成装置、インストール方法及びプログラムに関する。
【背景技術】
【０００２】
プリンタ機能、スキャナ機能、コピー機能等を搭載した各装置や、これら複数の機能を搭載したＭＦＰ(Multi Function Peripheral)等の画像形成装置には、各機能やより細分化された機能に対応したプログラムが搭載されている。画像形成装置のシステムには、より簡単な操作でＭＦＰを使いこなすためのＡＰＩ(Application Program Interface)が用意されている。システムメーカ（サードパーティ）やユーザは、画像形成装置のメーカが提供するＳＤＫ（Software Development Kit）を利用して、スキャナ機能、プリンタ機能、コピー機能等を活用するプログラムを開発することにより、画像形成装置のメーカが提供している機能により付加価値をつけることができる。
【０００３】
ここで、一部のプログラム（例えば、Java（登録商標）プログラム）は、ハードウェアやソフトウェアに依存せずに実行できるため、画像形成装置においても利用範囲が広がっている。画像形成装置では、様々な機種や同じ機種の後継機種などが存在するのが通常なので、ハードウェアやソフトウェアに依存しないプログラムを開発することのメリットは少なくない。一方、このようなプログラムは、ハードウェア上に仮想マシンを形成することが必要であり、仮想マシンのハードウェア互換性を考慮する必要がある（例えば、特許文献１参照。）。特許文献１には、ソフトウェアのインストールに際し、ハードウェア情報を確認して、インストールするプログラムの選択を行う技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載された技術は、仮想マシンのバージョンアップをハードウェア依存性を排除して行うことにのみ着目しているため、ハードウェアやソフトウェアに依存しないプログラム言語では開発の困難なソフトウェアのインストールについて考慮されていないという問題がある。
【０００５】
一般にＳＤＫ用のＡＰＩでは、画像形成装置メーカがシステムメーカやユーザに解放している機能のＡＰＩが限られていることから、使用できるＡＰＩだけでは実現したい機能が実現できないことがある。このため、画像形成装置メーカが、ＭＦＰ本体側のソフトウェアをユーザ毎に変更するカスタマイズ開発を行うことが少なからずあった。しかし、このようなユーザ毎のカスタマイズ開発が発生すると、画像形成装置メーカが当初予定していなかった機能の開発工数が発生するため、マンパワーや予算の予測が行えないし、ソースコード自体も枝分かれしてしまうので、ソースコードの管理も煩わしい状態となってしまっていた。
【０００６】
これらの不都合を回避するためにはシステムメーカやユーザに、画像形成装置メーカが提供するＡＰＩの制約を外すこと、つまり、画像形成装置のある機能の丸ごとの停止や削除も含め、全ての機能を利用できるようなＡＰＩ又は仕組みを提供する必要がある。そのような仕組みを提供するには、仮想マシン上で動作するプログラムで開発しておくと実現しやすいことは、上述したとおりである。
【０００７】
しかしながら、画像形成装置は、ＭＦＰやスキャナやプロッタ等のメカ制御を行っていること、及び、性能面で譲れない手順で制御されるプリンタ等の機能を搭載しているため、全てのプログラムを仮想マシン上で動くプログラム言語で開発するわけにもいかず、性能に影響する部分についてはＣ言語等の性能を出しやすいプログラム言語で開発する必要がある。Ｃ言語で開発されたプログラムの場合、ＣＰＵ（及びソフトウェアを含むプラットフォーム）が異なるとコンパイルされたバイナリも異なるので、製品毎にプログラムが変わってしまうことになる。
【０００８】
また、画像形成装置メーカとしては、ある時点で販売したプラグイン（プログラム）は、別の時期に販売した別の製品でも問題なく動作して欲しいと考えることが通常である。この理由としては、ユーザは購入したプラグインを各製品毎に購入するのは煩わしいし、販売側としても同じ機能のプラグインを機種毎に販売すると管理が煩わしいことが挙げられる。
【０００９】
しかし、上記のように性能面に影響する部分についてはＣ言語等のプログラムで記載しないと基本的な製品性能が達成できなかったり、製品の世代によっては搭載するハードウェアやソフトウェアが異なっているため、システムメーカやユーザに対し全ての機能の開示が必要となったり、前世代の製品用に開発したプラグインが後世代の製品では動作しない（又はその逆に、後世代の製品用に開発したプラグインが前世代の製品では動作しない）等の問題が生じる。このため、現状では、画像形成装置メーカは同じ機能のプラグインでも、製品毎に販売しなければならない。
【００１０】
本発明は、上記課題に鑑み、ハードウェアやソフトウェアに依存しないプログラムを活用して、製品が異なったり製品の世代が変わっても、複数の製品にて正常動作するプラグイン機能を共通のパッケージで提供できる画像形成装置、インストール方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明は、パッケージに記憶された所定のプログラムを読み出してインストールを行うパッケージのインストール対象装置であって、実行環境に依存せずに実行可能なプログラム言語によって記述されたインストール用プログラム、実行環境に依存するプログラム言語によって記述され実行環境毎に登録された同一ファイル名の複数の第１のプログラム、及び、前記第１のプログラムをファイル名で呼び出す、実行環境に依存せずに実行可能なプログラム言語で記述され実行環境に共通に登録された第２のプログラム、が含まれるパッケージを、記憶媒体又はネットワーク経由で取得するパッケージ取得手段と、前記インストール用プログラムを実行することで実現された、当該インストール対象装置の実行環境を取得する情報取得手段と、前記情報取得手段が取得した実行環境に基づき、当該インストール対象装置にて実行可能な前記第１のプログラムを特定するプログラム特定手段と、前記プログラム特定手段が特定した前記第１のプログラム、及び、前記第２のプログラムを、当該インストール対象装置の記憶手段にコピーするコピー手段と、を有することを特徴とするパッケージのインストール対象装置を提供する。
【発明の効果】
【００１２】
ハードウェアやソフトウェアに依存しないプログラムを活用して、製品が異なったり製品の世代が変わっても、複数の製品にて正常動作するプラグイン機能を共通のパッケージで提供できる画像形成装置、インストール方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】画像形成装置のハードウェア構成図の一例である。
【図２】画像形成装置のソフトウェア構成図の一例である。
【図３】インストールの態様を説明する図の一例である。
【図４】画像形成装置のＨ／Ｗ情報やＳ／Ｗ情報の一例を示す図である。
【図５】画像形成装置のインストール部の機能ブロック図の一例である。
【図６】機能アップデートパッケージの内容を模式的に示す図の一例である。
【図７】対応ファイルを模式的に説明する図の一例である。
【図８】販売パッケージのディレクトリの構造を模式的に示す図の一例である。
【図９】インストール部が、機能アップデートパッケージを画像形成装置にインストールする手順を示すフローチャート図の一例である。
【図１０】過去に販売されていた画像形成装置と現在販売している画像形成装置がインストール可能な販売パッケージを模式的に示す図の一例である。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら説明する。
本実施形態の画像形成装置１００にインストールされる販売パッケージ及びインストールの特徴部の概略は以下のとおりである。
【００１５】
パッケージの中にはJava（登録商標）等の仮想マシン上で動作する全機種に共通のプログラム（以下、「共通プログラム」という）、及び、ハードウェアやＯＳ等のソフトウェアに依存するバイナリのプログラム（以下、「ネイティブプログラム」という）が含まれている。ネイティブプログラムには、画像形成装置メーカが販売パッケージを販売する時点で製品化されている過去の機種で実行可能なものも含まれている。インストールの際、各画像形成装置１００は、自身のハードウェア情報及びソフトウェア情報、並びに、販売パッケージ内のネイティブプログラムの情報を参照することにより、自身のハードウェアに適したネイティブプログラムを、共通プログラムと共に、その機能をインストールすべきディレクトリに格納することができる。
【００１６】
販売パッケージには、各機種毎のネイティブプログラムが含まれているので、ある製品が発売された後に開発したプログラムを全機種に適用可能な１つの販売パッケージに収めて販売することができる。
【００１７】
〔画像形成装置１００の構成〕
画像形成装置１００の構成について説明する。なお、画像形成装置１００は販売パッケージのインストール対象の一例であって、コンピュータを搭載していれば本実施形態の販売パッケージを適用できる。
【００１８】
図１は、画像形成装置１００のハードウェア構成図の一例を示す。画像形成装置１００は、例えば、プリンタ、ファクシミリ、複写機、スキャナ、又は、これらのうち複数の機能を備えたＭＦＰ（Multifunction Peripheral）である。本実施形態では、画像形成装置１００はＭＦＰであるとして説明する。
【００１９】
画像形成装置１００は、コントローラ１５、スキャナエンジン１１，プリントエンジン１２、ＰＳＵ（Power Supply Unit）１３、及び、操作部１４を有する。コントローラ１５は、バスで相互に接続された、ＣＰＵ２４、ＡＳＩＣ（Application Specific Integrated Circuit）２５、スキャナ処理部２１、プリント処理部２２、メモリ装着部２３、ＨＤＤ２６、メモリ２７、ネットワークＩ／Ｆ２８、ＦＡＸ  Ｉ／Ｆ２９を有する。
【００２０】
操作部１４は、さらに、ＬＣＤ（Liquid Crystal Display）１４ａとハードキー１４ｂを有する。ＬＣＤ１４ａは、タッチパネルを一体に有し、各種の画面を表示するためと、画像形成装置１００から各種の送信データを送信するオペレータの操作を受け付ける。また、ハードキー１４ｂは、テンキー、スタートボタン、リセットボタン、アプリ切り替えボタン等である。
【００２１】
スキャナエンジン１１は、原稿を光学的に読み取る読み取り部である。スキャナエンジン１１は、例えば、コンタクトガラス、光源、レンズ系、撮像素子、を有する。スキャナエンジン１１は、スキャナ処理部２１に接続されている。スキャナ処理部２１は、撮像素子にたまった電荷をＡ／Ｄ変換して所定の階調のデジタルデータを生成する。
【００２２】
プリントエンジン１２は、用紙に画像を印刷する。プリントエンジン１２は、感光体ドラム、帯電装置、現像部、レーザ照射部、定着部、用紙搬送部等を有する。プリントエンジン１２はプリント処理部２２と接続されている。プリント処理部２２は、スキャナ処理部２１が生成した画像データをラスターデータに変換したり、ＰＣ５００から送信された印刷データをラスターデータに変換して、プリントエンジン１２に送出する。こうすることで、プリントエンジン１２が用紙に画像を印刷する。
【００２３】
ＣＰＵ２４は、画像形成装置１００の全体を統括的に制御する。ＡＳＩＣ２５は、スキャナ処理やプリント処理において必要な各種の画像処理を提供する画像処理用途向けのＩＣである。メモリ２７は、ＣＰＵ２４が実行する各種アプリケーションや当該アプリケーションの実行の際に用いられる種々のデータを記憶する。また、ＨＤＤ２６は、画像データ、プログラム、フォントデータ、等を記憶するための不揮発メモリである。ＨＤＤ２６の一部又は全てにＳＳＤ（Solid State Drive））を実装してもよい。ＣＰＵ２４は、ＨＤＤ２６に記憶されたプログラムや販売パッケージのプログラムを実行することで、後述する各機能を提供する。また、販売パッケージは記憶媒体３０に記憶された状態で配布され、メモリ装着部２３で記憶媒体３０から読み出されてＨＤＤ２６にインストールされてもよいし、サーバ３００からネットワークＩ／Ｆ２８を介してＨＤＤ２６にインストールされてもよい。
【００２４】
なお、ネットワークＩ／Ｆ２８はネットワーク６００に接続されている。ネットワークＩ／Ｆ２８は例えばＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）であり、所定のプロトコルにより、画像形成装置１００とサーバ３００及びＰＣ５００との通信を実現する。また、ＦＡＸ  Ｉ／Ｆ２９は電話回線に接続されている。ＦＡＸ  Ｉ／Ｆ２９は電話回線からのファクシミリデータを復調して画像データを生成し、ＦＡＸアプリ４４が起動している際はスキャナエンジン１１で読み取った画像データをファクシミリ用に処理して変調して電話回線に出力する。
【００２５】
また、ＰＳＵ１３は、コントローラ１５，操作部１４，スキャナエンジン１１及びプリントエンジン１２への電力の供給を制御する。
【００２６】
図２は、画像形成装置１００のソフトウェア構成図の一例を示す。画像形成装置１００は、アプリケーション群３１と、アプリケーションＩ／Ｆ３２、制御機能群３３と、リソース管理部３４と、ＯＳ３５と、デバイスドライバ３６と、ハードウェア資源４０とを有する。
【００２７】
アプリケーション群３１は、ＲＦＩＤアプリ４１、コピーアプリ４２、スキャナアプリ４３、ＦＡＸアプリ４４、プリンタアプリ４５、蓄積データアプリ４６、Ｗｅｂアプリ４７、ネットワークアプリ４８及びダウンロードアプリ４９と、を有する。これらの各アプリは対応した各種機能を実現させる。
【００２８】
なお、蓄積データアプリ４６は、ＨＤＤ２６に蓄積された画像データや印刷データの閲覧や選択機能を提供する。Ｗｅｂアプリ４７は、ＷｅｂサーバにアクセスしてＷｅｂサーバが記憶する各種の情報をＬＣＤ１４ａに表示するブラウザとしての機能を提供する。ネットワークアプリ４８は、ネットワーク６００を介して接続されるＷｅｂサーバやＰＣ５００との通信機能を提供する。ダウンロードアプリ４９は、ＷｅｂサーバやＰＣ５００からダウンロードされたアプリである（機能拡張用）。ＲＦＩＤアプリ４１は、ＩＣカードの情報を読み込み、オペレータを識別する等の機能を提供する。
【００２９】
また、制御機能群３３は、エンジンジョブ制御部５１、ファイル制御部５２、データ転送制御部５３、通信制御部５４、認証制御部５５、ユーザデータ制御部５６、システム制御部５７、及び、操作制御部５８を有する。エンジンジョブ制御部５１は、エンジンＩ／Ｆ６１を介して接続されたプリントエンジンやスキャナエンジン１１を制御する。ファイル制御部５２は、ＨＤＤ２６に記憶されている各種のファイルの更新や削除、移動等を制御する。データ転送制御部５３は、ＨＤＤ２６に蓄積されている文書データの配送などの制御を行う。通信制御部５４は、ネットワークＩ／Ｆ２８を介した通信を制御する。認証制御部５５は、認証装置Ｉ／Ｆ６４を介して認証装置３８を制御する。ユーザデータ制御部５６はユーザ情報の管理を行う。システム制御部５７は、システムを制御するための処理を行う。操作制御部５８は、オペレータと本体制御との間の情報伝達手段となる操作部１４の制御を行う。
【００３０】
メモリリソース管理部５９は、メモリ２７の使用状況を監視して、メモリ２７の開放又は確保等を行う。エンジンリソース管理部６０は、システムの制御及びハードウェア資源４０の管理を行う。
【００３１】
アプリケーション群３１は、アプリケーションＩ／Ｆ３２を介して、制御機能群３３に機能の提供を要求する。制御機能群３３は、アプリケーション群３１からの処理要求を解釈して、ハードウェア資源４０の獲得要求を発生させる。メモリリソース管理部５９又はエンジンリソース管理部６０は、獲得要求を調停する。なお、ＯＳ（例えば、ＬＩＮＵＸ（登録商標））３５は、アプリケーション、制御機能群３３及びリソース管理部３４の各ソフトウェアをプロセスとして並列実行する。
【００３２】
また、デバイスドライバ３６は、エンジンＩ／Ｆ６１、ＲＦＩＤ  Ｉ／Ｆ６２、操作部Ｉ／Ｆ６３、認証装置Ｉ／Ｆ６４  及び、新規デバイスＩ／Ｆ６５を利用して、ハードウェア資源４０に対し処理を要求する。なお、ＲＦＩＤリーダ／ライタ３９は、ＩＣカードと非接触又は接触してＩＣカードの情報を読み出す。認証装置３８は、例えば、パスワードを入力するためのハードキー１４ｂや生体情報を取得する装置である。新規デバイスＩ／Ｆ６５は、例えばＵＳＢインターフェイスであり、ＵＳＢインターフェイスを備えた各種の新規デバイス３７を接続させ、その機能を利用することを可能とする。このような構成により、画像形成装置１００は、各アプリケーションで共通的に必要な処理を制御機能群３３以下のプロセスで一元的に処理することができる。
【００３３】
パッケージは、例えば、アプリケーション群３１を共通プログラムで、制御機能群３３やデバイスドライバ３６等をネイティブプログラムで、それぞれ提供することができる。
【００３４】
〔インストールの態様について〕
図３は、インストールの態様を説明する図の一例である。画像形成装置１００と記憶媒体３０が、及び、ＰＣ（パーソナルコンピュータ）５００と記憶媒体３０が図示されている。また、画像形成装置１００、ＰＣ５００及びサーバ３００がネットワーク６００を介して接続されている。本実施形態のインストールの態様は、以下のいずれであってもよい。
（１）ユーザ等が画像形成装置１００に記憶媒体３０を装着して、画像形成装置１００が画像形成装置１００にインストールする態様。
（２）ユーザ等がＰＣ５００に記憶媒体３０を装着して、ＰＣ５００が画像形成装置１００にインストールする態様。
（３）画像形成装置１００がサーバ３００から販売パッケージをダウンロードして、画像形成装置１００が画像形成装置１００にインストールする態様。
【００３５】
したがって、販売パッケージは、記憶媒体３０に記憶された状態、又は、サーバ３００からダウンロードする形態、で配布される。（１）と（３）の態様では、画像形成装置１００が販売パッケージの後述する「インストール用jar file」１０１を実行し、（２）の態様ではＰＣ５００が販売パッケージの「インストール用jar file」１０１を実行する。本実施形態では主に（１）（３）の態様について説明するが、（２）の態様でもネットワークを介する以外は同様である。
【００３６】
〔種々の画像形成装置１００について〕
次に、本実施形態の販売パッケージが対象とする画像形成装置１００、及び、画像形成装置１００のＨ／Ｗ情報、Ｓ／Ｗ情報について説明する。
【００３７】
図４は、画像形成装置１００のＨ／Ｗ情報やＳ／Ｗ情報の一例を示す。なお、Ｈ／Ｗ情報とは、ＣＰＵ２４の種類や名称でも良いし、製品の型番や名称等でもよい。また、Ｓ／Ｗ情報はＯＳの種類またはバージョン、ＤＬＬ（Dynamic Link Library）のバージョン等の情報である。
【００３８】
画像形成装置１〜４は発売時期が異なるものとする。画像形成装置１は、ｘ８６アーキテクチャのＣＰＵ２４を搭載し、ＢＳＤ（Berkeley Software Distribution）のバージョン１のＯＳを搭載している。画像形成装置２は、ｘ８６アーキテクチャのＣＰＵ２４を搭載し、ＬＩＮＵＸのVersion1のＯＳを搭載している。画像形成装置３は、ＭＩＰＳアーキテクチャのＣＰＵ２４を搭載しており、ＬＩＮＵＸ Version1をＯＳを搭載している。画像形成装置４はＭＩＰＳアーキテクチャのＣＰＵ２４を搭載しておい、ＬＩＮＵＸ Version2のＯＳを搭載している。
【００３９】
それぞれの製品の発売時期が異なるために、各製品のＣＰＵ２４のアーキテクチャや、ＯＳの種類、バージョンが異なっている。実際のユーザ（お客様）に設置された画像形成装置１００は、このように購入時期の異なる製品を使用していることが一般的である。例えば、ユーザが一番最新の画像形成装置４を最近購入したものとする。そして、ユーザがこの画像形成装置４を購入した際に、一緒にある販売パッケージを購入したものとする。この販売パッケージは、このユーザには必須の機能である。
【００４０】
この場合、画像形成装置１，２，３がまだ販売されているようであれば、同じ販売パッケージが発売されている可能性があるが、例えば画像形成装置３の次世代機が画像形成装置４である場合には画像形成装置３用の販売パッケージを入手することは一般的には不可能である。また、仮に画像形成装置３用の販売パッケージが発売されていたとしても画像形成装置３用の販売パッケージと画像形成装置４用の販売パッケージは別々に販売されていることが一般的である。
【００４１】
本実施形態の販売パッケージは、画像形成装置１〜３もインストールすることができる画像形成装置１〜４に共通の１つの販売パッケージを提供する。
【００４２】
〔機能ブロック〕
図５は、画像形成装置１００のインストール部１１０の機能ブロック図の一例を、図６は、「機能アップデートパッケージ」１０２の内容を模式的に示す図の一例である。
【００４３】
販売パッケージには、「インストール用jar  file」１０１及び「機能アップデートパッケージ」１０２が含まれる。「機能アップデートパッケージ」１０２には、「対応ファイル」１２１、「共通プログラム（jar  file）」１２２、「マニフェストファイル」１２３、「ネイティブプログラム１」、「ネイティブプログラム２」１２４が含まれている。
【００４４】
画像形成装置１００のＣＰＵ２４は、記憶媒体３０から直接、又は、画像形成装置１００のＨＤＤ等に記憶された販売パッケージから、「インストール用jar file」１０１を実行する。画像形成装置１００のＣＰＵ２４が、「インストール用jar file」１０１を実行すると、インストール部１１０が実現される。インストール部１１０は、判断部１１１、Ｈ／Ｗ情報取得部１１２、Ｓ／Ｗ情報取得部１１３、プログラム選択部１１４、及び、格納先指定部１１５を有する。
【００４５】
インストール部１１０は、インストールが始まったことを操作部１４またはネットワーク６００やUSB接続されているＰＣ５００等の表示デバイスに表示してもよい。また、インストール部１１０は、Ｈ／Ｗ情報を取得する必要がある機能の追加である旨や、Ｓ／Ｗ情報を取得する必要がある機能の追加である旨をさらに表示してもよい。
【００４６】
ここで、「インストール用jar file」１０１を販売パッケージに含めるのでなく、画像形成装置１００が予め記憶しておいてもよいし、「インストール用jar file」１０１と「機能アップデートパッケージ」１０２を別々に配布させてもよい。「インストール用jar file」１０１だけでは、画像形成装置１００に新たな機能を追加できないので課金する必要がなく、また、例えばサーバ３００から無償でダウンロード可能とすることで、ユーザは常に最新のバージョンの「インストール用jar file」１０１を利用できる。
【００４７】
まず、判断部１１１について説明する。「インストール用jar  file」１０１は、どんなＨ／Ｗ（ハードウェア）プラットフォーム及びＳ／Ｗ（ソフトウェア）プラットフォームであってもJava（登録商標）仮想マシンが動作していれば実行可能な特定の言語（例えばJava（登録商標）、Ｃ＃等）で記述されている。なお、Java（登録商標）、Java（登録商標）仮想マシン、共通プログラム（jar file）１２２は、プラットフォームに依存しないプログラム言語又は言語体系の一例であるので、以下では、説明が可能な限り「特定のプログラム言語」や「仮想マシン」と表現する。
【００４８】
判断部１１１は、Ｈ／Ｗ情報を確認する必要があるのか否か、Ｓ／Ｗ情報を確認する必要があるか否かを判断する。「インストール用jar  file」１０１は、特定のプログラム言語で記述されたプログラムがコンパイルされたファイルであり、Ｈ／Ｗ又はＳ／Ｗプラットフォームを選ばずに仮想マシンが実行できるファイルである。
【００４９】
このように、判断部１１１が「インストール用jar  file」１０１にて記述されている理由は次のとおりである。ＣＰＵ２４が、判断部１１１を実現するプログラムを実行する際、ＣＰＵ２４にnativeな（＝実行可能なプラットフォームが限定されている）プログラム言語で記述されていると仮定すると、ある機種では判断部１１１を実現するプログラムを実行できるが、別のある機種では実行できないという事態が想定される。このため、判断部１１１を含め「インストール用jar  file」１０１はどのような機種でも実行できる、特定のプログラム言語で記述されていることが好ましい。
【００５０】
また、画像形成装置１００側に（例えば、ネイティブな）プログラムで実現される判断部１１１を装備しておいてもよいが、この場合、将来の様々なＨ／Ｗ情報やＳ／Ｗ情報に対応しにくい。
【００５１】
また、「インストール用jar  file」１０１を特定の言語で記述しておくことで、仮に、画像形成装置１００が予め装備している「インストール用jar  file」１０１の書き換えが必要な場合にも、この「インストール用jar  file」１０１にてアップデートすることで、どんな時期に販売された、どんな製品に対しても、画像形成装置メーカは、１つの販売パッケージにより機能提供を行うことが可能となる。
【００５２】
このように、あらゆる機種において実現可能な判断部１１１は、Ｈ／Ｗ情報の取得が必要か否かを判定し、必要であると判定した場合にはＨ／Ｗ情報取得部１１２に、Ｈ／Ｗ情報の取得を要求する。同様に、判断部１１１は、Ｓ／Ｗ情報の取得が必要か否かを判定し、必要であると判定した場合にはＳ／Ｗ情報取得部１１３に、Ｓ／Ｗ情報の取得を要求する。
【００５３】
また、「インストール用jar file」１０１には、この販売パッケージの種類が記載されている。例えば、「ネイティブプログラム  バージョンアップパッケージ」と記載してあってもよいし、ネイティブプログラム１２４が含まれているという意味を込めて、「ネイティブ」と記載されていてもよいし、「Ｈ／Ｗ情報の参照、Ｓ／Ｗ情報の参照を必要とする」という内容が記載されていてもよいし、それらの意味に紐付けされた数字やキーワード等が記載されていてもよい。本実施形態では、少なくとも、Ｈ／Ｗ情報を参照しなければいけないこと、及び、Ｓ／Ｗ情報を参照しないといけないことが「インストール用jar file」１０１に記載されているものとする。例えば、Ｈ／Ｗ情報の参照が必要ない販売パッケージの場合、Ｈ／Ｗ情報の参照の必要性の有無を記載しないことで参照する必要がない旨を記載しても良い。
【００５４】
また、必ずしも「インストール用jar file」１０１にＨ／Ｗ情報の参照、Ｓ／Ｗ情報の参照が必要か否かの情報を記述する必要はなく、Ｓ／Ｗ情報の参照が必要か否かの情報を記述した別のファイルを販売パッケージに含めておいてもよい。
【００５５】
次に、Ｈ／Ｗ情報取得部１１２について説明する。Ｈ／Ｗ情報取得部１１２は画像形成装置１００が有するＨ／Ｗ情報を取得してプログラム選択部１１４に対し、そのＨ／Ｗ情報を渡す。具体的には、追加する「機能アップデートパッケージ」１０２内のプログラムにネイティブプログラム１２４が存在している場合に、Ｈ／Ｗ情報取得部１１２はＨ／Ｗ情報を取得する。
【００５６】
この際にＨ／Ｗ情報取得部１１２が取得するＨ／Ｗ情報としては、基本的にはＣＰＵ種別を取得する。この他、「機能アップデートパッケージ」１０２の内容にＨ／Ｗ情報に依存するようなものが含まれている場合には、Ｈ／Ｗ情報取得部１１２はその依存するＨ／Ｗ（例えば、ＤＳＰ等）のＨ／Ｗ情報を取得できるものである。
【００５７】
次に、Ｓ／Ｗ情報取得部１１３について説明する。Ｓ／Ｗ情報取得部１１３は画像形成装置１００のＳ／Ｗ情報を取得して、プログラム選択部１１４に対し、そのＳ／Ｗ情報を渡す。具体的には追加する機能パッケージ内にネイティブプログラム１２４が存在していて、今までに販売した製品とＯＳが異なる製品が販売された時点でＳ／Ｗ情報のインストールの度に毎回行う必要が生じる。同じ種類のＯＳのバージョンアップ程度であってシステムコールのI/Fが変わらない場合、Ｓ／Ｗ情報のチェックは不要であるが、異なる種類のＯＳやシステムコールが追加され、そのシステムコールを追加するようなアップデートである場合、Ｓ／Ｗ情報の確認が必要となる。Ｓ／Ｗ情報としてはＯＳのバージョンやＤＬＬ等のライブラリのバージョン等のことである。
【００５８】
次に、プログラム選択部１１４について説明する。プログラム選択部１１４はＨ／Ｗ情報取得部１１２から得られたＨ／Ｗ情報、及び、Ｓ／Ｗ情報取得部１１３から得られたＳ／Ｗ情報から、「機能アップデートパッケージ」１０２に含まれている対応ファイル１２１またはマニフェストファイル１２３を参照して、その製品にインストールすべきネイティブプログラム１２４が格納されているディレクトリを選択する。
【００５９】
図７は、対応ファイル１２１を模式的に説明する図の一例である。対応ファイル１２１には、Ｈ／Ｗ情報とＳ／Ｗ情報に対応づけて、インストールすべきネイティブプログラム１２４が格納されている。プログラム選択部１１４は、対応ファイル１２１から特定したディレクトリ情報を格納先指定部１１５に渡す。なお、マニフェストファイル１２３は、後述するように対応ファイル１２１を含む場合があり、この場合は、マニフェストファイル１２３が対応ファイル１２１を代替する。
【００６０】
図5に戻り、格納先指定部１１５はプログラム選択部１１４から受け取ったディレクトリ情報に基づき、そのディレクトリに格納されているネイティブプログラム１２４を読み出し、該ネイティブプログラム１２４を格納すべき画像形成装置１００内のディレクトリにコピーする。その後、格納先指定部１１５は、機能として用意された共通プログラム（jar  file）１２２を画像形成装置１００のディレクトリにインストールすることで、追加機能を使用可能となる。
【００６１】
このように、ネイティブプログラム１２４の格納先をディレクトリ毎に分けている理由は、Java（登録商標）言語ではクラス名とファイル名を一致させなければいけないという制限を考慮したためである。Java（登録商標）で記述されたプログラムのメソッド呼び出しはクラス名で行うため、Ｈ／ＷやＳ／Ｗに依存するために内容が異なるネイティブプログラム１２４の名前を別々の名前で管理した場合、仮想マシンが走る全てのＨ／Ｗ,Ｓ／Ｗにて本来動作するはずの共通プログラム（jar  file）１２２も各画像形成装置１００のＨ／Ｗ情報、Ｓ／Ｗ情報を参照してどのネイティブプログラム１２４をcallすべきかを判断・指定する必要が生じる。
【００６２】
これでは特定のプログラム言語を採用して、Ｈ／Ｗ,Ｓ／Ｗを意識しないプログラムとしたことのメリットがなくなり、新製品が販売される度に共通プログラム（jar  file）１２２にも修正を施さなければならなくなってしまう。そこで、そのような余分な手間を省くために、ネイティブプログラム１２４の名前はどのＨ／Ｗ、Ｓ／Ｗ環境であっても同一名とし、機能アップデート用の販売パッケージ内での格納ディレクトリを異なった場所で管理することとした。なお、ネイティブプログラム１２４の格納先のディレクトリは各画像形成装置１００に共通とすることで、管理の複雑さや余計な開発行為を削減することを可能としている。
【００６３】
同じファイル名のファイルは同じディレクトリに記憶できないので、ネイティブプログラム１２４は１つずつ各ディレクトリに分けて登録（記憶）されている。
図を用いて説明する。
【００６４】
＜ディレクトリイメージ＞
図８は、販売パッケージのディレクトリの構造を模式的に示す図の一例である。図８の左側の木構造が販売パッケージ内でファイルの格納イメージの例を表し、右側のツリー構造が画像形成装置１００にインストールした後のＨＤＤ内のファイル格納イメージを表す。
【００６５】
販売パッケージ（記憶媒体３０）は、ルートディレクトリの下に、例えば、ｘ８６ ＣＰＵ用には「x86」というディレクトリを設け、そのディレクトリにｘ８６ ＣＰＵ向けにコンパイルされた「Feature1（ネイティブプログラム）」を記憶する。販売パッケージ（記憶媒体３０）は、また、「ＭＩＰＳ」というディレクトリには、ＭＩＰＳ ＣＰＵ用にコンパイルされた「Feature1（ネイティブプログラム）」を記憶する。販売パッケージ（記憶媒体３０）は、また、「Power PC」というディレクトリには、Power PC用にコンパイルされた「Feature1（ネイティブプログラム）」を記憶する。
【００６６】
プログラム選択部１１４は、対応ファイル１２１により、Ｈ／Ｗ情報取得部１１２が得たＨ／Ｗ情報、Ｓ／Ｗ情報取得部１１３が得たＳ／Ｗ情報に対応づけられた、ディレクトリを選択する。図では、３つの「Feature1」がそれぞれ格納されたいずれかディレクトリが選択される。これにより、格納先指定部１１５が、その選択されたディレクトリの「Feature1」を画像形成装置１００のＨＤＤ（例えば、ルートディレクトリ）に記憶することができる。
【００６７】
〔機能アップデートパッケージ１０２〕
図６に示したように、「機能アップデートパッケージ」１０２には、上記の「対応ファイル」１２１、「共通プログラム（jar file）」１２２、「マニフェスト ファイル」、ネイティブプログラム１２４｛「ネイティブプログラム１」「ネイティブプログラム２」｝が含まれている。
【００６８】
これまで説明したように、「インストール用jar  file」１０１は、インストール部１１１のアップデート用プログラム、Ｈ／Ｗ情報取得の必要性を判断する情報、及び、Ｓ／Ｗ情報取得の必要性を判断する情報、が格納されている。なお、上記のように、Java（登録商標）というプログラム言語の実行ファイル（＊．jar）を例として記載しているが、仮想マシン用の言語であれば、他の（例えばC#等）のファイルでもよい。
【００６９】
対応ファイル１２１は、Ｈ／Ｗ情報、Ｓ／Ｗ情報に対応づけてその画像形成装置１００に最適なネイティブプログラム１２４が記憶されている場所の情報（対応表）が登録されている。対応ファイル１２１には、例えば、あるＨ／Ｗ情報に対する対応ファイル（ネイティブプログラム）１２１のキーワード情報が対応付けられていてもよい。また、この対応表に、Ｈ／Ｗ情報やＳ／Ｗ情報に対応するディレクトリも含めたファイル名（Path情報）を記載してもよい。
【００７０】
また、特定の言語（特にJava（登録商標））では、ＯＳＧｉ(Open Services Gateway Initiative)フレームワークを利用してプラグインを追加することができる。ＯＳＧｉフレームワークは仮想マシン上でJava（登録商標）プログラムの動的追加や実行を管理するプラットフォームである。すなわち、プラグインは直接、仮想マシン上で実行する態様と、ＯＳＧｉフレームワーク上で実行する態様がある。プラグインがＯＳＧｉフレームワークを利用する場合、jar  fileには、複数のクラスファイルとリソースファイルがアーカイブされる（バンドルファイル）。そして、プラグインに直接、仮想マシンを利用する場合と比べて、マニフェストファイル（ＯＳＧｉの仕様特有の属性）１２３が必要とされる。
【００７１】
このため、プラグインによる機能の追加にＯＳＧｉフレームワークを利用する場合、対応ファイル１２１の中身をマニフェストファイル１２３の中に記載しておいてもよい。対応ファイル１２１には少なくとも、Ｈ／Ｗ情報、Ｓ／Ｗ情報に対応づけて、それぞれに該当するネイティブプログラム１２４が格納されている販売パッケージ内のディレクトリ情報が含まれている必要がある。
【００７２】
共通プログラム（jar file）１２２はどの機種でも、仮想マシン上であれば画像形成装置１００が実行可能なプログラムである。
【００７３】
「ネイティブプログラム１」「ネイティブプルグラム２」は、Ｈ／Ｗ情報やＳ／Ｗ情報に応じて、バイナリレベルで異なるプログラムを用意しなければならない場合に、同じ名前のファイル名で複数用意されている。これらは同じ名前であるが、記憶装置の異なるディレクトリに保存されている。
【００７４】
〔機能アップデートの手順〕
図９は、インストール部１１０が、「機能アップデートパッケージ」１０２を画像形成装置１００にインストールする手順を示すフローチャート図の一例である。
【００７５】
インストール部１１０は、「機能アップデートパッケージ」１０２のインストールを開始する（Ｓ１０）。インストールは、画像形成装置１００がユーザの操作を受け付けること、タイマーやカレンダによる「機能アップデートパッケージ」１０２の自動更新、サーバ３００からの機能追加要求を受け付けること、等により開始される。これによりＣＰＵ２４が「インストール用jar  file」１０１を実行し、判断部１１１等が立ち上がる。
【００７６】
まず、判断部１１１は、Ｈ／Ｗ情報又はＳ／Ｗ情報を取得する必要があるか否かを判定する（Ｓ２０）。
【００７７】
判断部１１１がＨ／Ｗ情報を取得する必要があると判定した場合（Ｓ２０のＹｅｓ）、Ｈ／Ｗ情報取得部１１２は、Ｈ／Ｗ情報を取得し、判断部１１１がＳ／Ｗ情報を取得する必要があると判定した場合（Ｓ２０のＹｅｓ）、Ｓ／Ｗ情報取得部１１３は、Ｓ／Ｗ情報を取得する（Ｓ３０）。判断部１１１がＨ／Ｗ情報又はＳ／Ｗ情報を取得する必要がないと判定した場合（Ｓ２０のＮｏ）、格納先指定部１１５は共通プログラム（jar  file）１２２をインストールする（Ｓ７０）。
【００７８】
つぎに、プログラム選択部１１４は、Ｈ／Ｗ情報、及び、Ｓ／Ｗ情報から、「機能アップデートパッケージ」１０２に含まれている対応ファイル１２１又はマニフェストファイル１２３を参照して、その製品にインストールすべきネイティブプログラム１２４が記憶されたディレクトリを選択する（Ｓ４０）。
【００７９】
ついで、格納先指定部１１５は、記憶媒体３０又は記憶手段のネイティブプログラム１２４が記憶されたディレクトリからネイティブプログラム１２４を読み出す（Ｓ５０）。
【００８０】
そして、格納先指定部１１５は、ネイティブプログラム１２４を画像形成装置１００のインストール先のディレクトリにコピーする（Ｓ６０）。
【００８１】
次に、格納先指定部１１５は、全機種に共通である特定のプログラムにより記述された共通プログラム（jar file）１２２を画像形成装置１００のインストール先のディレクトリにコピーする（Ｓ７０）。
【００８２】
〔仮想マシンのバージョンアップ〕
図１０は、過去に販売されていた画像形成装置１００と現在販売している画像形成装置１００がインストール可能な販売パッケージを模式的に示す図の一例である。図１０では、図４の画像形成装置１〜４を例にして説明する。
【００８３】
画像形成装置１００の仮想マシンをバージョンアップする必要が生じることがある。図１０は、画像形成装置１００の仮想マシンをバージョンアップするための販売パッケージの例を示している。仮想マシンを画像形成装置１００の販売後にバージョンアップする理由としては、仮想マシンに含まれているバグを解消するため、新しい機能（プラグイン）を追加するためには仮想マシンのバージョンアップが必要であるため、仮想マシンをバージョンアップすることで販売済みの画像形成装置１００であっても動作が安定するため、画像形成装置１００のあるプログラムの処理速度が向上するため、等が想定される。
【００８４】
図１０の販売パッケージを画像形成装置１に適用する場合について説明する。まず、画像形成装置１は、図１０の販売パッケージが記憶媒体３０またはネットワーク６００経由等の手段により提供されると、ＣＰＵ２４が「インストール用jar file」１０１を実行する。「インストール用jar file」１０１はそのまま仮想マシンのインストーラとなっていてもよく、操作部１４やネットワーク６００経由で接続されているＰＣ５００の表示装置に機能のインストールが開始したことを表示しても良い。
【００８５】
判断部１１１は、「インストール用jar file」１０１を参照して、Ｈ／Ｗ情報を参照する必要があると判断する。このため、次にＨ／Ｗ情報取得部１１２が、画像形成装置１のＨ／Ｗ情報を参照する。Ｈ／Ｗ情報取得部１１２は、ＣＰＵ２４のＩＤレジスタを参照してＨ／Ｗ情報を取得してもよいし、不揮発性のメモリに格納されたＣＰＵ２４の種類等の情報を読み出して、Ｈ／Ｗ情報を取得してもよい。画像形成装置１の場合、得られるＨ／Ｗ情報は、「ＣＰＵ：ｘ８６」である。Ｈ／Ｗ情報取得部１１２は、取得したＨ／Ｗ情報をプログラム選択部１１４に転送する。
【００８６】
次に、判断部１１１はＳ／Ｗ情報も取得する必要があると判断する。このため、Ｓ／Ｗ情報取得部１１３は、画像形成装置１のＳ／Ｗ情報を取得する。Ｓ／Ｗ情報は、通常、不揮発性メモリに格納されており、ＯＳの種類、ＯＳのバージョン、ライブラリのバージョン等の情報が含まれている。Ｓ／Ｗ情報取得部１１３は、少なくともＯＳの種類とバージョンを取得したものとする。
【００８７】
画像形成装置１の場合、得られるＳ／Ｗ情報は、「ＯＳ：ＢＳＤ  バージョン１」である。Ｓ／Ｗ情報取得部１１３はこの得られたＳ／Ｗ情報をプログラム選択部１１４に通知する。
【００８８】
プログラム選択部１１４は、Ｈ／Ｗ情報取得部１１２、Ｓ／Ｗ情報取得部１１３から得られた情報である「ＣＰＵ：ｘ８６」、「ＯＳ：ＢＳＤ  バージョン１」であることをキーに、対応ファイル１２１を参照する。対応ファイル１２１には少なくとも、ＣＰＵアーキテクチャ、ＯＳ、ＯＳのversionの組み合わせに対応する最適なネイティブ プログラム１２４が記憶されたディレクトリが登録されている。または、少なくとも、プログラム選択部１１４が、該ディレクトリを導くことが可能になるような情報が記載されている。図１０に示すように、プログラム選択部１１４は、対応ファイル１２１を参照することで「root\x86\BSD\v1」というディレクトリに格納されている「Java（登録商標）ＶＭ」というネイティブプログラム１２４がインストールすべきで対象であると特定する。プログラム選択部１１４は、「root\x86\BSD\v1」を示す情報を格納先指定部１１５に通知する。
【００８９】
格納先指定部１１５は、通知されたディレクトリに格納されている「ｘ８６ ＢＳＤ Version1」用のネイティブプログラム１２４のファイルを、インストールで使用するテンポラリディレクトリに予めコピーしてから、画像形成装置１へのコピーを行う。これは、インストール中に、オリジナルのネイティブプログラム１２４が破損等することを防止するためである。
【００９０】
以上のような手順でインストール部１１０が販売パッケージのインストールを行うことで、一つの販売パッケージを用いて過去に販売された機種を含め全ての機種用の機能のアップグレードが可能となる。これにより、新機種で提供された機能であっても、その機能を購入すると同様の利便性の高い機能をお客様は使用できるとともに各機種用の販売パッケージの購入や保管の手間や開発元への特殊対応の要求等を行う必要をなくすことも可能となる。図１０では、仮想マシンのアップデートを例に説明したが、ネイティブプログラム１２４のバージョンアップや追加も同様に実行することができる。
【００９１】
次に、仮想マシンの販売パッケージを画像形成装置２がインストールする場合について説明する。画像形成装置２は、図１０の販売パッケージが記憶媒体３０またはネットワーク６００経由等の手段により提供されると、判断部１１１が「インストール用jar file」１０１を実行する。判断部１１１は、「インストール用jar file」１０１を参照して、Ｈ／Ｗ情報を参照する必要があると判断する。このため、次にＨ／Ｗ情報取得部１１２が、画像形成装置２のＨ／Ｗ情報を参照する。Ｈ／Ｗ情報取得部１１２は、ＣＰＵ２４のＩＤレジスタを参照してＨ／Ｗ情報を取得してもよいし、不揮発性のメモリに格納されたＣＰＵ２４の種類等の情報を読み出して、Ｈ／Ｗ情報を取得してもよい。画像形成装置２の場合、得られるＨ／Ｗ情報は、「ＣＰＵ：ｘ８６」である。Ｈ／Ｗ情報取得部１１２は、取得したＨ／Ｗ情報をプログラム選択部１１４に転送する。
【００９２】
次に、判断部１１１はＳ／Ｗ情報も取得する必要があると判断する。このため、Ｓ／Ｗ情報取得部１１３は、画像形成装置２のＳ／Ｗ情報を取得する。Ｓ／Ｗ情報は、通常、不揮発性メモリに格納されており、ＯＳの種類、ＯＳのバージョン、ライブラリのバージョン等の情報が含まれている。Ｓ／Ｗ情報取得部１１３は、少なくともＯＳの種類とバージョンを取得したものとする。
【００９３】
画像形成装置２の場合、得られるＳ／Ｗ情報は、「ＯＳ：ＬＩＮＵＸ  バージョン１」である。Ｓ／Ｗ情報取得部１１３はこの得られたＳ／Ｗ情報をプログラム選択部１１４に通知する。
【００９４】
プログラム選択部１１４は、Ｈ／Ｗ情報取得部１１２、Ｓ／Ｗ情報取得部１１３から得られた情報である「ＣＰＵ：ｘ８６」、「ＯＳ：ＬＩＮＵＸ  バージョン１」であることをキーに、対応ファイル１２１を参照する。対応ファイル１２１には少なくとも、ＣＰＵアーキテクチャ、ＯＳ、ＯＳのversionの組み合わせに対応する最適なネイティブ プログラム１２４が記憶されたディレクトリが登録されている。または、少なくとも、プログラム選択部１１４が、該ディレクトリを導くことが可能になるような情報が対応ファイル１２１には記載されている。図１０に示すように、プログラム選択部１１４は、対応ファイル１２１を参照することで「root\x86\Linux\v1」というディレクトリに格納されている「Java（登録商標）  VM」といネイティブプログラム１２４がインストールすべきで対象であると特定する。プログラム選択部１１４は、「root\x86\Linux\v1」を示す情報を格納先指定部１１５に通知する。
【００９５】
格納先指定部１１５は、通知されたディレクトリに格納されている「ｘ８６ ＬＩＮＵＸ Version1」用のネイティブプログラム１２４のファイルを、インストールで使用するテンポラリディレクトリに予めコピーしてから、画像形成装置２へのコピーを行う。これは、インストール中に、オリジナルのネイティブプログラム１２４が破損等することを防止するためである。
【００９６】
次に、仮想マシンの販売パッケージを画像形成装置３がインストールする場合について説明する。画像形成装置３は、図１０の販売パッケージが記憶媒体３０またはネットワーク６００経由等の手段により提供されると、判断部１１１が「インストール用jar file」１０１を実行する。判断部１１１は、「インストール用jar file」１０１を参照して、Ｈ／Ｗ情報を参照する必要があると判断する。このため、次にＨ／Ｗ情報取得部１１２が、画像形成装置３のＨ／Ｗ情報を参照する。Ｈ／Ｗ情報取得部１１２は、ＣＰＵ２４のＩＤレジスタを参照してＨ／Ｗ情報を取得してもよいし、不揮発性のメモリに格納されたＣＰＵ２４の種類等の情報を読み出して、Ｈ／Ｗ情報を取得してもよい。画像形成装置３の場合、得られるＨ／Ｗ情報は、「ＣＰＵ：ＭＩＰＳ」である。Ｈ／Ｗ情報取得部１１２は、取得したＨ／Ｗ情報をプログラム選択部１１４に転送する。
【００９７】
次に、判断部１１１はＳ／Ｗ情報も取得する必要があると判断する。このため、Ｓ／Ｗ情報取得部１１３は、画像形成装置３のＳ／Ｗ情報を取得する。Ｓ／Ｗ情報は、通常、不揮発性メモリに格納されており、ＯＳの種類、ＯＳのバージョン、ライブラリのバージョン等の情報が含まれている。Ｓ／Ｗ情報取得部１１３は、少なくともＯＳの種類とバージョンを取得したものとする。
【００９８】
画像形成装置３の場合、得られるＳ／Ｗ情報は、「ＯＳ：ＬＩＮＵＸ  バージョン１」である。Ｓ／Ｗ情報取得部１１３はこの得られたＳ／Ｗ情報をプログラム選択部１１４に通知する。
【００９９】
プログラム選択部１１４は、Ｈ／Ｗ情報取得部１１２、Ｓ／Ｗ情報取得部１１３から得られた情報である「ＣＰＵ：ＭＩＰＳ」、「ＯＳ：ＬＩＮＵＸ  バージョン１」であることをキーに、対応ファイル１２１を参照する。対応ファイル１２１には少なくとも、ＣＰＵアーキテクチャ、ＯＳ、ＯＳのversionの組み合わせに対応する最適なネイティブプログラム１２４が記憶されたディレクトリが登録されている。または、少なくとも、プログラム選択部１１４が、該ディレクトリを導くことが可能になるような情報が対応ファイル１２１には記載されている。図１０に示すように、プログラム選択部１１４は、対応ファイル１２１を参照することで「root\MIPS\Linux\v1」というディレクトリに格納されている「Java（登録商標）ＶＭ」といネイティブプログラム１２４がインストールすべきで対象であると特定する。プログラム選択部１１４は、「root\MIPS\Linux\v1」を示す情報を格納先指定部１１５に通知する。
【０１００】
格納先指定部１１５は、通知されたディレクトリに格納されている「ＭＩＰＳ ＬＩＮＵＸ Version1」用のネイティブプログラム１２４のファイルを、インストールで使用するテンポラリディレクトリに予めコピーしてから、画像形成装置３へのコピーを行う。これは、インストール中に、オリジナルのネイティブプログラム１２４が破損等することを防止するためである。
【０１０１】
次に、仮想マシンの販売パッケージを画像形成装置４がインストールする場合について説明する。画像形成装置４は、図１０の販売パッケージが記憶媒体３０またはネットワーク６００経由等の手段により提供されると、判断部１１１が「インストール用jar file」１０１を実行する。判断部１１１は、「インストール用jar file」１０１を参照して、Ｈ／Ｗ情報を参照する必要があると判断する。このため、次にＨ／Ｗ情報取得部１１２が、画像形成装置４のＨ／Ｗ情報を参照する。Ｈ／Ｗ情報取得部１１２は、ＣＰＵ２４のＩＤレジスタを参照してＨ／Ｗ情報を取得してもよいし、不揮発性のメモリに格納されたＣＰＵ２４の種類等の情報を読み出して、Ｈ／Ｗ情報を取得してもよい。画像形成装置４の場合、得られるＨ／Ｗ情報は、「ＣＰＵ：ＭＩＰＳ」である。Ｈ／Ｗ情報取得部１１２は、取得したＨ／Ｗ情報をプログラム選択部１１４に転送する。
【０１０２】
次に、判断部１１１はＳ／Ｗ情報も取得する必要があると判断する。このため、Ｓ／Ｗ情報取得部１１３は、画像形成装置４のＳ／Ｗ情報を取得する。Ｓ／Ｗ情報は、通常、不揮発性メモリに格納されており、ＯＳの種類、ＯＳのバージョン、ライブラリのバージョン等の情報が含まれている。Ｓ／Ｗ情報取得部１１３は、少なくともＯＳの種類とバージョンを取得したものとする。
【０１０３】
画像形成装置４の場合、得られるＳ／Ｗ情報は、「ＯＳ：ＬＩＮＵＸ  バージョン２」である。Ｓ／Ｗ情報取得部１１３はこの得られたＳ／Ｗ情報をプログラム選択部１１４に通知する。
【０１０４】
プログラム選択部１１４は、Ｈ／Ｗ情報取得部１１２、Ｓ／Ｗ情報取得部１１３から得られた情報である「ＣＰＵ：ＭＩＰＳ」、「ＯＳ：ＬＩＮＵＸ  バージョン２」であることをキーに、対応ファイル１２１を参照する。対応ファイル１２１には少なくとも、ＣＰＵアーキテクチャ、ＯＳ、ＯＳのversionの組み合わせに対応する最適なネイティブプログラム１２４が記憶されたディレクトリが登録されている。または、少なくとも、プログラム選択部１１４が、該ディレクトリを導くことが可能になるような情報が対応ファイル１２１には記載されている。図１０に示すように、プログラム選択部１１４は、対応ファイル１２１を参照することで「root\MIPS\Linux\v2」というディレクトリに格納されている「Java（登録商標）ＶＭ」といネイティブプログラム１２４がインストールすべきで対象であると特定する。プログラム選択部１１４は、「root\MIPS\Linux\v2」を示す情報を格納先指定部１１５に通知する。
【０１０５】
格納先指定部１１５は、通知されたディレクトリに格納されている「ＭＩＰＳ ＬＩＮＵＸ Version2」用のネイティブプログラム１２４のファイルを、インストールで使用するテンポラリディレクトリに予めコピーしてから、画像形成装置４へのコピーを行う。これは、インストール中に、オリジナルのネイティブプログラム１２４が破損等することを防止するためである。
【０１０６】
〔販売パッケージがネイティブプログラム１２４を含まない場合〕
販売パッケージが例えばアプリケーション群３１であるため、ネイティブ プログラム１２４を含まない場合について説明する。ネイティブ プログラム１２４を含まない場合、画像形成装置１〜４は、仮想マシン上でこのアプリケーションを実行できる。すなわち、ＣＰＵアーキテクチャ、ＯＳの種類、バージョン、ライブラリのバージョン等に依存せず、過去に販売された画像形成装置１〜３及び最新の画像形成装置４の全てが、アプリケーションを実行できる。
【０１０７】
まず、画像形成装置1は、このアプリケーションの販売パッケージが記憶媒体３０またはネットワーク６００経由等の手段により提供されると、判断部１１１が「インストール用jar  file」１０１を実行する。この場合は、判断部１１１はＨ／Ｗ情報を参照する必要が無いと判断するので、Ｈ／Ｗ情報取得部１１２によるＨ／Ｗ情報の取得はスキップされる。  
また、判断部１１１はＳ／Ｗ情報を参照する必要が無いと判断するので、Ｓ／Ｗ情報取得部１１３によるＳ／Ｗ情報取得もスキップされる。
【０１０８】
次にプログラム選択部１１４はＨ／Ｗ情報、Ｓ／Ｗ情報が通知されていないため、画像形成装置用のネイティブ プログラム１２４を選択しない。このため、プログラム選択部１１４は、共通プログラム（jar file）１２２だけを販売パッケージから読み出し、画像形成装置１等にインストールする。このように、アプリケーションのようなＨ／ＷやＳ／Ｗに依存しない販売パッケージなら、プログラムの開発が容易である。
【０１０９】
以上説明したように、販売パッケージには、各機種毎のネイティブプログラム１２４を含み、どのネイティブプログラム１２４をインストールするかを特定の言語で記述されたインストール部により判定するので、画像形成装置メーカは、全機種に適用可能な１つの販売パッケージとして販売することができる。
【符号の説明】
【０１１０】
１４        操作部
２４        ＣＰＵ
２５        ＡＳＩＣ
２６        ＨＤＤ
３０        記憶媒体
１００      画像形成装置
１０１      インストール用jar  file
１０２      機能アップデートパッケージ
１１０      インストール部
１１１      判断部
１１２      Ｈ／Ｗ情報取得部
１１３      Ｓ／Ｗ情報取得部
１１４      プログラム選択部
１１５      格納先指定部
１２１      対応ファイル
１２２      共通プログラム（jar file）
１２３      マニフェストファイル
１２４      ネイティブプログラム
３００      サーバ
５００      ＰＣ
【先行技術文献】
【特許文献】
【０１１１】
【特許文献１】特開２００６−２７９９５９号公報
【図１】
0005526668.tif 000002
【図２】
0005526668.tif 000003
【図３】
0005526668.tif 000004
【図４】
0005526668.tif 000005
【図５】
0005526668.tif 000006
【図６】
0005526668.tif 000007
【図７】
0005526668.tif 000008
【図８】
0005526668.tif 000009
【図９】
0005526668.tif 000010
【図１０】
0005526668.tif 000011