(57)【要約】      （修正有）【課題】再起動や特定の起動モードの動作を極力行わずにプログラム更新を行うことにより、プログラムの更新にかかる処理時間を短縮することができる情報処理装置を提供する。【解決手段】情報処理装置では、メインパーティション及びサブパーティションにおける各プログラムのバージョンから更新対象のプログラムを特定し、特定された更新対象のプログラムを更新するための更新データを取得する。そして、メインパーティションに十分な空き容量が存在する場合は、システムの再起動後に有効となる更新データの展開を行い（ステップＳ３１２）、次回起動時に旧プログラムを削除する（ステップＳ３１４）。【選択図】図３
2014238647.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムを更新する機能を備える情報処理装置であって、
前記複数のプログラムのうち前記情報処理装置を動作させるための第１のプログラム群が記憶された第１の記憶手段と、
前記複数のプログラムのうち前記第１のプログラム群を更新するための第２のプログラム群が記憶された第２の記憶手段と、
前記第１のプログラム群及び前記第２のプログラム群における各プログラムのバージョンから更新対象のプログラムを特定する特定手段と、
前記特定手段により特定された更新対象のプログラムを更新するための更新データを取得する第１の取得手段と、
前記第１の取得手段により取得した更新データのうち、前記第１のプログラム群の更新データを前記第１の記憶手段に展開するために必要な容量を取得する第２の取得手段と、
前記第１の記憶手段の空き容量を取得する第３の取得手段と、
前記第１の取得手段により取得した更新データのうち、前記第１のプログラム群の更新データを前記第１の記憶手段に展開する処理を行う展開手段と、
前記２の取得手段により取得した必要な容量が、前記第３の取得手段により取得した空き容量よりも小さいかどうか判定し、小さいと判定した場合は、前記展開手段による処理を行わせる第１の更新手段とを備えることを特徴とする情報処理装置。
【請求項２】
前記展開手段による処理が行われた後、前記情報処理装置の起動時に、前記第１のプログラム群のうち、前記展開手段により不要となったプログラムを削除する削除手段をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記２の取得手段により取得した必要な容量が、前記第３の取得手段により取得した空き容量と同じまたはより大きいと判定した場合に、前記第２のプログラム群を制御し、前記第１の取得手段により取得した更新データを用いて前記第１のプログラム群を更新する第２の更新手段をさらに備えることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第２のプログラム群が更新対象かどうか判定する判定手段と、
前記判定手段により前記第２のプログラム群が更新対象であると判定された場合は、前記第１の取得手段により取得した更新データを用いて前記第２のプログラム群を更新する第２の更新手段とをさらに備えることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第１のプログラム群の更新状態を示す第１の更新フラグ及び前記第２のプログラム群の更新状態を示す第２の更新フラグを記憶する第３の記憶手段と、
ダウンした前記情報処理装置の起動時に前記第２の更新フラグがＯＮの場合、前記第１のプログラム群で前記情報処理装置を起動し、前記第２のプログラム群の更新を継続する第１の継続手段とをさらに備えることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
ダウンした前記情報処理装置の起動時に前記第２の更新フラグがＯＦＦで且つ前記第１の更新フラグがＯＮの場合には、前記第２のプログラム群で前記情報処理装置を起動し、前記第１のプログラム群の更新を継続する第２の継続手段をさらに備えることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
複数のプログラムのうち情報処理装置を動作させるための第１のプログラム群が記憶された第１の記憶手段と、前記複数のプログラムのうち前記第１のプログラム群を更新するための第２のプログラム群が記憶された第２の記憶手段とを備える情報処理装置のプログラム更新方法であって、
前記第１のプログラム群及び前記第２のプログラム群における各プログラムのバージョンから更新対象のプログラムを特定する特定工程と、
前記特定工程にて特定された更新対象のプログラムを更新するための更新データを取得する第１の取得工程と、
前記第１の取得工程にて取得した更新データのうち、前記第１のプログラム群の更新データを前記第１の記憶手段に展開するために必要な容量を取得する第２の取得工程と、
前記第１の記憶手段の空き容量を取得する第３の取得工程と、
前記第１の取得工程にて取得した更新データのうち、前記第１のプログラム群の更新データを前記第１の記憶手段に展開する処理を行う展開工程と、
前記２の取得工程にて取得した必要な容量が、前記第３の取得工程にて取得した空き容量よりも小さいかどうか判定し、小さいと判定した場合は、前記展開工程による処理を行わせる更新工程とを備えることを特徴とするプログラム更新方法。
【請求項８】
請求項７に記載の更新方法を情報処理装置に実行させるためのコンピュータに読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びそのプログラム更新方法、並びにプログラムに関し、特に、情報処理装置におけるプログラムの更新技術に関する。
【背景技術】
【０００２】
従来、複合機のように複数のデバイスが連携して動作するような機器には、ファームウェア（プログラム）更新の際に、一度システムをシャットダウンさせる。そして、同システムをファームウェア更新のために別の起動モードで起動し、同システムや複数デバイスのファームウェア更新を行うものがある。
【０００３】
一般的な複合機におけるファームウェアの更新方法には、次のような方法がある。すなわち、複合機としての動作を行うメインプログラムと、メインプログラムの更新を行うためサブプログラムを有し、メインプログラムを動作させて更新データをサーバ装置等から取得する。そして、システムをリブートしたのち、サブプログラムを動作させてメインプログラムを更新する。更新が完了すると、再度システムをリブートさせて、更新されたメインプログラムを動作させるものである（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−０１８５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の通り、従来の複合機では、ファームウェアを更新するために起動モードの切り替えが発生し、少なくとも２回のリブートが発生している。
【０００６】
本発明は、上記問題に鑑みて成されたものであり、システム再起動や特定の起動モードの動作を極力行わずにファームウェア更新を行うことができ、ファームウェアの更新にかかる処理時間を短縮するプログラム更新技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の情報処理装置は、複数のプログラムを更新する機能を備える情報処理装置であって、前記複数のプログラムのうち前記情報処理装置を動作させるための第１のプログラム群が記憶された第１の記憶手段と、前記複数のプログラムのうち前記第１のプログラム群を更新するための第２のプログラム群が記憶された第２の記憶手段と、前記第１のプログラム群及び前記第２のプログラム群における各プログラムのバージョンから更新対象のプログラムを特定する特定手段と、前記特定手段により特定された更新対象のプログラムを更新するための更新データを取得する第１の取得手段と、前記第１の取得手段により取得した更新データのうち、前記第１のプログラム群の更新データを前記第１の記憶手段に展開するために必要な容量を取得する第２の取得手段と、前記第１の記憶手段の空き容量を取得する第３の取得手段と、前記第１の取得手段により取得した更新データのうち、前記第１のプログラム群の更新データを前記第１の記憶手段に展開する処理を行う展開手段と、前記２の取得手段により取得した必要な容量が、前記第３の取得手段により取得した空き容量よりも小さいかどうか判定し、小さいと判定した場合は、前記展開手段による処理を行わせる第１の更新手段とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、プログラムの更新に対し、第１の記憶手段に十分な空き容量が存在する場合は、システムの再起動後に有効となる更新データの展開を行い、次回起動時に旧プログラムを削除する。一方、第１の記憶手段に十分な空き容量が存在しない場合は、第２の記憶手段の第２のプログラム群で起動し、第１のプログラム群の更新を行う。これにより、システム再起動や特定の起動モードの動作を極力行わずにプログラム更新を行うことができ、プログラムの更新にかかる処理時間を短縮できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。
【図２】情報処理装置のプログラム構成の一例を示すブロック図である。
【図３】第１の実施形態における情報処理装置のプログラムの更新処理の一例を示すフローチャートである。
【図４】情報処理装置における更新対象のプログラムおよび更新に必要な更新データの一覧を示す図であり、（ａ）更新前の組み合わせ、（ｂ）更新対象の組み合わせ、（ｃ）削除すべきモジュールの一覧、（ｄ）更新対象の組み合わせである。
【図５】本発明の第３の実施形態における情報処理装置の起動時に実行されるプログラム更新処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１１】
［第１の実施形態］
図１は、本発明の第１の実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。
【００１２】
図１において、情報処理装置１００は、印刷機能やコピー機能、通信機能を備えた複合機であり、ＬＡＮ１１０に接続されている。ＬＡＮ１１０には、サーバ装置２２４と、パーソナルコンピュータ等のＰＣ２２５が接続されている。
【００１３】
情報処理装置１００において、制御部２００は、情報処理装置全体を制御するためのコントローラユニットであり、以下の各部を備える。
【００１４】
ＣＰＵ２１０は、ＦｌａｓｈＲＯＭ２１１に記憶された制御用のプログラム（第１のプログラム）をＲＡＭ２１２に読み出して実行する。ハードディスクドライブ（ＨＤＤ）２１３は、ネットワークＩ／Ｆ２１８を介してＰＣ２２５から受信した印刷データを記憶する。
【００１５】
ＣＰＵ２１０により実行されるプログラムには、後述するプリント用アプリケーションプログラムが含まれる。このプリント用アプリケーションプログラムが実行されると、ＨＤＤ２１３に記憶された印刷データが、プリンタ部２２０によるプリントが可能な画像データに変換される。ＨＤＤ２１３には、プリンタ部２２０によるプリントが可能な画像データも記憶される。
【００１６】
また、ＣＰＵ２１０により実行されるプログラムには、後述するスキャン用アプリケーションプログラムが含まれる。このスキャン用アプリケーションプログラムが実行されると、スキャナ部２２１により画像データが読み取られると共に、読み取られた画像データがＨＤＤ２１３に転送される。
【００１７】
操作部Ｉ／Ｆ２１４は、情報処理装置１００の操作者が操作部２１９を介して入力する指示をＣＰＵ２１０に伝達するためのＩ／Ｆである。また、操作部Ｉ／Ｆ２１４は、操作部２１９に表示される内容を切替えるための指示をＣＰＵ２１０から受信して操作部２１９に伝達する。
【００１８】
プリンタＩ／Ｆ２１５は、制御部２００とプリンタ部２２０とを接続するためのインターフェースである。プリンタ部２２０は、プリンタＩ／Ｆ２１５を介してＨＤＤ２１３から転送される画像データに基づいてシート上にプリントを行う。プリンタ部２２０は、ＣＰＵ２２０ａとＦｌａｓｈＲＯＭ２２０ｂを有する。ＣＰＵ２２０ａは、ＦｌａｓｈＲＯＭ２２０ｂに記憶されたプログラム（第２のプログラム）を実行することにより、プリント処理に伴う各種の動作をプリンタ部２２０に実行させる。
【００１９】
スキャナＩ／Ｆ２１６は、制御部２００とスキャナ部２２１とを接続するためのインターフェースである。スキャナ部２２１は、原稿上の画像をＣＣＤ（Charge Coupled Device）等により構成されるラインセンサを用いて画像データとして読み取るものである。そして、スキャナ部２２１は、読み取った画像データをスキャナＩ／Ｆ２１６を介してＨＤＤ２１３へ転送する。
【００２０】
ＨＤＤ２１３へ転送され、記憶された画像データは、前述したプリンタ部２２０によりプリントすることが可能であり、スキャナ部２２１により読み取った画像データをプリンタ部２２０によりプリントすることにより、複写（コピー）処理が可能となる。
【００２１】
ＵＳＢ−ＨｏｓｔＩ／Ｆ２１７は、制御部２００と外部ＵＳＢデバイス２２３とを接続するためのインターフェースである。外部ＵＳＢデバイス２２３には、例えばＵＳＢメモリやＵＳＢキーボードなどが挙げられる。ＵＳＢメモリにプログラム（更新情報）を格納し、ダウンロードしてＦｌａｓｈＲＯＭ２１１のファイル格納領域に置くケースもある。
【００２２】
ネットワークＩ／Ｆ２１８は、制御部２００をＬＡＮ１１０に接続し、ＰＣ２２５やサーバ装置２２４との通信を行う。
【００２３】
サーバ装置２２４は、後述する各種のプログラム（情報処理装置１００により実行されるもの）をアップデート（更新）するための更新情報が記憶されており、情報処理装置１００からの要求に応じて、該更新情報を情報処理装置１００へ送信する。
【００２４】
ＳＲＡＭ２２７は、後述するメインパーティションおよびサブパーティションの各プログラムの更新状態が記憶される。
【００２５】
次に、制御部２００のＣＰＵ２１０により実行されるプログラムの構成について図２を用いて説明する。
【００２６】
図２は、制御部２００のＣＰＵ２１０により実行されるプログラムの一例を示すブロック図である。なお、図２に示すプログラムは、図１におけるＦｌａｓｈＲＯＭ２１１に記憶されているものとする。
【００２７】
ＦｌａｓｈＲＯＭ２１１に記憶されるプログラムは、ＦｌａｓｈＲＯＭ２１１上の２つのパーティションに分けて格納されている。１つはメインパーティション４０１（第１の記憶手段）であり、もう１つはサブパーティション４０２（第２の記憶手段）である。情報処理装置１００に通常の動作をさせる際には、メインパーティション４０１に格納されたオペレーティングシステム（ＯＳ）４１１をＣＰＵ２１０に実行させる。その一方で、情報処理装置１００に通常の動作をさせるためのプログラム（メインパーティション４０１に記憶されるプログラム）を更新する際には、サブパーティション４０２に格納されたＯＳ４３１をＣＰＵ２１０に実行させる。
【００２８】
メインパーティション４０１には、ＯＳ４１１、メインモジュール４１０、及びアップデートモジュール４２０の３つのプログラムモジュール（第１のプログラム群）が含まれている。ＯＳ４１１は、情報処理装置１００を制御するためのＯＳであり、プリンタ部２２０を含む情報処理装置１００の各部の動作を制御するためのドライバプログラムを含むものである。
【００２９】
サブパーティション４０２には、ＯＳ４３１とアップデートモジュール４３０の２つのプログラムモジュール（第２のプログラム群）が含まれている。ＯＳ４３１は、情報処理装置１００を制御するためのＯＳであり、前述したＯＳ４１１と同様のものである。
【００３０】
ここで、メインパーティション４０１のメインモジュール４１０に含まれる各プログラムモジュールについて説明する。なお、各プログラムモジュールは、ＯＳ４１１が起動した後に、ＯＳ４１１により実行されるアプリケーションプログラムである。
【００３１】
操作部プログラム４１２は、情報処理装置１００の操作者により入力される指示を、操作部２１９を介してＣＰＵ２１０に伝達し、伝達された指示に応じた処理を実行するためのプログラムである。スキャンプログラム４１３は、スキャナ部２２１によるスキャン処理を制御するためのプログラムである。プリントプログラム４１４は、プリンタ部２２０によるプリント処理を制御するためのプログラムである。ネットワークプログラム４１５は、ＬＡＮ１１０上のＰＣ２２５やサーバ装置２２４との通信を行うためのプログラムである。
【００３２】
アップデートモジュール４２０に含まれるアップデートプログラム４２１は、メインパーティション４０１に含まれる各プログラムおよびサブパーティション４０２に含まれる各プログラムを更新するためのプログラムである。アップデートモジュール４２０に含まれるメインモジュール起動準備プログラム４２２は、ＣＰＵ２１０がメインモジュール４１０を実行するために必要な初期化処理等を行うためのプログラムである。ここでは、後述するメインモジュールの更新後の起動時（図３のステップＳ３１５）に、不要となった更新前のプログラムデータを削除するためのプログラムである。
【００３３】
次に、サブパーティション４０２のアップデートモジュール４３０に含まれる各プログラムモジュールについて説明する。なお、各プログラムモジュールは、ＯＳ４３１が起動した後に、当該ＯＳ４３１により実行されるアプリケーションプログラムである。
【００３４】
メインパーティションアップデートプログラム４３２は、メインパーティション４０１に含まれる各プログラムを更新するためのプログラムである。処理部アップデートプログラム４３３は、処理部プログラム（ここではＦｌａｓｈＲＯＭ２２０ｂに含まれるプリント処理を実行するためのプログラム）を更新するためのプログラムである。
【００３５】
なお、上述した各種モジュールは、本実施形態と異なるモジュール群で構成されていてもよい。
【００３６】
次に、情報処理装置１００における複数のプログラムの更新処理について図３及び図４（ａ）、図４（ｂ）、図４（ｃ）を用いて説明する。なお、第１の実施形態では、図３のステップＳ３１１にて、更新プログラムの展開に必要な容量がメインパーティション４０１の空き容量より小さいと判定された場合を説明する。
【００３７】
図３は、第１の実施形態における情報処理装置１００のプログラムの更新処理の一例を示すフローチャートである。なお、図３の各ステップにおける処理は、制御部２００のＣＰＵ２１０がＦｌａｓｈＲＯＭ２１１に記憶されたプログラムを実行することにより行われる。
【００３８】
ステップＳ３０１では、ＣＰＵ２１０は、情報処理装置１００のプログラムを更新するための更新処理の実行指示がなされたかどうかを判定し、なされたと判定された場合はステップＳ３０２へ処理を進める。ここで、更新処理の実行指示とは、例えば、情報処理装置１００の操作者が操作部２１９を介してなされる指示をいう。また、一定期間（例えば、２週間）毎にプログラムを定期的に更新するようにスケジュールを予め設定しておき、定期的に更新処理の実行指示が自動的になされるようにしてもよい。
【００３９】
ステップＳ３０２では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、ＦｌａｓｈＲＯＭ２１１、ＦｌａｓｈＲＯＭ２２０ｂに記憶された各プログラムのバージョン情報を取得する。更新前の各プログラムのバージョン情報の一例を図４（ａ）に示す。
【００４０】
ステップＳ３０３では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、情報処理装置１００を特定するための機種ＩＤ情報とバージョン情報の取得要求をサーバ装置２２４に送信する。そして、ＣＰＵ２１０は、サーバ装置２２４により管理されるバージョン情報を取得し、更新対象のプログラムの組み合わせを特定する。組み合わせの特定は、組み合わせを指定するための表示画面を操作部２１９に表示させ、操作部２１９を介して操作者により指示されたプログラムを更新対象として特定してもよい。また、操作者による指示に基づくことなく、最新の組み合わせを更新対象として特定してもよい。更新対象の組み合わせの一例を図４（ｂ）に示す。なお、バージョン情報の取得は、サーバ装置２２４だけでなく、外部ＵＳＢデバイス２２３やＰＣ２２５などから行ってもよい。
【００４１】
ステップＳ３０４では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、更新対象となるプログラムを特定する。つまり、ステップＳ３０２で取得した現在の各プログラム（図４（ａ））の組み合わせから、ステップＳ３０３で取得した更新対象の各プログラム（図４（ｂ））の組み合わせへ更新するために必要な更新データを特定する。例えば、図４（ａ）に示す組み合わせから図４（ｂ）に示す組み合わせに更新するためには、プリントプログラム４１４と、処理部アップデートプログラム４３３のバージョン２．０が必要となる。
【００４２】
ステップＳ３０５では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、ステップＳ３０４で特定した更新データの一覧をサーバ装置２２４から取得する。取得した更新データは、情報処理装置１００内（例えば、ＨＤＤ２１３）に保存する。なお、更新データの取得は、サーバ装置２２４だけでなく、外部ＵＳＢデバイス２２３やＰＣ２２５などから行ってもよい。
【００４３】
ステップＳ３０６では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、サブパーティション４０２に含まれるプログラムが更新対象かどうかを判定する。更新対象に含まれると判定された場合はステップＳ３０７へ処理を進める。一方、更新対象に含まれないと判定された場合はステップＳ３０８へ処理を進める。本実施形態では、処理部アップデートプログラム４３３が更新対象に含まれているため、ステップＳ３０７へ処理を進める。
【００４４】
ステップＳ３０７では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、サブパーティション４０２に含まれるプログラムを更新する。本実施形態では、更新対象である処理部アップデートプログラム４３３の旧プログラム（バージョン１．０）を削除し、新プログラム（バージョン２．０）をサブパーティション４０２に展開する。
【００４５】
ステップＳ３０８では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、メインパーティション４０１に含まれるプログラムが更新対象かどうかを判定する。更新対象に含まれると判定された場合はステップＳ３０９へ処理を進める。一方、更新対象に含まれないと判定された場合は本処理を終了する。本実施形態では、プリントプログラム４１４が更新対象に含まれているため、ステップＳ３０９へ処理を進める。
【００４６】
ステップＳ３０９では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行し、取得したメインパーティション４０１に含まれる更新対象のプログラムの更新データをメインパーティション４０１に展開するために必要な容量を取得する。本実施形態では、図４（ｂ）に示す通り、プリントプログラム４１４のバージョン２．０の展開サイズは５ＭＢであるとする。
【００４７】
ステップＳ３１０では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、メインパーティション領域の空き容量を取得する。本実施形態では、プリントプログラム４１４の展開に必要な５ＭＢより大きい空き領域が存在するものとする。
【００４８】
ステップＳ３１１では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行し、ステップＳ３０９で得たプログラムの展開に必要な容量が、ステップＳ３１０で得たメインパーティション領域の空き容量より小さいかどうか判定する。小さいと判定された場合はステップＳ３１２に処理を進める一方、小さくないと判定された場合はステップＳ３１５に処理を進める。本実施形態では、プリントプログラム４１４の展開に必要な５ＭＢより大きい空き領域が存在するため、ステップＳ３１２へ処理を進める。
【００４９】
ステップＳ３１２では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、メインパーティション４０１の更新データを、メインパーティション４０１の空き領域に展開する。本実施形態では、プリントプログラム４１４のバージョン２．０をメインパーティション４０１の空き領域に展開する。こうして展開されたプログラムは次回起動時に有効となる。情報処理装置１００が動作している間は、旧プログラム（ここではプリントプログラム４１４のバージョン１．０）が使用されているため、削除できない。旧プログラムが次回起動時（ステップＳ３１４）において削除できるよう、図４（ｃ）に示すような、削除すべきプログラムの一覧を生成し、ＨＤＤ２１３に記憶させる。ＦｌａｓｈＲＯＭ２１１には、メインパーティション４０１、サブパーティション４０２以外の領域（図示しない）が存在した場合、削除すべきプログラムの一覧をＦｌａｓｈＲＯＭ２１１上に記憶させてもよい。
【００５０】
ステップＳ３１３では、システムの再起動を行う。情報処理装置１００の操作者が任意のタイミングで操作部２１９を介して再起動を指示させてもよいし、自動的にシステムを再起動させてもよい。
【００５１】
ステップＳ３１４では、ＣＰＵ２１０は、ＯＳ４１１を介してメインモジュール起動準備プログラム４２２を実行することにより、ステップＳ３１２で記憶されていた削除すべきプログラムの一覧を取得し、記載されたプログラムを削除する。本実施形態では、図４（ｃ）に示すように、プリントプログラム４１４のバージョン１．０を削除し、ステップＳ３１９へ処理を進める。
【００５２】
ステップＳ３１９では、ＣＰＵ２１０は、ＯＳ４１１を介して、更新後のメインモジュール４１０の各プログラムを実行することにより、更新後のプログラムで情報処理装置１００を動作させる。
【００５３】
第１の実施形態によれば、プログラムの更新に対し、メインパーティション４０１に十分な空き容量が存在する場合は、システムの再起動後に有効となる更新データの展開を行い（ステップＳ３１２）、次回起動時に旧プログラムを削除する（ステップＳ３１４）。一方、メインパーティション４０１に十分な空き容量が存在しない場合は、サブパーティション４０２の各プログラムで起動し、メインパーティション４０１のプログラムの更新を行う（ステップＳ３１６、Ｓ３１７）。これにより、システム再起動や特定の起動モードの動作を極力行わず、プログラム更新に伴うリブートを１回に抑えることができ、プログラムの更新にかかる処理時間を短縮できる。
【００５４】
［第２の実施形態］
次に、本発明の第２の実施形態におけるプログラムの更新処理について図３、図４（ａ）、図４（ｄ）を用いて説明する。
【００５５】
本第２の実施形態では、図３のステップＳ３１１にて、更新プログラムの展開に必要な容量がメインパーティション４０１の空き容量と同等またはより大きいと判定される場合を説明する。
【００５６】
本発明の第２の実施の形態では、図１、図２に示す構成が上記第１の実施の形態と同じであり、第１の実施の形態と同様の部分については、同一の符号を用いてその説明を省略する。以下に、上記第１の実施の形態と異なる点のみを説明する。
【００５７】
ステップＳ３０３において特定される更新対象の組み合わせは図４（ｄ）の通りとする。
【００５８】
ステップＳ３０４では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、更新対象となるプログラムを特定する。つまり、ステップＳ３０２で取得した現在の各プログラム（図４（ａ））の組み合わせから、ステップＳ３０３で取得した更新対象の各プログラム（図４（ｄ））の組み合わせへ更新するために必要な更新データを特定する。図４（ａ）に示す組み合わせから、図４（ｄ）に示す組み合わせに更新するためには、操作部プログラム４１２、スキャンプログラム４１３、プリントプログラム４１４、ネットワークプログラム４１５のそれぞれバージョン２．０が必要となる。
【００５９】
その後、ステップＳ３０６では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、サブパーティション４０２に含まれるプログラムが更新対象かどうかを判定する。本実施形態では、サブパーティションに含まれるプログラムは更新対象に含まれていないため、ステップＳ３０７の処理は行わず、ステップＳ３０８へ処理を進める。
【００６０】
ステップＳ３０８では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、メインパーティションに含まれるプログラムが更新対象かどうかを判定する。更新対象に含まれると判定された場合はステップＳ３０９へ処理を進め、更新対象に含まれないと判定された場合は処理を終了する。本実施形態では、操作部プログラム４１２、スキャンプログラム４１３、プリントプログラム４１４、ネットワークプログラム４１５が更新対象に含まれているため、ステップＳ３０９へ処理を進める。
【００６１】
ステップＳ３０９では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、取得したメインパーティション４０１の更新データの展開に必要な容量を取得する。本実施形態では、ステップＳ３０４で特定した更新データ（操作部プログラム４１２、スキャンプログラム４１３、プリントプログラム４１４、ネットワークプログラム４１５のそれぞれバージョン２．０）の展開サイズは、合計１８ＭＢであるとする。
【００６２】
ステップＳ３１０では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、メインパーティション領域の空き容量を取得する。本実施形態では、ステップＳ３０４で特定した更新データの展開に必要な１８ＭＢより小さい空き領域が存在するものとする。
【００６３】
ステップＳ３１１では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行し、ステップＳ３０９で得たプログラムの展開に必要な容量が、ステップＳ３１０で得たメインパーティション領域の空き容量より小さいかどうか判定する。小さいと判定された場合はステップＳ３１２に処理を進め、小さくないと判定された場合はステップＳ３１５に処理を進める。本実施形態では、空き領域が更新データの展開に必要な１８ＭＢより小さいため、ステップＳ３１５へ処理を進める。空き領域が小さい場合とは、更新データの展開を行うのに必要な領域が無いことを示している。必要な領域を確保するためには、更新対象となるプログラムの旧バージョンを削除すればよい。しかしながら、プログラムの旧バージョンは使用中であり削除できない。そのため、続くステップＳ３１５，Ｓ３１６では、システムを再起動し、メインパーティションのプログラムを使用せずに情報処理装置１００を動作させて、メインパーティション４０１のプログラムを更新する。
【００６４】
その後、ステップＳ３１５では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、システムの再起動を行う。
【００６５】
ステップＳ３１６では、ＣＰＵ２１０は、サブパーティション４０２に記憶されたプログラムでシステムを起動させる。つまり、ＣＰＵ２１０は、まずＯＳ４３１を実行する。その後、メインパーティション４０１に含まれるプログラムの更新を行うために、ＯＳ４３１を介してアップデートモジュール４３０を実行する。
【００６６】
ステップＳ３１７では、ＣＰＵ２１０は、ＯＳ４３１を介してメインパーティションアップデートプログラム４３２を実行することにより、メインパーティション４０１に含まれるプログラムの更新を行う。本実施形態では、まず更新対象となるプログラムの旧バージョン（操作部プログラム４１２、スキャンプログラム４１３、プリントプログラム４１４、ネットワークプログラム４１５のそれぞれバージョン１．０）を削除する。その後、更新対象となるプログラムの新バージョン（操作部プログラム、スキャンプログラム、プリントプログラム、ネットワークプログラムのそれぞれバージョン２．０）をメインパーティション４０１に展開し、プログラムの更新を完了させる。なお、処理部プログラムが更新対象である場合は、ＣＰＵ２１０は、ＯＳ４３１を介して処理部アップデートプログラム４３３を実行することにより、処理部プログラム（ここではＦｌａｓｈＲＯＭ２２０ｂに含まれるプログラム）の更新を行うことができる。
【００６７】
ステップＳ３１８では、ＣＰＵ２１０は、ＯＳ４３１を介してメインパーティションアップデートプログラム４３２を実行し、システムの再起動を行う。そして、ステップＳ３１９に処理を進め、更新後のメインパーティションの各プログラムで情報処理装置１００を起動させる。
【００６８】
［第３の実施形態］
次に、本発明の第３の実施形態におけるプログラムの更新処理について図３、図４（ｃ）、図５を用いて説明する。
【００６９】
図５は、本発明の第３の実施形態における情報処理装置１００の起動時に実行されるプログラム更新処理の一例を示すフローチャートである。
【００７０】
第３の実施形態では、ＳＲＡＭ２２７に、メインパーティション４０１およびサブパーティション４０２の各プログラムの更新状態を記憶させる。これにより、プログラムの更新中に、電源断等の意図しないシステムダウンが発生した場合でも、更新状況に応じて適切に各プログラムの更新を継続することができる。
【００７１】
ＳＲＡＭ２２７には、サブパーティション更新フラグ、メインパーティション更新フラグの２つの情報を記憶させることができるものとする。
【００７２】
サブパーティション更新フラグは、サブパーティション４０２のプログラムを更新中であることを意味する。起動時に本フラグがＯＮ（有効）であった場合、情報処理装置１００はメインパーティション４０１の各プログラムで起動し、サブパーティション４０２のプログラムの更新を継続する（図５のステップＳ５０２）。
【００７３】
メインパーティション更新フラグは、メインパーティション４０１のプログラムおよび処理部プログラムの更新中であることを意味する。起動時に本フラグがＯＮ（有効）であった場合、情報処理装置１００はサブパーティションの各プログラムで起動し、メインパーティション４０１のプログラムおよび処理部プログラムの更新を継続する（図５のステップＳ５０４）。
【００７４】
次に、上記第１の実施形態との差分を図３を参照して説明する。
【００７５】
ステップＳ３０７では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、サブパーティション４０２に含まれるプログラムを更新する。更新を開始する前に、ＳＲＡＭ２２７のサブパーティション更新フラグをＯＮにする。そして、更新対象である処理部アップデートプログラム４３３の旧プログラム（処理部アップデートプログラム４３３のバージョン１．０）を削除し、新プログラム（処理部アップデートプログラム４３３のバージョン２．０）をサブパーティション４０２に展開する。展開の完了後、ＳＲＡＭ２２７のサブパーティション更新フラグをＯＦＦ（無効）にする。
【００７６】
ステップＳ３０７の処理を行っている際に、電源断等のシステムダウンが発生した場合について図５を用いて説明する。
【００７７】
システムダウン後の起動時、ステップＳ５０１では、ＣＰＵ２１０は、ＳＲＡＭ２２７にサブパーティション更新フラグがＯＮであるかどうか判定する。ここでは、更新フラグがＯＮであるため、ステップＳ５０２へ処理を進める。
【００７８】
ステップＳ５０２では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行させ、図３のステップＳ３０７からの処理を継続する。その後、ステップＳ３１２では、ＣＰＵ２１０は、ＯＳ４１１を介してアップデートプログラム４２１を実行することにより、メインパーティション４０１の更新データを、メインパーティション４０１上に展開する。更新を開始する前に、ＳＲＡＭ２２７のサブパーティション更新フラグをＯＮにする。そして、プリントプログラム４１４のバージョン２．０をメインパーティション上に展開する。こうして展開したプログラムは次回起動時に有効となる。
【００７９】
情報処理装置１００が動作中は、旧プログラム（プリントプログラム４１４のバージョン１．０）が使用されているため、次回起動時（ステップＳ３１４）に削除できるよう図４（ｃ）に示す削除すべきプログラムの一覧を生成し、ＨＤＤ２１３に記憶させる。ＦｌａｓｈＲＯＭ２１１には、メインパーティション４０１、サブパーティション４０２以外の領域（図示しない）が存在した場合、削除すべきプログラムの一覧をＦｌａｓｈＲＯＭ２１１上に記憶させてもよい。展開の完了後、ＳＲＡＭ２２７のメインパーティション更新フラグをＯＦＦにする。
【００８０】
ステップＳ３１２の処理を行っている際に、電源断等のシステムダウンが発生した場合について図５を用いて説明する。
【００８１】
システムダウン後の起動時、ステップＳ５０１では、ＣＰＵ２１０は、ＳＲＡＭ２２７にサブパーティション更新フラグがＯＮであるかどうか判定する。ここでは、更新フラグがＯＦＦであるため、ステップＳ５０３へ処理を進める。
【００８２】
ステップＳ５０３では、ＣＰＵ２１０は、ＳＲＡＭ２２７にメインパーティション更新フラグがＯＮであるかどうか判定する。更新フラグがＯＦＦであった場合、ステップＳ５０５へ処理を進め、ＣＰＵ２１０はメインパーティション４０１の各プログラムを実行することにより情報処理装置１００を動作させる。ここでは更新フラグがＯＮであるため、ステップＳ５０４へ処理を進める。
【００８３】
ステップＳ５０４では、ＣＰＵ２１０は、ＯＳ４３１を介してアップデートモジュール４３０を実行させ、ステップＳ３１７から処理を継続する。
【００８４】
そして、ステップＳ３１７で、ＣＰＵ２１０は、ＯＳ４３１を介してアップデートモジュール４３０を実行することにより、メインパーティション４０１に含まれるプログラムの更新を行う。本実施形態では、まず更新対象となるプログラムの旧バージョン（プリントプログラム４１４のバージョン１．０）を削除する。その後、更新対象となるプログラムの新バージョン（プリントプログラム４１４のバージョン２．０）をメインパーティション４０１に展開することにより、プログラムの更新を完了させる。更新の完了後、ＳＲＡＭ２２７のメインパーティション更新フラグをＯＦＦにする。
【００８５】
第３の実施形態によれば、各プログラムの更新状態を記憶させることで、電源断等の意図しないシステムダウンが発生した場合でも、更新状況に応じて適切に各プログラムの更新を継続することができる。
【００８６】
上記各実施形態では、アップデートモジュール４２０やＯＳ４１１、処理部等の特定のプログラムが更新対象であった場合、リブートしてサブパーティションの各プログラムで起動する判定を行う構成としてもよい。この場合、ステップＳ３１１からステップＳ３１５に処理を進める。
【００８７】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８８】
１００  情報処理装置
２１０  ＣＰＵ
４０１  メインパーティション
４０２  サブパーティション
４１０  メインモジュール
４１１，４３１  オペレーティングシステム
４１４  プリントプログラム
４２０，４３０  アップデートモジュール
４２２  メインモジュール起動準備プログラム
４３３  処理部アップデートプログラム
【図１】
2014238647.tif 000003
【図２】
2014238647.tif 000004
【図３】
2014238647.tif 000005
【図４】
2014238647.tif 000006
【図５】
2014238647.tif 000007