(57)【要約】【課題】複数のプログラムの更新中にエラーが発生しても更新前のプログラムのバージョンの組み合わせに戻すことを目的とする。【解決手段】更新対象のプログラムを特定する特定手段と、更新対象のプログラムの更新が失敗した場合に備えて、更新対象のプログラムを更新前の状態に復元するための復元プログラムを外部装置から取得する取得手段と、取得手段が復元プログラムを外部装置から取得した後に、更新対象のプログラムを更新する更新手段と、更新手段による更新対象のプログラムの更新が失敗した場合に、取得手段が取得した復元プログラムに基づいて更新対象のプログラムを更新前の状態に復元する復元手段と、を備えることによって課題を解決する。【選択図】図３
2014006571.tif 000002
【特許請求の範囲】
【請求項１】
外部装置と通信可能な情報処理装置であって、
更新対象のプログラムを特定する特定手段と、
前記更新対象のプログラムの更新が失敗した場合に備えて、前記更新対象のプログラムを更新前の状態に復元するための復元プログラムを前記外部装置から取得する取得手段と、
前記取得手段が前記復元プログラムを前記外部装置から取得した後に、前記更新対象のプログラムを更新する更新手段と、
前記更新手段による前記更新対象のプログラムの更新が失敗した場合に、前記取得手段が取得した前記復元プログラムに基づいて前記更新対象のプログラムを更新前の状態に復元する復元手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記取得手段は、前記復元プログラムに加えて前記更新対象のプログラムを更新するための更新プログラムを前記外部装置から更に取得し、
前記更新手段は、前記取得手段が取得した前記更新プログラムに基づいて前記更新対象のプログラムを更新することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
外部装置と通信可能な情報処理装置であって、
更新対象のプログラムを特定する第１の特定手段と、
前記更新対象のプログラムに含まれる第１のプログラムについて、前記第１のプログラムの更新が失敗した場合に備えて、前記第１のプログラムを更新前の状態に復元するための第１の復元プログラムを前記外部装置から取得する取得手段と、
前記更新対象のプログラムに含まれる第２のプログラムについて、前記第２のプログラムの更新が失敗した場合に備えて、前記第２のプログラムを更新前の状態に復元するための第２の復元プログラムを生成する生成手段と、
前記更新対象のプログラムを更新する更新手段と、
前記更新手段による前記更新対象のプログラムの更新が失敗した場合に、前記第１の復元プログラムと前記第２の復元プログラムとに基づいて前記更新対象のプログラムを更新前の状態に復元する復元手段と、
を備えることを特徴とする情報処理装置。
【請求項４】
前記第１の特定手段によって特定された更新対象のプログラムのうち、復元プログラムを前記外部装置から取得する必要があるプログラムを特定する第２の特定手段を更に備え、
前記取得手段は、前記第２の特定手段によって復元プログラムを前記外部装置から取得する必要があるプログラムであると特定された前記第１のプログラムについて、前記第１の復元プログラムを前記外部装置から取得し、
前記生成手段は、前記第２の特定手段によって復元プログラムを前記外部装置から取得する必要がないプログラムであると特定された前記第２のプログラムについて、前記第２の復元プログラムを生成することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記生成手段は、前記第２のプログラムを所定の記憶領域に退避させることで前記第２の復元プログラムを生成することを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記第１のプログラムは、前記所定の記憶領域に退避させることができないプログラムであることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記更新手段は、前記取得手段が前記第１の復元プログラムを前記外部装置から取得し、更に前記生成手段が第２の復元プログラムを生成した後に、前記更新対象のプログラムを更新することを特徴とする請求項３乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記取得手段は、前記第１の復元プログラムに加えて前記更新対象のプログラムを更新するための更新プログラムを前記外部装置から更に取得し、
前記更新手段は、前記取得手段が取得した前記更新プログラムに基づいて前記更新対象のプログラムを更新することを特徴とする請求項３乃至７の何れか１項に記載の情報処理装置。
【請求項９】
情報処理装置のプログラムを更新するためのプログラム更新方法であって、
更新対象のプログラムを特定する特定ステップと、
前記更新対象のプログラムの更新が失敗した場合に備えて、前記更新対象のプログラムを更新前の状態に復元するための復元プログラムを外部装置から取得する取得ステップと、
前記復元プログラムを前記外部装置から取得した後に、前記更新対象のプログラムを更新する更新ステップと、
前記更新対象のプログラムの更新が失敗した場合に、前記取得ステップで取得した前記復元プログラムに基づいて前記更新対象のプログラムを更新前の状態に復元する復元ステップと、
を含むことを特徴とするプログラム更新方法。
【請求項１０】
情報処理装置のプログラムを更新するためのプログラム更新方法であって、
更新対象のプログラムを特定する特定ステップと、
前記更新対象のプログラムに含まれる第１のプログラムについて、前記第１のプログラムの更新が失敗した場合に備えて、前記第１のプログラムを更新前の状態に復元するための第１の復元プログラムを外部装置から取得する取得ステップと、
前記更新対象のプログラムに含まれる第２のプログラムについて、前記第２のプログラムの更新が失敗した場合に備えて、前記第２のプログラムを更新前の状態に復元するための第２の復元プログラムを生成する生成ステップと、
前記更新対象のプログラムを更新する更新ステップと、
前記更新対象のプログラムの更新が失敗した場合に、前記第１の復元プログラムと前記第２の復元プログラムとに基づいて前記更新対象のプログラムを更新前の状態に復元する復元ステップと、
を含むことを特徴とするプログラム更新方法。
【請求項１１】
請求項９又は１０に記載のプログラム更新方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム更新方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、画像形成装置等の情報処理装置が実行するプログラムを更新する技術が知られている。
そして、プログラムの更新中にエラーが発生した場合や更新されたプログラム自体に問題がある場合に備え、更新前のプログラムを予め退避させておき、エラーが発生した場合に退避させたプログラムにより復元を行う技術が知られている（例えば、特許文献１）。
また、情報処理装置が実行する複数のプログラムを更新する際に複数のプログラムのバージョンの組み合わせを管理し、複数のプログラムのバージョンの組み合わせが適切でない場合に警告をする技術が知られている（例えば、特許文献２）。特許文献２の技術では、複数のプログラムに含まれる各プログラムの更新がそれぞれ独立して実行され、各プログラムの更新後にプログラムのバージョンの組み合わせが適切であるかどうか判断されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１１７７８０号公報
【特許文献２】特開２００４−４２３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術はエラー発生時に、予め退避させておいた更新前のプログラムに復元するものである。しかし、例えば、画像形成装置の動作制御のためのプログラムは、本体コントローラのみではなく、ＢＩＯＳや、エンジンコントローラ、スキャナコントローラ等の外部コントローラが複数存在する。外部コントローラプログラムの中には、通信速度が遅く更新前のプログラムの退避に時間がかかるものや、更新前のプログラムを退避させておくことができないものが存在し、エラー時の復元が不可能である場合についての考慮がされていない問題点があった。
また、特許文献２の技術は、各プログラムの更新が正常に終了した場合にプログラムのバージョンの組み合わせが適切であるかどうか判断するものである。つまり、特許文献２の技術では、各プログラムの更新中にエラーが発生して更新が正常に行われない場合についての考慮がされていない問題点があった。
【０００５】
本発明はこのような問題点に鑑みなされたもので、複数のプログラムの更新中にエラーが発生しても更新前のプログラムのバージョンの組み合わせに戻すことを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明は、外部装置と通信可能な情報処理装置であって、更新対象のプログラムを特定する特定手段と、前記更新対象のプログラムの更新が失敗した場合に備えて、前記更新対象のプログラムを更新前の状態に復元するための復元プログラムを前記外部装置から取得する取得手段と、前記取得手段が前記復元プログラムを前記外部装置から取得した後に、前記更新対象のプログラムを更新する更新手段と、前記更新手段による前記更新対象のプログラムの更新が失敗した場合に、前記取得手段が取得した前記復元プログラムに基づいて前記更新対象のプログラムを更新前の状態に復元する復元手段と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、複数のプログラムの更新中にエラーが発生しても更新前のプログラムのバージョンの組み合わせに戻すことができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア構成の一例を示す図である。
【図２】情報処理装置のプログラム等の構成の一例を示す図である。
【図３】実施形態１におけるプログラム更新の処理の一例を示すフローチャートである。
【図４】実施形態１における更新対象のプログラム及び更新に必要な更新データの一覧を表すリストの一例を示す図である。
【図５】実施形態２におけるプログラム更新の処理の一例を示すフローチャートである。
【図６】実施形態２における更新対象のプログラム、更新に必要な更新データ、及び更新前に退避するプログラムの一覧を表すリストの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
図１は、情報処理装置１００のハードウェア構成の一例を示す図である。なお、以下に示す実施形態では、情報処理装置の一例として画像形成装置を用いて説明を行う。
制御部２００は、情報処理装置１００の全体を制御する。制御部２００は、情報処理装置１００を制御するための構成として、以下に示すものを含む。
ＣＰＵ２１０は、ＦｌａｓｈＲＯＭ２１１に記憶された制御部２００用のプログラムをＲＡＭ２１２に読み出して実行する。
ハードディスクドライブ（ＨＤＤ）２１３は、ネットワークＩ／Ｆ２１８を介してＰＣ２２５から受信した印刷データを記憶する。なお、ＣＰＵ２１０により実行されるプログラムには、後述するプリント用アプリケーションプログラムが含まれる。そして、このプリント用アプリケーションプログラムに基づきＣＰＵ２１０が処理を行うことによって、ＨＤＤ２１３に記憶された印刷データがプリンタ部２２０によるプリントが可能な画像データに変換される。そして、ＨＤＤ２１３には、プリンタ部２２０によるプリントが可能な画像データも記憶される。また、ＣＰＵ２１０により実行されるプログラムには、後述するスキャン用アプリケーションプログラムが含まれる。そして、このスキャン用アプリケーションプログラムに基づきＣＰＵ２１０が処理を行うことによって、スキャナ部２２１により画像データが読み取られると共に、読み取られた画像データがＨＤＤ２１３に転送される。そして、ＨＤＤ２１３には、読み取られた画像データが記憶される。
【００１１】
操作部Ｉ／Ｆ２１４は、操作部２１９を介して情報処理装置１００の操作者により入力される指示をＣＰＵ２１０に伝達するためのＩ／Ｆである。また、操作部Ｉ／Ｆ２１４は、操作部２１９に表示される内容を切替えるための指示をＣＰＵ２１０から受信して操作部２１９に伝達する。
プリンタＩ／Ｆ２１５は、制御部２００とプリンタ部２２０とを接続するためのインターフェースである。ここで、プリンタ部２２０は、プリンタＩ／Ｆ２１５を介してＨＤＤ２１３から転送される画像データに基づいてシート上にプリントを行う。なお、プリンタ部２２０は、ＣＰＵ２２０ａとＦｌａｓｈＲＯＭ２２０ｂとを有する。ＣＰＵ２２０ａは、ＦｌａｓｈＲＯＭ２２０ｂに記憶されたプログラムを実行することにより、プリント処理に伴う各種の動作をプリンタ部２２０に実行させる。
【００１２】
スキャナＩ／Ｆ２１６は、制御部２００とスキャナ部２２１とを接続するためのインターフェースである。ここで、スキャナ部２２１は、原稿上の画像をＣＣＤ（ＣｈａｒｇｅＣｏｕｐｌｅｄＤｅｖｉｃｅ）等により構成されるラインセンサを用いて画像データとして読み取る。そして、スキャナ部２２１は、読み取った画像データをスキャナＩ／Ｆ２１６を介してＨＤＤ２１３へ転送する。ＨＤＤ２１３へ転送され、記憶された画像データは、プリンタ部２２０によりプリントすることが可能である。スキャナ部２２１により読み取られた画像データをプリンタ部２２０によりプリントすることにより、複写（コピー）処理が可能となる。なお、スキャナ部２２１は、ＣＰＵ２２１ａとＦｌａｓｈＲＯＭ２２１ｂとを有する。ＣＰＵ２２１ａは、ＦｌａｓｈＲＯＭ２２１ｂに記憶されたプログラムを実行することにより、スキャン処理に伴う各種の動作をスキャナ部２２１に実行させる。
【００１３】
ＵＳＢ−ＨｏｓｔＩ／Ｆ２１７は、制御部２００と外部ＵＳＢデバイス２２３とを接続するためのインターフェースである。ここで、外部ＵＳＢデバイス２２３は、ＵＳＢメモリやＵＳＢキーボード等が例として挙げられる。ＵＳＢメモリにプログラムを格納し、ダウンロードしてＦｌａｓｈＲＯＭ２１１のファイル格納領域に置く場合もある。
ネットワークＩ／Ｆ２１８は、制御部２００をＬＡＮ１１０に接続し、ＬＡＮ１１０上のＰＣ２２５やサーバ装置２２４との通信を行う。なお、サーバ装置２２４は、後述する各種のプログラム（情報処理装置１００により実行されるもの）をアップデート（更新）するための更新情報が記憶されており、情報処理装置１００からの要求に応じて、更新情報を情報処理装置１００へ送信する。
ＢＩＯＳＲＯＭ２３０は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）のプログラムを記憶する。ＢＩＯＳは、情報処理装置１００の起動及び運用を制御するプログラムである。
【００１４】
次に、制御部２００のＣＰＵ２１０により実行されるプログラムの構成について図２を用いて説明する。図２は、情報処理装置１００のプログラム等の構成の一例を示す図である。
情報処理装置１００は、ユーザが通常使用する本体コントローラ４００、ＢＩＯＳ４１０、プリンタ部２２０のエンジンコントローラプログラムとなるＤＣＯＮ４３０、スキャナ部２２１のコントローラプログラムとなるＲＣＯＮ４２０を有する。
本体コントローラ４００は、ＦｌａｓｈＲＯＭ２１１に記憶されている。ＢＩＯＳ４１０は、ＢＩＯＳＲＯＭ２３０に記憶されている。ＤＣＯＮ４３０は、プリンタ部２２０のＦｌａｓｈＲＯＭ２２０ｂに記憶されている。ＲＣＯＮ４２０は、スキャナ部２２１のＦｌａｓｈＲＯＭ２２１ｂに記憶されている。
【００１５】
本体コントローラ４００における各プログラムについて説明する。
ＯＳ４０１は、情報処理装置１００を制御するためのＯＳであり、プリンタ部２２０、スキャナ部２２１を含む情報処理装置１００の各部の動作を制御するためのドライバプログラムを含むものである。ＵＩ４０２は、操作部２１９を介して情報処理装置１００の操作者により入力される指示をＣＰＵ２１０に伝達し、伝達された指示に応じた処理を実行するためのプログラムである。ＳＣＡＮ４０３は、前述したスキャナ部２２１によるスキャン処理を制御するためのプログラムである。ＰＲＩＮＴ４０４は、前述したプリンタ部２２０によるプリント処理を制御するためのプログラムである。Ｎ／Ｗ４０５は、ＬＡＮ１１０上のＰＣ２２５やサーバ装置２２４との通信を行うためのプログラムである。ＵＰＤＡＴＥ４０６は、図２で示したような複数のファームウェアの更新を行うためのプログラムである。
これらのプログラムは情報処理装置１００のプログラムの例であり、内部的には更に細かいサブプログラム群で構成されていてもよいし、ここに挙げた以外のプログラムが存在してもよい。
【００１６】
＜実施形態１＞
次に、実施形態１におけるプログラムの更新処理について図３、及び図４を用いて説明する。
図３は、実施形態１におけるプログラム更新の処理の一例を示すフローチャートである。
図４は、実施形態１における更新対象のプログラム及び更新に必要な更新データの一覧を表すリストの一例を示す図である。
なお、図３の各ステップにおける処理は、制御部２００のＣＰＵ２１０がＦｌａｓｈＲＯＭ２１１に記憶されたプログラムを実行することにより実現される。
ステップＳ３０１で、ＣＰＵ２１０は、情報処理装置１００のプログラムを更新するための更新処理の実行指示がなされたかどうかを判定し、更新処理の実行指示がなされたと判定した場合はステップＳ３０２へ処理を進める。ここで、更新処理の実行指示とは、例えば、情報処理装置１００の操作者が操作部２１９を介してなされる指示を言う。また、一定期間（例えば、２週間）毎にプログラムを定期的に更新するようにスケジュールを予め設定しておき、定期的に更新処理の実行指示が自動的になされるようにしてもよい。
【００１７】
ステップＳ３０２で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行する。このことにより、ＣＰＵ２１０は、ＦｌａｓｈＲＯＭ２１１、ＢＩＯＳＲＯＭ２３０、ＦｌａｓｈＲＯＭ２２０ｂ、ＦｌａｓｈＲＯＭ２２１ｂに記憶された各プログラムのバージョンを取得する。一例として、更新前の各プログラムのバージョンは、図４ａのリストの通りとする。
ステップＳ３０３で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、情報処理装置１００を特定するための機種ＩＤ情報を含むバージョンの取得要求を、ネットワークを介して通信可能なサーバ装置２２４に送信する。そして、情報処理装置１００は、サーバ装置２２４により機種ＩＤ情報に基づき管理されている情報処理装置の複数のプログラムのバージョンを取得し、更新対象プログラムの組み合わせを特定する（第１の特定）。ここで、ＣＰＵ２１０は、組み合わせを指定するための表示画面を操作部２１９に表示させ、操作部２１９を介して操作者により指示されたプログラムを更新候補として特定してもよい。また、ＣＰＵ２１０は、操作者による指示に基づくことなく、取得したバージョンに基づき、最新の組み合わせを更新対象として特定してもよい。一例として、更新対象の組み合わせは図４ｂの通りとする。なお、ＣＰＵ２１０は、バージョンの取得を、サーバ装置２２４だけでなく、外部ＵＳＢデバイス２２３（ＵＳＢメモリ等）やＰＣ２２５等から行ってもよい。
【００１８】
ステップＳ３０４で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、更新候補となるプログラムを特定する。つまり、ＣＰＵ２１０は、ステップＳ３０２で取得した現在の各プログラム（図４ａ）の組み合わせから、ステップＳ３０３で取得した更新対象の各プログラム（図４ｂ）の組み合わせへ更新するために必要な更新データを特定する。図４ａの組み合わせから、図４ｂの組み合わせに更新するためには、本体コントローラ４００に含まれるＯＳ、ＵＩ、ＰＲＩＮＴプログラム、及びＢＩＯＳ、ＤＣＯＮのバージョン２．０が必要となるため、更新データの一覧は図４ｃの通りとなる。即ち、ＣＰＵ２１０は、図４ｃに示されるように、更新対象の複数のプログラム名と各プログラムの更新後のバージョンとを特定する。
ステップＳ３０５で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、エラー時に更新前の組み合わせへ戻すためのプログラムを特定する。つまり、ＣＰＵ２１０は、ステップＳ３０３で取得した更新対象の各プログラム（図４ｂ）の組み合わせから、ステップＳ３０２で取得した現在（更新前）の各プログラム（図４ａ）の組み合わせへ更新するために必要な更新データを特定する。図４ｂの組み合わせから、図４ａの組み合わせに更新するためには、本体コントローラ４００に含まれるＯＳ、ＵＩ、ＰＲＩＮＴプログラム、及びＢＩＯＳ、ＤＣＯＮのバージョン１．０が必要となるため、更新データの一覧は図４ｄの通りとなる。即ち、ＣＰＵ２１０は、図４ｄに示されるように、更新対象の複数のプログラム名と各プログラムの更新前のバージョンとを特定する。
【００１９】
ステップＳ３０６で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、Ｓ３０４及びＳ３０５で特定した（図４ｃ、図４ｄに示した）更新データ一覧を、サーバ装置２２４から取得する。ＣＰＵ２１０は、取得した更新データを、情報処理装置１００内（例えば、ＨＤＤ２１３）に保存する。図４ｃに示す更新データは、更新対象のプログラムを更新するために使用される更新プログラムである。また、図４ｄに示す更新データは、更新対象のプログラムの更新が失敗した場合に、前記プログラムを更新前の状態に復元するために使用される復元プログラムである。更新対象（図４ｂ）の組み合わせへ更新する際は、ＣＰＵ２１０は、図４ｃに示した更新データを用いる。そして、更新時にエラーが発生した場合は、ＣＰＵ２１０は、図４ｄに示した更新データを用いて更新前（図４ａ）の組み合わせに戻すことで、各プログラムのバージョンの組み合わせが不適切になることを防ぐことができる。なお、ＣＰＵ２１０は、更新データの取得を、サーバ装置２２４だけでなく、外部ＵＳＢデバイス２２３（ＵＳＢメモリ等）やＰＣ２２５等から行ってもよい。
ステップＳ３０７で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、ステップＳ３０６で取得した更新データを用いて、各プログラムをステップＳ３０３で取得した（図４ｂ）組み合わせへ更新する。具体的には、ＣＰＵ２１０は、本体コントローラ４００やＢＩＯＳ４１０を更新し、外部コントローラであるＲＣＯＮ４２０やＤＣＯＮ４３０を更新する。各プログラムは別々の記憶領域（ここではＦｌａｓｈＲＯＭ２１１、ＢＩＯＳＲＯＭ２３０、ＦｌａｓｈＲＯＭ２２０ｂ、ＦｌａｓｈＲＯＭ２２１ｂ）に記憶されているため、可能な限り更新処理を並列に行うことで更新時間を短縮することができる。
【００２０】
ステップＳ３０８で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、Ｓ３０７で行われた更新処理が正しく完了したかどうかを判定する。ＣＰＵ２１０は、正しく完了した場合はＳ３１２へ処理を進め、正しく完了しなかった場合はＳ３０９へ処理を進める。更新処理が正しく完了しなかった場合とは、例えば、所定時間経過しても各記憶領域に記憶された各プログラムのバージョンとステップＳ３０３で取得した各プログラム（図４ｂ）のバージョンとが一致しなかった場合等である。ここで、各記憶領域とは、例えば、ＦｌａｓｈＲＯＭ２１１、ＢＩＯＳＲＯＭ２３０、ＦｌａｓｈＲＯＭ２２０ｂ、ＦｌａｓｈＲＯＭ２２１ｂである。
更新処理に失敗した場合とは、例えば、本体コントローラ４００の更新に失敗（ＦｌａｓｈＲＯＭ２１１への書き込みに失敗）したが、ＢＩＯＳ４１０、ＤＣＯＮ４３０の更新は成功した場合がある。この様な場合、図４ｅのようなプログラムの組み合わせになる。なお、本体コントローラ４００の更新に失敗する原因としては更新時の電源ダウン等が考えられる。図４ｅのようなプログラムの組み合わせになった場合、ＯＳ４０１とＢＩＯＳ４１０、及びＰＲＩＮＴ４０４とＤＣＯＮ４３０のバージョンの組み合わせが不整合となり、正常に起動できなくなる場合がある。そのため、ＣＰＵ２１０は、ステップＳ３０９で復元処理を実行し、更新前の各プログラム（図４ａ）の組み合わせへ戻すことで、バージョンの組み合わせの不整合を解消する。
【００２１】
ステップＳ３０９で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行する。このことにより、ＣＰＵ２１０は、ステップＳ３０６で取得した復元プログラムを用いて、各プログラムをステップＳ３０２で取得した更新前の各プログラム（図４ａ）の組み合わせへ更新（又は復元）する。より具体的には、ＣＰＵ２１０は、本体コントローラ４００やＢＩＯＳ４１０を復元し、更にＲＣＯＮ４２０やＤＣＯＮ４３０を復元する。各プログラムは別々の記憶領域（ここではＦｌａｓｈＲＯＭ２１１、ＢＩＯＳＲＯＭ２３０、ＦｌａｓｈＲＯＭ２２０ｂ、ＦｌａｓｈＲＯＭ２２１ｂ）に記憶されているため、並列に更新を行うことで更新時間を短縮することができる。
【００２２】
ステップＳ３１０で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、Ｓ３０９で行われた更新処理が正しく完了したかどうかを判定する。より具体的には、ＣＰＵ２１０は、各記憶領域に記憶された各プログラムのバージョンとステップＳ３０２で取得した各プログラム（図４ａ）のバージョンとが一致するかどうかを判定する。ＣＰＵ２１０は、一致した場合は、不整合を解消したとみなし、Ｓ３１２へ処理を進める。ＣＰＵ２１０は、一致しなかった場合は、更新処理に失敗したとみなし、Ｓ３１１へ処理を進める。なお、各記憶領域とは、例えば、ＦｌａｓｈＲＯＭ２１１、ＢＩＯＳＲＯＭ２３０、ＦｌａｓｈＲＯＭ２２０ｂ、ＦｌａｓｈＲＯＭ２２１ｂである。なお、ＣＰＵ２１０は、不整合を解消したとみなした場合、不整合を解消した旨の画面等を操作部２１９等に表示し、操作者からシステムを再起動する旨の指示を前記画面を介して受け取った後、Ｓ３１２に処理を進めるようにしてもよい。
ステップＳ３１１で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、更新処理に失敗した旨を操作部２１９に表示する。
ステップＳ３１２で、ＣＰＵ２１０は、ＯＳ４０１を介してシステム全体を再起動し、更新処理を完了する。
【００２３】
以上説明したように、実施形態１によれば、情報処理装置が実行する複数のプログラムの更新にあたって、何れかのプログラムの更新処理が完了しない場合であっても、各プログラムのバージョンの組み合わせが不適切な状態に陥らないようにすることができる。より具体的には、ＣＰＵ２１０は、更新対象の各プログラム（図４ｂ）の組み合わせへ更新するために必要な更新データ（図４ｃ）と共に更新前の各プログラム（図４ａ）の組み合わせに戻すために必要な更新データ（図４ｄ）をサーバ装置等から予め取得しておく。そして、ＣＰＵ２１０は、何れかのプログラムの更新処理に失敗した場合に、予め取得していた更新データを用いて、更新前の各プログラム（図４ａ）の組み合わせへ戻す。このことで、各プログラムのバージョンの組み合わせを適切なものとすることができる。
【００２４】
＜実施形態２＞
次に、実施形態２について説明する。実施形態１では、更新対象のプログラムに対する復元プログラムを、プログラムの更新を実行する前に予め情報処理装置１００がサーバ装置等から取得する例を説明した。しかしながら、ＯＳ４０１、ＵＩ４０２、ＰＲＩＮＴ４０４等のプログラムは、記憶領域（ＨＤＤ２１３等）に退避することができる、つまり復元プログラムを情報処理装置１００が生成することができる場合がある。実施形態２は、この点を鑑みたものである。
即ち、実施形態２では、ＣＰＵ２１０は、本体コントローラ４００においては更新前のプログラムを退避する。そして、ＣＰＵ２１０は、ＢＩＯＳ４１０、ＲＣＯＮ４２０、ＤＣＯＮ４３０等の外部コントローラにおいては、更新前の組み合わせに戻すために必要な更新データを予め外部装置（サーバ装置２２４）から取得しておく。以下では図５、図６を用いて実施形態１との差分を主に説明する。更新前の各プログラムのバージョンは図６ａのリストの通りとし、更新対象の組み合わせは図６ｂの通りとする。
【００２５】
図５は、実施形態２におけるプログラム更新の処理の一例を示すフローチャートである。
図６は、実施形態２における更新対象のプログラム、更新に必要な更新データ、及び更新前に退避するプログラムの一覧を表すリストの一例を示す図である。
なお、図５の各ステップにおける処理は、制御部２００のＣＰＵ２１０がＦｌａｓｈＲＯＭ２１１に記憶されたプログラムを実行することにより実現される。
ステップＳ５０５で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、エラー時に外部コントローラを更新前の組み合わせへ戻すためのプログラムを特定する。つまり、ステップＳ５０３で取得した更新対象の各プログラム（図６ｂ）の組み合わせから、ステップＳ５０２で取得した現在（更新前）の各プログラム（図６ａ）の組み合わせへ更新するために必要な更新データを特定する。外部コントローラを図６ｂの組み合わせから、図６ａの組み合わせに更新するためには、ＢＩＯＳ、ＤＣＯＮのバージョン１．０が必要となるため、更新データの一覧は図６ｄの通りである。実施形態１との差異は、更新データの一覧に本体コントローラ４００のプログラムが含まれないことである。
なお、図６ｄに含まれるプログラムは、第１の復元プログラムの一例である。
【００２６】
ステップＳ５０６で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、エラー時に本体コントローラ４００を更新前の組み合わせへ戻すために、復元プログラムとして更新前のプログラムを退避する。つまり、ＣＰＵ２１０は、ステップＳ５０３で取得した更新対象の各プログラム（図６ｂ）の組み合わせから、ステップＳ５０２で取得した現在（更新前）の各プログラム（図６ａ）の組み合わせを復元するために必要なプログラムを特定する（第２の特定）。そして、ＣＰＵ２１０は、特定したプログラムを制御部２００内（ＨＤＤ２１３等）に退避する。本体コントローラ４００を図６ｂの組み合わせから、図６ａの組み合わせを復元するためには、ＯＳ、ＵＩ、ＰＲＩＮＴのバージョン１．０を退避しておく必要があり、退避対象のプログラムは図６ｆの通りである。なお、ＣＰＵ２１０は、制御部２００内の空きメモリに応じて、本体コントローラ４００に含まれるプログラムを全て退避するようにしてもよいし、上述したように必要なプログラムのみを退避するようにしてもよい。
なお、ステップＳ５０６において制御部２００内（ＨＤＤ２１３等）に退避する復元プログラムは、本体コントローラ４００のプログラムである。ＢＩＯＳ４１０、ＲＣＯＮ４２０、ＤＣＯＮ４３０のプログラムは制御部２００内（ＨＤＤ２１３等）に退避させることができないため、ステップＳ５０７でサーバ装置２２４から復元プログラムを取得する。
なお、ＢＩＯＳ４１０、ＲＣＯＮ４２０、ＤＣＯＮ４３０のプログラムを制御部２００内（ＨＤＤ２１３等）に退避させることができないのは、プリンタＩ／Ｆ２１５やスキャナＩ／Ｆ２１５等の各種Ｉ／Ｆの仕様が原因である。仮にＲＣＯＮ４２０、ＤＣＯＮ４３０のプログラムを制御部２００内（ＨＤＤ２１３等）に退避させることができたとしても、プリンタＩ／Ｆ２１５やスキャナＩ／Ｆ２１５の通信速度が遅い場合には、復元プログラムの生成に時間がかかってしまう。したがって、実施形態２のようにサーバ装置２２４から復元プログラムを取得することが望ましい。
なお、図６ｆに含まれるプログラムは、第２の復元プログラムの一例である。
また、図６ｃに含まれるＯＳ、ＵＩ、ＰＲＩＮＴのプログラムは、第１のプログラムの一例である。また、図６ｃに含まれるＢＩＯＳ、ＤＣＯＮのプログラムは、第２のプログラムの一例である。
【００２７】
ステップＳ５０９で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行することにより、Ｓ５０８で行われた更新処理が正しく完了したかどうかを判定する。より具体的には、ＣＰＵ２１０は、各記憶領域に記憶された各プログラムのバージョンとステップＳ５０３で取得した各プログラム（図６ｂ）のバージョンとが一致するかどうかを判定する。ＣＰＵ２１０は、一致した場合は、正しく更新処理が完了したとみなし、Ｓ５１３へ処理を進める。ＣＰＵ２１０は、一致しなかった場合は、更新処理に失敗したとみなし、Ｓ５１０へ処理を進める。なお、各記憶領域とは、例えば、ＦｌａｓｈＲＯＭ２１１、ＢＩＯＳＲＯＭ２３０、ＦｌａｓｈＲＯＭ２２０ｂ、ＦｌａｓｈＲＯＭ２２１ｂである。
更新処理に失敗した場合とは、例えば、本体コントローラ４００及びＢＩＯＳ４１０の更新に成功したが、ＤＣＯＮ４３０の更新に失敗（ＦｌａｓｈＲＯＭ２２０ｂの書き込みに失敗）した場合であり、図６ｅのようなプログラムの組み合わせになる。この場合、ＰＲＩＮＴ４０４とＤＣＯＮ４３０とのバージョンの組み合わせが不整合となり、正常に起動できなくなる場合がある。そのため、ＣＰＵ２１０は、ステップＳ５１０で復元処理を実行し、更新前の各プログラム（図６ａ）の組み合わせへ戻すことで、バージョンの組み合わせの不整合を解消する。
【００２８】
ステップＳ５１０で、ＣＰＵ２１０は、ＯＳ４０１を介してＵＰＤＡＴＥ４０６を実行する。このことにより、ＣＰＵ２１０は、ステップＳ５０６で予め制御部２００内（ＨＤＤ２１３等）に退避しておいた更新前の各プログラム、及びステップＳ５０７で取得した各更新データを用いて、各プログラムをステップＳ５０２で取得した更新前の各プログラム（図６ａ）の組み合わせへ復元する。より具体的には、ＣＰＵ２１０は、ステップＳ５０６で予め制御部２００内（ＨＤＤ２１３等）に退避しておいた更新前の各プログラムを用いて、本体コントローラ４００を更新前の組み合わせへ復元する。また、ＣＰＵ２１０は、ステップＳ５０７で取得した各更新データを用いて、ＢＩＯＳ４１０、ＲＣＯＮ４２０、ＤＣＯＮ４３０を更新前の状態に復元する。各プログラムは別々の記憶領域（ここではＦｌａｓｈＲＯＭ２１１、ＢＩＯＳＲＯＭ２３０、ＦｌａｓｈＲＯＭ２２０ｂ、ＦｌａｓｈＲＯＭ２２１ｂ）に記憶されているため、ＣＰＵ２１０は、並列に更新（又は復元）を行うことで更新時間を短縮することができる。
【００２９】
以上説明したように、実施形態２によれば、更新対象のプログラムのうち本体コントローラ４００については情報処理装置１００自身が復元プログラムを生成する（ステップＳ５０６）。一方、ＢＩＯＳ４１０、ＲＣＯＮ４２０、ＤＣＯＮ４３０については情報処理装置が復元プログラムを生成せずにサーバ装置２２４から復元プログラムを取得する（ステップＳ５０７）。これにより、情報処理装置１００自身が復元プログラムを生成できないプログラムについても、プログラムの更新を実行する前に予め復元プログラムを用意することができる。
【００３０】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００３１】
以上、上述した各実施形態によれば、複数のプログラムの更新中にエラーが発生しても更新前のプログラムのバージョンの組み合わせに戻すことができる。
【００３２】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図１】
2014006571.tif 000003
【図２】
2014006571.tif 000004
【図３】
2014006571.tif 000005
【図４】
2014006571.tif 000006
【図５】
2014006571.tif 000007
【図６】
2014006571.tif 000008