(57)【特許請求の範囲】
【請求項１】
第１プログラムを記憶する第１記憶手段と、
第２プログラムを記憶する第２記憶手段と、
前記第１プログラム及び前記第２プログラムを更新するための更新情報を取得する取得手段と、
前記取得手段によって取得された前記更新情報に基づいて、前記第１記憶手段が記憶している前記第１プログラムを更新する第１更新手段と、
前記第１記憶手段が記憶している前記第１プログラムの更新が成功したことを条件にして、前記取得手段によって取得された前記更新情報に基づいて、前記第２記憶手段が記憶している前記第２プログラムを更新する第２更新手段と、
前記第１更新手段による前記第１プログラムの更新中にエラーが発生した場合に、更新中にエラーが発生した前記第１プログラムを更新前の状態に復元し、前記第２更新手段による前記第２プログラムの更新中にエラーが発生した場合に、更新中にエラーが発生した前記第２プログラムと更新が成功した前記第１プログラムの両方を更新前の状態に復元する復元手段とを備え、
前記第１更新手段による前記第１プログラムの更新中にエラーが発生した場合、前記第２更新手段は、前記第２プログラムの更新を開始しないことを特徴とする情報処理装置。
【請求項２】
更新前の前記第１プログラムと更新前の前記第２プログラムを退避情報として退避する退避手段を更に備え、
前記復元手段は、前記退避情報に基づいて、前記第１プログラムと前記第２プログラムを更新前の状態に復元することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記取得手段は、ネットワーク上の外部装置から前記更新情報を取得することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記情報処理装置は、前記情報処理装置を制御する制御部と、印刷処理を実行する印刷部とで構成され、
前記制御部は、
前記第１記憶手段を備え、
前記第１プログラムは、前記情報処理装置を制御するためのプログラムであり、
前記印刷部は、
前記第２記憶手段を備え、
前記第２プログラムは、前記印刷処理を実行するためのプログラムであることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
第１プログラムを記憶する第１記憶手段と、第２プログラムを記憶する第２記憶手段とを備える情報処理装置におけるプログラムの更新方法であって、
前記第１プログラム及び前記第２プログラムを更新するための更新情報を取得する取得ステップと、
前記取得ステップで取得した前記更新情報に基づいて、前記第１記憶手段が記憶している前記第１プログラムを更新する第１更新ステップと、
前記第１プログラムの更新が成功したことを条件にして、前記取得ステップで取得した前記更新情報に基づいて、前記第２記憶手段が記憶している前記第２プログラムを更新する第２更新手段と、
前記第１更新ステップにおいて前記第１プログラムの更新中にエラーが発生した場合に、更新中にエラーが発生した前記第１プログラムを更新前の状態に復元し、前記第２更新ステップにおいて前記第２プログラムの更新中にエラーが発生した場合に、更新中にエラーが発生した前記第２プログラムと更新が成功した前記第１プログラムの両方を更新前の状態に復元する復元ステップとを有し、
前記第１更新ステップにおいて前記第１プログラムの更新中にエラーが発生した場合、前記第２プログラムの更新を開始することなく、前記復元ステップにおいて、前記第１プログラムを更新前の状態に復元することを特徴とするプログラムの更新方法。
【請求項６】
請求項５に記載のプログラムの更新方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラムの更新方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、画像形成装置等の情報処理装置が実行するプログラムを更新する技術が知られている。
【０００３】
そして、プログラムの更新中にエラーが発生した場合や更新されたプログラム自体に不具合がある場合に備え、更新前のプログラムを予め退避させておき、エラーが発生した場合に退避させたプログラムにより復元を行う技術が知られている。
【０００４】
また、情報処理装置が実行する複数のプログラムを更新する際に複数のプログラムのバージョンの組み合わせを管理し、複数のプログラムのバージョンの組み合わせが適切でない場合に警告をする技術が知られている（特許文献１）。特許文献１では、複数のプログラムに含まれる各プログラムの更新がそれぞれ独立して実行され、各プログラムの更新後にプログラムのバージョンの組み合わせが適切であるかどうか判断される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−４２３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１は、各プログラムの更新が正常に終了した場合にプログラムのバージョンの組み合わせが適切であるかどうか判断されるものである。つまり、特許文献２では、各プログラムの更新中にエラーが発生して更新が正常に行われない場合についての考慮がされていないという問題点があった。
【０００７】
そこで、上記の点に鑑み、本発明は、複数のプログラムの更新中にエラーが発生した場合に、各プログラムの更新状況に応じて適切に各プログラムの復元を行う情報処理装置、プログラムの更新方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明に係る情報処理装置は、第１プログラムを記憶する第１記憶手段と、第２プログラムを記憶する第２記憶手段と、前記第１プログラム及び前記第２プログラムを更新するための更新情報を取得する取得手段と、前記取得手段によって取得された前記更新情報に基づいて、前記第１記憶手段が記憶している前記第１プログラムを更新する第１更新手段と、前記第１記憶手段が記憶している前記第１プログラムの更新が成功したことを条件にして、前記取得手段によって取得された前記更新情報に基づいて、前記第２記憶手段が記憶している前記第２プログラムを更新する第２更新手段と、前記第１更新手段による前記第１プログラムの更新中にエラーが発生した場合に、更新中にエラーが発生した前記第１プログラムを更新前の状態に復元し、前記第２更新手段による前記第２プログラムの更新中にエラーが発生した場合に、更新中にエラーが発生した前記第２プログラムと更新が成功した前記第１プログラムの両方を更新前の状態に復元する復元手段とを備え、前記第１更新手段による前記第１プログラムの更新中にエラーが発生した場合、前記第２更新手段は、前記第２プログラムの更新を開始しないことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、複数のプログラムの更新中にエラーが発生した場合に、各プログラムの更新状況に応じて適切に各プログラムの復元を行う情報処理装置、プログラムの更新方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置１００の構成を示すブロック図である。
【図２】制御部２００のＣＰＵ２１０により実行されるプログラムの構成を示す図である。
【図３】メインパーティション４０１のプログラムを通常起動モードにて実行した場合の処理を示すフローチャートである。
【図４】サブパーティション４０２のプログラムを実行した場合の処理を示すフローチャートである。
【図５】メインパーティション４０１のプログラムをアップデートモードにて実行した場合の処理を示すフローチャートである。
【図６】操作部２１９に表示される画面を示す図である。
【図７】プログラムのバージョンの適合性を判定するためのテーブルを示す図である。
【発明を実施するための形態】
【００１２】
以下に、本発明を実施するための形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。また、初めに本実施例に必要となる構成ブロックについて説明し、次に、処理の詳細について説明する。
【００１３】
［第１の実施例］
図１は、情報処理装置１００の構成を示すブロック図である。
【００１４】
図１において、制御部２００は、情報処理装置１００全体を制御するための構成である。制御部２００は、情報処理装置１００を制御するための構成として、以下に示すものを含む。
【００１５】
ＣＰＵ２１０は、ＦｌａｓｈＲＯＭ２１１に記憶された制御部２００用のプログラム（第１プログラム）をＲＡＭ２１２に読出して実行する。
【００１６】
ハードディスクドライブ（ＨＤＤ）２１３は、ネットワークＩ／Ｆ２１８を介してＰＣ２２６から受信した印刷データを記憶する。なお、ＣＰＵ２１０により実行されるプログラムには、後述するプリントアプリケーションプログラムが含まれる。そして、このプリントアプリケーションプログラムにより、ＨＤＤ２１３に記憶された印刷データがプリンタ部２２０によるプリントが可能な画像データに変換される。そして、ＨＤＤ２１３には、プリンタ部２２０によるプリントが可能な画像データも記憶される。また、ＣＰＵ２１０により実行されるプログラムには、後述するスキャンアプリケーションプログラムが含まれる。そして、このスキャンアプリケーションプログラムにより、スキャナ部２２１により画像データが読み取られるとともに、読み取られた画像データがＨＤＤ２１３に転送される。そして、ＨＤＤ２１３には、読み取られた画像データが記憶される。ＳＲＡＭ２２７は、情報処理装置１００が起動する際に、後述するメインパーティションとサブパーティションのいずれのプログラムで起動をするべきかを示す情報が記憶される。なお、メインパーティションにより起動するべきことを示す情報が記憶される場合は、後述する通常起動モードとサブパーティションのプログラムをアップデートするためのアップデートモードのいずれで起動するべきかを示す情報が更に記憶される。
【００１７】
操作部Ｉ／Ｆ２１４は、操作部２１９を介して情報処理装置１００の操作者により入力される指示をＣＰＵ２１０に伝達するためのＩ／Ｆである。また、操作部Ｉ／Ｆ２１４は、操作部２１９に表示される内容を切替えるためのＣＰＵ２１０から受信して操作部２１９に伝達する。
【００１８】
プリンタＩ／Ｆ２１５は、制御部２００とプリンタ部２２０及びフィニッシャ部２２２を接続するためのインターフェースである。ここで、プリンタ部２２０は、プリンタＩ／Ｆ２１５を介してＨＤＤ２１３から転送される画像データに基づいてシート上にプリントを行う。なお、プリンタ部２２０（プリント手段）は、ＣＰＵ２２０ａとＦｌａｓｈＲＯＭ２２０ｂを有する。ＣＰＵ２２０ａは、ＦｌａｓｈＲＯＭ２２０ｂに記憶されたプログラム（第２プログラム）を実行することにより、プリント処理に伴う各種の動作をプリンタ部２２０に実行させる。
【００１９】
また、フィニッシャ部２２２は、プリンタ部２２０によりプリントが行われたシートに対して各種のフィニッシング処理を行うものである。フィニッシング処理とは、例えば、シートに対するステイプル処理、シートへのパンチ処理（穿孔処理）等である。なお、フィニッシャ部２２２は、ＣＰＵ２２２ａとＦｌａｓｈＲＯＭ２２２ｂを有する。ＣＰＵ２２２ａは、ＦｌａｓｈＲＯＭ２２２ｂに記憶されたプログラム（第２プログラム）を実行することにより、フィニッシング処理に伴う各種の動作をフィニッシャ部２２２に実行させる。
【００２０】
スキャナＩ／Ｆ２１６は、制御部２００とスキャナ部２２１を接続するためのインターフェースである。ここで、スキャナ部２２０（画像データを入力する入力手段）は、原稿上の画像をＣＣＤ（ＣｈａｒｇｅＣｏｕｐｌｅｄＤｅｖｉｃｅ）等により構成されるラインセンサを用いて画像データとして読み取るものである。そして、スキャナ部２２０は、読み取った画像データをスキャナＩ／Ｆ２１６を介してＨＤＤ２１３へ転送する。ＨＤＤ２１３へ転送され、記憶された画像データは、前述したプリント部２２０によりプリントすることが可能であり、スキャナ部２２１により読み取った画像データをプリント部２２０によりプリントすることにより、複写（コピー）処理が可能となる。なお、スキャナ部２２１は、ＣＰＵ２２１ａとＦｌａｓｈＲＯＭ２２１ｂを有する。ＣＰＵ２２１ａは、ＦｌａｓｈＲＯＭ２２１ｂに記憶されたプログラム（第２プログラム）を実行することにより、スキャン処理に伴う各種の動作をスキャナ部２２１に実行させる。
【００２１】
ＵＳＢ−ＨｏｓｔＩ／Ｆ２１７は、制御部２００とＵＳＢ−ＦＡＸ部２２３を接続するためのインターフェースである。ここで、ＵＳＢ−ＦＡＸ部２２３は、ＵＳＢ−ＨｏｓｔＩ／Ｆ２１３を介してＨＤＤ２１３から転送される画像データに基づいてＦＡＸ回線１１５を介したＦＡＸ送信を行う。また、ＵＳＢ−ＦＡＸ部２２３は、ＦＡＸ回線１１５を介して受信するデータに基づいて画像データを生成し、ＵＳＢ−ＨｏｓｔＩ／Ｆ２１３を介してＨＤＤ２１３に画像データを転送する。なお、ＨＤＤ２１３に記憶された画像データは前述したようにプリンタ部２２０によりシートへプリントされる。なお、ＵＳＢ−ＦＡＸ部２２３は、ＣＰＵ２２３ａとＦｌａｓｈＲＯＭ２２３ｂを有する。ＣＰＵ２２３ａは、ＦｌａｓｈＲＯＭ２２３ｂに記憶されたプログラム（第２プログラム）を実行することにより、ＦＡＸ通信処理に伴う各種の動作をＵＳＢ−ＦＡＸ部２２３に実行させる。
【００２２】
ネットワークＩ／Ｆ２１８は、制御部２００をＬＡＮ１１０に接続し、ＬＡＮ１１０上のＰＣ２２６やサーバ装置２２５との通信を行う。なお、サーバ装置２２５は、後述する各種のプログラム（情報処理装置１００により実行されるもの）をアップデート（更新）するための更新情報が記憶されており、情報処理装置１００からの要求に応じて、更新情報を情報処理装置１００へ送信する。
【００２３】
次に、制御部２００のＣＰＵ２１０（第１制御手段）により実行されるプログラムの構成について図２を用いて説明する。
【００２４】
なお、図２に示されるプログラムは、図１のＦｌａｓｈＲＯＭ２１１に記憶されているものとする。
【００２５】
ＦｌａｓｈＲＯＭ２１１に記憶されるプログラムは、ＦｌａｓｈＲＯＭ２１１上の２つのパーティションに分けて格納されている。１つはメインパーティション４０１であり、もう１つはサブパーティション４０２である。情報処理装置１００に通常の動作をさせる際には、メインパーティションに格納されたオペレーティングシステムプログラム（以下、ＯＳ）をＣＰＵ２１０に実行させる。その一方で、情報処理装置１００の通常の動作をさせるためのプログラム（後述するメインモジュール４１０）を更新する際には、サブパーティションに格納されたＯＳをＣＰＵ２１０に実行させる。
【００２６】
メインパーティション４０１には、ＯＳ４１１、メインモジュール４１０及びアップデートモジュール４２０の３つのプログラムモジュールが含まれている。ＯＳ４１１は、情報処理装置１００を制御するためのＯＳであり、プリンタ部２２０、スキャナ部２２１、フィニッシャ部２２２、ＵＳＢ−ＦＡＸ部２２３を含む情報処理装置１００の各部の動作を制御するためのドライバプログラムを含むものである。
【００２７】
また、サブパーティション４０２には、ＯＳ４３１及びアップデートモジュール４３０の２つのプログラムモジュールが含まれている。ＯＳ４３１は、情報処理装置１００を制御するためのＯＳであり、プリンタ部２２０、スキャナ部２２１、フィニッシャ部２２２、ＵＳＢ−ＦＡＸ部２２３を含む情報処理装置１００の各部の動作を制御するためのドライバプログラムを含むものである。なお、ＯＳ４３１は、前述したＯＳ４１１と同様のものである。
【００２８】
メインパーティション４０１に、ＯＳ４１１以外に２つのモジュールが格納されているのは、各モジュールを情報処理装置１００の起動モードに応じて選択的に実行するためである。具体的には、情報処理装置１００に通常の動作をさせるための通常起動モードにおいて、ＣＰＵ２１０はＯＳ４１１を実行するとともに、メインモジュール４１０に含まれる各プログラムを実行する。そして、この通常起動モードにおいて、ＣＰＵ２１０は、アップデートモジュール４２０に含まれるプログラムを実行しない。また、サブパーティション４０２に格納されたプログラムを更新するアップデートモードにおいて、ＣＰＵ２１０はＯＳ４１１を実行するとともに、アップデートモジュール４２０に含まれるプログラムを実行する。そして、このアップデートモードにおいて、ＣＰＵ２１０は、メインモジュール４１０に含まれる各プログラムを実行しない。
【００２９】
ここで、メインパーティション４０１のメインモジュール４１０に含まれる各プログラムモジュールについて説明する。なお、各プログラムモジュールは、ＯＳ４１１が起動した後に、ＯＳ４１１により実行されるアプリケーションプログラムである。
【００３０】
メインモジュール４１０に含まれる操作部アプリケーションプログラム４１２は、操作部２１９を介して情報処理装置１００の操作者により入力される指示をＣＰＵ２１０に伝達し、伝達された指示に応じた処理を実行するためのプログラムである。また、スキャンアプリケーションプログラム４１３は、前述したスキャナ部２２１によるスキャン処理を制御するためのプログラムである。また、プリントアプリケーションプログラム４１４は、前述したプリンタ部２２０によるプリント処理を制御するためのプログラムである。ネットワークアプリケーションプログラム４１５は、ＬＡＮ１１０上のＰＣ２２６やサーバ装置２２５との通信を行うためのプログラムである。アップデート準備アプリケーションプログラム４１６は、通常起動モードで動作中の情報処理装置１００が、プログラムのアップデートを実行するための準備動作を実行するためのプログラムである。
【００３１】
アップデートモジュール４２０に含まれるサブパーティションアップデート４２１は、サブパーティション４０２に含まれるアップデートモジュール４３０及びＯＳ４３１をアップデートするためのプログラムである。
【００３２】
次に、サブパーティション４０２のアップデートモジュール４３０に含まれる各プログラムモジュールについて説明する。なお、各プログラムモジュールは、ＯＳ４１１が起動した後に、ＯＳ４１１により実行されるアプリケーションプログラムである。
【００３３】
メインパーティションアップデート４３２は、メインパーティション４０１に含まれるメインモジュール４１０、アップデートモジュール４２０及びＯＳ４１１をアップデートするためのプログラム（第１更新プログラム）である。処理部アップデートプログラム４３３は、ＦｌａｓｈＲＯＭ２２０ｂに含まれるプリント処理を実行するためのプログラム、ＦｌａｓｈＲＯＭ２２１ｂに含まれるスキャン処理を実行するためのプログラムを更新するためのプログラムである。また、処理部アップデートプログラム４３３（第２更新プログラム）は、ＦｌａｓｈＲＯＭ２２２ｂに含まれるフィニッシング処理を実行するためのプログラムである。また、処理部アップデートプログラム４３３は、ＦｌａｓｈＲＯＭ２２３ｂに含まれるＦＡＸ通信処理を実行するためのプログラムを更新するためのプログラムでもある。
【００３４】
次に、第１の実施例におけるプログラムの更新処理について図３〜図５を用いて説明する。
【００３５】
図３は、メインパーティション４０１のプログラムを通常起動モードにて実行した場合の処理を示すフローチャートである。
【００３６】
図４は、サブパーティション４０２のプログラムを実行した場合の処理を示すフローチャートである。
【００３７】
図５は、メインパーティション４０１のプログラムをアップデートモードにて実行した場合の処理を示すフローチャートである。
【００３８】
なお、図３〜５の各ステップにおける処理は、制御部２００のＣＰＵ２１０がＦｌａｓｈＲＯＭ２１１に記憶されたプログラムを実行することにより行われる。
【００３９】
まず、図３を用いて、メインパーティション４０１のプログラムを通常起動モードにて実行した場合の処理を説明する。
【００４０】
ステップＳ３０１で、ＣＰＵ２１０は、情報処理装置１００を通常起動モードにて起動させる。具体的には、ＣＰＵ２１０がＯＳ４１１を起動させ、起動したＯＳ４１１によりメインモジュール４１０に含まれる各プログラムモジュールを実行する。
【００４１】
ステップＳ３０２で、ＣＰＵ２１０は、情報処理装置１００のプログラムを更新するための更新処理の実行指示がなされたかどうかを判定し、なされたと判定された場合はステップＳ３０３へ処理を進める。ここで、更新処理の実行指示とは、例えば、情報処理装置１００の操作者が操作部２１９を介してなされる指示を言う。また、一定期間（例えば、２週間）毎にプログラムを定期的に更新するようにスケジュールを予め設定しておき、定期的に更新処理の実行指示が自動的になされるようにしても良い。
【００４２】
ステップＳ３０３で、ＣＰＵ２１０は、ＯＳ４１１を介してアップデート準備プログラム４１６を実行することにより、ＦｌａｓｈＲＯＭ２１１、ＦｌａｓｈＲＯＭ２２０ｂ〜２２３ｂに記憶された各プログラムのうち、更新候補となるプログラムを特定する。例えば、各プログラムを指定するための表示画面を操作部２１９に表示させ、操作部２１９を介して操作者により指示されたプログラムを更新候補として特定する。なお、操作者による指示に基づくことなく、更新候補となり得る全てのプログラムを更新候補として特定しても良い。
【００４３】
ステップＳ３０４で、ＣＰＵ２１０は、アップデート準備プログラム４１６とネットワークアプリケーションプログラム４１５を実行し、情報処理装置１００を特定するための機種ＩＤ情報とバージョン情報の取得要求をサーバ装置に送信する。そして、情報処理装置１００は、サーバ装置２２５により管理されるバージョン情報を取得する。ここでバージョン情報とは、前述したメインモジュール４１０に含まれる各プログラムモジュールのバージョンを示す情報である。なお、サーバ装置２２５は、情報処理装置１００から機種ＩＤとバージョン情報の取得要求を受信した場合、機種ＩＤに対応するバージョン情報を特定し、特定したバージョン情報を情報処理装置１００へ送信する。
【００４４】
ステップＳ３０５で、ＣＰＵ２１０は、アップデート準備プログラム４１６を実行し、情報処理装置１００のバージョン情報を取得する。ここで、情報処理装置１００のバージョン情報とは、ＦｌａｓｈＲＯＭ２１１、ＦｌａｓｈＲＯＭ２２０ｂ〜２２３ｂに記憶された各プログラムのバージョンを示す情報をいう。
【００４５】
ステップＳ３０６で、ＣＰＵ２１０は、アップデート準備プログラム４１６を実行し、更新対象のプログラムを特定する。具体的には、ステップＳ３０３で特定された更新候補となるプログラムの中から、サーバ装置２２５と情報処理装置１００とでバージョン情報が異なるものを特定する。これにより、情報処理装置１００よりもバージョンの新しいプログラムがサーバ装置２２５からダウンロードすることが可能であることがわかる。
【００４６】
ステップＳ３０７で、ＣＰＵ２１０は、ステップＳ３０５で特定された更新対象のプログラム（更新情報）をサーバ装置２２５から取得する。具体的に、情報処理装置１００は、ステップＳ３０６で特定された更新対象のプログラムを示すプログラム特定情報をサーバ装置２２５へ送信する。サーバ装置２２５は、情報処理装置１００からプログラム特定情報を受信した場合、プログラム特定情報に対応するプログラムを情報処理装置１００へ送信する。なお、サーバ装置２２５から受信した更新対象のプログラムは、ＦｌａｓｈＲＯＭ２１１のメインパーティション４０１に記憶させるものとする。
【００４７】
ステップＳ３０８で、ＣＰＵ２１０は、アップデート準備プログラム４１６を実行し、情報処理装置１００のプログラムを更新するために、次回の起動でサブパーティションのプログラムを起動させることを示すフラグをＳＲＡＭ２２７へ記憶させる。
【００４８】
そして、ステップＳ３０８の後に、ＣＰＵ２１０は、情報処理装置１００を再起動させるために情報処理装置１００の各部への電力供給を遮断したオフ状態へ移行させる。
【００４９】
次に、図４を用いて、サブパーティション４０２のプログラムを実行した場合の処理（情報処理装置１００のプログラムを更新する処理）を説明する。
【００５０】
図４の各処理は、図３の処理が終了して情報処理装置１００がオフ状態に移行した後に、情報処理装置１００の電源が自動的にオン状態にされることにより開始する。
【００５１】
ステップＳ４０１で、ＣＰＵ２１０は、ＳＲＡＭ２２７にサブパーティションのプログラムを起動させることを示すフラグが記憶されていることを確認し、サブパーティションのプログラムを起動させる。
【００５２】
ステップＳ４０２で、ＣＰＵ２１０は、メインパーティション４０１に記憶されたプログラム（退避情報）を退避させる退避処理を実行する。具体的には、メインパーティション４０１に記憶された全てのプログラムをサブパーティション４０２へ複写することで退避させる。なお、サブパーティション４０２に十分な空き容量が無い場合には、ＨＤＤ２１３に退避させるようにしてもよい。このような退避処理を実行させるのは、メインパーティション４０１のプログラムの更新処理中にエラーが発生した場合に、更新前の状態に復元できるようにするためである。
【００５３】
ステップＳ４０３で、ＣＰＵ２１０は、メインパーティションアップデートプログラム４３２を実行することにより、メインパーティション４０１の各プログラムの更新処理を実行する。
【００５４】
ステップＳ４０４で、ＣＰＵ２１０は、メインパーティション４０１の各プログラムの更新処理が成功したかどうかを判定し、成功したと判定した場合はステップＳ４０５へ処理を進める。一方、更新処理が成功せずにエラーとなる場合は、ステップＳ４０８へ処理を進める。なお、更新処理が成功せずにエラーとなる場合は、例えば、更新処理を開始してからの経過時間が一定時間を経過しても更新処理が終了しない場合である。
【００５５】
ステップＳ４０５で、ＣＰＵ２１０は、処理部アップデートプログラム４３３を実行する。そして、ＣＰＵ２１０は、各処理部（プリンタ部２２０、スキャナ部２２１、ＵＳＢ−ＦＡＸ部２２３、フィニッシャ部２２２）に記憶されたプログラムを退避させる退避処理を実行する。具体的には、各処理部に記憶された全てのプログラム（退避情報）をサブパーティション４０２へ複写することで退避させる。なお、サブパーティション４０２に十分な空き容量が無い場合には、ＨＤＤ２１３に退避させるようにしてもよい。
【００５６】
ステップＳ４０６で、ＣＰＵ２１０は、処理部アップデートプログラム４３３を実行することにより、各処理部（プリンタ部２２０、スキャナ部２２１、ＵＳＢ−ＦＡＸ部２２３、フィニッシャ部２２２）が実行するプログラムの更新処理を実行する。
【００５７】
ステップＳ４０７で、ＣＰＵ２１０は、各処理部のプログラムの更新処理が成功したかどうかを判定し、成功したと判定した場合はステップＳ４０７へ処理を進める。一方、更新処理が成功せずにエラーとなる場合は、ステップＳ４０９へ処理を進める。なお、更新処理が成功せずにエラーとなる場合は、例えば、更新処理を開始してからの経過時間が一定時間を経過しても更新処理が終了しない場合である。また、第１の実施例では、処理部として、プリンタ部２２０、スキャナ部２２１、ＵＳＢ−ＦＡＸ部２２３、フィニッシャ部２２２が存在するが、いずれか処理部の更新処理がエラーとなる場合に、ステップＳ４０７の判定をＮＯとする。
【００５８】
ステップＳ４０８で、ＣＰＵ２１０は、サブパーティションのプログラムを更新するために、次回の起動でメインパーティションのプログラムを起動させ、かつアップデートモードで起動させることを指定するフラグをＳＲＡＭ２２７へ記憶させる。
【００５９】
そして、ステップＳ４０８の後に、ＣＰＵ２１０は、情報処理装置１００を再起動させるために情報処理装置１００の各部への電力供給を遮断した停止状態へ移行させる。
【００６０】
ステップＳ４０９で、ＣＰＵ２１０は、各処理部のプログラム（複数のサブプログラム）をサブパーティション４０２へステップＳ４０５で退避済みのプログラムで復元する。具体的には、サブパーティション４０２へ退避済みのプログラムを各処理部のＦｌａｓｈＲＯＭ（２２０ｂ〜２２３ｂ）へ複写することで復元する。このように復元するのは、ステップＳ４０７でプログラム（第２プログラム）の更新処理が成功せずにエラーとなったと判定されたからである。
【００６１】
ステップＳ４１０で、ＣＰＵ２１０は、メインパーティション４０１のプログラムをサブパーティション４０２へステップＳ４０２で退避済みのプログラムで復元する。具体的には、サブパーティション４０２へ退避済みのプログラムをメインパーティション４０１へ複写することで復元する。このように復元するのは、ステップＳ４０４又はステップＳ４０７でプログラムの更新処理が成功せずにエラーとなったと判定されたからである。
【００６２】
なお、メインパーティション４０１のプログラムの復元は、ステップＳ４０４にてメインパーティション４０１のプログラムの更新処理が成功したと判定された場合であってもステップＳ４０７でＮＯと判定された場合に実行される。ステップＳ４０７でＮＯと判定されるのは、各処理部のプログラムの更新処理が成功せずにエラーとなった場合である。このように、メインパーティション４０１のプログラムの更新処理が成功した場合であっても、メインパーティション４０１のプログラムを更新前のプログラムに復元しているのは、次の理由による。それは、メインパーティション４０１のプログラムと各処理部のプログラムのバージョンの組み合わせを適切なものとするためである。例えば、メインパーティション４０１のプログラムがバージョンアップされる一方で、各処理部のプログラムがバージョンアップされない場合、メインパーティション４０１のプログラムと各処理部のプログラムのバージョンが適合しないものとなる。この場合、制御部２００と各処理部のデータの受け渡しや、制御部２００から各処理部への指示とその応答が適切になされない。第１の実施例では、このようなバージョンの組み合わせの不適合が発生しないように、メインパーティション４０１のプログラムの更新処理が成功した場合であっても、メインパーティション４０１のプログラムを更新前のプログラムに復元する。
【００６３】
次に、図５を用いて、メインパーティション４０１のサブパーティションアップデートプログラムを実行した場合の処理を説明する。
【００６４】
図５の各処理は、図４の処理が終了して情報処理装置１００がオフ状態に移行した後に、情報処理装置１００の電源が自動的にオン状態にされることにより開始する。
【００６５】
ステップＳ５０１で、ＣＰＵ２１０は、ＳＲＡＭ２２７にメインパーティションのプログラムを起動させ、かつアップデートモードで起動させることを指定するフラグが記憶されていることを確認し、情報処理装置１００をアップデートモードにて起動させる。具体的には、ＣＰＵ２１０がＯＳ４１１を起動させ、起動したＯＳ４１１によりサブパーティションアップデートプログラム４２１を起動させる。
【００６６】
ステップＳ５０２で、ＣＰＵ２１０は、サブパーティション４０２に記憶されたプログラムを退避させる退避処理を実行する。具体的には、サブパーティション４０２に記憶された全てのプログラムをメインパーティション４０１へ複写することで退避させる。なお、メインパーティション４０１に十分な空き容量が無い場合には、ＨＤＤ２１３に退避させるようにしてもよい。このような退避処理を実行させるのは、サブパーティション４０２のプログラムの更新処理中にエラーが発生した場合に、更新前の状態に復元できるようにするためである。
【００６７】
ステップＳ５０３で、ＣＰＵ２１０は、サブパーティションアップデートプログラム４２１を実行することにより、サブパーティション４０２の各プログラムの更新処理を実行する。
【００６８】
ステップＳ５０４で、ＣＰＵ２１０は、サブパーティション４０２の各プログラムの更新処理が成功したかどうかを判定し、成功したと判定した場合はステップＳ５０５へ処理を進める。一方、更新処理が成功せずにエラーとなる場合は、ステップＳ５０６へ処理を進める。なお、更新処理が成功せずにエラーとなる場合は、例えば、更新処理を開始してからの経過時間が一定時間を経過しても更新処理が終了しない場合である。
【００６９】
ステップＳ５０５で、ＣＰＵ２１０は、次回の起動でメインパーティションのプログラムを起動させ、かつ通常起動モードで起動させることを指定するフラグをＳＲＡＭ２２７へ記憶させる。
【００７０】
そして、ステップＳ５０５の後に、ＣＰＵ２１０は、情報処理装置１００を再起動させるために情報処理装置１００の各部への電力供給を遮断した停止状態へ移行させる。
【００７１】
ステップＳ５０６で、ＣＰＵ２１０は、ステップＳ５０４でプログラムの更新処理が成功せずにエラーとなったので、各処理部のプログラムをメインパーティション４０１へステップＳ５０２で退避済みのプログラムで復元する。具体的には、メインパーティション４０１へ退避済みのプログラムをサブパーティション４０２へ複写することで復元する。
【００７２】
ここで、図６を用いて、操作部２１９に表示される画面について説明する。
【００７３】
図６（ａ）〜図６（ｃ）は、図４のフローチャートによる処理（メインパーティションのプログラムを更新する処理）の実行中に、操作部２１９に表示される画面である。また、図６（ｄ）は、図５のフローチャートによる処理（サブパーティションのプログラムを更新する処理）の実行中に、操作部２１９に表示される画面である。
【００７４】
図６（ａ）は、図４のステップＳ４０１〜４０２において表示される画面を示す。図４のフローチャートにおける処理は、図３の処理にて更新対象として特定されたプログラムを更新するために行われる。そして、図６（ａ）に示すように、図３のステップＳ３０６にて更新対象として特定されたプログラムのバージョンを表示する。図６（ａ）では、更新対象として特定されたプログラムがメインパーティションプログラム、処理部プログラム及びサブパーティションプログラムであり、それぞれのバージョンが１．０であることが示されている。
【００７５】
図６（ｂ）は、図４のステップＳ４０５において表示される画面を示す。Ｓ４０５はＳ４０４にて更新処理が成功した場合に実行される処理であり、メインパーティションプログラムのバージョンが図６（ａ）の「１．０」から「２．０」に更新されている。
【００７６】
図６（ｃ）は、図４のステップＳ４０８において表示される画面を示す。Ｓ４０８はＳ４０７にて更新処理が成功した場合に実行される処理であり、処理部プログラムのバージョンが図６（ａ）の「１．０」から「２．０」に更新されている。
【００７７】
図６（ｄ）は、図５のステップＳ５０５において表示される画面を示す。Ｓ５０５はＳ５０４にて更新処理が成功した場合に実行される処理であり、サブパーティションのプログラムのバージョンが図６（ａ）の「１．０」から「２．０」に更新されている。
【００７８】
なお、図４のステップＳ４１０によりメインパーティションのプログラムの復元処理が行われると、図６（ｂ）の表示画面から図６（ａ）の表示画面に切り替わる。つまり、メインパーティションのプログラムが復元され、プログラムのバージョンが「２．０」から「１．０」へと変更されたことが認識可能となる。
【００７９】
以上説明したように、第１の実施例によれば、複数のプログラムの更新中にエラーが発生した場合に、各プログラムの更新状況に応じて適切に各プログラムの復元を行う情報処理装置及びその制御方法を提供することができる。より具体的には、メインパーティションのプログラムの更新が完了した後の処理部プログラムの更新処理中にエラーが発生した場合、更新処理中の処理部プログラムを更新前のプログラムに復元する。また、更新が完了したメインパーティションのプログラムを更新前のプログラムに書き戻す。これにより、各処理部のプログラムがバージョンアップされない場合、メインパーティション４０１のプログラムと各処理部のプログラムのバージョンの組み合わせが適切なものとならないという不具合を防止する。
【００８０】
［第２の実施例］
次に、本発明の第２の実施例について説明する。第２の実施例は、第１の実施例の変形例であり、以下で説明する部分を除いては、第１の実施例と同様であるものとする。
【００８１】
第１の実施例においては、図４のステップＳ４０７で、複数の処理部のプログラムのうち、少なくともいずれかの処理部のプログラムの更新処理がエラーとなる場合に、ステップＳ４０７の判定をＮＯとして、全ての処理部のプログラムを復元するものであった。
【００８２】
これに対して、第２の実施例では、複数の処理部のプログラムのうち、復元されたメインパーティションのプログラムとの適合性のあるプログラムについては、更新されたままとし復元をしないようにするものである。
【００８３】
ここで、図７を用いて、メインパーティションのプログラムのバージョンと、各処理部のプログラムのバージョンの適合性を判定するためのテーブルについて説明する。なお、図７に示すテーブルはメインパーティション４０１に記憶されており、ＣＰＵ２１０は、これを参照することにより、以下に示す判定を行うものとする。
【００８４】
図７は、メインパーティションプログラムのバージョン「１．０」に対して、プリンタ部２２０のプログラムのバージョン「１．０」と「２．０」が適合することを示す。また、メインパーティションプログラムのバージョン「１．０」に対して、スキャナ部２２１のプログラムのバージョン「１．０」が適合することを示す。また、メインパーティションプログラムのバージョン「１．０」に対して、ＵＳＢ−ＦＡＸ部２２２のプログラムのバージョン「１．０」が適合することを示す。また、メインパーティションプログラムのバージョン「１．０」に対して、フィニッシャ部２２３のプログラムのバージョン「１．０」と「２．０」が適合することを示す。
【００８５】
また、図７は、メインパーティションプログラムのバージョン「２．０」に対して、プリンタ部２２０のプログラムのバージョン「１．０」と「２．０」が適合することを示す。また、メインパーティションプログラムのバージョン「１．０」に対して、スキャナ部２２１のプログラムのバージョン「２．０」が適合することを示す。また、メインパーティションプログラムのバージョン「１．０」に対して、ＵＳＢ−ＦＡＸ部２２２のプログラムのバージョン「２．０」が適合することを示す。また、メインパーティションプログラムのバージョン「１．０」に対して、フィニッシャ部２２３のプログラムのバージョン「１．０」と「２．０」が適合することを示す。
【００８６】
そして、第２の実施例においては、図４のフローチャートにおけるステップＳ４０９の処理を実行するにあたって、以下に説明するように処理を実行する。なお、図４のＳ４０９の処理を実行するにあたって、ステップＳ４０４ではメインパーティションプログラムのバージョンが「１．０」から「２．０」に更新されているものとする。
【００８７】
図４のステップＳ４０９で、ＣＰＵ２１０は、各処理部のプログラムのうち、いずれのプログラムの更新処理が完了しているかどうかを判定する。例えば、プリンタ部、スキャナ部及びフィニッシャ部の更新処理が完了しており、ＵＳＢ−ＦＡＸ部の更新処理が完了していない場合は、プリンタ部、スキャナ部及びフィニッシャ部の更新処理が完了していると判定する。そして、プリンタ部、スキャナ部及びフィニッシャ部の更新処理後のプログラムのバージョン（いずれも「２．０」）を確認し、メインパーティションのバージョン「１．０」との適合性を判定する。図７の例では、プリンタ部のプログラムのバージョンは適合性があり、スキャナ部及びフィニッシャ部のプログラムのバージョンには適合性がないと判定する。なお、メインパーティションのバージョン「１．０」との適合性を判定しているのは、ステップＳ４１０によりメインパーティションプログラムのバージョンが「２．０」から「１．０」に復元されるからである。
【００８８】
そして、ＣＰＵ２１０は、適合性がないと判定されたスキャナ部及びフィニッシャ部のプログラムをサブパーティション４０２へステップＳ４０５で退避済みのスキャナ部及びフィニッシャ部のプログラムで復元する。具体的には、サブパーティション４０２へ退避済みのスキャナ部のプログラムをスキャナ部のＦｌａｓｈＲＯＭ（２２１ｂ）へ複写する。そして、サブパーティション４０２へ退避済みのフィニッシャ部のプログラムをフィニッシャ部のＦｌａｓｈＲＯＭ（２２３ｂ）へ複写することで復元する。
【００８９】
以上説明したように、第２の実施例によれば、複数のプログラムの更新中にエラーが発生した場合に、各プログラムの更新状況に応じて適切に各プログラムの復元を行う情報処理装置及びその制御方法を提供することができる。より具体的には、メインパーティションのプログラムの更新が完了した後の処理部プログラムの更新処理中にエラーが発生した場合、更新処理中の処理部プログラムを更新前のプログラムに復元する。この際、更新処理が完了した処理部プログラムのうち、復元後のメインパーティションのプログラムのバージョンとの適合性があるものについては、復元を行わないようにする。従って、複数の処理部のプログラムのうち、復元後のメインパーティションのプログラムのバージョンとの適合性がないものだけを適切に復元させることができる。適合性がないものだけを復元させることにより、不要な復元処理をさせないようにすることができる。
【００９０】
［他の実施例］
以上の説明においては、更新情報は、ネットワークＩ／Ｆ２１８を介してサーバ装置２２５から受信するものとして説明したが、他の態様であってもよい。例えば、ＵＳＢ−ＨｏｓｔＩ／Ｆ２１７を介してＵＳＢメモリ（外部メモリ）が接続されるようにし、ＵＳＢメモリに記憶された更新情報をＵＳＢ−ＨｏｓｔＩ／Ｆ２１７を介して受信するような態様であっても良い。
【００９１】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
0005984326.tif 000002
【図２】
0005984326.tif 000003
【図３】
0005984326.tif 000004
【図４】
0005984326.tif 000005
【図５】
0005984326.tif 000006
【図６】
0005984326.tif 000007
【図７】
0005984326.tif 000008