(57)【要約】少なくとも１つのワイヤレス結合部を通じてアップグレード・ファイルを受信する携帯通信デバイスを提供する。アップグレード・ファイルの内容は、携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および／または携帯通信デバイスの機能をアップグレードするための情報を含む。携帯通信デバイスは、アップグレード・ファイルの内容を用いて、自動的にソフトウェア・コンポーネントをアップグレードする。携帯通信デバイスは、自動アップグレード中に誤りまたは障害を検出したときに、自動的にある動作状態に復元する。更に、携帯通信デバイスは、誤りまたは障害に続いて、自動アップグレードを再開するか、または始めからやり直す。
2006508432.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと少なくとも１つの電子ファイルとを備えている携帯通信デバイスにおいて、前記プロセッサが少なくとも１つのワイヤレス結合部を通じてアップグレード・ファイルを受信し、前記プロセッサは、前記アップグレード・ファイルの内容を用いて、自動的に前記電子ファイルをアップグレードし、前記アップグレードは、前記電子ファイルにおける誤りの修復および追加の電子ファイルの供給の内少なくとも１つを含み、前記プロセッサは、前記電子ファイルの自動アップグレード中の障害に応答して、前記携帯通信デバイスを少なくとも１つの動作状態に自動的に復元する、携帯通信デバイス。
【請求項２】
請求項１記載のデバイスにおいて、前記携帯通信デバイスは、セルラ電話機、携帯計算デバイス、およびパーソナル・ディジタル・アシスタントの内少なくとも１つである、デバイス。
【請求項３】
請求項１記載のデバイスにおいて、前記少なくとも１つの動作状態は、セルラ・テレフォニ状態を含む、デバイス。
【請求項４】
携帯通信デバイスにおいて、少なくとも１つのワイヤレス結合部を通じてアップグレード・ファイルを受信するステップであって、アップグレード・ファイルの内容が、前記携帯通信デバイスのソフトウェア・コンポーネントにおいて誤りを修復するための情報、および前記携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含む、ステップと、
前記アップグレード・ファイルの内容を用いて、自動的に前記ソフトウェア・コンポーネントをアップグレードするステップと、
前記自動アップグレード中の障害に応答して、前記携帯通信デバイスを少なくとも１つの動作状態に自動的に復元するステップと、
を含む、方法。
【請求項５】
請求項４記載の方法において、自動的に復元するステップは、更に、前記自動アップグレードを再開するステップを含む、方法。
【請求項６】
請求項４記載の方法において、前記自動的に復元するステップは、更に、前記自動アップグレードをやり直すステップを含む、方法。
【請求項７】
請求項４記載の方法において、前記アップグレード・ファイルの内容は、差分ファイルおよび埋め込みソフトウェア・コンポーネントの内少なくとも１つを含む、方法。
【請求項８】
請求項４記載の方法において、前記少なくとも１つの動作状態は、セルラ・テレフォニ状態を含む、方法。
【請求項９】
請求項４記載の方法において、自動的に復元するステップは、更に、
前記携帯通信デバイスにおけるバックアップ・コンフィギュレーション・データの使用可能性を判定するステップであって、前記バックアップ・コンフィギュレーション・データは、前記携帯通信デバイスのコンフィギュレーション・データのアップグレード前のバージョンを含む、ステップと、
前記バックアップ・コンフィギュレーション・データの正確さを検証するステップと、
前記携帯通信デバイスのコンフィギュレーション・データを前記バックアップ・コンフィギュレーション・データで置き換えるステップと、
を含む、方法。
【請求項１０】
請求項９記載の方法において、自動的にアップグレードするステップは、少なくとも１つのクリティカル・ソフトウェア・コンポーネントを自動的にアップグレードするステップであって、前記クリティカル・ソフトウェア・コンポーネントの原型バージョンに対応する、アップグレードしたソフトウェア・コンポーネントを生成する、ステップと、前記アップグレードしたソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むステップとを含み、前記クリティカル・ソフトウェア・コンポーネントの自動アップグレード中の障害に応答して自動的に復元するステップは、更に、
前記携帯通信デバイスにおけるバックアップ・アップグレード・ソフトウェア・コンポーネントの使用可能性を判定するステップであって、前記バックアップ・アップグレード・ソフトウェア・コンポーネントが、前記アップグレード・ソフトウェア・コンポーネントのアップグレード前のバージョンを含む、ステップと、
前記バックアップ・アップグレード・ソフトウェア・コンポーネントの正確さを検証するステップと、
前記バックアップ・アップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むステップと、
を含む、方法。
【請求項１１】
請求項９記載の方法において、自動的にアップグレードするステップは、少なくとも１つのクリティカル・ソフトウェア・コンポーネントを自動的にアップグレードするステップであって、前記クリティカル・ソフトウェア・コンポーネントの原型バージョンに対応するアップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込む、ステップを含み、前記クリティカル・ソフトウェア・コンポーネントの自動アップグレード中の障害に応答して自動的に復元するステップは、更に、
前記携帯通信デバイスにおけるバックアップ・アップグレード・ソフトウェア・コンポーネントの使用可能性を判定するステップであって、前記バックアップ・アップグレード・ソフトウェア・コンポーネントが、前記アップグレード・ソフトウェア・コンポーネントのアップグレード前のバージョンを含む、ステップと、
前記バックアップ・アップグレード・ソフトウェア・コンポーネントの正確さを検証するステップと、
前記バックアップ・アップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むステップと、
を含む、方法。
【請求項１２】
請求項９記載の方法において、自動的にアップグレードするステップは、少なくとも１つの非クリティカル・ソフトウェア・コンポーネントを自動的にアップグレードするステップであって、前記非クリティカル・ソフトウェア・コンポーネントの原型バージョンに対応するアップグレード・ソフトウェア・コンポーネントを生成する、ステップと、前記アップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むステップとを含み、前記非クリティカル・ソフトウェア・コンポーネントの自動アップグレード中の障害に応答して自動的に復元するステップは、更に、
前記ワイヤレス結合部を通じて前記アップグレード・ソフトウェア・コンポーネントを受信するステップと、
前記アップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むステップと、
を含む、方法。
【請求項１３】
請求項４記載の方法であって、更に、前記携帯通信デバイスが、前記自動アップグレード中の障害から復元しつつあるのか否かについて判定するステップを含む、方法。
【請求項１４】
請求項４記載の方法であって、更に、少なくとも１つの誤りチェックおよび訂正プロセスを前記アップグレード・ファイルの内容、アップグレードすべき前記ソフトウェア・コンポーネントの内容、アップグレード・ソフトウェア・コンポーネントの内容、および前記携帯通信デバイスのコンフィギュレーション・データの内少なくとも１つに適用するステップを含む、方法。
【請求項１５】
請求項１４記載の方法において、前記少なくとも１つの誤りチェックおよび訂正プロセスは、巡回冗長コード（ＣＲＣ）およびチェックサム値の内少なくとも１つの使用を含む、方法。
【請求項１６】
電子ファイルをアップグレードするシステムであって、
アップグレード・ファイルを生成する第１アップグレード・コンポーネントを含む第１デバイスであって、前記アップグレード・ファイルは、電子ファイルにおける誤りを修復するための情報および前記電子ファイルに機能を追加する情報の内少なくとも１つを含む、第１デバイスと、
前記第１デバイスとのワイヤレス結合部を通じて前記アップグレード・ファイルを受信する第２アップグレード・コンポーネントを含む移動通信デバイスであって、前記第２アップグレード・コンポーネントは、前記アップグレード・ファイルの内容を用いて、前記移動通信デバイスの電子ファイルを自動的にアップグレードし、前記第２アップグレード・コンポーネントは、前記自動アップグレード中の障害に応答して、前記移動通信デバイスを自動的に少なくとも１つの動作状態に復元する、移動通信デバイスと、
を備えた、システム。
【請求項１７】
請求項１６記載のシステムにおいて、前記第１デバイスは、プロセッサを用いたデバイスであり、前記第２デバイス上に常駐するソフトウェア・コンポーネントの少なくとも１つのプロバイダによってアクセス可能である、システム。
【請求項１８】
請求項１６記載のシステムにおいて、前記移動通信デバイスは、セルラ電話機である、システム。
【請求項１９】
請求項１６記載のシステムにおいて、前記電子ファイルは、ダイナミック・リンク・ライブラリ・ファイルを含むソフトウェア・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント（ＥＢＳＣ）、ファームウェア・ファイル、実行可能ファイル、１６進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルを含む、システム。
【請求項２０】
携帯デバイスにおいてフェール・セーフのソフトウェア・アップグレードを行う方法であって、
少なくとも１つのワイヤレス結合部を通じて、携帯通信デバイスにおいてアップグレード・ファイルを受信するステップであって、アップグレード・ファイルの内容が、前記携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および前記携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含む、ステップと、
前記アップグレード・ファイルの内容を用いて、前記ソフトウェア・コンポーネントを自動的にアップグレードするステップと、
前記自動アップグレード中に障害を検出するステップと、
前記検出した障害に応答して、前記携帯通信デバイスを自動的に少なくとも１つの動作状態に復元するステップであって、復元が、前記携帯通信デバイスにおけるバックアップ・コンフィギュレーション・データの使用可能性を判定することを含み、前記バックアップ・コンフィギュレーション・データが、前記携帯通信デバイスのコンフィギュレーション・データのアップグレード前のバージョンを含み、復元が、更に、前記バックアップ・コンフィギュレーション・データの正確さを検証し、前記コンフィギュレーション・データを、前記検証したバックアップ・コンフィギュレーション・データと置き換えることを含む、ステップと、
を含む方法。
【請求項２１】
移動通信デバイスであって、
少なくとも１つのワイヤレス結合部を通じて、携帯通信デバイスにおいてアップグレード・ファイルを受信する手段であって、アップグレード・ファイルの内容が、前記携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および前記携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含む、手段と、
前記アップグレード・ファイルの内容を用いて、前記ソフトウェア・コンポーネントを自動的にアップグレードする手段と、
前記自動アップグレード中の障害に応答して、前記携帯通信デバイスを自動的に少なくとも１つの動作状態に復元する手段と、
を備えた移動通信デバイス。
【請求項２２】
実行可能な命令を含むコンピュータ読み取り可能媒体であって、処理システムにおいて実行すると、
少なくとも１つのワイヤレス結合部を通じて、携帯通信デバイスにおいてアップグレード・ファイルを受信し、アップグレード・ファイルの内容が、前記携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および前記携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含み、
前記アップグレード・ファイルの内容を用いて、前記ソフトウェア・コンポーネントを自動的にアップグレードし、
前記自動アップグレード中に障害を検出し、
前記検出した障害に応答して、前記携帯通信デバイスを自動的に少なくとも１つの動作状態に復元し、復元が、前記携帯通信デバイスにおけるバックアップ・コンフィギュレーション・データの使用可能性を判定し、前記バックアップ・コンフィギュレーション・データの正確さを検証し、前記コンフィギュレーション・データを、前記検証したバックアップ・コンフィギュレーション・データと置き換えることを含む、
ことによって携帯通信デバイスにおけるソフトウェアをアップデートする、コンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示する実施形態は、電子ファイルの更新および保守に関する。
【背景技術】
【０００２】
関連出願
本願は、２００２年５月１３日に出願され、出願番号第１０／１４６，５４５号、BYTE-LEVEL FILE DIFFERENCING AND UPDATING ALGORITHMS（バイト・レベルでのファイル差別化および更新アルゴリズム）と題する出願、および２００２年９月３０日に出願され、弁理士整理番号ＤＯＧＯ．Ｐ００２（出願番号はいずれ付けられる）、UPDATING ELECTRONIC FILES USING BYTE-LEVEL FILE DIFFERENCING AND UPDATING ALGORITHMS（バイト・レベルのファイル差別化および更新アルゴリズムを用いた電子ファイルの更新）と題する出願に関連がある。双方共、現在同時係属中である。
【０００３】
ホスト・デバイスにおいて機能を設けるためにプロセッサ即ち中央演算装置（ＣＰＵ）上で実行するソフトウェアは、時と共に変わって行くことが多い。これらの変化は、ソフトウェア・ファイルにおけるバグまたは誤りを訂正する必要性、発展しつつ技術に合わせる必要性、または新たな特徴や機能を追加する必要性から生ずると考えられる。特に、移動ワイヤレス・デバイス上に常駐している埋め込みソフトウェア・コンポーネントは、多数のソフトウェア・バグを含み、訂正しなければならないことが多い。
【０００４】
ソフトウェアは、人が読むことができる情報相互交換用アメリカ標準コード（ＡＳＣＩＩ）の平文ファイルまたは二進コードの形態の１つ以上のファイルを含む。ソフトウェア・ファイルは、更に小さな単位に分割することができ、これらは多くの場合モジュールまたはコンポーネントと呼ばれている。ＵＮＩＸプラットフォームまたはパーソナル・コンピュータ（ＰＣ）は、多数のソフトウェア・コンポーネントを含み、これらソフトウェア・コンポーネントの各々は、対応するオペレーティング・システム（ＯＳ）が支援する(support)ファイル・システムを通じて独立して管理および更新が行われる。ＵＮＩＸプラットフォームまたはＰＣ上にホストされているソフトウェア・ファイルまたはソフトウェア・コンポーネントを更新する際に用いられる情報は、インターネットを通じて転送したり、あるいはフロッピ・ディスク、コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、またはコンパクト・フラッシュ・カードのような二次的な記憶媒体からロードすることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
対照的に、移動ワイヤレス・デバイスでは、リアル・タイム・オペレーティング・システム（ＲＴＯＳ）が使われるのが通例であり、この場合全てのソフトウェア・コンポーネントは単一の大きなファイルとしてリンクされている。更に、これらの移動ワイヤレス・デバイスには、ファイル・システムの支援は設けられていないのが通例である。加えて、ワイヤレス通信リンクまたは無線リンクのような空中（ＯＴＡ：over-the-air)リンクを用いて、単一の大きなファイルをデバイスの中にロードし、即ち、埋め込み、更新する必要がある。その結果、セルラ電話機やその他の移動通信デバイス、パーソナル・ディジタル・アシスタント（ＰＤＡ）、およびパーソナル・コンピュータのような移動デバイスにソフトウェア・ファイル更新を配信することに関して問題が生じる。
【０００６】
大きなファイルを移動デバイスに配信し、移動デバイスのファイル更新に用いる際の問題に対する１つの解決策は、異なるプログラムを用いて差分ファイルを生成することである。差分ファイルは、改訂した、即ち、新しいファイルが原型ファイルとどのように異なるのかを記述したデータを含む。種々の差分プログラムの使用は、転送ファイルの小型化に役立つが、更新を移動デバイスに供給することに伴う信頼性に関して問題が残っている。
【０００７】
例えば、ＯＴＡリンクを通じたファイル配信および更新には、高い確率の障害が伴う。これらの障害は、一般に、サービス・プロバイダ・ネットワークのコンポーネントおよび／または更新を受信しなければならない多数の移動デバイスのコンポーネントに関連する障害に関する。起こり得る障害の種類の例には、移動デバイスのハードウェアの障害、ソフトウェアの障害、電力（バッテリ）枯渇に関する障害、および更新プロセス中におけるネットワークからの移動デバイスの切断の結果としての障害が含まれる。更新の障害の原因には係わらず、デバイスの製造業者およびサービス・プロバイダは、ソフトウェア更新を無線（ＯＴＡ）接続を介して移動デバイスに供給するときには、移動デバイスが、更新プロセス中の障害という事態においても、完全に復元可能であることを確保しなければならない。
【発明を実施するための最良の形態】
【０００８】
図面においては、同じ参照番号は、同一のまたは実質的に同様のエレメントあるいはアクトを識別するものとする。いずれの特定のエレメントまたはアクトの論述であっても容易に識別するために、参照番号の内最上位の１つまたは複数の桁は、当該エレメントが最初に紹介された図番を示す（例えば、エレメント１１６は、図１において最初に紹介され、これについて論ぜられる）。
【０００９】
以下で特に記載しない限り、図に示す種々のブロックおよび構造の構成および動作は、従来の設計通りとする。その結果、このようなブロックは、ここでは更に詳細に説明する必要はなくなる。何故なら、これらは、当業者には理解されるはずであるからである。そのような更なる詳細は、簡潔性のため、そして本発明の詳細な説明を曖昧にしないようにするために、省略する。図に必要なあらゆる変更は、ここに示す詳細な説明に基づけば、当業者には容易に行うことができよう。
【００１０】
図３、図４、図５Ａ、図５Ｂ、図７Ａ、図７Ｂ、図９および図１１から図１４を参照すると、フロー図の動作は、少なくとも１つのプロセッサの制御の下にあるが、そのように限定される訳ではない。これらのフロー図に図示されているブロックの各々は、当技術分野では周知の形式であり、ここには記載する必要がない一連の動作をそれ自体が含む可能性もある。当業者であれば、これらのフロー図およびここに提示する詳細な説明に基づいて、ソース・コード、マイクロコードを作成し、ロジック・アレイをプログラムし、あるいはその他の方法で本発明を実施することができよう。これらフロー図にしたがって動作するアルゴリズムまたはルーチンは、連動するプロセッサの一部をなす不揮発性メモリ（図示せず）、連動するメモリのエリア、ディスクのような着脱可能媒体（図示せず）に格納したり、ＥＥＰＲＯＭ半導体チップのようなチップ（図示せず）内またはこれらのコンポーネントのいずれの組み合わせにでもハードワイヤ接続または予めプログラムするが、そのように限定される訳ではない。
詳細な説明
以下に、移動デバイスを含むクライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行うためのシステムおよび関連する方法を提示する。ソフトウェアのアップグレード中に障害が生じ、アップグレードの首尾良い成功を妨げた場合、一実施形態のアップグレード・システムは、クライアント・デバイスを、アップグレード前の状態に復元する。アップグレード・システムは、その後、障害の時点で進行中であったアップグレードを再開するか、または初めからやり直す。
【００１１】
以下の説明では、多数の具体的な詳細を紹介して、本発明の実施形態の完全な理解が得られるようにし、それを実施可能にする説明を行う。しかしながら、本発明はこれら具体的な詳細が１つ以上なくても、または他のコンポーネント、システムなどを用いても実施可能であることは、当業者は認めよう。その他の場合には、周知の構造や動作については、本発明の態様を曖昧にするのを避けるために、図示も詳細な説明も行わない。
【００１２】
図１は、一実施形態の下におけるファイル・アップグレード・システム１００のブロック図である。概略的に、ファイル・アップグレード・システム１００は、第１コンピュータ・システム１０２またはホスト・システム、およびクライアント・デバイスまたはコンピュータ１２２を含む１つ以上の第２コンピュータ・システムを含む。ホスト・システム１０２およびクライアント・デバイス１２２は、各々、少なくとも１つのプロセッサ１０４および１２４をそれぞれ含み、プログラム制御の下で動作するが、そのように限定される訳ではない。ホスト・システム１０２およびクライアント・デバイス１２２は、通信経路１９９を通じて通信する。これらのコンピュータ・システム１０２および１２２は、当技術分野では周知の、共に動作する計算デバイスのあらゆる集合をも含む。また、コンピュータ・システム１０２および１２２は、更に大きなコンピュータ・システム内にあるコンポーネントも含むことができる。
【００１３】
ホスト・システム１０２のプロセッサ１０４は、プログラム制御の下で、データベース１０６およびファイル差別化アルゴリズム１１４間を結合する。あるいは、ホスト・システム１０２の種々の他のコンポーネントが、プログラム制御の下で、プロセッサ１０４、データベース１０６、およびファイル差別化アルゴリズム１１４間を結合し、ファイル更新機能を備えることができる。１つのプロセッサ１０４、１つのデータベース、および１つのファイル差別化アルゴリズム１１４を示すが、種々の代替実施形態では、いずれの数および／または種類のこれらのコンポーネントをも含み、当業者が想定するような種々の構成に結合されている。更に、プロセッサ１０４、データベース１０６、およびファイル差別化アルゴリズム１１４は別個のブロックとして示されているが、これらのブロックの一部または全てを単一のチップ上にモノリシックに集積することや、ホスト・システムの多数のチップまたはコンポーネント間で分散すること、および／またはアルゴリズムの何らかの組み合わせによって設けることができる。ファイル差別化アルゴリズム１１４は、ソフトウェア・アルゴリズム（複数のアルゴリズム）、ファームウェア、ハードウェア、ならびに、ソフトウェア、ファームウェア、およびハードウェアのいずれの組み合わせでも実施することができる。「プロセッサ」という用語は、ここでは一般に、１つ以上の中央演算装置（ＣＰＵ）、ディジタル信号プロセッサ（ＤＳＰ）、特定用と集積回路（ＡＳＩＣ）等のようなあらゆる論理処理ユニットを意味するものとする。
【００１４】
同様に、一実施形態のクライアント・デバイス１２２は、プログラム制御の下で、デバイス・メモリ１３０およびファイル更新アルゴリズム１２８間に結合されているプロセッサ１２４を含む。あるいは、クライアント・デバイス１２２の種々の他のコンポーネントが、プログラム制御の下で、プロセッサ１２４、デバイス・メモリ１３０、およびファイル更新アルゴリズム１２８間で結合し、ファイル更新機能を設けることができる。１つのプロセッサ１２４、１つのデバイス・メモリ１３０、および１つのファイル更新アルゴリズム１２８を示すが、種々の代替実施形態では、いずれの数および／または種類のこれらのコンポーネントをも含み、当業者が想定するような種々の構成に結合されている。更に、プロセッサ１２４、デバイス・メモリ１３０、およびファイル更新アルゴリズム１２８は別個のブロックとして示されているが、これらのブロックの一部または全てをモノリシックに単一のチップ上に集積すること、ホスト・システムの多数のチップまたはコンポーネント間で分散すること、および／またはアルゴリズムの何らかの組み合わせによって設けることができる。ファイル更新アルゴリズム１２８は、ソフトウェア・アルゴリズム（複数のアルゴリズム）、ファームウェア、ハードウェア、ならびにソフトウェア、ファームウェア、およびハードウェアのいずれの組み合わせでも実施することができる。
【００１５】
通信経路１９９は、コンピュータ・システム１０２および１２２間でファイルを伝達または転送するためのいずれの媒体をも含む。したがって、この経路１９９は、ワイヤレス接続部、ワイヤード接続部、および混成ワイヤレス／ワイヤード接続部を含む。また、通信経路１９９は、ローカル・エリア・ネットワーク（ＬＡＮ）、市内エリア・ネットワーク（ＭＡＮ）、広域ネットワーク（ＷＡＮ）、企業固有のネットワーク、事務所間またはバックエンド・ネットワーク、およびインターネットを含むネットワークへの結合部または接続部も含む。更に、通信経路１９９は、フロッピ・ディスク、ハード・ディスク・ドライブ、およびＤＣ−ＲＯＭディスクのような、着脱自在の固定媒体、ならびにフラッシュＲＡＭ、ユニバーサル・シリアル・バス（ＵＳＢ）接続部、ＲＳ−２３２接続部、電話回線、バス、および電子メール・メッセージも含む。
【００１６】
ホスト・システム１０２およびクライアント・デバイス１２２は、各々、電子ファイルの原型バージョン１１０を含む。ここでは、これを原型ファイルまたは旧ファイルと呼ぶ。ホスト・システム１０２は、原型ファイル１１０をデータベース１０６あるいはメモリ・エリアまたはメモリ・エリアやデバイスの組み合わせに格納するが、そのように限定される訳ではない。クライアント・デバイス１２２は、原型ファイル１１０を、動作に用いるデバイス・メモリに格納する。
【００１７】
例えば、追加の機能を設けるため、またはソフトウェア・バグを修正するために、ソフトウェア・プロバイダが原型ファイル１１０をアップグレードするようなときに、電子ファイルの新バージョン１１２を生成する。電子ファイルの新バージョン１１２をここでは新ファイル１１２と呼ぶ。新ファイル１１２は、一般に、原型ファイル１１０の更新または改訂バージョンであるが、そのように限定される訳ではない。ソフトウェア・プロバイダは、新ファイル１１２をホスト・システム１０２に転送する。
【００１８】
電子ファイル１１０および１１２は、ダイナミック・リンク・ライブラリ・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント（ＥＢＳＣ）、ファームウェア・ファイル、実行可能ファイル、１６進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルを含む、ソフトウェア・ファイルを含むが、そのように限定される訳ではない。いずれの種類のファイルでもバイト・ストリームと見なすことができるので、以後ファイルをバイト・ストリームと記述することもできるものとする。
【００１９】
ホスト・システム１０２のコンポーネントは、少なくとも１つのプロセッサ１０４を含み、新ファイル１１２を受信しそして処理して、クライアント・デバイス１２２に常駐する原型ファイル１１０をアップグレードする際に用いるアップグレード情報を生成する。一実施形態では、プロセッサ１０４は、アップグレード・ファイル１１８を生成し、アップグレードの情報をクライアント・デバイス１２２に転送する際に用いる。アップグレード・ファイル１１８は、新ファイル１１２と原型ファイル１１０との間の差を符号化した差分ファイルを含むことができ、あるいは、代わりに、あらゆる数の新ファイル１１２のコンポーネントまたはモジュールおよび／またはその組み合わせを含むことができる。ホスト・システム１０２は、通信経路１９９を通じたアップグレード・ファイル１１８の転送によって、アップグレード情報をクライアント・デバイス１２２に供給する。
【００２０】
アップグレード・ファイル１１８が差分ファイルを含む実施形態では、プロセッサ１０４およびファイル差別化アルゴリズム１１４を含むホスト・システム１０２のコンポーネントは、新ファイル１１２と対応する原型ファイル１１０との間の比較を処理することによって、新ファイル１１２と原型ファイル１１０との間の差を計算する。ファイル差別化アルゴリズム１１４は、比較の間に差分ファイルを生成し、差分ファイルをアップグレード・ファイル１１８に書き込む。
【００２１】
アップグレード・ファイル１１８は、通信経路１１９を通じてクライアント・デバイス１２２に転送または送信される。転送に先だって、当技術分野では公知の多数の圧縮技術のいずれかを用いて、アップグレード・ファイル１１８を圧縮することもできるが、そのように限定される訳ではない。
【００２２】
プロセッサ１２４およびアップグレード・クライアント１２６を含むクライアント・デバイス１２２のコンポーネントは、アップグレード・ファイル１１８を受信し、アップグレード・ファイル１１８を用いて、原型ファイルのアップグレードを制御する。一実施形態では、ファイル更新アルゴリズム１２８を含むアップグレード・クライアント１２６は、アップグレード・ファイル１１８の情報を、常駐する原型ファイル１１０と共に処理して、新ファイル１５２のコピーを生成する。この新ファイル１５２のコピーは、後に、アップグレード・クライアント１２６が、クライアント・デバイス１２２上に常駐している目標の原型ファイル１１０をアップグレードするため（１５４）に用いる。一実施形態のアップグレード・クライアント１２６は、多数の方法を用いて、更新すべきファイル・タイプ、およびこれらの更新に対応するためにクライアント・デバイスの製造業者によって割り当てられているリソースに応じて、ＥＢＳＣを更新する。これについては、以下で説明するが、関連出願にも記載されている。この更新プロセスの完了時において、このときクライアント・デバイス１２２に格納されている原型ファイル１１０は、ホスト・システム１０２において受信した新ファイル１１２と同一となる。
【００２３】
尚、アップグレード・システム１００に付随する機能、およびアップグレード・システム１００を参照してここに記載した他の機能および方法は、ホスト・システム１０２のコンポーネント、クライアント・デバイス１２２のコンポーネントによって実行することができ、あるいはホスト・システム１０２およびクライアント・デバイス１２２のコンポーネントのいずれの組み合わせの間でも分散可能であることは当業者には認められよう。ホスト・システム１０２およびクライアント・デバイス１２２のコンポーネントは、特定用途集積回路（ＡＳＩＣ）として、ディジタル信号処理（ＤＳＰ）集積回路によって、および／または従来のプログラム・ロジック・アレイまたは回路エレメントによって実施することができる。ここに記載する実施形態は、ハードウェア、ファームウェア、および１つ以上のプロセッサ上で実行するソフトウェアのいずれの組み合わせを用いても実施することができ、ソフトウェアは、半導体チップまたはコンピュータ読み取り可能ディスクに格納されているマイクロコードのように、適したコンピュータ読み取り可能媒体であればいずれにも格納することができ、あるいはサーバからダウンロードしクライアントの内部に格納することもできる。
【００２４】
図２は、一実施形態のファイル・アップグレード・システム１００のコンポーネントを含む、サービス・プロバイダ・インフラストラクチャ２００の一例のブロック図である。この実施形態では、サービス・プロバイダ・インフラストラクチャは、セルラ電話ネットワークまたはインフラストラクチャに関連して説明するが、代替実施形態ではそのように限定されることはない。サービス・プロバイダ・インフラストラクチャ２００は、ソフトウェア・コンポーネント配給元（ＳＣＤ：software component distributor）２０２、サービス・プロバイダ・アップグレード・コンポーネント２０３〜２０５、およびクライアント・デバイス１２２上に常駐するアップグレード・クライアント１２６を含むが、これらに限定される訳ではない。サービス・プロバイダ・アップグレード・コンポーネント２０３〜２０５は、ソフトウェア・コンポーネント証明サーバ２０３およびアップグレード・マネージャ２０５との間に結合されているアップグレード・サーバ２０４を含む。
【００２５】
図１を更に参照すると、サービス・プロバイダ・インフラストラクチャ２００の一実施形態のＳＣＤ２０２は、ホスト・システム１０２のコンポーネントまたは機能を含む。代替実施形態では、サービス・プロバイダ・アップグレード・コンポーネント２０３〜２０５は、ホスト・システム１０２のコンポーネントまたは機能の上位装置として動作する。他の代替実施形態では、ホスト・システム１０２のコンポーネントまたは機能は、ＳＣＤ２０２のコンポーネントおよびサービス・プロバイダ・アップグレード・コンポーネント２０３〜２０５間で分散されている。
【００２６】
一実施形態のサービス・プロバイダ・インフラストラクチャ２００は、移動電子デバイス、移動通信デバイス、セルラ電話機、パーソナル・ディジタル・アシスタント、コンピュータ、およびその他のプロセッサを用いたデバイスを含むクライアント・デバイス１２２上の多数のタイプのソフトウェア・ファイルまたはコンポーネント・アップグレードに、サービス・プロバイダのワイヤレス・インフラストラクチャのアップグレード・システム・コンポーネントおよび種々の機構によって対応する。これらのシステムは、新たなソフトウェアおよび改訂されたソフトウェアをソフトウェア流通業者から受け取り、新たなソフトウェアからアップグレード・ファイルを生成し、サービス・プロバイダ・インフラストラクチャを通じてアップグレード・ファイルをクライアント・デバイス１２２に転送することによって機能する。クライアント・デバイス１２２のアップグレード・クライアント１２６は、アップグレード・ファイルを用いて、クライアント・デバイス１２２上に常駐する目標のソフトウェアを更新する。
【００２７】
一実施形態のＳＣＤ２０２は、ユーザ・インターフェースを設け、これによってソフトウェア・プロバイダは、新たな埋め込みデバイス・ソフトウェア・コンポーネントをパッケージ化し公表する。ＳＣＤ２０２の機能には、デバイス情報を登録すること、およびデバイス情報をソフトウェア・コンポーネント証明サーバに提出することが含まれる。また、ＳＣＤ２０２は、新ＥＢＳＣおよび原型ＥＢＳＣを受信し、新ＥＢＳＣおよび原型ＥＢＳＣを用いてファイル差を生成し、埋め込みソフトウェアを登録およびパッケージ化し、埋め込みソフトウェア・パッケージをソフトウェア・コンポーネント証明サーバ２０３に提出する。新たなソフトウェアまたは改訂したソフトウェアは、公表に続いて、ワイヤード、ワイヤレス、あるいは混成ワイヤード／ワイヤレス・ネットワーク結合部または接続部２２０を通じて、サービス・プロバイダ・アップグレード・コンポーネント２０３〜２０５に供給されるが、そのように限定される訳ではない。
【００２８】
一実施形態のＳＣＤ２０２は、クライアント・デバイス製造業者の処理システム上に常駐している。代替実施形態では、ＳＣＤ２０２は、アプリケーションまたはシステム・ソフトウェア・プロバイダの処理システム上に常駐している。別の代替実施形態では、ＳＣＤ２０２は、サービス・キャリアまたはプロバイダの処理システム上に常駐し、例えば、アップグレード・コンポーネント２０３〜２０５上に常駐しそれらの間に分散している。
【００２９】
サービス・プロバイダ・アップグレード・コンポーネント２０３〜２０５は、ソフトウェア・コンポーネント配給元２０２、クライアント・デバイス１２２、既存のゲートウェイ２１０や通信インフラストラクチャを含むサービス・プロバイダのインフラストラクチャ２０１〜１２８の既存のコンポーネント、請求書発行サーバ２１４、ロギング・サーバ(logging server)２１６、および認証サーバ２１８間で結合されている。
【００３０】
ソフトウェア・コンポーネント証明サーバ２０３は、クライアント・デバイスの製造業者へのインターフェースを設け、したがって、デバイス製造業者からの埋め込みソフトウェア・パッケージに関する新たなデバイス情報を受信する。また、ソフトウェア・コンポーネント証明サーバ２０３は、承認されたソフトウェア・パッケージを再パッケージ化(repackage)しアップグレード・サーバに分配する。
【００３１】
アップグレード・マネージャ２０５は、ソフトウェア・コンポーネント証明サーバ２０３およびアップグレード・サーバ２０４の間でインターフェースとして機能しつつ、最適なデバイス管理のためにソフトウェアおよびデータのパッケージングを行い、遠隔変更通知(remote change notification)のスケジューリングを行い、更新方針モニタ・システム(update policy monitor system)を制御する。更に、アップグレード・マネージャ２０５は、既存のインフラストラクチャのシステムとの統合を行う。
【００３２】
アップグレード・サーバ２０４は、認証、接続、移動クライアント・デバイス１２２との通信を含む機能を備えており、埋め込みソフトウェア・コンポーネントのアップグレードを行う。クライアント・デバイス１２２との通信は、クライアント・デバイス１２２との結合部２１２を介して行うことができる。この結合部２１２は、ワイヤレス結合部、ワイヤード結合部、混成ワイヤード／ワイヤレス結合部、および対応するサービス・プロバイダに適したその他のネットワーク結合形式を含む。加えて、アップグレード・サーバ２０４は、サービス・プロバイダの既存の請求書発行、データ収集、およびロギング・サービスにも対応する。
【００３３】
アップグレード・サーバ２０４およびクライアント・デバイス１２２間の通信の一例として、アップグレード・ファイルがアップグレード・サーバ２０４からクライアント・デバイス１２２に転送できるようになったときに、サーバ２０４はユーザ通知を送って、クライアント・デバイスのユーザに、更新に利用できるソフトウェア・コンポーネントがあることを通知する。ユーザ通知は、ショート・メッセージ・サービス（ＳＭＳ）プッシュ・プロトコル、ハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ）、またはワイヤレス・アプリケーション・プロトコル（ＷＡＰ）によるテキスト・メッセージの形態を取ることができるが、そのように限定されるのではない。ハンドセット・ユーザからの確認を受信すると、アップグレード・サーバ２０４は、元のハンドセット・データ通信プロトコルを用いて、アップグレード・ファイルを要求原型ハンドセットに送る。
【００３４】
ハンドセットからの確認の受信に応答して、アップグレード・サーバ２０４は、ユーザおよび／または要求元デバイスを認証および許可し、要求元デバイスの欠くことができない機能および制限を検証する。認証に続いて、アップグレード・サーバ２０４は、クライアント・デバイス・コンフィギュレーション・データのマネージャとして、要求元デバイス１０４の埋め込みソフトウェア・コンポーネントの現バージョンを特定し、該当するデルタ・ファイルを特定し要求元デバイス１０４に転送し、アップグレード・トランザクションのステータスを記録し、結果をアップグレード・マネージャ２０５に報告する。加えて、アップグレード・サーバ２０４は、無線によってソフトウェア・アップグレード・サービスの活性化／不活性化を行い、遠隔ユーザにソフトウェアの変更を通知する。
【００３５】
図１を参照すると、アップグレード・クライアント１２６は、クライアント・デバイス１２２に埋め込まれているが、そのように限定される訳ではない。アップグレード・クライアント１２６は、クライアント・デバイス１２２のコンフィギュレーション・データを格納および維持し、ファイル更新アルゴリズム１２８を用いて、埋め込みデバイス・ソフトウェア・コンポーネントの保守およびアップグレードを行う。アプグレード・クライアント１２６は、単純なユーザ・インターフェースに対応し、移動デバイス・ソフトウェア内に組み込まれる。実行時に、アップグレード・クライアント１２６は、いずれの埋め込みソフトウェア・コンポーネントの遠隔変更をも検出し、ユーザに埋め込みソフトウェア・コンポーネントのアップグレードを通知し、電気通信業者(carrier)および／またはユーザ制御に基づいて、個々のサービス・プロバイダに対してしかるべくソフトウェア・コンポーネントをアップグレードする。
【００３６】
一実施形態のアップグレード・システム１００およびサービス・プロバイダ・インフラストラクチャ２００は、実行可能ファイル、バイト・ストリーム・ファイル、およびデータ・ファイルに対する更新を含む、多数のタイプのソフトウェア・ファイルまたはコンポーネント更新に対応するが、そのように限定される訳ではない。実行可能ファイル、または画像ファイルは、クライアント・デバイスにおいて用いられ、タスク、例えば、オペレーティング・システム（ＯＳ）を実行するソフトウェア・ファイル、ハードウェア・デバイス・ドライバ、およびＫ仮想機械（ＫＶＭ）ファイルを含む。バイト・ストリーム・ファイルは、その他の実行可能ファイル、例えば、アイコン・ファイル、ロゴ・ファイル、およびＭＰ３ファイルによって用いられるファイルを含む。データ・ファイルは、個人使用データ、およびハンドセット参照データを含むファイル、例えば、較正コンフィギュレーション・ファイル、プロトコル独立マルチキャスト（ＰＩＭ）ファイル、およびシステム・コンフィギュレーション・ファイルを含む。
【００３７】
一実施形態のアップグレード・クライアントは、関連出願に記載されているように、更新するファイル・タイプ、および更新に対応するためにクライアント・デバイスの製造業者が割り当てるリソースに応じて、ＥＢＳＣを更新するために多数の方法を用いる。一実施形態のこれら更新方法は、非クリティカル・コンポーネントの更新およびクリティカル・コンポーネントの更新を含み、これらのカテゴリは、更新の目標であるソフトウェア・コンポーネントによって設けられる機能に基づく。
【００３８】
非クリティカル・コンポーネントは、更新プロセス中の障害にしたがって、無線での復元が容易な埋め込みソフトウェア・コンポーネント（ＥＢＳＣ）を含む。非クリティカル・コンポーネントの例には、ブラウザおよびＫＶＭファイルが含まれるが、そのように限定される訳ではない。クリティカル・コンポーネントは、デバイスの動作には重要な更新手順またはＥＢＳＣにおいて用いられるソフトウェア・コンポーネントを含む。更に、クリティカル・コンポーネントは、更新プロセス中の障害に応じて、無線での復元が容易ではないＥＢＳＣも含む。クリティカル・コンポーネントの例には、オペレーティング・システムのファイル、プロトコル・スタック、アップグレード・クライアント・ファイル、通信ライブラリ、およびディスプレイまたはＬＣＤドライバ・ファイルが含まれるが、これらに限定される訳ではない。
【００３９】
クライアント・デバイス１２２は、更新手順に関与する前に、多数のデバイス・パラメータのステータスを判定する。これは、当該デバイスが更新手順に適していることを予め判定するため、即ち、クライアント・デバイスの条件が、更新手順を一旦始めたならば完了できるようになっていることを確認するために行われる。クライアント・デバイスの事前適格性判断は、クライアント・デバイスがクレードル(cradle)即ち充電モードにあるか否か、クライアント・デバイスがシリアル・ケーブルに接続されているか否か、バッテリの充電状態が更新プロセスを実行するには十分か否か、受信信号強度指示（ＲＳＳＩ）即ち信号強度がデータ転送には十分か否か、および目標のＥＢＳＣが現在使用中か否かについて判定を行うことを含むが、これらに限定される訳ではない。
【００４０】
クライアント・デバイス１２２が更新手順に適しているか事前に判断するにも拘わらず、更新中に、ハードウェアの故障、電力（バッテリ）切れ、およびネットワーク接続の障害などの結果として、更新において障害が発生する可能性がある。一実施形態のアップグレード・システム１００は、クライアント・デバイス１２２を更新前の状態に復元し、障害の時点において進行中であった更新を再開するかまたは初めからやり直すことによって、フェール・セーフ・ソフトウェア・ファイル更新を行う。アップグレード・サーバ２０４およびアップグレード・クライアント１２６のコンポーネントには、自動障害復元機構が含まれ、以下に説明するような、フェール・セーフ更新を行う。
【００４１】
一実施形態のクライアント・デバイスは、モジュールに基づくメモリ管理（ＭＢＭＭ）ＥＢＳＣにおける、ファイル・コンフィギュレーション・データと呼ばれる、クライアント・デバイス・ソフトウェアのＥＢＳＣ間の関係のデータを格納する。ＭＢＭＭ  ＥＢＳＣを、ここでは、コンフィギュレーション・ファイルと呼ぶ。また、コンフィギュレーション・データは、アプグレード・ステータス情報も含む。アプグレード・ステータス情報は、例えば、アプグレード試行中に障害または誤りが発生したかに関する情報を含む、クライアント・デバイス・ソフトウェアに対するアップグレードのステータスに関する詳細情報を含む。クライアント・デバイスの動作に対するコンフィギュレーション・データの重要性のために、アップグレード・クライアントは、正確なコンフィギュレーション・データにアクセスするだけでなく、以下のように、ファイルのアップデートを通じてコンフィギュレーション・データを維持する。
【００４２】
図３は、一実施形態の下においてクライアント・デバイス・コンフィギュレーション・ファイルのコンフィギュレーション・データにアクセスするためのフロー図３００である。アップグレード・クライアントは、ブロック３０２において、検証計算またはアルゴリズムを用いて、原型コンフィギュレーション・データの正確さを検証する。ここに記載する実施形態は検証プロセスまたはアルゴリズムの使用を含み、これらは、例えば、チェックサム値または巡回冗長コード（ＣＲＣ）を用いるが、実施形態は、当業者が想定するいずれの検証プロセスまたはアルゴリズムでも用いることができる。検証計算またはアルゴリズムは、適宜、チェックサムまたはＣＲＣを再計算し、それを、原型コンフィギュレーション・データと共にクライアント・デバイス内に格納されている対応する値と比較する。ブロック３０４において、検証によって、原型コンフィギュレーション・データが正確である、即ち、誤りがないことが示された場合、アップデート・クライアントは、ブロック３０６において、原型コンフィギュレーション・データを用いて処理を進める。
【００４３】
ブロック３０４において、検証によって、原型コンフィギュレーション・データに誤りが含まれていることが示された場合、アップグレード・クライアントは、ブロック３０８において、バックアップ・コンフィギュレーション・データがクライアント・デバイス内において使用可能か否か判定を行う。クライアント・デバイスにおいてバックアップ・コンフィギュレーション・データが使用可能である場合、ブロック３１０において、アップグレード・クライアントは誤り復元プロセスに進む。誤り復元プロセスは、以下で更に説明するが、正確なコンフィギュレーション・データをコンフィギュレーション・ファイルに再生する。バックアップ・コンフィギュレーション・データがクライアント・デバイスにおいて使用できない場合、ブロック３１２において、アップグレード・クライアントは、クライアント・デバイスのリソースを用いて、クライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバにこの誤りを報告する。
【００４４】
コンフィギュレーション・データに対してリード・アクセスを行うことに加えて、アップグレード・クライアントは、クライアント・デバイスの他のＥＢＳＣに行うのと同様に、コンフィギュレーション・データを維持し更新する。図４は、一実施形態の下においてクライアント・デバイス・コンフィギュレーション・ファイルをアップグレードするためのフロー図４００である。前述のように、アップグレード・クライアントは、原型コンフィギュレーション・データをアップグレードする際に用いるために、アップグレード・ファイルを受信する。アップグレード・ファイルの受信に応答して、ブロック４０２において、アップグレード・クライアントは、例えば、チェックサムまたは巡回冗長チェック（ＣＲＣ）のような検証計算／アルゴリズムを用いて、クライアント・デバイス内に現在格納されている原型コンフィギュレーション・データの正確さを検証する。検証によって、ブロック４０４において、原型コンフィギュレーション・データが正確である、即ち、誤りがないことが示された場合、アプグレード・クライアントは、ブロック４０６において、原型コンフィギュレーション・データのアップグレードを進める。その際、原型コンフィギュレーション・データのバックアップ・バージョンを、クライアント・デバイスのメモリ（ＲＯＭ）内にあるバックアップ・コンフィギュレーション・ファイルに書き込む。また、アップグレード・クライアントは、ブロック４０６において、バックアップ・コンフィギュレーション・ファイルに書き込まれたバックアップ・コンフィギュレーション・データに対して検証計算を実行し、ブロック４０８において、バックアップ・コンフィギュレーション・データの正確さを検証する。ブロック４０８において、検証によって、バックアップ・コンフィギュレーション・データに誤りがないことが示された場合、アップグレード・クライアントは、ブロック４１０において、アップグレード・ファイルの情報を用いて、コンフィギュレーション・ファイルの原型コンフィギュレーション・データをアップグレードする。アップグレード・クライアントは、ブロック４１２において、アップグレードした、即ち、新しいコンフィギュレーション・データの正確さを検証し、アップグレードしたコンフィギュレーション・データに誤りがなければ、アップグレード・プロセスを終了する。
【００４５】
ブロック４０６における、バックアップ・コンフィギュレーション・データのバックアップ・コンフィギュレーション・ファイルへの書き込みに続いて、ブロック４０８において、検証の結果、バックアップ・コンフィギュレーション・データ内に誤りが示された場合、アップグレード・クライアントは、原型コンフィギュレーション・データをバックアップ・コンフィギュレーション・ファイルに書き込み、検証計算を実行するプロセスを繰り返す。この再書き込みおよび再計算のプロセスは、バックアップ・コンフィギュレーション・データをバックアップ・コンフィギュレーション・ファイルに書き込むことに成功するまで、またはプロセスが予め指定された回数であるＮ回、繰り返し終えるまで行われる。ブロック４２２において、予め指定された回数であるＮ回の再書き込みを行っても成功しなかった場合、ブロック４２６において、アップグレード・クライアントは、クライアント・デバイスのリソースを用いて、クライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバにこの誤りを報告し、アップグレード・プロセスを終了する。
【００４６】
ブロック４１０におけるコンフィギュレーション・データのアップグレードに続いて、ブロック４１２において、検証の結果、新たなコンフィギュレーション・データ内に誤りが示された場合、アップグレード・クライアントは、原型コンフィギュレーション・データをアップグレードし、検証計算を行うプロセスを繰り返す。この再書き込みおよび再計算のプロセスは、原型コンフィギュレーション・データを新たなコンフィギュレーション・データにアップグレードするのに成功するまで、またはこのプロセスを予め指定された回数であるＮ回繰り返し終えるまで行う。ブロック４２４において、予め指定された回数であるＮ回の再書き込みを行っても成功しなかった場合、ブロック４２６において、アップグレード・クライアントは、クライアント・デバイスのリソースを用いて、クライアント・デバイスおよびサーバ・プロバイダのアップグレード・サーバに誤りを報告し、アップグレード・プロセスを終了する。
【００４７】
ブロック４０４において、検証によって、コンフィギュレーション・テーブル・データが誤りを含んでいることが示された場合、アップグレード・クライアントは、ブロック４３２において、バックアップ・コンフィギュレーション・データがクライアント・デバイスにおいて使用可能か否か判定を行う。バックアップ・コンフィギュレーション・データがクライアント・デバイスにおいて使用可能である場合、ブロック４３４において、アップグレード・クライアントは誤り復元プロセスに進む。誤り復元プロセスは、正確なコンフィギュレーション・データをコンフィギュレーション・ファイルに再生する。その際、ブロック４３６において、バックアップ・コンフィギュレーション・ファイルからのバックアップ・コンフィギュレーション・データをコンフィギュレーション・ファイルに書き込むことによって、誤りのあるコンフィギュレーション・データをバックアップ・コンフィギュレーション・データによって上書きする。また、アップグレード・クライアントは、ブロック４０２において、バックアップ・コンフィギュレーション・データについて検証計算を行う。
【００４８】
ブロック４３２において、バックアップ・コンフィギュレーション・データがクライアント・デバイスにおいて使用可能でない場合、アップグレード・クライアントは、ブロック４２６において、クライアント・デバイスのリソースを用いて、クライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバにこの誤りを報告する。次いで、アップグレード・サーバはアップグレード・プロセスを終了する。
【００４９】
前述のように、コンフィギュレーション・ファイルをアップグレードすることに加えて、アップグレード・クライアントの実施形態は、クライアント・デバイス上に常駐するソフトウェアのＥＢＳＣのアップグレードも行う。このアップグレードは、差分ファイルおよび新ファイル全体の双方を用いたアップグレードを含む。これについては、以下で説明する。
【００５０】
図５Ａおよび図５Ｂは、一実施形態の下において、差分ファイルを用いて、クリティカル・コンポーネントを含むソフトウェア・コンポーネントをアップグレードするためのフロー図５００である。前述のように、アップグレード・クライアントは、アップグレード・ファイルに対応する原型ＥＢＳＣを更新する際に用いるアップグレード・ファイルを受信する。アップグレード・ファイルの受信に応答して、ブロック５０２において、アップグレード・クライアントは、検証アルゴリズムを用いて、アップグレード・ファイルの内容の正確さを検証する。検証によって、アプグレード・ファイルの内容に誤りがないことが示された場合、アップグレード・クライアントは、ブロック５０４において、原型ＥＢＳＣのアップグレードに進む。その際、クライアント・デバイスのリード・オンリ・メモリ（ＲＯＭ）からランダム・アクセス・メモリ（ＲＡＭ）に原型ＥＢＳＣをコピーする。あるいは、原型ＥＢＳＣは、クライアント・デバイスのメモリにおけるいずれのエリアからでも、クライアント・デバイスのメモリの他のいずれのエリアにでも、または同じメモリ・エリアの異なるセグメントにでもコピーすることができる。ブロック５０６において、アップグレード・クライアントは、旧ＥＢＳＣおよびアップグレード・ファイルを用いて新ＥＢＳＣを生成し、この新ＥＢＳＣに対して検証計算を行う。新ＥＢＳＣがクリティカル・コンポーネントである場合、ロック５０８において、新ＥＢＳＣのバックアップ・バージョンを生成し、検証する。
【００５１】
ブロック５１０において、クライアント・デバイスの任意のリセットまたはリブートを行った場合、アップグレード・クライアントは、ブロック５１２において、コンフィギュレーション・ファイルのコンフィギュレーション・ファイル・データをバックアップ・コンフィギュレーション・ファイルにコピーすることによって、クライアント・デバイスのＲＯＭ内バックアップ・コンフィギュレーション・ファイルを生成する。バックアップ・コンフィギュレーション・ファイルの正確さを検証することができるが、実施形態はそのように限定される訳ではない。続いて、ブロック５１４において、バックアップ・クライアントは、クライアント・デバイスのメモリから原型ＥＢＳＣを削除し、原型ＥＢＳＣが以前に占有していたクライアント・デバイスのメモリ・エリア内に新ＥＢＳＣを書き込み、クライアント・デバイスのメモリに書き込んだ新ＥＢＳＣの正確さを検証する。
【００５２】
新ＥＢＳＣの生成に応答して、アップグレード・クライアントは、ブロック５１６において、新ＥＢＳＣに応じて原型コンフィギュレーション・データを更新し、アップグレードした、即ち、新たなコンフィギュレーション・データの正確さを検証する。ＥＢＳＣのアップグレードが成功し、アップグレードしたコンフィギュレーション・データに誤りがない場合、アップグレード・クライアントは、ブロック５２０において新ＥＢＳＣのバックアップ・コピーを消去し、ブロック５２２においてバックアップ・コンフィギュレーション・ファイルを消去する。ブロック５２４において、追加のＥＢＳＣを更新する際に用いるために追加のアップグレード・ファイルが使用可能なときは、動作はブロック５０２に戻り、追加のアップグレードを処理する。それ以外の場合、アップグレード・プロセスは完了する。
【００５３】
ブロック５１８において、アップグレードしたコンフィギュレーション・データに誤りが含まれている場合、ブロック５２６において、アップグレード・クライアントは誤り復元を開始する。誤り復元プロセスについては、以下で更に説明する。
【００５４】
図６は、図５の実施形態の下において、差分ファイルを用いてのクリティカル・ソフトウェア・コンポーネントのアップグレードを示すブロック図である。この例のアップグレード・プロセスは、ＲＯＭ６０２およびＲＡＭ６０４メモリ双方における記憶位置を用いるが、代替実施形態では、クライアント・デバイスのメモリ１３０におけるエリアのいずれの組み合わせでも、あるいは同じメモリ・エリアの異なるセグメントをいずれの数でも用いることができる。
【００５５】
アップグレード・プロセスが開始するのは、アップグレード・クライアントが、アップグレード・ファイル６１０に対応する原型ＥＢＳＣをアップグレードする際に用いるアップグレード・ファイルを受信したときである。この例の目的のために、アップグレード・ファイル６１０は差分ファイルを含むが、あるいは、アップグレード・ファイル６１０は、差分ファイルおよび新ファイル全体または新ＥＢＳＣを含むこともできる。アップグレード・クライアントは、アップグレード・ファイル６１０をＲＡＭ６０４に格納し（６３０）、検証アルゴリズムを用いて、アップグレード・ファイルの内容を検証する。アップグレード・ファイル６１０に誤りがない場合、アップグレード・クライアントは、原型ＥＢＳＣ６１２のアップグレードに進み、原型ＥＢＳＣ６１４のコピーを生成するか、またはＲＡＭ６０４に書き込む（６３２）。アップグレード・クライアントは、原型ＥＢＳＣ６１４のコピーおよびアップグレード・ファイル６１０を用いて、新ＥＢＳＣ６１６を生成し、新ＥＢＳＣ６１６をＲＡＭ６０４に書き込む（６３４）。新ＥＢＳＣ６１６の正確さを検証し、この新ＥＢＳＣ６１６がクリティカル・コンポーネントである場合、新ＥＢＳＣのバックアップ・バージョン６１８を生成し、ＲＯＭ６０２に書き込む（６３６）。
【００５６】
クリティカル・ソフトウェア・コンポーネントのアップグレードを行う際、一実施形態のアップグレード・クライアントは、個々のファイルのバックアップ・コピーを生成し、これらバックアップ・コピーをクライアント・デバイスのメモリに格納する。クライアント・デバイスは、これらのバックアップ・コピーを、コンフィギュレーション・ファイルのアップグレード・ステータス情報と共に用いることにより、素早くそして自動的に、アップグレード・プロセスの間に誤りまたは障害から復元することができ、サービス・プロバイダから追加のファイルや情報をダウンロードする必要はない。
【００５７】
例えば、クライアント・デバイスをリセットする際、アップグレード・クライアントは、バックアップ・コンフィギュレーション・ファイル６２０を、クライアント・デバイスのメモリ、例えば、ＲＯＭ６０２内のある場所に書き込む（６３８）。バックアップ・コンフィギュレーション・ファイルを生成するには、原型コンフィギュレーション・ファイル６２２のコンフィギュレーション・データを、ＲＯＭ６０２内にあるバックアップ・コンフィギュレーション・ファイル６２０にコピーする。続いて、アップグレード・クライアントは、原型ＥＢＳＣ６１２をＲＯＭ６０２から削除し、ＲＯＭ６０２内にある新ＥＢＳＣのバックアップ・バージョン６１８から、新ＥＢＳＣを、以前に原型ＥＢＳＣ６１２が占有していたメモリ・エリア内に書き込み（６４０）、書き込んだ新ＥＢＳＣの正確さを検証する。次いで、アップグレード・クライアントは、新ＥＢＳＣに応じて、原型コンフィギュレーション・データ６２２をアップグレードする。ＥＢＳＣのアップグレードが成功し、アップグレードしたコンフィギュレーション・データに誤りがない場合、アップグレード・クライアントは、新ＥＢＳＣ６１８のバックアップ・バージョンおよびバックアップ・コンフィギュレーション・ファイル６２０をＲＯＭ６０２から削除する。
【００５８】
図７Ａおよび図７Ｂは、代替実施形態の下において、差分ファイルを用いてクリティカル・ソフトウェア・コンポーネントを更新するためのフロー図７００である。前述のように、アップグレード・クライアントは、アップグレード・ファイルに対応する原型ＥＢＳＣを更新する際に用いるために、差分ファイルを含むアップグレード・ファイルを受信する。アップグレード・ファイルの受信に応答して、アップグレード・クライアントは、ブロック７０２において、検証アルゴリズムを用いて、アップグレード・ファイルの内容を検証する。検証によって、アップグレード・ファイルの内容に誤りがないことが示された場合、ブロック７０４において、アップグレード・クライアントは原型ＥＢＳＣのアップグレードに進み、アップグレード・ファイルのバックアップ・バージョンをクライアント・デバイスのＲＯＭに生成する。
【００５９】
ブロック７０６において、クライアント・デバイスの任意のリセットまたはリブートを実行するときに、アップグレード・クライアントは、ブロック７０８において、アップグレード・ファイルのバックアップ・バージョンをＲＯＭからＲＡＭにコピーする。アップグレード・クライアントは、ブロック７１０において、原型ＥＢＳＣのバックアップ・バージョンを生成し、ブロック５１２において、バックアップ・コンフィギュレーション・ファイルを生成し、これら双方をクライアント・デバイスのＲＯＭ内にあるバックアップ・ファイルに書き込む。また、アップグレード・クライアントは、ブロック７１４において、原型ＥＢＳＣをクライアント・デバイスのＲＯＭからＲＡＭにコピーする。
【００６０】
アップグレード・クライアントは、ブロック７１６において、原型ＥＢＳＣおよびクライアント・デバイスのＲＯＭに格納されているアップグレード・ファイルを用いて、新ＥＢＳＣを生成する。また、アップグレード・クライアントは、新ＥＢＳＣに対して検証計算を行うが、そのように限定される訳ではない。次に、ブロック７１８において、アップグレード・クライアントは、原型ＥＢＳＣをクライアント・デバイスのＲＯＭから削除し、新ＥＢＳＣをＲＡＭから、原型ＥＢＳＣが以前に占有していたＲＯＭのエリアに書き込み、ＲＯＭに書き込まれた新ＥＢＳＣの正確さを検証する。
【００６１】
新ＥＢＳＣの生成に応答して、アップグレード・クライアントは、新ＥＢＳＣに応じて、原型コンフィギュレーション・データをアップグレードする。ＥＢＳＣのアップグレードが成功し、アップグレードしたコンフィギュレーション・データに誤りがない場合、アップグレード・クライアントは、ブロック７２４において、原型ＥＢＳＣのバックアップ・コピーを消去し、ブロック７２６において、バックアップ・コンフィギュレーション・ファイルを消去する。ブロック７２８において、追加のＥＢＳＣをアップグレードする際に使用するために追加のアップグレード・ファイルが使用可能な場合、動作はブロック７０２に戻り、追加のアップグレードを処理する。それ以外の場合、アップグレード・プロセスは完了する。
【００６２】
ブロック７２２において、アップグレードしたコンフィギュレーション・データに誤りが含まれている場合、アップグレード・クライアントは、ブロック７３０において、誤り復元を開始する。この誤り復元プロセスについては、以下で更に説明する。
【００６３】
図８は、図７Ａおよび図７Ｂの実施形態の下において、差分ファイルを用いてのクリティカル・ソフトウェア・コンポーネントのアップグレードを示すブロック図である。この例のアップグレード・プロセスは、クライアント・デバイスのメモリのＲＯＭ８０２およびＲＡＭ８０４のエリア双方における記憶位置を用いるが、代替実施形態では、クライアント・デバイスのメモリ１３０におけるエリアのいずれの組み合わせでも、または同じメモリ・エリアのいずれの数の異なるセグメントでも用いることができる。
【００６４】
アップグレード・プロセスが開始するのは、アップグレード・クライアントが、アップグレード・ファイル８１０に対応する原型ＥＢＳＣ８１２をアップグレードする際に用いるアップグレード・ファイル８１０を受信したときである。この例の目的のために、アップグレード・ファイル８１０は差分ファイルを含むが、あるいは、アップグレード・ファイル８１０は、差分ファイルと新ファイル全体または新ＥＢＳＣを含むことができる。アップグレード・クライアントは、アップグレード・ファイル８１０をＲＡＭ８０４に格納し、即ち、書き込み（８３０）、検証アルゴリズムを用いて、アップグレード・ファイルの内容の正確さを検証する。アップグレード・ファイル８１０に誤りがない場合、アップグレード・クライアントは、原型ＥＢＳＣ８１２のアップグレードを進める。その際、アップグレード・ファイル８２４のバックアップ・バージョンを生成しクライアント・デバイスのＲＯＭ８に格納する（８３２）。
【００６５】
クライアント・デバイスをリセットするとき、アップグレード・クライアントは、アップグレード・ファイル８２４のバックアップ・バージョンをＲＯＭ８０２からＲＡＭ８０４に書き込む（８３４）。次いで、アップグレード・クライアントは、原型ＥＢＳＣ８２６のバックアップ・バージョンをＲＯＭに書き込み（８３６）、バックアップ・コンフィギュレーション・ファイル８２０をＲＯＭ８０２に書き込む（８３８）。また、アップグレード・クライアントは、原型ＥＢＳＣ８１４のコピーを、ＲＯＭ８０２内にある原型ＥＢＳＣ８１２からＲＡＭ８０４に書き込む（８４０）。
【００６６】
アップグレード・クライアントは、原型ＥＢＳＣ８１４のコピーおよびＲＡＭ８０４に格納されているアップグレード・ファイル８１０を用いて、新ＥＢＳＣ８１６を生成する（８４２）。また、アップグレード・クライアントは、新ＥＢＳＣ８１６に対して検証計算も行うが、そのように限定される訳ではない。続いて、アップグレード・クライアントは、原型ＥＢＳＣ８１２をＲＯＭ８０２から削除し、新ＥＢＳＣ８１６をＲＡＭ８０４から、以前原型ＥＢＳＣ１８２が占有していたＲＯＭのエリアに書き込み（８４２）、ＲＯＭ８０２に書き込まれた新ＥＢＳＣの正確さを検証する。
【００６７】
また、新ＥＢＳＣ８１６の生成に応答して、アップグレード・クライアントは、新ＥＢＳＣ８１６に応じて、原型コンフィギュレーション・データ８２２も更新し、更新した、アップグレードした、即ち、新たなコンフィギュレーション・データの正確さを検証する。ＥＢＳＣのアップグレードが成功であり、アップグレードしたコンフィギュレーション・データに誤りがない場合、アップグレード・クライアントは、原型ＥＢＳＣ８２６のバックアップ・コピーおよびバックアップ・コンフィギュレーション・ファイル８２０を消去し、アップグレード・プロセスを終了する。
【００６８】
図９は、一実施形態の下において、新ファイルを用いてクリティカル・ソフトウェア・コンポーネントをアップグレードするためのフロー図９００である。ブロック９０２において、アップグレード・クライアントは、アップグレード・ファイルに対応する原型ファイルを更新する際に用いるためのアップグレード・ファイルを受信し、検証アルゴリズムを用いて、アップグレード・ファイルの内容の正確さを検証する。この例では、アップグレード・ファイルは完全な新ＥＢＳＣまたはファイルを含むが、実施形態はそのように限定される訳ではない。検証によって、新ファイルの内容に誤りがないことが示された場合、アップグレード・クライアントは、ブロック９０４において原型ファイルのアップグレードに進む。その際、新ファイルのバックアップ・バージョンを生成し、新ファイルがクリティカル・ソフトウェア・コンポーネントである場合、新ファイルのバックアップ・バージョンの正確さを検証する。
【００６９】
ブロック９０６においてクライアント・デバイスのリセットまたはリブートを実行する際、そのタイミングは任意であるが、アップグレード・クライアントは、ブロック９０８において、コンフィギュレーション・ファイルのコンフィギュレーション・ファイル・データをバックアップ・コンフィギュレーション・ファイルにコピーすることによって、クライアント・デバイスのＲＯＭ内にバックアップ・コンフィギュレーション・ファイルを生成する。バックアップ・コンフィギュレーション・ファイルの正確さを検証することができるが、実施形態はそのように限定される訳ではない。続いて、アップグレード・クライアントは、ブロック９１０において、新ファイルのバックアップ・バージョンを、クライアント・デバイスが用いるために、クライアント・デバイスのメモリのしかるべきエリアに書き込み、書き込まれた新ファイルの正確さを検証する。
【００７０】
検証によって、新ファイルの内容に誤りがないことが示された場合、アップグレード・クライアントは先に進んで、ブロック９１２において、新ファイルに応じて原型コンフィギュレーション・データをアップグレードし、アップグレードした、即ち、新たなコンフィギュレーション・データの正確さを検証する。新ファイルのアップグレードが成功であり、アップグレードしたコンフィギュレーション・データに誤りがない場合、アップグレード・クライアントは、ブロック９１６において、新ファイルのバックアップ・コピーを消去し、ブロック９１８において、バックアップ・コンフィギュレーション・ファイルを消去する。ブロック９２０において、追加のファイルを更新する際に用いる追加のアップグレード・ファイルが使用可能な場合、動作はブロック９０２に戻り、追加のアップグレードを処理する。それ以外の場合、アップグレード・プロセスは完了する。
【００７１】
ブロック９１４において、アップグレードしたコンフィギュレーション・データに誤りが含まれる場合、アップグレード・クライアントは、ブロック９２２において、誤り復元を開始する。誤り復元プロセスについては、以下で更に説明する。
【００７２】
図１０は、図９の実施形態の下において、新ファイルを用いてのクリティカル・ソフトウェア・コンポーネントの更新を示すブロック図である。この例のアップグレード・プロセスは、ＲＯＭ１００２およびＲＡＭ１００４双方における記憶位置を用いるが、代替実施形態では、クライアント・デバイスのメモリ１３０におけるエリアのあらゆる組み合わせ、または同じメモリ・メモリのあらゆる数の異なるセグメントでも用いることができる。
【００７３】
アップグレード・プロセスが開始するのは、アップグレード・クライアントが、クライアント・デバイス・ソフトウェアを更新する際に用いるアップグレード・ファイル１０１０を受信したときである。この例の目的のために、アップグレード・ファイル１０１０は、新ファイル全体を含むが、そのように限定される訳ではなく、差分ファイルおよび／またはいずれの数の新ＥＢＳＣでも含むことができる。アップグレード・クライアントは、新ファイル１０１０をＲＡＭ１００４に書き込み（１０３０）、検証アルゴリズムを用いて、新ファイルの内容の正確さを検証する。
【００７４】
新ファイル１０１０に誤りがない場合、アップグレード・クライアントは、クライアント・デバイスのソフトウェア・ファイルの更新に進む。その際、新ファイル１０１２のバックアップ・バージョンを生成し、ＲＯＭ１００２に書き込む（１０３２）。新ファイルがクリティカル・ソフトウェア・コンポーネントである場合、新ファイル１０１２のバックアップ・バージョンの正確さを検証する。
【００７５】
クライアント・デバイスをリセットする際、そのタイミングは任意であるが、アップグレード・クライアントは、バックアップ・コンフィギュレーション・ファイル１０１６をＲＯＭ１００２内に生成する（１０３４）。バックアップ・コンフィギュレーション・ファイル１０１６を生成するには、原型コンフィギュレーション・ファイル１０１４のコンフィギュレーション・データをバックアップ・コンフィギュレーション・ファイル１０１６にコピーする。続いて、アップグレード・クライアントは、新ファイル１０１２のバックアップ・バージョンを、クライアント・デバイスが用いるために、クライアント・デバイスのメモリのしかるべきエリア１０１８に書き込み（１０３６）、書き込んだ新ファイルの正確さを検証する。次いで、アップグレード・クライアントは、新ファイルにしたがって、原型コンフィギュレーション・データ１０１４をアップグレードする。ファイルのアップグレードが成功であり、アップグレードしたコンフィギュレーション・データに誤りがない場合、アップグレード・クライアントは、新ファイル１０１２のバックアップ・バージョンおよびバックアップ・コンフィギュレーション・ファイル１０１６を消去する。
【００７６】
アップグレード・クライアントが用いるアップグレード方法には係わらず、アップグレード・システムは、クライアント・デバイスにフェール・セーフ・ソフトウェア・アップグレードを設け、ソフトウェア・アップグレード中における障害に応答して、クライアント・デバイスを所定の状態に復元する。一実施形態のアップグレード・システムは、クライアント・デバイスを更新前の状態に復元し、復元の時点において進行中であった更新を再開するか、または初めからやり直す。復元プロセスは、差分ファイルを用いたクリティカル・コンポーネントのアップグレード中に誤りから復元し、差分ファイルを用いた非クリティカル・コンポーネントのアップグレード中に誤りから復元し、新ファイルを用いたクリティカル・コンポーネントのアップデート中に誤りから復元し、新ファイルを用いた非クリティカル・コンポーネントのアップグレード中に誤りから復元するアルゴリズムを含む。これらについて以下に説明する。
【００７７】
図１１は、一実施形態の下において、差分ファイルを用いてのクリティカル・コンポーネントのアップグレード中にアップグレード・プロセスにおいて発生した誤りからクライアント・デバイスを復元するためのフロー図１１００である。ファイルのアップグレードを行う際、アップグレード・クライアントは、開始すると、新ファイルが使用可能であることに応答して、ブロック１１０２において、ファイルのアップグレードが初めて行われているのか、またはクライアント・デバイスは以前のアップグレード試行中に発生した誤りから復元しようとしているのか判定を行う。
【００７８】
ファイルのアップデートが行われるのが初めてである場合、アップグレード・クライアントは、ブロック１１０４において、アップグレード・ファイルに対応する原型ＥＢＳＣをアップグレードする際に用いる、差分ファイルの形態のアップグレード・ファイルを受信する。差分ファイルの受信に応答して、アップグレード・クライアントは、ブロック１１０６において差分ファイルのチェックサム値を用いて差分ファイルの内容には誤りがないか否か判定を行う。この差分ファイルを受信し、ファイル内容の正確さを評価するプロセスは、誤りのない差分ファイルが受信されるまで、または予め指定された回数であるＮ回プロセスを繰り返し終えるまで繰り返す。ブロック１１３０において、予め指定された回数のＮ回だけプロセスを繰り返しても成功しなかった場合、アップグレード・クライアントは、ブロック１１２６において、クライアント・デバイスのリソースを用いて、誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告する。
【００７９】
ブロック１１０４において、正確な差分ファイルの受信に応答して、アップグレード・クライアントは、ブロック１１０８において、原型ＥＢＳＣの内容の正確さを検証する。ブロック１１１０において、原型ＥＢＳＣのチェックサム値が正しくないと判定された場合、正しいチェックサム値が計算されるまで、または原型ＥＢＳＣのチェックサムを計算するプロセスを予め指定した回数であるＮ回繰り返し終えるまで、このプロセスを繰り返す。ブロック１１３２において、予め指定した回数のＮ回だけプロセスを繰り返しても成功しなかった場合、アップグレード・クライアントは、ブロック１１４０において、クライアント・デバイスのリソースを用いて、この誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１１２６においてアップグレード・プロセスを終了する。
【００８０】
ブロック１１１０において、原型ＥＢＳＣの内容が正確であると判定された場合、アップグレード・クライアントは、ブロック１１１２において、原型ＥＢＳＣおよび差分ファイルを用いて、新ＥＢＳＣを生成する。また、アップグレード・クライアントは、新ＥＢＳＣの内容に対する検証計算も行う。ブロック１１１４において、新ＥＢＳＣのチェックサム値が正しくないと判定された場合、正しいチェックサム値が計算されるまで、または新ＥＢＳＣを生成しチェックサムを計算するプロセスを予め指定した回数であるＮ回繰り返し終えるまで、このプロセスを繰り返す。ブロック１１３４において、予め指定した回数Ｎ回だけプロセスを繰り返しても成功しなかった場合、ブロック１１４０において、アップグレード・クライアントはクライアント・デバイスのリソースを用いて、誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１１２６においてアップグレード・プロセスを終了する。
【００８１】
アップグレード・クライアントが、ブロック１１１４において、新ＥＢＳＣの内容が正しいと判定した場合、ステップ１１１６において、新ＥＢＳＣのバックアップ・バージョンを生成し、デバイスのメモリに書き込む。新ＥＢＳＣのバックアップ・バージョンの正確さも、チェックサム値を用いて検証する。ブロック１１１８において、新ＥＢＳＣブロックのバックアップ・バージョンのチェックサム値が正しくないと判定された場合、新ＥＢＳＣのバックアップ・バージョンを生成し、正しいチェックサム値が計算されるまで、またはこのチェックサムを計算するプロセスを予め指定した回数であるＮ回繰り返すまで、このプロセスを繰り返す。ブロック１１３６において、予め指定した回数のＮ回プロセスを繰り返して成功しなかった場合、ブロック１１４０において、アップグレード・クライアントは、クライアント・デバイスのリソースを用いて、この誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１１２６において、アップグレード・プロセスを終了する。
【００８２】
ブロック１１１８において、新ＥＢＳＣのバックアップ・バージョンの正確さを検証するとき、アップグレード・クライアントは、ブロック１１２０において、デバイスのＲＯＭ内にある原型ＥＢＳＣを新ＥＢＳＣと置き換える。デバイスのＲＯＭに書き込まれた新ＥＢＳＣに対してチェックサム計算を行い、ファイルの正確さを検証する。ブロック１１２２において、新ＥＢＳＣのチェックサム値が正しくないと判定された場合、正しいチェックサム値が計算され、新ＥＢＳＣがデバイスのＲＯＭに適正に書き込まれたことを示すまで、または新ＥＢＳＣをデバイスのＲＯＭに書き込みチェックサムを計算するプロセスを予め指定した回数であるＮ回繰り返し終えるまで、このプロセスを繰り返す。ブロック１１３８において、予め指定した回数のＮ回プロセスを繰り返して成功しなかった場合、ブロック１１４０において、アップグレード・クライアントは、クライアント・デバイスのリソースを用いて、この誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１１２６において、アップグレード・プロセスを終了する。
【００８３】
ブロック１１２２において、デバイスのＲＯＭに書き込まれた新ＥＢＳＣの正確さを検証する際、アップグレード・クライアントは、ブロック１１２４において、対応する原型ＥＢＳＣを更新する際に用いるために、追加の差分ファイルが使用可能であるか否か判定を行う。動作は、ブロック１１０６に戻り、あらゆる追加の差分ファイルを処理する。それ以外の場合、ブロック１１２６において、アップグレード・プロセスは終了する。
【００８４】
ブロック１１０２において、アップグレード・クライアントが、以前のアップグレード試行中に発生した誤りからデバイスを復元しつつあると判定した場合、アップグレード・クライアントは、ブロック１１４０において、復元を開始して、バックアップ・コンフィギュレーション・ファイルがクライアント・デバイスにおいて使用可能か否か判定を行う。先に示したように、バックアップ・コンフィギュレーション・ファイルは、バックアップ・コンフィギュレーション・データを含む。バックアップ・コンフィギュレーション・データが使用可能な場合、アップグレード・クライアントは、ブロック１１４２において、関連するチェックサム値を評価することによって、バックアップ・コンフィギュレーション・データが正しいか否か判定を行う。ブロック１１４０において、バックアップ・コンフィギュレーション・データがクライアント・デバイスにおいて使用可能でない場合、またはブロック１１４２において、バックアップ・コンフィギュレーション・データが使用可能であるが、データに誤りがあることをチェックサム値が示す場合、アップグレード・クライアントは、ブロック１１６０において、クライアント・デバイスのリソースを用いて、この誤りを、クライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告する。次いで、アップグレード・クライアントは、ブロック１１６２において、アップグレード・プロセスを終了する。
【００８５】
クライアント・デバイスにおいて、誤りのないバックアップ・コンフィギュレーション・データが使用可能な場合、アップグレード・クライアントは、ブロック１１４４において、バックアップ・コンフィギュレーション・データを、原型コンフィギュレーション・ファイル内にある原型コンフィギュレーション・データに上書きする。次いで、アップグレード・クライアントは、ブロック１１４６において、クライアント・デバイスにおいて新ＥＢＳＣのバックアップ・バージョンの使用可能性について判定を行う。
【００８６】
新ＥＢＳＣのバックアップ・バージョンがクライアント・デバイスにおいて使用可能な場合、アップグレード・クライアントは、ブロック１１４８において、新ＥＢＳＣのバックアップ・バージョンを、デバイスのメモリ内にある対応する原型ＥＢＳＣに上書きすることによって、原型ＥＢＳＣをアップグレードする。続いて、ブロック１１５０において、新ＥＢＳＣに応じてコンフィギュレーション・データをアップグレードする。次いで、アップグレード・クライアントは、ブロック１１５２において、他の原型ＥＢＳＣをアップグレードする際に用いるために、追加の差分ファイルが使用可能か否か判定を行う。動作はブロック１１０６に戻り、いずれの追加の差分ファイルをも処理する。それ以外の場合、アップグレード・プロセスはブロック１１２６において終了する。
【００８７】
ブロック１１４６において、新ＥＢＳＣのバックアップ・バージョンがクライアント・デバイスにおいて使用可能でないことがわかった場合、アップグレード・クライアントは、ブロック１１６４において、アップグレード・サーバから対応する原型ＥＢＳＣを検索する。原型ＥＢＳＣを受信すると、アップグレード・クライアントは、ブロック１１１０において、前述のように、新ＥＢＳＣの再生成に進む。
【００８８】
図１２は、一実施形態の下において、差分ファイルを用いての非クリティカル・コンポーネントのアップグレード中にアップグレード処理において発生する誤りからクライアント・デバイスを復元するためのフロー図１２００である。ファイルの更新を行う際に、アップグレード・クライアントは開始すると、新ファイルが使用可能であることに応答して、ブロック１２０２において、ファイルのアップグレードが初めて行われているのか、またはクライアント・デバイスは以前のアップグレード試行中に発生した誤りから復元しようとしているのか判定を行う。
【００８９】
ファイルのアップデートが行われるのが初めてである場合、アップグレード・クライアントは、ブロック１２０４において、アップグレード・ファイルに対応する原型ＥＢＳＣをアップグレードする際に用いるアップグレード・ファイルを、差分ファイルの形態で受信する。差分ファイルの受信に応答して、アップグレード・クライアントは、ブロック１２０６において差分ファイルのチェックサム値を用いて差分ファイルの内容には誤りがないか否か判定を行う。この差分ファイルを受信しファイル内容の正確さを評価するプロセスは、誤りのない差分ファイルが受信されるまで、または予め指定された回数であるＮ回プロセスを繰り返し終えるまで、繰り返す。ブロック１２３０において、予め指定された回数のＮ回だけプロセスを繰り返しても成功しなかった場合、アップグレード・クライアントは、ブロック１２３６において、クライアント・デバイスのリソースを用いて、誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告する。
【００９０】
ブロック１２０４において、正確な差分ファイルの受信に応答して、アップグレード・クライアントは、ブロック１２０８において、原型ＥＢＳＣおよび差分ファイルを用いて新ＥＢＳＣを生成する。また、アップグレード・クライアントは、新ＥＢＳＣの内容に対して検証計算も行う。ブロック１２１０において、新ＥＢＳＣのチェックサム値が正しくないと判定された場合、正しいチェックサム値が計算されるまで、または新ＥＢＳＣを生成しチェックサムを計算するプロセスを予め指定した回数であるＮ回繰り返し終えるまで、このプロセスを繰り返す。ブロック１２３２において、予め指定した回数のＮ回だけプロセスを繰り返しても成功しなかった場合、アップグレード・クライアントは、ブロック１１４０において、クライアント・デバイスのリソースを用いて、この誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１２３６においてアップグレード・プロセスを終了する。
【００９１】
ブロック１２１０において、新ＥＢＳＣの内容が正確であると判定された場合、アップグレード・クライアントは、ブロック１２１２において、デバイスのＲＯＭ内にある原型ＥＢＳＣを新ＥＢＳＣで置き換える。ブロック１２１４において、デバイスのＲＯＭに書き込まれた新ＥＢＳＣに対してチェックサムの計算を行い、ファイルの正確さを検証する。ブロック１２１６において、新ＥＢＳＣのチェックサム値が正しくないと判定された場合、正しいチェックサム値が受信され、新ＥＢＳＣが適正にデバイスのＲＯＭに書き込まれたことが示されるまで、またはクライアント・デバイスのＲＯＭに書き込まれた新ＥＢＳＣのチェックサムを計算するプロセスを予め指定した回数であるＮ回繰り返し終えるまで、このプロセスを繰り返す。ブロック１２３４において、予め指定した回数のＮ回だけプロセスを繰り返しても成功しなかった場合、アップグレード・クライアントはクライアント・デバイスのリソースを用いて、この誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１２３６においてアップグレード・プロセスを終了する。
【００９２】
ブロック１２１６において、デバイスのＲＯＭに書き込まれた新ＥＢＳＣの正確さを検証するとき、アップグレード・クライアントは、ブロック１２１８において、対応する原型ＥＢＳＣをアップグレードする際に用いる、追加の差分ファイルが使用可能か否か判定を行う。動作は、ブロック１２０６に戻り、あらゆる追加の差分ファイルを処理する。それ以外の場合、ブロック１２２０において、アップグレード・プロセスは終了する。
【００９３】
ブロック１２０２において、アップグレード・クライアントが、以前のアップグレード試行中に発生した誤りからデバイスを復元しつつあると判定した場合、アップグレード・クライアントは、ブロック１２４０において、復元を開始して、バックアップ・コンフィギュレーション・ファイルがクライアント・デバイスにおいて使用可能か否か判定を行う。先に示したように、バックアップ・コンフィギュレーション・ファイルは、バックアップ・コンフィギュレーション・データを含む。バックアップ・コンフィギュレーション・データが使用可能な場合、アップグレード・クライアントは、ブロック１２４２において、関連するチェックサム値を評価することによって、バックアップ・コンフィギュレーション・データが正しいか否か判定を行う。ブロック１２４０において、バックアップ・コンフィギュレーション・データがクライアント・デバイスにおいて使用可能でない場合、またはブロック１２４２において、バックアップ・コンフィギュレーション・データが使用可能であるが、データに誤りがあることをチェックサム値が示す場合、アップグレード・クライアントは、ブロック１２６０において、クライアント・デバイスのリソースを用いて、この誤りを、クライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告する。次いで、アップグレード・クライアントは、ブロック１２６２において、アップグレード・プロセスを終了する。
【００９４】
クライアント・デバイスにおいて、誤りのないバックアップ・コンフィギュレーション・データが使用可能な場合、アップグレード・クライアントは、ブロック１２４４において、バックアップ・コンフィギュレーション・データを、原型コンフィギュレーション・ファイル内にある原型コンフィギュレーション・データに上書きする。次いで、アップグレード・クライアントは、ブロック１２４６において、アップグレード・サーバから、対応する原型ＥＢＳＣを検索する。原型ＥＢＳＣを受信すると、アップグレード・クライアントは、ブロック１２１０において、前述のように、新ＥＢＳＣの再生成に進む。
【００９５】
図１３は、一実施形態の下において、新ファイルまたはＥＢＳＣを用いてのクリティカル・コンポーネントのアップグレード中にアップグレード・プロセスにおいて発生した誤りからクライアント・デバイスを復元するためのフロー図１３００である。ファイルのアップグレードを行う際、アップグレード・クライアントは、開始すると、新ファイルが使用可能であることに応答して、ブロック１３０２において、ファイルのアップグレードが初めて行われているのか、またはクライアント・デバイスは以前のアップグレード試行中に発生した誤りから復元しようとしているのか判定を行う。
【００９６】
ファイルのアップデートが行われるのが初めてである場合、アップグレード・クライアントは、ブロック１３０４において、アップグレード・ファイルに対応する原型ＥＢＳＣをアップグレードする際に用いるアップグレード・ファイルを、新ＥＢＳＣの形態で受信する。新ＥＢＳＣの受信に応答して、アップグレード・クライアントは、ブロック１３０６において新ＥＢＳＣのチェックサム値を用いて新ＥＢＳＣの内容には誤りがないか否か判定を行う。この新ＥＢＳＣを受信し、ファイル内容の正確さを評価するプロセスは、誤りのない新ファイルが受信されるまで、または予め指定された回数であるＮ回プロセスを繰り返し終えるまで、繰り返す。ブロック１３３０において、予め指定された回数のＮ回だけプロセスを繰り返しても成功しなかった場合、アップグレード・クライアントは、ブロック１３３６において、クライアント・デバイスのリソースを用いて、誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１３１８においてアップグレード・プロセスを終了する。
【００９７】
ブロック１３０４において、正確な新ＥＢＳＣの受信に応答して、アップグレード・クライアントは、ブロック１３０８において、新ＥＢＳＣのバックアップ・バージョンを生成し、バックアップ・バージョンに対応するチェックサム値を計算する。ブロック１３１０において、新ＥＢＳＣのバックアップ・バージョンのチェックサム値が正しくないと判定された場合、正しいチェックサム値が計算されるまで、または新ＥＢＳＣのバックアップ・バージョンを生成し対応するチェックサムを計算するプロセスを予め指定した回数であるＮ回繰り返し終えるまで、このプロセスを繰り返す。ブロック１３３２において、予め指定した回数のＮ回だけプロセスを繰り返しても成功しなかった場合、アップグレード・クライアントは、ブロック１３３６において、クライアント・デバイスのリソースを用いて、この誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１３１８においてアップグレード・プロセスを終了する。
【００９８】
ブロック１３１０において、新ＥＢＳＣの内容が正確であると判定された場合、アップグレード・クライアントは、ブロック１３１２において、デバイスのＲＯＭ内にある原型ＥＢＳＣを新ＥＢＳＣで置き換える。新ＥＢＳＣに対してチェックサムの計算を行い、ファイルの正確さを検証する。ブロック１３１４において、新ＥＢＳＣのチェックサム値が正しくないと判定された場合、正しいチェックサム値が計算され、新ＥＢＳＣが適正にデバイスのＲＯＭに書き込まれたことが示されるまで、または新ＥＢＳＣをデバイスのＲＯＭに書き込みチェックサムを計算するプロセスを予め指定した回数であるＮ回繰り返し終えるまで、このプロセスを繰り返す。ブロック１３３４において、予め指定した回数のＮ回だけプロセスを繰り返しても成功しなかった場合、ブロック１３３６において、アップグレード・クライアントはクライアント・デバイスのリソースを用いて、誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１３１８においてアップグレード・プロセスを終了する。
【００９９】
ブロック１３１４において、新ＥＢＳＣのバックアップ・バージョンの正確さを検証するとき、アップグレード・クライアントは、ブロック１３１６において、対応する原型ＥＢＳＣを更新する際に用いるために、追加の差分ファイルが使用可能であるか否か判定を行う。動作は、ブロック１３０４に戻り、あらゆる追加の新ＥＢＳＣを処理する。それ以外の場合、ブロック１３１８６において、アップグレード・プロセスは終了する。
【０１００】
ブロック１３０２において、アップグレード・クライアントが、以前のアップグレード試行中に発生した誤りからデバイスを復元しつつあると判定した場合、アップグレード・クライアントは、ブロック１３４０において、復元を開始して、バックアップ・コンフィギュレーション・ファイルがクライアント・デバイスにおいて使用可能か否か判定を行う。バックアップ・コンフィギュレーション・データがバックアップ・コンフィギュレーション・ファイルにおいて使用可能な場合、アップグレード・クライアントは、ブロック１３４２において、関連するチェックサム値を評価することによって、バックアップ・コンフィギュレーション・データが正しいか否か判定を行う。ブロック１３４０において、バックアップ・コンフィギュレーション・データがクライアント・デバイスにおいて使用可能でない場合、またはブロック１３４２において、バックアップ・コンフィギュレーション・データが使用可能であるが、データに誤りがあることをチェックサム値が示す場合、アップグレード・クライアントは、ブロック１３６０において、クライアント・デバイスのリソースを用いて、この誤りを、クライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告する。次いで、アップグレード・クライアントは、ブロック１３６２において、アップグレード・プロセスを終了する。
【０１０１】
クライアント・デバイスにおいて、誤りのないバックアップ・コンフィギュレーション・データが使用可能な場合、アップグレード・クライアントは、ブロック１３４４において、バックアップ・コンフィギュレーション・データを、原型コンフィギュレーション・ファイル内にある原型コンフィギュレーション・データに上書きする。次いで、アップグレード・クライアントは、ブロック１３４６において、クライアント・デバイスにおいて新ＥＢＳＣのバックアップ・バージョンの使用可能性について判定を行う。
【０１０２】
新ＥＢＳＣのバックアップ・バージョンがクライアント・デバイスにおいて使用可能な場合、アップグレード・クライアントは、ブロック１３４８において、新ＥＢＳＣのバックアップ・バージョンを、デバイスのメモリ内にある対応する原型ＥＢＳＣに上書きすることによって、原型ＥＢＳＣをアップグレードする。続いて、ブロック１３５０において、新ＥＢＳＣに応じてコンフィギュレーション・データをアップグレードする。次いで、アップグレード・クライアントは、ブロック１３１６において、他の原型ＥＢＳＣをアップグレードする際に用いるために、追加の差分ファイルが使用可能か否か判定を行う。
【０１０３】
ブロック１３４６において、新ＥＢＳＣのバックアップ・バージョンがクライアント・デバイスにおいて使用可能でないことがわかった場合、アップグレード・クライアントは、ブロック１３０４において、アップグレード・サーバから新ＥＢＳＣを検索する。新ＥＢＳＣを受信すると、アップグレード・クライアントは、前述のように、アップグレードに進む。
【０１０４】
図１４は、一実施形態の下において、新ファイルを用いての非クリティカル・コンポーネントのアップグレード中にアップグレード・プロセスにおいて発生した誤りからクライアント・デバイスを復元するためのフロー図１４００である。ファイルの更新を行う際に、アップグレード・クライアントは、開始すると、新ファイルが使用可能であることに応答して、ブロック１４０２において、ファイルのアップグレードが初めて行われているのか、またはクライアント・デバイスは以前のアップグレード試行中に発生した誤りから復元しようとしているのか判定を行う。
【０１０５】
ファイルのアップデートが行われるのが初めてである場合、アップグレード・クライアントは、ブロック１４０４において、アップグレード・ファイルに対応する原型ＥＢＳＣをアップグレードする際に用いるアップグレード・ファイルを、新ＥＢＳＣの形態で受信する。新ＥＢＳＣの受信に応答して、アップグレード・クライアントは、ブロック１４０６において新ＥＢＳＣのチェックサム値を用いて新ＥＢＳＣの内容には誤りがないか否か判定を行う。この新ＥＢＳＣを受信し、ファイル内容の正確さを評価するプロセスは、誤りのない差分ファイルが受信されるまで、または予め指定された回数であるＮ回プロセスを繰り返し終えるまで繰り返す。ブロック１４３０において、予め指定された回数のＮ回だけプロセスを繰り返しても成功しなかった場合、アップグレード・クライアントは、ブロック１４３４において、クライアント・デバイスのリソースを用いて、誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告する。続いて、アップグレード・クライアントは、ブロック１４１６において、アップグレード・プロセスを終了する。
【０１０６】
ブロック１４０６において、アップグレード・クライアントが、新ＥＢＳＣの内容が正確であると判定すると、アップグレード・クライアントは、ブロック１４０８において、デバイスのＲＯＭ内にある原型ＥＢＳＣを新ＥＢＳＣと置き換える。ブロック１４１０において、デバイスのＲＯＭに書き込まれた新ＥＢＳＣに対してチェックサムの計算を行い、ファイルの正確さを検証する。ブロック１４１２において、新ＥＢＳＣのチェックサム値が正しくないと判定された場合、正しいチェックサム値が受信され、新ＥＢＳＣが適正にデバイスのＲＯＭに書き込まれたことを示すまで、またはデバイスのＲＯＭに書き込まれた新ＥＢＳＣに対してチェックサムを計算するプロセスを予め指定した回数であるＮ回繰り返し終えるまで、このプロセスを繰り返す。ブロック１４３２において、予め指定した回数のＮ回だけプロセスを繰り返しても成功しなかった場合、アップグレード・クライアントは、ブロック１４３４において、クライアント・デバイスのリソースを用いて、この誤りをクライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告し、ブロック１４１６においてアップグレード・プロセスを終了する。
【０１０７】
ブロック１４１２において、デバイスのＲＯＭに書き込まれた新ＥＢＳＣの正確さを検証するとき、アップグレード・クライアントは、ブロック１４１４において、対応する原型ＥＢＳＣをアップグレードする際に用いる、追加の差分ファイルが使用可能か否か判定を行う。動作は、ブロック１４０４に戻り、あらゆる追加の新ＥＢＳＣを処理する。それ以外の場合、ブロック１４１６において、アップグレード・プロセスは終了する。
【０１０８】
ブロック１４０２において、アップグレード・クライアントが、以前のアップグレード試行中に発生した誤りからデバイスを復元しつつあると判定した場合、アップグレード・クライアントは、ブロック１４４０において、復元を開始して、バックアップ・コンフィギュレーション・ファイルがクライアント・デバイスにおいて使用可能か否か判定を行う。バックアップ・コンフィギュレーション・データがバックアップ・コンフィギュレーション・ファイルにおいて使用可能な場合、アップグレード・クライアントは、ブロック１４４２において、関連するチェックサム値を評価することによって、バックアップ・コンフィギュレーション・データが正しいか否か判定を行う。ブロック１４４０において、バックアップ・コンフィギュレーション・データがクライアント・デバイスにおいて使用可能でない場合、またはブロック１４４２において、バックアップ・コンフィギュレーション・データが使用可能であるが、データに誤りがあることをチェックサム値が示す場合、アップグレード・クライアントは、ブロック１４６０において、クライアント・デバイスのリソースを用いて、この誤りを、クライアント・デバイスのユーザおよびサービス・プロバイダのアップグレード・サーバに報告する。次いで、アップグレード・クライアントは、ブロック１４１６において、アップグレード・プロセスを終了する。
【０１０９】
クライアント・デバイスにおいて、誤りのないバックアップ・コンフィギュレーション・データが使用可能な場合、アップグレード・クライアントは、ブロック１４４４において、バックアップ・コンフィギュレーション・データを、原型コンフィギュレーション・ファイル内にある原型コンフィギュレーション・データに上書きする。次いで、アップグレード・クライアントは、ブロック１４０４における新ＥＢＳＣの受信、および前述のように対応する原型ＥＢＳＣの更新に進む。
【０１１０】
以上説明した、クライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップデートを行うシステムおよび関連する方法は、少なくとも１つのプロセッサと、少なくとも１つの電子ファイルとを備えた、携帯通信デバイスを含む。プロセッサは、少なくとも１つのワイヤレス結合部を通じてアップグレード・ファイルを受信し、プロセッサは、アップグレード・ファイルの内容を用いて、電子ファイルを自動的にアップグレードする。アップグレードは、電子ファイルにおける誤りの修復および追加の電子ファイルの供給の内少なくとも一方を含む。プロセッサは、電子ファイルの自動アップグレード中の障害に応答して、携帯通信デバイスを少なくとも１つの動作状態に復元する。携帯通信デバイスは、セルラ電話機、携帯計算デバイス、およびパーソナル・ディジタル・アシスタントの内少なくとも１つを含む。携帯通信デバイスの少なくとも１つの動作状態は、セルラ・テレフォニ状態(cellular telephony state)を含む。
【０１１１】
前述のクライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行うシステムおよび関連する方法は、携帯通信デバイスにおいて、少なくとも１つのワイヤレス結合部を通じてアップグレード・ファイルを受信するステップであって、アップグレード・ファイルの内容が、携帯通信デバイスのソフトウェア・コンポーネントにおいて誤りを修復するための情報、および携帯通信デバイスの機能を更新するための情報の内少なくとも１つを含む、ステップと、アップグレード・ファイルの内容を用いて、自動的にソフトウェア・コンポーネントをアップグレードするステップと、自動アップグレード中の障害に応答して、携帯通信デバイスを少なくとも１つの動作状態に自動的に復元するステップとを含む方法を含む。一実施形態において、自動的に復元するステップは、更に、自動アップグレードを再開するステップを含む。一実施形態において、自動的に復元するステップは、更に、自動アップグレードをやり直すステップを含む。一実施形態において、アップグレード・ファイルの内容は、差分ファイルおよび埋め込みソフトウェア・コンポーネントの内少なくとも１つを含む。少なくとも１つの動作状態は、セルラ・テレフォニ状態を含む。
【０１１２】
一実施形態の方法では、自動的に復元するステップは、更に、携帯通信デバイスにおけるバックアップ・コンフィギュレーション・データの使用可能性を判定するステップであって、バックアップ・コンフィギュレーション・データは、携帯通信デバイスのコンフィギュレーション・データのアップグレード前のバージョンを含む、ステップと、バックアップ・コンフィギュレーション・データの正確さを検証するステップと、携帯通信デバイスのコンフィギュレーション・データをバックアップ・コンフィギュレーション・データで置き換えるステップとを含む。
【０１１３】
一実施形態の方法では、自動的にアップグレードするステップは、少なくとも１つのクリティカル・ソフトウェア・コンポーネントを自動的にアップグレードするステップであって、クリティカル・ソフトウェア・コンポーネントの原型バージョンに対応する、アップグレードしたソフトウェア・コンポーネントを生成する、ステップと、アップグレードしたソフトウェア・コンポーネントを携帯通信デバイスのプログラム・メモリに書き込むステップとを含み、クリティカル・ソフトウェア・コンポーネントの自動アップグレード中の障害に応答して自動的に復元するステップは、更に、携帯通信デバイスにおけるバックアップ・アップグレード・ソフトウェア・コンポーネントの使用可能性を判定するステップであって、バックアップ・アップグレード・ソフトウェア・コンポーネントが、アップグレード・ソフトウェア・コンポーネントのアップグレード前のバージョンを含む、ステップと、バックアップ・アップグレード・ソフトウェア・コンポーネントの正確さを検証するステップと、バックアップ・アップグレード・ソフトウェア・コンポーネントを携帯通信デバイスのプログラム・メモリに書き込むステップとを含む。
【０１１４】
一実施形態の方法では、自動的にアップグレードするステップは、少なくとも１つのクリティカル・ソフトウェア・コンポーネントを自動的にアップグレードするステップであって、クリティカル・ソフトウェア・コンポーネントの原型バージョンに対応するアップグレード・ソフトウェア・コンポーネントを携帯通信デバイスのプログラム・メモリに書き込む、ステップを含み、クリティカル・ソフトウェア・コンポーネントの自動アップグレード中の障害に応答して自動的に復元するステップは、更に、携帯通信デバイスにおけるバックアップ・アップグレード・ソフトウェア・コンポーネントの使用可能性を判定するステップであって、バックアップ・アップグレード・ソフトウェア・コンポーネントが、アップグレード・ソフトウェア・コンポーネントのアップグレード前のバージョンを含む、ステップと、バックアップ・アップグレード・ソフトウェア・コンポーネントの正確さを検証するステップと、バックアップ・アップグレード・ソフトウェア・コンポーネントを携帯通信デバイスのプログラム・メモリに書き込むステップとを含む。
【０１１５】
一実施形態の方法では、自動的にアップグレードするステップは、少なくとも１つの非クリティカル・ソフトウェア・コンポーネントを自動的にアップグレードするステップであって、非クリティカル・ソフトウェア・コンポーネントの原型バージョンに対応するアップグレード・ソフトウェア・コンポーネントを生成する、ステップと、アップグレード・ソフトウェア・コンポーネントを携帯通信デバイスのプログラム・メモリに書き込むステップとを含み、非クリティカル・ソフトウェア・コンポーネントの自動アップグレード中の障害に応答して自動的に復元するステップは、更に、ワイヤレス結合部を通じてアップグレード・ソフトウェア・コンポーネントを受信するステップと、アップグレード・ソフトウェア・コンポーネントを携帯通信デバイスのプログラム・メモリに書き込むステップとを含む。
【０１１６】
一実施形態のクライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行う方法は、更に、携帯通信デバイスが、自動アップグレード中の障害から復元しているのか否かについて判定するステップを含む。
【０１１７】
一実施形態のクライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行う方法は、更に、少なくとも１つの誤りチェックおよび訂正プロセスをアップグレード・ファイルの内容、アップグレードすべきソフトウェア・コンポーネントの内容、アップグレード・ソフトウェア・コンポーネントの内容、および携帯通信デバイスのコンフィギュレーション・データの内少なくとも１つに適用するステップを含む。少なくとも１つの誤りチェックおよび訂正プロセスは、巡回冗長コード（ＣＲＣ）およびチェックサム値の内少なくとも１つの使用を含む。
【０１１８】
前述のクライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行うシステムおよび関連する方法は、電子ファイルをアップグレードするシステムを含み、アップグレード・ファイルを生成する第１アップグレード・コンポーネントを含む第１デバイスであって、アップグレード・ファイルは、電子ファイルにおける誤りを修復するための情報および電子ファイルに機能を追加する情報の内少なくとも１つを含む、第１デバイスと、第１デバイスとのワイヤレス結合部を通じてアップグレード・ファイルを受信する第２アップグレード・コンポーネントを含む移動通信デバイスであって、第２アップグレード・コンポーネントは、アップグレード・ファイルの内容を用いて、移動通信デバイスの電子ファイルを自動的にアップグレードし、第２アップグレード・コンポーネントは、自動アップグレード中の障害に応答して、移動通信デバイスを自動的に少なくとも１つの動作状態に復元する、移動通信デバイスとを備えている。一実施形態の第１デバイスは、第２デバイス上に常駐するソフトウェア・コンポーネントの少なくとも１つのプロバイダによってアクセス可能な、プロセッサを用いたデバイスである。一実施形態の移動通信デバイスは、セルラ電話機である。一実施形態の電子ファイルは、ダイナミック・リンク・ライブラリ・ファイルを含むソフトウェア・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント（ＥＢＳＣ）、ファームウェア・ファイル、実行可能ファイル、１６進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルを含む。
【０１１９】
前述のクライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行うシステムおよび関連する方法は、携帯デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行う方法を含み、少なくとも１つのワイヤレス結合部を通じて、携帯通信デバイスにおいてアップグレード・ファイルを受信するステップであって、アップグレード・ファイルの内容が、携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含む、ステップと、アップグレード・ファイルの内容を用いて、ソフトウェア・コンポーネントを自動的にアップグレードするステップと、自動アップグレード中に障害を検出するステップと、検出した障害に応答して、携帯通信デバイスを自動的に少なくとも１つの動作状態に復元するステップであって、復元が、携帯通信デバイスにおけるバックアップ・コンフィギュレーション・データの使用可能性を判定することを含み、バックアップ・コンフィギュレーション・データが、携帯通信デバイスのコンフィギュレーション・データのアップグレード前のバージョンを含み、復元が、更に、バックアップ・コンフィギュレーション・データの正確さを検証し、コンフィギュレーション・データを、検証したバックアップ・コンフィギュレーション・データと置き換えることを含む、ステップとを含む。
【０１２０】
前述のクライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行うシステムおよび関連する方法は、移動通信デバイスを含み、少なくとも１つのワイヤレス結合部を通じて、携帯通信デバイスにおいてアップグレード・ファイルを受信する手段であって、アップグレード・ファイルの内容が、携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含む、手段と、アップグレード・ファイルの内容を用いて、ソフトウェア・コンポーネントを自動的にアップグレードする手段と、自動アップグレード中の障害に応答して、携帯通信デバイスを自動的に少なくとも１つの動作状態に復元する手段とを備えている。
【０１２１】
前述のクライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行うシステムおよび関連する方法は、実行可能な命令を含むコンピュータ読み取り可能媒体を含み、処理システムにおいて実行すると、少なくとも１つのワイヤレス結合部を通じて、携帯通信デバイスにおいてアップグレード・ファイルを受信し、アップグレード・ファイルの内容が、携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含み、アップグレード・ファイルの内容を用いて、ソフトウェア・コンポーネントを自動的にアップグレードし、自動アップグレード中に障害を検出し、検出した障害に応答して、携帯通信デバイスを自動的に少なくとも１つの動作状態に復元し、復元が、携帯通信デバイスにおけるバックアップ・コンフィギュレーション・データの使用可能性を判定することを含み、バックアップ・コンフィギュレーション・データの正確さを検証し、コンフィギュレーション・データを、検証したバックアップ・コンフィギュレーション・データと置き換えることによって、携帯通信デバイスにおけるソフトウェアをアップデートする。
【０１２２】
本発明の態様は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラマブル・アレイ・ロジック（ＰＡＬ）デバイス、電気的プログラム可能ロジックおよびメモリ・デバイスのようなプログラマブル・ロジック・デバイス（ＰＤＬ）、標準的なセルに基づくデバイス、ならびに特定用途集積回路（ＡＳＩＣ）を含む種々の回路のいずれにもプログラムされる機能として実現することができる。更に、本発明の態様は、ソフトウェアに基づく回路エミュレーション、ディスクリート・ロジック（順次および組み合わせ）、カスタム・デバイス、ファジイ（ニューラル）デバイス、量子デバイス、および上述のデバイスの種類のいずれの混成を有するマイクロプロセッサにおいても具体化することができる。勿論、基盤となるデバイス技術は、種々のコンポーネントの種類、例えば、相補金属酸化物半導体（ＣＭＯＳ）のような金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）技術、エミッタ結合ロジック（ＥＣＬ）のようなバイポーラ技術、ポリマ技術（例えば、シリコン共役ポリマおよび金属共役ポリマ−金属構造）、混合アナログおよびディジタルなどにおいて提供することができる。
【０１２３】
文脈上特に必要であることが明らかでない限り、明細書および特許請求の範囲を通じて、「備える」、「備えている」等の言葉は、排他的または網羅的意味ではなく、包含的意味で解釈するものとする。即ち、「含むが、限定されない」という意味である。単数または複数を用いる単語も、それぞれ、複数および単数を含むものとする。加えて、「ここでは」、「以下で」という単語、および同様な意義の単語は、本願において用いられる場合、本願全体を指すのであり、本願のいずれの特定部分を指すのではないとする。
【０１２４】
本発明の例示した実施例についてのこれまでの説明は、それで全てであることも、開示した正確な形態に本発明を限定することも意図していない。本発明の具体的な実施形態および例を例示の目的のためにここで記載したが、種々の等価な変更も本発明の範囲内で可能であることは、当業者は認めよう。ここに提示した本発明の教示は、他の処理システムや通信システムにも適用することができ、前述のＦファイル更新のみに適用できるのではない。
【０１２５】
前述した種々の実施形態のエレメントおよび作用を組み合わせれば、更に別の実施形態も得ることができる。これらおよびその他の変更は、前述の詳細な説明に鑑みれば、容易に行うことができる。
【０１２６】
先の引例は全て、ここで引用したことにより、本願にも含まれるものとする。必要であれば、本発明の態様を変更して前述の種々の特許および出願のシステム、機能および概念を採用すれば、本発明の更に別の実施形態を得ることができる。
【０１２７】
一般に、特許請求の範囲においては、用いられる用語は、明細書に開示される具体的な実施形態および特許請求の範囲に本発明を限定するように解釈するのではなく、特許請求の範囲の下で動作してファイル差別化および更新方法を実施するあらゆる処理システムを含むように解釈するのが当然である。したがって、本発明は、本開示に限定されるのではなく、むしろ発明の範囲は特許請求の範囲によって全体的に決定されるものとする。
【０１２８】
本発明のある種の態様をある請求項の形式で提示するが、本願の発明者は、本発明の種々の態様をいかなる数の請求項形式でも想定している。例えば、本発明の一態様のみを、コンピュータ読み取り可能媒体に具体化するものとして明記するが、他の態様も同様にコンピュータ読み取り可能媒体に具体化することができる。したがって、本発明は、本願を出願した後でも、更に別の請求項を追加し、本発明の別の態様に対する、このような更に別の請求項形態を追求する権利を保有するものとする。
【図面の簡単な説明】
【０１２９】
【図１】図１は、一実施形態の下におけるファイル・アップグレード・システムのブロック図である。
【図２】図２は、一実施形態のファイル・アップグレード・システムのコンポーネントを含む、サービス・プロバイダ・インフラストラクチャの一例のブロック図である。
【図３】図３は、一実施形態の下においてクライアント・デバイス・コンフィギュレーション・ファイルの情報にアクセスするためのフロー図である。
【図４】図４は、一実施形態の下においてクライアント・デバイス・コンフィギュレーション・ファイルをアップグレードするためのフロー図である。
【図５Ａ】図５Ａは、一実施形態の下において、差分ファイルを用いたクリティカル・ソフトウェア・コンポーネントのアップグレードを示すブロック図である。
【図５Ｂ】図５Ｂは、一実施形態の下において、差分ファイルを用いたクリティカル・ソフトウェア・コンポーネントのアップグレードを示すブロック図である。
【図６】図６は、図５の実施形態の下において、差分ファイルを用いたクリティカル・ソフトウェア・コンポーネントのアップグレードを示すブロック図である。
【図７Ａ】図７Ａは、代替実施形態の下において、差分ファイルを用いてクリティカル・ソフトウェア・コンポーネントをアップグレードするためのフロー図である。
【図７Ｂ】図７Ｂは、代替実施形態の下において、差分ファイルを用いてクリティカル・ソフトウェア・コンポーネントをアップグレードするためのフロー図である。
【図８】図８は、図７Ａおよび図７Ｂの実施形態の下において、差分ファイルを用いてのクリティカル・ソフトウェア・コンポーネントのアップグレードを示すブロック図である。
【図９】図９は、一実施形態の下において、新ファイルを用いてクリティカル・ソフトウェア・コンポーネントをアップグレードするためのフロー図である。
【図１０】図１０は、図９の実施形態の下において、新ファイルを用いてのクリティカル・ソフトウェア・コンポーネントのアップグレードを示すブロック図である。
【図１１】図１１は、一実施形態の下において、差分ファイルを用いてのクリティカル・コンポーネントのアップグレード中に、クライアント・デバイスを誤りから復元するためのフロー図である。
【図１２】図１２は、一実施形態の下において、差分ファイルを用いての非クリティカル・コンポーネントのアップグレード中にクライアント・デバイスを誤りから復元するためのフロー図である。
【図１３】図１３は、一実施形態の下において、新ファイルを用いてのクリティカル・コンポーネントのアップグレード中に、クライアント・デバイスを誤りから復元するためのフロー図である。
【図１４】図１４は、一実施形態の下において、新ファイルを用いての非クリティカル・コンポーネントのアップグレード中に、クライアント・デバイスを誤りから復元するためのフロー図である。
【図１】
2006508432.tif 000003
【図２】
2006508432.tif 000004
【図３】
2006508432.tif 000005
【図４】
2006508432.tif 000006
【図５Ａ】
2006508432.tif 000007
【図５Ｂ】
2006508432.tif 000008
【図６】
2006508432.tif 000009
【図７Ａ】
2006508432.tif 000010
【図７Ｂ】
2006508432.tif 000011
【図８】
2006508432.tif 000012
【図９】
2006508432.tif 000013
【図１０】
2006508432.tif 000014
【図１１】
2006508432.tif 000015
【図１２】
2006508432.tif 000016
【図１３】
2006508432.tif 000017
【図１４】
2006508432.tif 000018
【誤訳訂正書】
【提出日】平成17年9月13日(2005.9.13)
【誤訳訂正１】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと少なくとも１つの電子ファイルとを備えている携帯通信デバイスにおいて、前記プロセッサが少なくとも１つのワイヤレス結合部を通じてアップグレード・ファイルを受け、前記プロセッサは、前記アップグレード・ファイルの内容を用いて、自動的に前記電子ファイルをアップグレードし、前記アップグレードは、前記電子ファイルにおける誤りの修復および追加の電子ファイルの供給の内少なくとも１つを含み、前記プロセッサは、前記電子ファイルの自動アップグレード中の障害に応答して、前記携帯通信デバイスを少なくとも１つの動作状態に自動的に復元する、携帯通信デバイス。
【請求項２】
請求項１記載のデバイスにおいて、前記携帯通信デバイスは、セルラ電話機、携帯計算デバイス、およびパーソナル・ディジタル・アシスタントの内少なくとも１つである、デバイス。
【請求項３】
請求項１記載のデバイスにおいて、前記少なくとも１つの動作状態は、セルラ・テレフォニ状態を含む、デバイス。
【請求項４】
携帯通信デバイスにおいて、少なくとも１つのワイヤレス結合部を通じてアップグレード・ファイルを受けるステップであって、アップグレード・ファイルの内容が、前記携帯通信デバイスのソフトウェア・コンポーネントにおいて誤りを修復するための情報、および前記携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含む、ステップと、
前記アップグレード・ファイルの内容を用いて、自動的に前記ソフトウェア・コンポーネントをアップグレードするステップと、
前記自動アップグレード中の障害に応答して、前記携帯通信デバイスを少なくとも１つの動作状態に自動的に復元するステップと、
を含む、方法。
【請求項５】
請求項４記載の方法において、自動的に復元するステップは、更に、前記自動アップグレードを再開するステップを含む、方法。
【請求項６】
請求項４記載の方法において、前記自動的に復元するステップは、更に、前記自動アップグレードをやり直すステップを含む、方法。
【請求項７】
請求項４記載の方法において、前記アップグレード・ファイルの内容は、差分ファイルおよび埋め込みソフトウェア・コンポーネントの内少なくとも１つを含む、方法。
【請求項８】
請求項４記載の方法において、前記少なくとも１つの動作状態は、セルラ・テレフォニ状態を含む、方法。
【請求項９】
請求項４記載の方法において、自動的に復元するステップは、更に、
前記携帯通信デバイスにおけるバックアップ・コンフィギュレーション・データの使用可能性を判定するステップであって、前記バックアップ・コンフィギュレーション・データは、前記携帯通信デバイスのコンフィギュレーション・データのアップグレード前のバージョンを含む、ステップと、
前記バックアップ・コンフィギュレーション・データの正確さを検証するステップと、
前記携帯通信デバイスのコンフィギュレーション・データを前記バックアップ・コンフィギュレーション・データで置き換えるステップと、
を含む、方法。
【請求項１０】
請求項９記載の方法において、自動的にアップグレードするステップは、少なくとも１つのクリティカル・ソフトウェア・コンポーネントを自動的にアップグレードするステップであって、前記クリティカル・ソフトウェア・コンポーネントの原型バージョンに対応する、アップグレードしたソフトウェア・コンポーネントを生成し、前記アップグレードしたソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むことにより行う、ステップを含み、前記クリティカル・ソフトウェア・コンポーネントの自動アップグレード中の障害に応答して自動的に復元するステップは、更に、
前記携帯通信デバイスにおけるバックアップ・アップグレード・ソフトウェア・コンポーネントの使用可能性を判定するステップであって、前記バックアップ・アップグレード・ソフトウェア・コンポーネントが、前記アップグレード・ソフトウェア・コンポーネントのアップグレード前のバージョンを含む、ステップと、
前記バックアップ・アップグレード・ソフトウェア・コンポーネントの正確さを検証するステップと、
前記バックアップ・アップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むステップと、
を含む、方法。
【請求項１１】
請求項９記載の方法において、自動的にアップグレードするステップは、少なくとも１つのクリティカル・ソフトウェア・コンポーネントを自動的にアップグレードするステップであって、前記クリティカル・ソフトウェア・コンポーネントの原型バージョンに対応するアップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むことにより行う、ステップを含み、前記クリティカル・ソフトウェア・コンポーネントの自動アップグレード中の障害に応答して自動的に復元するステップは、更に、
前記携帯通信デバイスにおけるバックアップ・アップグレード・ソフトウェア・コンポーネントの使用可能性を判定するステップであって、前記バックアップ・アップグレード・ソフトウェア・コンポーネントが、前記アップグレード・ソフトウェア・コンポーネントのアップグレード前のバージョンを含む、ステップと、
前記バックアップ・アップグレード・ソフトウェア・コンポーネントの正確さを検証するステップと、
前記バックアップ・アップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むステップと、
を含む、方法。
【請求項１２】
請求項９記載の方法において、自動的にアップグレードするステップは、少なくとも１つの非クリティカル・ソフトウェア・コンポーネントを自動的にアップグレードするステップであって、前記非クリティカル・ソフトウェア・コンポーネントの原型バージョンに対応するアップグレード・ソフトウェア・コンポーネントを生成し、前記アップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むことにより行う、ステップを含み、前記非クリティカル・ソフトウェア・コンポーネントの自動アップグレード中の障害に応答して自動的に復元するステップは、更に、
前記ワイヤレス結合部を通じて前記アップグレード・ソフトウェア・コンポーネントを受けるステップと、
前記アップグレード・ソフトウェア・コンポーネントを前記携帯通信デバイスのプログラム・メモリに書き込むステップと、
を含む、方法。
【請求項１３】
請求項４記載の方法であって、更に、前記携帯通信デバイスが、前記自動アップグレード中の障害から復元しつつあるのか否かについて判定するステップを含む、方法。
【請求項１４】
請求項４記載の方法であって、更に、少なくとも１つの誤りチェックおよび訂正プロセスを、前記アップグレード・ファイルの内容、アップグレードすべき前記ソフトウェア・コンポーネントの内容、アップグレード・ソフトウェア・コンポーネントの内容、および前記携帯通信デバイスのコンフィギュレーション・データの内少なくとも１つに適用するステップを含む、方法。
【請求項１５】
請求項１４記載の方法において、前記少なくとも１つの誤りチェックおよび訂正プロセスは、巡回冗長コード（ＣＲＣ）およびチェックサム値の内少なくとも１つの使用を含む、方法。
【請求項１６】
電子ファイルをアップグレードするシステムであって、
アップグレード・ファイルを生成する第１アップグレード・コンポーネントを含む第１デバイスであって、前記アップグレード・ファイルは、電子ファイルにおける誤りを修復するための情報および前記電子ファイルに機能を追加する情報の内少なくとも１つを含む、第１デバイスと、
前記第１デバイスとのワイヤレス結合部を通じて前記アップグレード・ファイルを受ける第２アップグレード・コンポーネントを含む移動通信デバイスであって、前記第２アップグレード・コンポーネントは、前記アップグレード・ファイルの内容を用いて、前記移動通信デバイスの電子ファイルを自動的にアップグレードし、前記第２アップグレード・コンポーネントは、前記自動アップグレード中の障害に応答して、前記移動通信デバイスを少なくとも１つの動作状態に自動的に復元する、移動通信デバイスと、
を備えた、システム。
【請求項１７】
請求項１６記載のシステムにおいて、前記第１デバイスは、プロセッサを用いたデバイスであり、前記第２デバイス上にホストされたソフトウェア・コンポーネントの少なくとも１つのプロバイダによってアクセス可能である、システム。
【請求項１８】
請求項１６記載のシステムにおいて、前記移動通信デバイスは、セルラ電話機である、システム。
【請求項１９】
請求項１６記載のシステムにおいて、前記電子ファイルは、ダイナミック・リンク・ライブラリ・ファイルを含むソフトウェア・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント（ＥＢＳＣ）、ファームウェア・ファイル、実行可能ファイル、１６進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルを含む、システム。
【請求項２０】
携帯デバイスにおいてフェール・セーフのソフトウェア・アップグレードを行う方法であって、
少なくとも１つのワイヤレス結合部を通じて、携帯通信デバイスにおいてアップグレード・ファイルを受けるステップであって、アップグレード・ファイルの内容が、前記携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および前記携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含む、ステップと、
前記アップグレード・ファイルの内容を用いて、前記ソフトウェア・コンポーネントを自動的にアップグレードするステップと、
前記自動アップグレード中に障害を検出するステップと、
前記検出した障害に応答して、前記携帯通信デバイスを少なくとも１つの動作状態に自動的に復元するステップであって、復元が、前記携帯通信デバイスにおけるバックアップ・コンフィギュレーション・データの使用可能性を判定することを含み、前記バックアップ・コンフィギュレーション・データが、前記携帯通信デバイスのコンフィギュレーション・データのアップグレード前のバージョンを含み、復元が、更に、前記バックアップ・コンフィギュレーション・データの正確さを検証し、前記コンフィギュレーション・データを、前記検証したバックアップ・コンフィギュレーション・データと置き換えることを含む、ステップと、
を含む方法。
【請求項２１】
移動通信デバイスであって、
少なくとも１つのワイヤレス結合部を通じて、携帯通信デバイスにおいてアップグレード・ファイルを受ける手段であって、アップグレード・ファイルの内容が、前記携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および前記携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含む、手段と、
前記アップグレード・ファイルの内容を用いて、前記ソフトウェア・コンポーネントを自動的にアップグレードする手段と、
前記自動アップグレード中の障害に応答して、前記携帯通信デバイスを少なくとも１つの動作状態に自動的に復元する手段と、
を備えた移動通信デバイス。
【請求項２２】
実行可能な命令を含むコンピュータ読み取り可能媒体であって、処理システムにおいて実行したとき、
少なくとも１つのワイヤレス結合部を通じて、携帯通信デバイスにおいてアップグレード・ファイルを受け、アップグレード・ファイルの内容が、前記携帯通信デバイスのソフトウェア・コンポーネントにおける誤りを修復するための情報、および前記携帯通信デバイスの機能をアップグレードするための情報の内少なくとも１つを含み、
前記アップグレード・ファイルの内容を用いて、前記ソフトウェア・コンポーネントを自動的にアップグレードし、
前記自動アップグレード中に障害を検出し、
前記検出した障害に応答して、前記携帯通信デバイスを少なくとも１つの動作状態に自動的に復元し、復元が、前記携帯通信デバイスにおけるバックアップ・コンフィギュレーション・データの使用可能性を判定し、前記バックアップ・コンフィギュレーション・データの正確さを検証し、前記コンフィギュレーション・データを、前記検証したバックアップ・コンフィギュレーション・データと置き換えることを含む、
ことによって携帯通信デバイスにおけるソフトウェアをアップデートする、コンピュータ読み取り可能媒体。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】０００３
【訂正方法】変更
【訂正の内容】
【０００３】
ホスト・デバイスにおいて機能を設けるためにプロセッサ即ち中央演算装置（ＣＰＵ）上で実行するソフトウェアは、時と共に変わって行くことが多い。これらの変化は、ソフトウェア・ファイルにおけるバグまたは誤りを訂正する必要性、発展しつつ技術に合わせる必要性、または新たな特徴や機能を追加する必要性から生ずると考えられる。特に、移動ワイヤレス・デバイス上にホストされている埋め込みソフトウェア・コンポーネントは、多数のソフトウェア・バグを含み、訂正しなければならないことが多い。
【誤訳訂正３】
【訂正対象書類名】明細書
【訂正対象項目名】００１９
【訂正方法】変更
【訂正の内容】
【００１９】
ホスト・システム１０２のコンポーネントは、少なくとも１つのプロセッサ１０４を含み、新ファイル１１２を受信しそして処理して、クライアント・デバイス１２２にホストされた原型ファイル１１０をアップグレードする際に用いるアップグレード情報を生成する。一実施形態では、プロセッサ１０４は、アップグレード・ファイル１１８を生成し、アップグレードの情報をクライアント・デバイス１２２に転送する際に用いる。アップグレード・ファイル１１８は、新ファイル１１２と原型ファイル１１０との間の差を符号化した差分ファイルを含むことができ、あるいは、代わりに、あらゆる数の新ファイル１１２のコンポーネントまたはモジュールおよび／またはその組み合わせを含むことができる。ホスト・システム１０２は、通信経路１９９を通じたアップグレード・ファイル１１８の転送によって、アップグレード情報をクライアント・デバイス１２２に供給する。
【誤訳訂正４】
【訂正対象書類名】明細書
【訂正対象項目名】００２２
【訂正方法】変更
【訂正の内容】
【００２２】
プロセッサ１２４およびアップグレード・クライアント１２６を含むクライアント・デバイス１２２のコンポーネントは、アップグレード・ファイル１１８を受信し、アップグレード・ファイル１１８を用いて、原型ファイルのアップグレードを制御する。一実施形態では、ファイル更新アルゴリズム１２８を含むアップグレード・クライアント１２６は、アップグレード・ファイル１１８の情報を、ホストされた原型ファイル１１０と共に処理して、新ファイル１５２のコピーを生成する。この新ファイル１５２のコピーは、後に、アップグレード・クライアント１２６が、クライアント・デバイス１２２上にホストされている目標の原型ファイル１１０をアップグレードするため（１５４）に用いる。一実施形態のアップグレード・クライアント１２６は、多数の方法を用いて、更新すべきファイル・タイプ、およびこれらの更新に対応するためにクライアント・デバイスの製造業者によって割り当てられているリソースに応じて、ＥＢＳＣを更新する。これについては、以下で説明するが、関連出願にも記載されている。この更新プロセスの完了時において、このときクライアント・デバイス１２２に格納されている原型ファイル１１０は、ホスト・システム１０２において受信した新ファイル１１２と同一となる。
【誤訳訂正５】
【訂正対象書類名】明細書
【訂正対象項目名】００２４
【訂正方法】変更
【訂正の内容】
【００２４】
図２は、一実施形態のファイル・アップグレード・システム１００のコンポーネントを含む、サービス・プロバイダ・インフラストラクチャ２００の一例のブロック図である。この実施形態では、サービス・プロバイダ・インフラストラクチャは、セルラ電話ネットワークまたはインフラストラクチャに関連して説明するが、代替実施形態ではそのように限定されることはない。サービス・プロバイダ・インフラストラクチャ２００は、ソフトウェア・コンポーネント配給元（ＳＣＤ：software component distributor）２０２、サービス・プロバイダ・アップグレード・コンポーネント２０３〜２０５、およびクライアント・デバイス１２２上にホストされているアップグレード・クライアント１２６を含むが、これらに限定される訳ではない。サービス・プロバイダ・アップグレード・コンポーネント２０３〜２０５は、ソフトウェア・コンポーネント証明サーバ２０３およびアップグレード・マネージャ２０５との間に結合されているアップグレード・サーバ２０４を含む。
【誤訳訂正６】
【訂正対象書類名】明細書
【訂正対象項目名】００２６
【訂正方法】変更
【訂正の内容】
【００２６】
一実施形態のサービス・プロバイダ・インフラストラクチャ２００は、移動電子デバイス、移動通信デバイス、セルラ電話機、パーソナル・ディジタル・アシスタント、コンピュータ、およびその他のプロセッサを用いたデバイスを含むクライアント・デバイス１２２上の多数のタイプのソフトウェア・ファイルまたはコンポーネント・アップグレードに、サービス・プロバイダのワイヤレス・インフラストラクチャのアップグレード・システム・コンポーネントおよび種々の機構によって対応する。これらのシステムは、新たなソフトウェアおよび改訂されたソフトウェアをソフトウェア流通業者から受け取り、新たなソフトウェアからアップグレード・ファイルを生成し、サービス・プロバイダ・インフラストラクチャを通じてアップグレード・ファイルをクライアント・デバイス１２２に転送することによって機能する。クライアント・デバイス１２２のアップグレード・クライアント１２６は、アップグレード・ファイルを用いて、クライアント・デバイス１２２上にホストされた目標のソフトウェアを更新する。
【誤訳訂正７】
【訂正対象書類名】明細書
【訂正対象項目名】００２８
【訂正方法】変更
【訂正の内容】
【００２８】
一実施形態のＳＣＤ２０２は、クライアント・デバイス製造業者の処理システム上にホストされている。代替実施形態では、ＳＣＤ２０２は、アプリケーションまたはシステム・ソフトウェア・プロバイダの処理システム上にホストされている。別の代替実施形態では、ＳＣＤ２０２は、サービス・キャリアまたはプロバイダの処理システム上にホストされ、例えば、アップグレード・コンポーネント２０３〜２０５上にホストされそれらの間に分散している。
【誤訳訂正８】
【訂正対象書類名】明細書
【訂正対象項目名】００４９
【訂正方法】変更
【訂正の内容】
【００４９】
前述のように、コンフィギュレーション・ファイルをアップグレードすることに加えて、アップグレード・クライアントの実施形態は、クライアント・デバイス上にホストされたソフトウェアのＥＢＳＣのアップグレードも行う。このアップグレードは、差分ファイルおよび新ファイル全体の双方を用いたアップグレードを含む。これについては、以下で説明する。
【誤訳訂正９】
【訂正対象書類名】明細書
【訂正対象項目名】０１１８
【訂正方法】変更
【訂正の内容】
【０１１８】
前述のクライアント・デバイスにおいてフェール・セーフ・ソフトウェア・アップグレードを行うシステムおよび関連する方法は、電子ファイルをアップグレードするシステムを含み、アップグレード・ファイルを生成する第１アップグレード・コンポーネントを含む第１デバイスであって、アップグレード・ファイルは、電子ファイルにおける誤りを修復するための情報および電子ファイルに機能を追加する情報の内少なくとも１つを含む、第１デバイスと、第１デバイスとのワイヤレス結合部を通じてアップグレード・ファイルを受信する第２アップグレード・コンポーネントを含む移動通信デバイスであって、第２アップグレード・コンポーネントは、アップグレード・ファイルの内容を用いて、移動通信デバイスの電子ファイルを自動的にアップグレードし、第２アップグレード・コンポーネントは、自動アップグレード中の障害に応答して、移動通信デバイスを自動的に少なくとも１つの動作状態に復元する、移動通信デバイスとを備えている。一実施形態の第１デバイスは、第２デバイス上にホストされたソフトウェア・コンポーネントの少なくとも１つのプロバイダによってアクセス可能な、プロセッサを用いたデバイスである。一実施形態の移動通信デバイスは、セルラ電話機である。一実施形態の電子ファイルは、ダイナミック・リンク・ライブラリ・ファイルを含むソフトウェア・ファイル、共有オブジェクト・ファイル、埋め込みソフトウェア・コンポーネント（ＥＢＳＣ）、ファームウェア・ファイル、実行可能ファイル、１６進データ・ファイルを含むデータ・ファイル、システム・コンフィギュレーション・ファイル、および個人使用データを含むファイルを含む。
【国際調査報告】
2006508432.tif 000019