(57)【要約】【課題】自装置がアップデート管理対象とするソフトウェアの、不要なアップデートとダウングレードの繰り返しを抑える画像形成装置を提供する。【解決手段】自装置がアップデート管理対象とする第１のソフトウェアと、アップデート管理対象としない第２のソフトウェアとがインストールされた画像形成装置１０２を設ける。画像形成装置１０２が、第１のソフトウェアがアップデートされた後に第２のソフトウェアが正常動作しない場合に、第１のソフトウェアが含むモジュールに対応する版数を記憶手段に記憶する。第１のソフトウェアのアップデート指示がされた場合に、第１のソフトウェアがアップデートされた場合の第１のソフトウェアが含むモジュールに関する版数が記憶手段に記憶されている版数と合致する場合に、画像形成装置１０２が、第１のソフトウェアのアップデートを中止する。【選択図】図１
2013250910.tif 000002
【特許請求の範囲】
【請求項１】
第１のソフトウェアと第２のソフトウェアとがインストールされた画像形成装置であって、
前記第１のソフトウェアは、前記画像形成装置がアップデート管理対象とするソフトウェアであり、前記第２のソフトウェアは、前記画像形成装置がアップデート管理対象としないソフトウェアであり、
前記第１のソフトウェアをアップデートまたはダウングレードする更新手段と、
前記第１のソフトウェアがアップデートされた後に前記第２のソフトウェアが正常動作しない場合に、該第１のソフトウェアが含むモジュールに関する版数を記憶手段に記憶して管理する管理手段と、
前記第１のソフトウェアのアップデート指示がされた場合に、該第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含むモジュールに関する版数が前記記憶手段に記憶されている版数と合致するかを判断する判断手段と、
前記第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含むモジュールに関する版数が前記記憶手段に記憶されている版数と合致すると判断された場合に、前記更新手段による該第１のソフトウェアのアップデートを中止する中止手段とを備える
ことを特徴とする画像形成装置。
【請求項２】
前記第１のソフトウェアが含むモジュールに関する版数は、該第１のソフトウェアが含むモジュールのリストの版数である
ことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記第１のソフトウェアが含むモジュールのリストは、外部装置が前記画像形成装置に対して行う前記第１のソフトウェアのアップデート通知に含まれる
ことを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記記憶手段に記憶される前記第１のソフトウェアが含むモジュールに関する版数は、該第１のソフトウェアが含むモジュールのうち、前記第２のソフトウェアが正常動作しない原因となる原因モジュールの版数であり、
前記判断手段は、前記第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含む前記原因モジュールの版数が、前記記憶手段に記憶されている該原因モジュールの版数と合致するかを判断し、
前記中止手段は、前記第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含む前記原因モジュールの版数が、前記記憶手段に記憶されている該原因モジュールの版数と合致すると判断された場合に、前記更新手段による該第１のソフトウェアのアップデートを中止する
ことを特徴とする請求項１に記載の画像形成装置。
【請求項５】
前記記憶手段に記憶される前記第１のソフトウェアが含むモジュールに関する版数は、該第１のソフトウェアが含むモジュールのうち、前記第２のソフトウェアが正常動作しない原因となる原因モジュールの版数であり、
前記判断手段は、
前記第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含む前記原因モジュールの版数が、前記記憶手段に記憶されている該原因モジュールの版数と合致するかを判断し、
前記第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含む前記原因モジュールの版数が、前記記憶手段に記憶されている該原因モジュールの版数と合致する場合に、前記第２のソフトウェアがアップデートされているかを判断し、
前記中止手段は、前記第２のソフトウェアがアップデートされていると判断された場合に、前記更新手段による該第１のソフトウェアのアップデートを中止する
ことを特徴とする請求項１に記載の画像形成装置。
【請求項６】
第１のソフトウェアと第２のソフトウェアとがインストールされた画像形成装置の制御方法であって、
前記第１のソフトウェアは、前記画像形成装置がアップデート管理対象とするソフトウェアであり、前記第２のソフトウェアは、前記画像形成装置がアップデート管理対象としないソフトウェアであり、
前記第１のソフトウェアがアップデートされた後に前記第２のソフトウェアが正常動作しない場合に、前記アップデートされたソフトウェアをダウングレードするとともに、該第１のソフトウェアが含むモジュールに関する版数を記憶手段に記憶して管理する工程と、
前記第１のソフトウェアのアップデート指示がされた場合に、該第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含むモジュールに関する版数が前記記憶手段に記憶されている版数と合致するかを判断する工程と、
前記第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含むモジュールに関する版数が前記記憶手段に記憶されている版数と合致すると判断された場合に、前記第１のソフトウェアのアップデートを中止する工程とを有する
ことを特徴とする制御方法。
【請求項７】
請求項６に記載の制御方法をコンピュータに実行させる
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、画像形成装置の制御方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
デジタル複合機等の画像形成装置が備えるファームウェアのアップデートが必要になった場合、一般に、サービスマンが、顧客先に出向いて、当該ファームウェアのアップデートを実施する。しかし、近年は、インターネット環境が整い、ファームウェアをインターネットによってデジタル複合機に通知し、サービスマンが出向くことなく、ユーザによってファームウェアのアップデートを実施することが可能になってきている。上記ファームウェアは、画像形成装置のメーカーによって提供される。
【０００３】
アップデートを実施するファームウェア構成は、基本的に品質保証されたもので、アップデートしても動作に問題がないことを前提としている。しかし、現在のデジタル複合機には、ユーザのニーズによって機能をカスタマイズするためのオープンな外部アプリがインストールされていることがある。外部アプリは、デジタル複合機がアップデート管理対象としないソフトウェアであって、デジタル複合機のメーカーとは異なる他のメーカー（以下、外部アプリ提供メーカーと記述）によって提供される。一方、デジタル複合機には、デジタル複合機自身がアップデート管理対象とするソフトウェア（例えば、ファームウェア）がインストールされている。
【０００４】
外部アプリと、デジタル複合機自身がアップデート管理対象とするファームウェアとの組み合わせが、評価されていない組み合わせとなった場合、ファームウェアのアップデートが原因で機器の動作に異常が発生する可能性がある。例えば、ファームウェアのアップデート後にある機能のメモリの使用方法が変わると、外部アプリが動作しなくなる場合がある。
【０００５】
また、ファームウェアのアップデートの目的として、一度製品化されたファームウェアの機能を大きく変更することを目的とするよりも、バグの修正を目的とすることが多いと考えられる。したがって、外部アプリが、潜在バグに依存した作りになっている場合には、アップデートによってファームウェアのバグが修正された場合、外部アプリが動作しなくなることがある。
【０００６】
デジタル複合機内のファームウェアのアップデートに伴って外部アプリが動作しなくなった場合、ユーザは、カスタマイズされた外部アプリを使用するために、アップデート前の過去のバージョンにバージョンダウンを行う必要がある。特許文献１は、バージョンアップ指示対象のコンポーネントのテストを実行し、このコンポーネントの正常動作が確認できなかった場合に、当該コンポーネントとそのテストプログラムを削除するバージョンアップ管理装置を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２６９１２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、デジタル複合機のファームウェアを定期アップデートし、常に最新のファームウェアを提供するシステムが考えられる。しかし、ファームウェアの定期アップデート運用中に、外部アプリが一度でも正常動作しなくなると、以下の問題がある。すなわち、ユーザは、定期アップデートの度に、ファームウェアのバージョン（版数）が外部アプリが正常動作する版数になるまで、繰り返しファームウェアのダウングレードを行う必要がある。
【０００９】
このような不要なアップデート・ダウングレードが繰り返されると、デジタル複合機のダウンタイム時間が増加し、ユーザの利便性が低下してしまう。また、不要なアップデート・ダウングレードの繰り返しを止めるためには、ユーザが、定期アップデートを停止する設定を行う必要がある。遠隔で定期アップデートの停止が設定できない場合は、サービスマンがデジタル複合機の設置場所まで行かなくてはならなくなり、コストがかかる。
【００１０】
本発明は、上記の課題の少なくとも一つを解決するためになされたものである。本発明は、自装置がアップデート管理対象とするソフトウェアの、不要なアップデートとダウングレードの繰り返しを抑える画像形成装置の提供を目的とする。
【課題を解決するための手段】
【００１１】
本発明の一実施形態の画像形成装置は、第１のソフトウェアと第２のソフトウェアとがインストールされた画像形成装置である。前記第１のソフトウェアは、前記画像形成装置がアップデート管理対象とするソフトウェアであり、前記第２のソフトウェアは、前記画像形成装置がアップデート管理対象としないソフトウェアである。そして、前記画像形成装置は、前記第１のソフトウェアをアップデートまたはダウングレードする更新手段と、前記第１のソフトウェアがアップデートされた後に前記第２のソフトウェアが正常動作しない場合に、該第１のソフトウェアが含むモジュールに対応する版数を記憶手段に記憶して管理する管理手段と、前記第１のソフトウェアのアップデート指示がされた場合に、該第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含むモジュールに関する版数が前記記憶手段に記憶されている版数と合致するかを判断する判断手段と、前記第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含むモジュールに関する版数が前記記憶手段に記憶されている版数と合致すると判断された場合に、前記更新手段による該第１のソフトウェアのアップデートを中止する中止手段とを備える。
【発明の効果】
【００１２】
本発明の画像形成装置によれば、自装置がアップデート管理対象とするソフトウェアの、不要なアップデートとダウングレードの繰り返しを抑えることができる。これにより、当該ソフトウェアの定期アップデートの利便性・信頼性が向上する。
【図面の簡単な説明】
【００１３】
【図１】本実施形態のシステム構成例を示す図である。
【図２】画像形成装置の構成例を示す図である。
【図３】画像形成装置が備えるコントローラ部の構成例を示す図である。
【図４】画像形成装置のファームウェア構成の一例を示す図である。
【図５】ファームウェアのアップデートを説明する図である。
【図６】ファームウェアのアップデート処理を説明するフローチャートである。
【図７】実施例１におけるアップデートタイミング制御処理の例を説明するフローチャートである。
【図８】ファームウェアのアップデート時の処理を説明する図である。
【図９】ファームウェアのアップデート時の処理を説明する図である。
【発明を実施するための形態】
【００１４】
図１は、本実施形態のシステム構成例を示す図である。本実施形態の情報処理システムは、コンテンツサーバ１０１と画像形成装置１０２とを備える。コンテンツサーバ１０１と画像形成装置１０２とは、ネットワーク（この例ではインターネット）１００を介して通信する。画像形成装置１０２は、画像データを生成して出力する処理装置である。画像形成装置１０２は、例えば、プリンタ、スキャナ、ファクシミリ装置、ＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）等である。画像形成装置１０２は、顧客先に設置される。
【００１５】
コンテンツサーバ１０１は、インターネット１００を介して、画像形成装置１０２に対し、画像形成装置１０２のファームウェアをアップデートするために必要なファームウェア構成情報を配信する。また、コンテンツサーバ１０１は、ファームウェアのアップデート・ダウングレード時に画像形成装置１０２がインストールする差分モジュールを画像形成装置１０２に配信する。
【００１６】
図２は、画像形成装置の構成例を示す図である。画像形成装置１０２は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）２０１を介してインターネット１００（図１）に接続されている。ＬＡＮ２０１は、例えばイーサネット（登録商標）である。
【００１７】
画像形成装置１０２は、リーダ部２０３、プリンタ部２０４、操作部２０５、コントローラ部２０６を備える。リーダ部２０３は、画像データの読取処理を行う。プリンタ部２０４は、画像データの出力処理を行う。操作部２０５は、ユーザの操作に応じた処理を実行する。例えば、操作部２０５は、画像データや各種機能の表示処理を行う液晶パネルを備える。コントローラ部２０６は、画像形成装置１０２が備える各処理部に指示することによって、画像形成装置全体を制御する。
【００１８】
リーダ部２０３は、原稿給紙ユニット２０７、スキャナユニット２０８を備える。原稿給紙ユニット２０７は、原稿用紙を搬送する。スキャナユニット２０８は、搬送された原稿画像を光学的に読み取って電気信号としての画像データに変換する。
【００１９】
プリンタ部２０３は、給紙ユニット２０９、マーキングユニット２１０、排紙ユニット２１２、アクセサリユニット２１３を備える。給紙ユニット２０９は、記録用紙を収容する。このために、給紙ユニット２０９は、複数段の給紙カセットを備える。マーキングユニット２１０は、画像データを記録用紙に転写、定着する。排紙ユニット２１２は、印字された記録用紙を外部に排出する。この例では、排紙ユニット２０９は、画像形成装置１０２の外部に接続されたアクセサリユニット２１３に接続されている。したがって、排紙ユニット２０９は、記録用紙をアクセサリユニット２１３へ排出する。
【００２０】
アクセサリユニット２１３は、ソート処理やステイプル処理などのフィニッシング処理を施して、記録用紙を排出する。また、画像形成装置１０２がＦＡＸ機能付きの画像形成装置である場合は、アクセサリユニット２１３にＦＡＸ送信部が設けられる。
【００２１】
図３は、図２に示す画像形成装置が備えるコントローラ部の構成例を示す図である。コントローラ部２０６が備える構成要素のうち、メインコントローラ３２は、ＣＰＵ３３とバスコントローラ３４とを備える。本実施形態の画像形成装置の制御方法は、ＣＰＵ３３がＦＬＡＳＨメモリ９９に格納されたコンピュータプログラムを実行することによって実現される。
【００２２】
メインコントローラ３２は、ＤＲＡＭＩ／Ｆ３７を介して、ＤＲＡＭ３８と接続される。また、メインコントローラ３２は、コーデックＩ／Ｆ３９を介して、コーデック４０と接続される。また、メインコントローラ３２は、ネットワークＩ／Ｆ４１を介して、ネットワークコントローラ４２と接続される。また、メインコントローラ３２は、スキャナバス４５を介して、スキャナＩ／Ｆ４６に接続される。また、メインコントローラ３２は、プリンタバス４７を介して、プリンタＩ／Ｆ４８に接続される。また、メインコントローラ４２は、ＰＣＩバス等の汎用高速バス４９を介して拡張ボードを接続するための拡張コネクタ５０及び入出力制御部（Ｉ／Ｏ制御部）５１に接続されている。
【００２３】
ＤＲＡＭ３８は、ＣＰＵ３３が動作するための作業領域や画像データを蓄積するための領域として使用される。コーデック４０は、ＤＲＡＭ３８に蓄積されたラスターイメージデータをＭＨ／ＭＲ／ＭＭＲ／ＪＢＩＧなどの周知の圧縮方式で圧縮する。また、コーデック４０は、圧縮されたデータをラスターイメージに伸長する。また、コーデック４０にはＳＲＡＭ４３が接続されており、ＳＲＡＭ４３は、コーデック４０の一時的な作業領域として使用される。
【００２４】
ネットワークコントローラ４２は、ネットワークコネクタ４４を介して、ＬＡＮ２０１（図２）との間で所定の制御動作を行う。Ｉ／Ｏ制御部５１は、図２に示すリーダ部２０３やプリンタ部２０４との間で、制御コマンドを送受信する。Ｉ／Ｏ制御部５１には、上記制御コマンドを送受信するための調歩同期式のシリアル通信コントローラ５２が２チャンネル装備されている。シリアル通信コントローラ５２は、Ｉ／Ｏバス５３を介して、スキャナＩ／Ｆ４６及びプリンタＩ／Ｆ４８に接続されている。
【００２５】
スキャナＩ／Ｆ４６は、第一の調歩同期シリアルＩ／Ｆ５４及び第一のビデオＩ／Ｆ５５を介して、スキャナコネクタ５６に接続されている。また、スキャナコネクタ５６は、リーダ部１０５のスキャナユニット２０８に接続されている。そして、スキャナＩ／Ｆ４６は、スキャナユニット２０８から受信した画像データに対して、所望の２値化処理や、主走査方向及び／又は副走査方向の変倍処理を行う。また、スキャナＩ／Ｆ４６は、スキャナユニット２０８から送られてきたビデオ信号に基づいて制御信号を生成し、スキャナバス４５を介して、メインコントローラ３２に転送する。
【００２６】
また、プリンタＩ／Ｆ４８は、第２の調歩同期シリアルＩ／Ｆ５７及び第２のビデオＩ／Ｆ５８を介して、プリンタコネクタ５９に接続されている。また、プリンタコネクタ５９は、プリンタ部２０４のマーキングユニット２１０に接続されている。そして、プリンタＩ／Ｆ４８は、メインコントローラ３２から出力された画像データにスムージング処理を施して、マーキングユニット２１０に出力する。また、プリンタＩ／Ｆ４８は、マーキングユニット２１０から送られたビデオ信号に基づいて、生成された制御信号をプリンタバス４７に出力する。プリンタＩ／Ｆ４８は、例えば、ＬＡＮ２０１に接続されたホストコンピュータから受信したＰＤＬ（ページ記述言語）データを解釈し、ラスターイメージデータに展開する。
【００２７】
また、バスコントローラ３４は、スキャナＩ／Ｆ４６プリンタＩ／Ｆ４８、その他拡張コネクタ５０等に接続された外部機器から入出力されるデータ転送を制御する。具体的には、バスコントローラ３４は、バスの使用権のアービトレーション（調停）やＤＭＡデータ転送の制御を行う。例えば、上述したＤＲＡＭ３８とコーデック４０との間のデータ転送や、スキャナユニット２０８からＤＲＡＭ３８へのデータ転送、ＤＲＡＭ３８からマーキングユニット２１０へのデータ転送等は、バスコントローラ３４によって制御され、ＤＭＡ転送される。
【００２８】
また、Ｉ／Ｏ制御部５１は、ＬＣＤコントローラ６０及びキー入力Ｉ／Ｆ６１を介して、パネルＩ／Ｆ６２に接続されている。パネルＩ／Ｆ６２は、操作部１０７に接続されている。また，Ｉ／Ｏ制御部５１は、Ｅ−ＩＤＥコネクタ６３を介して、ハードディスクドライブ８および９、Ｆｌａｓｈメモリ９９に接続されている。
【００２９】
Ｆｌａｓｈメモリ９９は、メインコントローラ制御用の各種制御プログラム、各種データ記憶領域を記憶する。また、Ｆｌａｓｈメモリ９９は、機器内で管理する日付と時刻を更新／保存するリアルタイムクロックモジュール６４に接続されている。リアルタイムクロックモジュール６４は、バックアップ用電池６５に接続されて、バックアップ用電池６５によりバックアップされている。
【００３０】
図４は、画像形成装置のファームウェア構成の一例を示す図である。画像形成装置１０２には、機能モジュール群４０１、Ｕｐｄａｔｅｒ４０２、Ｔｅｓｔｅｒ４０３、Ｅｎｇｉｎｅｃｏｎ４０４、Ａｃｃｅｓｏｒｙ４０５、外部アプリ実行プラットフォーム４０７が、ファームウェアとしてインストールされている。このファームウェアは、画像形成装置１０２がアップデート管理対象とするソフトウェア（第１のソフトウェア）である。ファームウェアは、画像形成装置１０２のメーカーによって提供される。
【００３１】
また、画像形成装置１０２には、外部アプリ群４０６がインストールされている。外部アプリ群４１５に含まれる外部アプリ４１５は、画像形成装置１０２がアップデート管理対象としないソフトウェア（第２のソフトウェア）である。外部アプリ４１５は、画像形成装置１０２のメーカーとは異なる他のメーカーである外部アプリ提供メーカーによって提供される。
【００３２】
機能モジュール群４０１は、ユーザが通常使用する複数のモジュールであって、画像形成装置１０２の各種機能処理を実行する。Ｕｐｄａｔｅｒ４０２は、ファームウェアのアップデートまたはダウングレードに用いられるモジュール（更新手段）である。Ｕｐｄａｔｅｒ４０２は、ユーザアップデート、ダウングレード時に起動し、ＣＰＵ３３によって実行される。
【００３３】
Ｔｅｓｔｅｒ４０３は、ファームウェアのアップデート後の自動テスト、すなわち外部アプリ４１５の動作確認テストを実行する。Ｅｎｇｉｎｅｃｏｎ４０４は、プリンタ部２０４のエンジンコントローラモジュールである。Ａｃｃｅｓｓｏｒｙ４０５は、アクセサリユニット２３１のコントローラモジュールである。
【００３４】
外部アプリ群４０６は、ユーザが機能をカスタマイズして使用するアプリケーションプログラム群である。外部アプリ実行プラットフォーム４０７は、外部アプリ４１５の実行環境を提供するモジュールである。
【００３５】
機能モジュール群４０１、Ｕｐｄａｔｅｒ４０２、Ｔｅｓｔｅｒ４０３、外部アプリ群４０６、外部アプリ実行プラットフォーム４０７は、ＦＬＡＳＨメモリ９９に格納される。Ｅｎｇｉｎｃｏｎ４０４は、プリンタ部２０４に格納される。Ａｃｅｓｓｏｒｙ４０５は、アクセサリユニット２１３に格納される。
【００３６】
機能モジュール群４０１は、ＵＩ４０８、ＳＣＡＮ４０９、ＰＲＩＮＴ４１０、Ｎ／Ｗ４１１、ＦＡＸ４１２、ＳＥＮＤ４１３、ＰＤＬ４１４を備える。ＵＩ４０８は、ユーザが操作部２０５を操作する際の動作モジュールである。スキャン４０９は、リーダ部２０３のコントローラモジュールである。ＰＲＩＮＴ４１０は、プリンタ部２０４のコントローラモジュールである。すなわち、ＰＲＩＮＴ４１０は、エンジンそのものに指示を出すＥｎｇｉｎｅｃｏｎ４０５の上位のコントローラモジュールである。
【００３７】
Ｎ／Ｗ４１１は、ネットワーク通信部分のモジュールであり、ネットワーク経由のプリント指示などを受ける。ＦＡＸ４１２は、画像形成装置１０２上で読み取った画像データのＦＡＸ送信を行う。また、ＦＡＸ４１２は、Ｎ／Ｗ４１１および外部のネットワークを介してＦＡＸ受信を行う。ＳＥＮＤ４１３は、画像形成装置１０２上で読み取った画像データをメール添付で外部に送信するモジュールである。ＰＤＬ４１４は、Ｎ／Ｗ４１０が外部のネットワーク経由で受信したＰＤＬデータを画像変換する。機能モジュール群４０１が備える各々の機能モジュールは、画像形成装置１０２のモジュールの例であり、機能モジュール群４０１が、図４に示す機能モジュール以外の機能モジュールを備えるようにしてもよい。
【００３８】
外部アプリ群４０６は、外部アプリ４１５と外部アプリＴｅｓｔｅｒ４１６とを備える。外部アプリ４１５は、外部アプリ実行プラットフォーム４０７が提供する実行環境で動作するように作られたモジュールである。外部アプリ４１５は、外部アプリ実行プラットフォーム４０７を通して、機能モジュール群４０１が備える各モジュールを使用して、ユーザのニーズに合わせてカスタマイズされた機能を提供する。
【００３９】
外部アプリ実行プラットフォーム４０７がの提供するＡＰＩは、外部公開されており、外部アプリ提供メーカーが、外部アプリを作成して使用することができる。そのため、画像形成装置１０２のメーカー製のファームウェアを構成するモジュールがアップデートされて変更された場合、外部アプリ提供メーカー製の外部アプリ４１５とは評価されていない組み合わせとなる。外部アプリＴｅｓｔｅｒ４１６は、ファームウェアのアップデートが行われたときに外部アプリ４１５の動作確認を行うテストモジュールである。外部アプリＴｅｓｔｅｒ４１６は、外部アプリ提供メーカーによって提供される。
【００４０】
図５は、ファームウェアのアップデートを説明する図である。図５（Ａ）に示す５０１は、画像形成装置１０２内のファームウェアを構成するモジュール一覧として機能するリストの例である。図５（Ｂ）は、アップデート対象となるモジュールを含むモジュール一覧として機能するリストである。以後、これらのリストをコンテンツリストと呼ぶ。また、ファームウェアを構成するモジュールは、パッケージと呼ばれる。すなわち、ファームウェアは、コンテンツリストに記述されたパッケージ群によって構成されている。コンテンツサーバ１０１は、コンテンツリストと対応付けて、ファームウェアの更新時に画像形成装置１０２に提供するＴｅｓｔｅｒ４０３を保持している。
【００４１】
コンテンツサーバ１０１が、画像形成装置１０２のファームウェア構成を、コンテンツリストの単位で管理する。画像形成装置１０２のファームウェア構成のアップデート・ダウングレードは、画像形成装置１０２が、コンテンツリストのバージョンが変更されたときの差分パッケージをコンテンツサーバ１０１から取得してインストールすることで実施される。
【００４２】
図５（Ｂ）中に示すコンテンツリスト５０２は、図５（Ａ）中に示すコンテンツリスト５０１に対してバージョンアップされたコンテンツリストである。画像形成装置１０２は、コンテンツリスト５０１とコンテンツリスト５０２とを比較して、図５（Ｃ）に示す差分パッケージ５０３を特定する。差分パッケージ５０３に記載されているモジュールは、コンテンツリスト５０１とコンテンツリスト５０２との差分に対応するモジュールである。そして、画像形成装置１０２は、特定した差分パッケージと、コンテンツリスト５０２に対応するＴｅｓｔｅｒ４０３とをコンテンツサーバ１０１からインストールする。
【００４３】
コンテンツリストに記述されているパッケージは、それぞれ、コントローラ部２０６のＦｌａｓｈメモリ９９、プリンタ部２０４、アクセサリユニット２１３に格納されている。画像形成装置１０２が備える各モジュールに１または複数のパッケージが対応することになる。コンテンツリストは、コンテンツリストに記述されたファームウェア構成で品質を保証される。ファームウェアのアップデートが必要になった場合、ファームウェア提供者は、コンテンツリストに記述されたパッケージを変更し、その構成での品質保証を行い、バージョンを上げたコンテンツリストをコンテンツサーバ１０１へ登録する。これにより、各ユーザ先の機器から新しいバージョンのコンテンツリストを取得することができる。
【００４４】
ファームウェア提供者は、コンテンツリストをコンテンツサーバ１０１に登録する際に、コンテンツリストのバージョンに対応したテストモジュール（例えばＴｅｓｔｅｒ４０３と外部アプリＴｅｓｔｅｒ４１６）を一緒に登録する。これにより、ユーザ先の機器がテストモジュールも取得できるようになる。
【００４５】
図６は、ファームウェアのアップデート処理の例を説明するフローチャートである。図６を参照して説明するファームウェアのアップデート処理は、ＦＬＡＳＨメモリ９９に格納されたプログラムに従って、ＣＰＵ３３によって実行される。
【００４６】
まず、ＣＰＵ３３が、コンテンツサーバ１０１からファームウェアのアップデート通知を受信し、ＦＬＡＳＨメモリ９９内のＵｐｄａｔｅｒ４０２を起動する（ステップＳ６０１）。ファームウェアのアップデート通知は、画像形成装置１０２に対するファームウェアのアップデート指示として機能する。ファームウェアのアップデート通知には、アップデート対象のモジュールを含むコンテンツリスト５０２が含まれる。
【００４７】
次に、ＣＰＵ３３が、コンテンツサーバ１０１から受けたアップデート通知内容に基づいて、更新の発生する差分パッケージを特定する（ステップＳ６０２）。例えば、ＣＰＵ３３は、ファームウェアのアップデート前のコンテンツリスト５０１（図５（Ａ））と、アップデート通知に含まれるコンテンツリスト５０２とを比較し、差分パッケージ５０３の特定を行う。
【００４８】
次に、ＣＰＵ３３が、コンテンツサーバ１０１から、ステップＳ６０２で特定した差分パッケージをダウンロードする（ステップＳ６０３）。ステップＳ６０３では、ＣＰＵ３３は、さらに、差分パッケージを特定するのに用いたコンテンツリスト５０２に対応するＴｅｓｔｅｒ４０３をダウンロードする。
【００４９】
次に、ＣＰＵ３３が、Ｕｐｄａｔｅｒ４０２に設定されている定期アップデート時刻に達したかを判断する（ステップＳ６０４）。ＣＰＵ３３が、Ｕｐｄａｔｅｒ４０２に設定されている定期アップデート時刻に達していないと判断した場合は、処理がステップＳ６０６に進む。そして、ＣＰＵ３３が、一定時間待機して（ステップＳ６０６）、処理がステップＳ６０４に戻る。
【００５０】
ＣＰＵ３３が、Ｕｐｄａｔｅｒ４０２に設定されている定期アップデート時刻に達していると判断した場合は、処理がステップＳ６０５に進む。そして、ＣＰＵ３３が、アップデートタイミング制御処理を実行する（ステップＳ６０５）。
【００５１】
（実施例１）
実施例１では、画像形成装置１０２は、過去のアップデート処理で外部アプリ４１５が正常動作しなくなった時のコンテンツリストのバージョンをＦＬＡＳＨメモリ９９に保存する。そして、画像形成装置１０２は、アップデート通知を受けた場合に、当該アップデート通知に含まれるコンテンツリストのバージョンとＦＬＡＳＨメモリ９９に保存されているバージョンとを比較する。画像形成装置１０２は、当該比較結果に基づいて、ファームウェアのアップデートを実行するか否かを判断する。これによって、未知の外部アプリが画像形成装置１０２に導入され、定期アップデートで未知の外部アプリが正常動作しなくなることが予想される場合に、不要なアップデート・ダウングレード処理を行わなくてすむ。
【００５２】
図７は、実施例１におけるアップデートタイミング制御処理の例を説明するフローチャートである。このアップデートタイミング制御処理は、図６のステップＳ６０５での処理に対応し、ＣＰＵ３３が、ＦＬＡＳＨメモリ９９に格納されているＵｐｄａｔｅｒ４０２を実行することで行われる。
【００５３】
まず、ＣＰＵ３３が、今回アップデート対象であるモジュールを含むコンテンツリストのバージョンが、ＦＬＡＳＨメモリ９９に記憶されているコンテンツリストのバージョンであるかを判断する（ステップＳ７０１）。すなわち、ＣＰＵ３３は、ファームウェアがアップデートされた場合の当該ファームウェアが含むモジュールに関するバージョンが、記憶手段に記憶されているバージョンと合致するかを判断する判断手段として機能する。ＦＬＡＳＨメモリ９９に記憶されているコンテンツリストのバージョンは、過去に外部アプリ４１５が正常動作しなかった時に記憶されたコンテンツリストのバージョン、つまり、外部アプリ４１５が正常動作しない原因となったコンテンツリストのバージョンである。
【００５４】
今回アップデート対象となっているモジュールを含むコンテンツリストのバージョンが、ＦＬＡＳＨメモリ９９に記憶されているコンテンツリストのバージョンでない場合は、処理がステップＳ７０４に進む。
【００５５】
一方、今回アップデート対象となっているモジュールを含むコンテンツリストのバージョンが、ＦＬＡＳＨメモリ９９に記憶されているコンテンツリストのバージョンである場合は、処理がステップＳ７０２に進む。続いて、ＣＰＵ３３が、外部アプリ４１５のバージョンが前回のアップデート以後に修正されたか（アップデートされたか）を判断する（ステップＳ７０２）。
【００５６】
外部アプリ４１５のバージョンとインストール日時は、外部アプリ実行プラットフォーム４０７を介してＦＬＡＳＨメモリ９９の特定の領域に保存されている。また、外部アプリ４１５の過去のアップデート日時も、ＦＬＡＳＨメモリ９９の特定の領域に保存されている。ＣＰＵ３３は、ＦＬＡＳＨメモリ９９に保存されている、外部アプリ４１５のインストール日時と過去のアップデート日時とを比較することで、外部アプリ４１５のバージョンが前回のアップデート以後に修正されたかを判断する。
【００５７】
外部アプリ４１５のバージョンが前回のアップデート以後に修正された場合は、ステップＳ７０４に進む。外部アプリ４１５のバージョンが前回のアップデート以後に修正されていなかった場合は、ステップＳ７０３に進む。そして、ＣＰＵ３３が、今回のファームウェアのアップデート処理を中止する。すなわち、ＣＰＵ３３は、Ｕｐｄａｔｅｒ４０２によるファームウェアのアップデートを中止する中止手段として機能する。
【００５８】
ステップＳ７０４において、ＣＰＵ３３が、今回アップデート対象となっているモジュールを含むコンテンツリストと、アップデート前のコンテンツリストとに基づいて、差分パッケージを特定する。そして、ＣＰＵ３３が、コンテンツサーバ１０１から差分パッケージをダウンロードし、画像形成装置１０２にインストールする（ステップＳ７０４）。これにより、ファームウェアがアップデートされる。
【００５９】
次に、ＣＰＵ３３が、外部アプリＴｅｓｔｅｒ４１６によって、外部アプリ４１５の動作確認テストを行う（ステップＳ７０５）。外部アプリＴｅｓｔｅｒ４１６による動作確認テストは、以下のようにして実行される。まず、ＣＰＵ３３が、Ｔｅｓｔｅｒ４１５を起動する。Ｔｅｓｔｅｒが外部アプリ４１５を叩き、外部アプリ４１５が，外部アプリ実行プラットフォーム４０７を介して、機能モジュール群４０１のいずれかのモジュールを叩くことで外部アプリ４１５を動作させる。外部アプリＴｅｓｔｅｒ４１６が、外部アプリ４１５の動作結果を取得し、動作結果が予め決められた期待する動作（戻り値）と一致しているかを判断する。
【００６０】
外部アプリＴｅｓｔｅｒ４１６が、動作結果が予め決められた期待する動作（戻り値）と一致していると判断した場合、ＣＰＵ３３は、外部アプリ４１５が正常動作すると判断して、処理を終了する。外部アプリＴｅｓｔｅｒ４１６が、動作結果が予め決められた期待する動作（戻り値）と一致していないと判断した場合、ＣＰＵ３３は、外部アプリ４１５が正常動作しないと判断して、処理がステップＳ７０７に進む。
【００６１】
ステップＳ７０７において、ＣＰＵ３３が、アップデート前のパッケージに戻すために、ファームウェアのダウングレードを実行する（ステップＳ７０７）。具体的には、ＣＰＵ３３は、アップデートの処理と同様に、アップデート前のコンテンツリストをコンテンツリストサーバ１０１から取得して、差分パッケージのインストールを行うことで、ダウングレードを実行する。
【００６２】
次に、ＣＰＵ３３が、今回アップデート対象となったモジュールを含むコンテンツリストのバージョンを取得して、ＦＬＡＳＨメモリ９９の特定の領域に記憶して管理し（ステップＳ７０８）、処理を終了する。すなわち、ＣＰＵ３３は、ファームウェアがアップデートされた後に外部アプリ４１５が正常動作しない場合に、このファームウェアが含むモジュールに関する版数を記憶手段に記憶して管理する管理手段として機能する。
【００６３】
なお、上記ステップＳ７０５において、画像形成装置１０２が備える機能モジュールが、ユーザの操作にしたがって機能動作するようにしてもよい。そして、ＣＰＵ３３が、上記ステップＳ７０６乃至７０８の処理を、ユーザの操作にしたがって実行するようにしてもよい。
【００６４】
図８は、実施例１におけるファームウェアのアップデート時の処理を説明する図である。図８（Ａ）は、Ｘ回目のファームウェアの定期アップデート時の処理を示す。符号８０１は、アップデート処理前の画像形成装置１０２内のモジュール一覧である。モジュール一覧８０１には、アップデート管理対象であるモジュールａａａ乃至ｃｃｃと、外部アプリとが記述されている。
【００６５】
モジュールａａａ乃至ｃｃｃは、図４のファームウェア構成図においては、例えば、機能モジュール群４０１内のモジュールや、Ｕｐｄａｔｅｒ４０２、Ｔｅｓｔｅｒ４０３、Ｅｎｇｉｎｅｃｏｎ４０４、Ａｃｃｅｒｏｒｙ４０５に該当する。外部アプリは、外部アプリ４１５に該当する。また、コンテンツリスト８０２は、Ｘ回目にアップデート対象であるモジュールを含むコンテンツリストである。
【００６６】
モジュール一覧８０１とコンテンツリスト８０２とを比較してみると、両者は、モジュールａａａのバージョンに差分があることがわかる。したがって、Ｘ回目のアップデート後のモジュール一覧８０３に記述されているモジュールａａａは、モジュール一覧８０１に記述されているモジュールａａａからバージョンアップされている。
【００６７】
Ｘ回目のアップデート後、ＣＰＵ３３が、外部アプリ４１５の動作確認テストを実行する。この動作確認テストの結果、外部アプリ４１５が正常動作しない場合、ＣＰＵ３３は、アップデート処理の前のモジュールへ戻す（ダウングレードする）。この例では、ＣＰＵ３３は、モジュールａａａのバージョンを、”１．０−０”から”０．０−０”に戻す。そして、ＣＰＵ３３は、コンテンツリスト８０２のバージョン”Ｖ０１”をＦＡＬＳＨメモリ９９の指定の領域に記憶する。
【００６８】
図８（Ｂ）は、Ｘ＋１回目のファームウェアの定期アップデート時の処理を示す。Ｘ＋１回目のアップデート前における画像形成装置１０２内のモジュール一覧８０４は、図８（Ａ）に示すモジュール一覧８０１と同じ内容である。これは、Ｘ回目の定期アップデート時にダウングレードを実施しているからである。
【００６９】
図８（Ｂ）に示すように、Ｘ＋１回目のアップデート対象であるモジュールを含むコンテンツリスト８０５のバージョンは”Ｖ０１”であり、Ｘ回目の定期アップデート時にＦＡＬＳＨメモリ９９に記憶されたコンテンツリスト８０２のバージョンと同じである。したがって、ＣＰＵ３３は、Ｘ＋１回目のアップデート処理を中止する。
【００７０】
なお、Ｘ回目の定期アップデート時からＸ＋１回目の定期アップデート時までの間に外部アプリ４１５のバージョンが変更されている場合を想定する。この場合には、外部アプリ４１５は、バージョン”Ｖ０１”のコンテンツリストとは初めての組み合わせとなる。したがって、ＣＰＵ３３は、アップデート処理を実施し、動作確認を行う。
【００７１】
図８（Ｃ）は、Ｘ＋２回目のファームウェアの定期アップデート時の処理を示す。Ｘ＋２回目のアップデート前における画像形成装置１０２内のモジュール一覧８０６は、図８（Ａ）に示すモジュール一覧８０１と同じ内容である。これは、Ｘ回目の定期アップデート時にダウングレードを実施し、Ｘ＋１回目の定期アップデート時にアップデートを中止しているからである。
【００７２】
図８（Ｃ）に示すように、Ｘ＋２回目のアップデート対象であるモジュールを含むコンテンツリスト８０７のバージョンは”Ｖ０２”である。これは、モジュールａａａおよびｂｂｂのバージョンが変更されるからである。コンテンツリスト８０７のバージョンが、Ｘ回目の定期アップデート時にＦＡＬＳＨメモリ９９に記憶されたコンテンツリスト８０２のバージョンと異なるので、ＣＰＵ３３は、Ｘ＋２回目のアップデート処理を実行する。符号８０８は、Ｘ＋２回目のアップデート処理後のモジュール一覧である。アップデート処理後は、外部アプリ４１５の動作確認テストが実行される。
【００７３】
実施例１の画像形成装置１０２によれば、外部アプリ４１５が正常動作しないことが予想されるモジュールのアップデートを中止することで、ファームウェアの不要なアップデート、ダウングレードによるダウンタイム時間を削減することができる。その結果、ファームウェアの定期アップデートの利便性・信頼性が向上する。また、定期アップデートを停止する設定を行うためにサービスマンが出動する必要がなくなり、コストを削減することができる。
【００７４】
（実施例２）
実施例２では、画像形成装置１０２は、過去のアップデート処理で外部アプリ４１５が正常動作しない時に、コンテンツリスト中のモジュールのうち、外部アプリ４１５が正常動作しない原因であるモジュールのバージョンをＦＬＡＳＨメモリ９９に保存する。外部アプリ４１５が正常動作しない原因であるモジュールを、以下では原因モジュールと記述する。画像形成装置１０２は、外部アプリ４１５が正常動作しなくなった時のアップデート処理でアップデート対象であったモジュールを原因モジュールとする。画像形成装置１０２は、アップデート通知を受けた場合に、当該アップデート通知に含まれるコンテンツリストに記述された原因モジュールのバージョンとＦＬＡＳＨメモリ９９に保存されている原因モジュールのバージョンとを比較する。画像形成装置１０２は、当該比較結果に基づいて、ファームウェアのアップデートを実行するか否かを判断する。
【００７５】
実施例２においては、図７のステップＳ７０１において、ＣＰＵ３３が、以下の処理を実行する。ＣＰＵ３３は、今回アップデート対象であるファームウェアがアップデートされた場合の該ファームウェアが含む原因モジュールのバージョンが、ＦＬＡＳＨメモリ９９に記憶されている原因モジュールのバージョンと合致するかを判断する。
【００７６】
今回アップデート対象であるファームウェアがアップデートされた場合の該ファームウェアが含む原因モジュールのバージョンが、ＦＬＡＳＨメモリ９９に記憶されている原因モジュールのバージョンと合致する場合、処理がステップＳ７０２に進む。今回アップデート対象であるファームウェアがアップデートされた場合の該ファームウェアが含む原因モジュールのバージョンが、ＦＬＡＳＨメモリ９９に記憶されている原因モジュールのバージョンと合致しない場合は、処理がステップＳ７０４に進む。
【００７７】
また、実施例２においては、図７のステップＳ７０８において、ＣＰＵ３３が、外部アプリ４１５が正常動作しない原因となったモジュールを原因モジュールとして、そのバージョンをＦＬＡＳＨメモリ９９の特定の領域に保存する。
【００７８】
図９は、実施例２におけるファームウェアのアップデート時の処理を説明する図である。図９（Ａ）は、Ｘ回目のファームウェアの定期アップデート時の処理を示す。符号９０１は、アップデート処理前の画像形成装置１０２内のモジュール一覧である。モジュール一覧９０１には、アップデート管理対象であるモジュールＵＩ乃至Ａｃｃｅｓｓｏｒｙと、外部アプリとが記述されている。外部アプリは、外部アプリ４１５に該当する。また、コンテンツリスト９０２は、Ｘ回目にアップデート対象であるモジュール一覧に対応するコンテンツリストである。
【００７９】
モジュール一覧９０１とコンテンツリスト９０２とを比較してみると、両者は、ＰＲＩＮＴのバージョンに差分があることがわかる。したがって、Ｘ回目のアップデート後のモジュール一覧９０３に記述されているＰＲＩＮＴは、モジュール一覧９０１に記述されているＰＲＩＮＴからバージョンアップされている。
【００８０】
Ｘ回目のアップデート後、ＣＰＵ３３が、外部アプリ４１５の動作確認テストを実行する。この動作確認テストの結果、外部アプリ４１５が正常動作しない場合、ＣＰＵ３３は、アップデート処理の前のモジュールへ戻す（ダウングレードする）。この例では、ＣＰＵ３３は、ＰＲＩＮＴのバージョンを、”１．０−０”から”０．０−０”に戻す。ＣＰＵ３３は、ＰＲＩＮＴを原因モジュールとする。すなわち、ＣＰＵ３３は、アップデート処理前後でバージョンに変更があるモジュールを原因モジュールとする。そして、ＣＰＵ３３は、ＰＲＩＮＴのバージョン”１．０−０”をＦＡＬＳＨメモリ９９の指定の領域に記憶する。
【００８１】
図９（Ｂ）は、Ｘ＋１回目のファームウェアの定期アップデート時の処理を示す。Ｘ＋１回目のアップデート前における画像形成装置１０２内のモジュール一覧９０４は、図９（Ａ）に示すモジュール一覧９０１と同じ内容である。これは、Ｘ回目の定期アップデート時にダウングレードを実施しているからである。
【００８２】
図９（Ｂ）に示すように、Ｘ＋１回目の定期アップデート処理時のコンテンツリスト９０５に記述されたＰＲＩＮＴのバージョンは”１．０−０”であり、Ｘ回目の定期アップデート時にＦＡＬＳＨメモリ９９に記憶されたＰＲＩＮＴのバージョンと同じである。したがって、ＣＰＵ３３は、Ｘ＋１回目のアップデート処理を中止する。
【００８３】
なお、Ｘ回目の定期アップデート時からＸ＋１回目の定期アップデート時までの間に外部アプリ４１５のバージョンが変更されている場合を想定する。この場合には、外部アプリ４１５は、バージョン”１．０−０”のＰＲＩＮＴとは初めての組み合わせとなる。したがって、ＣＰＵ３３は、アップデート処理を実施し、動作確認を行う。
【００８４】
図９（Ｃ）は、Ｘ＋２回目のファームウェアの定期アップデート時の処理を示す。Ｘ＋２回目のアップデート前における画像形成装置１０２内のモジュール一覧９０６は、図９（Ａ）に示すモジュール一覧９０１と同じ内容である。これは、Ｘ回目の定期アップデート時にダウングレードを実施し、Ｘ＋１回目の定期アップデート時にアップデートを中止しているからである。
【００８５】
図９（Ｃ）に示すように、Ｘ＋２回目の定期アップデート処理時のコンテンツリスト８０７に記述されたＰＲＩＮＴのバージョンは”２．０−０”であって、Ｘ回目の定期アップデート時にＦＡＬＳＨメモリ９９に記憶されたＰＲＩＮＴのバージョンと異なる。したがって、ＣＰＵ３３は、Ｘ＋２回目のアップデート処理を実行する。符号９０８は、Ｘ＋２回目のアップデート処理後のモジュール一連である。モジュール一覧９０８ではＰＲＩＮＴ、ＳＣＡＮのバージョンが変更されている。アップデート処理後は、外部アプリ４１５の動作確認テストが実行される。
【００８６】
実施例２の画像形成装置１０２は、過去に外部アプリ４１５が正常動作しない原因となったバージョンの原因モジュールを今回アップグレード対象であるモジュールが含むかをチェックして、モジュールのアップデートを中止するか否かを判断する。したがって、実施例２の画像形成装置１０２によれば、精度良くアップデートの中止処理を実行することができる。
【００８７】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００８８】
１００  コンテンツサーバ
１０２  画像形成装置
【図１】
2013250910.tif 000003
【図２】
2013250910.tif 000004
【図３】
2013250910.tif 000005
【図４】
2013250910.tif 000006
【図５】
2013250910.tif 000007
【図６】
2013250910.tif 000008
【図７】
2013250910.tif 000009
【図８】
2013250910.tif 000010
【図９】
2013250910.tif 000011