(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムにおいて、ターゲット・メディア上のターゲット・アプリケーション・モジュールを、ソース・アプリケーション・モジュールにより自動的にアンインストールまたは再インストールする方法であって、
前記ソース・アプリケーション・モジュールは、
前記ソース・アプリケーション・モジュールと前記ターゲット・アプリケーション・モジュールにより共有される第１のフラグと第２のフラグを格納する共有リソースが、ターゲット・メディア上に存在するかどうかを判別するステップと、
共有リソースが存在する場合、前記第２のフラグが第２の所定値よりも大きいかどうかを調べるステップと、
前記第２のフラグが第２の所定値よりも大きい場合、前記ターゲット・アプリケーション・モジュールを自動的にアンインストールするステップと、
前記第２のフラグが所定値以下である場合、第１のフラグが第１の所定値よりも大きいかどうかを調べるステップと、
前記第１のフラグが第１の所定値よりも大きい場合、ターゲット・アプリケーション・モジュールを自動的に再インストールするステップと、
前記第１のフラグが第１の所定値以下である場合、第１のフラグと第２のフラグの両方をインクリメントするステップとを含み、
前記ターゲット・アプリケーション・モジュールは、
前記ターゲット・アプリケーション・モジュールが正常に起動された場合、第１のフラグをリセットするステップと、
前記ターゲット・アプリケーション・モジュールが前記正常な起動の後に正常に機能している場合、第２のフラグをリセットするステップとを含む、
ことを特徴とする方法。
【請求項２】
共有リソースが存在しない場合に、前記ソース・アプリケーション・モジュールにより共有リソースを作成し、前記ターゲット・アプリケーション・モジュールをターゲット・メディア上に自動的にインストールすることを特徴とする請求項１に記載の方法。
【請求項３】
ターゲット・メディアに大容量記憶手段が含まれることを特徴とする請求項１に記載の方法。
【請求項４】
共有リソースがフラッシュおよび大容量記憶手段のうちの１つに生成されることを特徴とする請求項１に記載の方法。
【請求項５】
請求項１−４に記載された方法をコンピュータにより実行するプログラム・コードを格納したコンピュータ読み取り可能な記録媒体。
【請求項６】
コンピュータ・システムであって、
ソース・アプリケーション・モジュールおよびターゲット・アプリケーション・モジュールからの１つまたは複数の命令を格納するメモリ要素と、
メモリ要素に結合されたプロセッサを備え、
前記プロセッサは、前記ソース・アプリケーション・モジュールからの前記１つまたは複数の命令に応答して、
前記ソース・アプリケーション・モジュールと前記ターゲット・アプリケーション・モジュールにより共有される第１のフラグと第２のフラグを格納する共有リソースが、第１のメディア上に存在するかどうかを判別し、
前記共有リソースが存在しない場合に、ターゲット・アプリケーション・プログラムを第２のメディア上にインストールし、
共有リソースが存在する場合、前記第２のフラグが第２の所定値よりも大きいかどうかを調べ、
前記第２のフラグが第２の所定値よりも大きい場合、前記ターゲット・アプリケーション・モジュールを自動的にアンインストールし、
前記第２のフラグが所定値以下である場合、第１のフラグが所定値よりも大きいかどうかを調べ、
前記第１のフラグが第１の所定値よりも大きい場合、ターゲット・アプリケーション・モジュールを自動的に再インストールし、
前記第１のフラグが第１の所定値以下である場合、第１のフラグと第２のフラグの両方をインクリメントし、
前記プロセッサは、前記ターゲット・アプリケーション・モジュールからの前記１つまたは複数の命令に応答して、
前記ターゲット・アプリケーション・モジュールが正常に起動された場合、第１のフラグをリセットし
前記ターゲット・アプリケーション・モジュールが前記正常な起動の後に正常に機能している場合、第２のフラグをリセットするコンピュータ・システム。
【請求項７】
メモリ要素が、読み取り専用メモリおよびランダム・アクセス・メモリのうちの１つであることを特徴とする請求項６に記載のコンピュータ・システム。
【請求項８】
第１のメディアがハードディスクであることを特徴とする請求項６に記載のコンピュータ・システム。
【請求項９】
第２のメディアがフラッシュ・メモリであることを特徴とする請求項６に記載のコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般的には、コンピュータ・システムの分野に関するものであり、具体的には、アプリケーション・モジュールが正常に機能しない場合のターゲット・アプリケーション・モジュールの自動アンインストールに関するものである。
【０００２】
【従来の技術】
インストール・プログラム自体がアプリケーションであるインストール・プログラムを使用してターゲット・アプリケーションをインストールする仕組みは数多くある。インストール・アプリケーションは、ターゲット・アプリケーションの必要なコンポーネントを抽出し、ターゲット・メディア上に配置し、必要ならばオペレーティング・システムに修正を加えてターゲット・アプリケーションが正常に実行されるようにする役割を持つ。こうしたメカニズムでは、実行可能プログラムやバッチ・ファイルを使用する。通常、アプリケーション・プログラムのインストール作業はユーザによって開始される。問題があれば、ユーザは、アプリケーション・プログラムが正常に動作しない場合にアプリケーション・プログラムをアンインストールするよう求められる。
【０００３】
【発明が解決しようとする課題】
ただし、ユーザの知らぬ間にユーザの同意を得ずにアプリケーション・プログラムが自動的にインストールされていると、そのアプリケーション・プログラムが正常に動作しなかったり、あるいは何らかの形で動作不能に陥った場合に、そのアプリケーション・プログラムのせいでシステムが動作しなくなる可能性がある。
【０００４】
【課題を解決するための手段】
本発明は、ターゲット・メディアにあるアプリケーション・モジュールを自動的にアンインストールする方法を含む。一実施態様では、この方法は、共有リソースがターゲット・メディアに存在しているかどうかを判別するステップと、もし共有リソースが存在しているならば、アプリケーション・モジュールがターゲット・メディアで正常に機能していたかどうかを判別して、アプリケーション・モジュールが正常に機能しなかった場合にそのアプリケーション・モジュールを自動的にアンインストールするステップを含む。
【０００５】
他の実施の形態についてここで説明し請求する。
【０００６】
【発明の実施の形態】
本発明は、ターゲット・アプリケーション・モジュールが動作しなかったり、あるいは正常に機能しない場合に自動的にそのターゲット・アプリケーション・モジュールをアンインストールするための方法と装置に関するものである。一実施形態では、コンピュータ・システムの電源を最初にオンにしたときに、ソース・アプリケーション・モジュールは不揮発性メモリ上の共有リソースを検索し、もし見つからない場合は共有リソースを生成し、共有リソース内の第１フラグと第２のフラグを初期化する。共有リソースを生成する前後に、ソース・アプリケーション・モジュールはターゲット・メディアにターゲット・アプリケーション・モジュールを自動的にインストールする。ターゲット・アプリケーション・モジュールは、起動すると、第１のフラグをリセットする。ターゲット・アプリケーション・モジュールが正常に機能していれば、ターゲット・アプリケーション・モジュールは第２のフラグをリセットする。ターゲット・アプリケーション・モジュールが正常に機能しているかどうかを判別する基準はさまざまな要因に左右されるため、異なることがある。
【０００７】
コンピュータ・システムの後発のパワー・オン・セルフ・テスト（ＰＯＳＴ）でソース・アプリケーション・モジュールが起動すると、ソース・アプリケーション・モジュールは再び、共有リソースを検索し、存在すれば、最初に第２のフラグを調べる。第２のフラグが第２のあらかじめ定められているカウントよりも大きく（または等しく）、ターゲット・アプリケーション・モジュールが第２のあらかじめ定められているカウントの間連続して正常に機能しなかったことを示す場合、ソース・アプリケーション・モジュールは自動的に、ターゲット・アプリケーション・モジュールをアンインストールまたは使用禁止にする。ソース・アプリケーション・モジュールは、オプションにより、共有リソース内に第３のフラグを設定して、ターゲット・アプリケーション・モジュールの再インストールを防止することもできる。
【０００８】
第２のフラグが第２のあらかじめ定められているカウント以下の場合、ソース・アプリケーション・モジュールは第１のフラグを調べる。第１のフラグが第１のあらかじめ定められているカウントよりも大きく（または等しく）、ターゲット・アプリケーション・モジュールが第１のあらかじめ定められているカウントの間連続して正常に起動しなかったことを示す場合、ソース・アプリケーション・モジュールは自動的に、ターゲット・アプリケーション・モジュールを再インストールする。ただし、第１のフラグが第１のあらかじめ定められているカウント以下の場合、ソース・アプリケーション・モジュールは第１のフラグと第２のフラグをインクリメントして、終了し、ターゲット・アプリケーション・モジュールが正常に機能していたことを示す。一実施形態では、このプロセスは後発のＰＯＳＴ実行中にいつまでも繰り返される。
【０００９】
定義
ここで説明するように、「コンピュータ・システム」とは、データを処理することができる回路を備える製品のことである。コンピュータ・システムとしては、汎用コンピュータ・システム（たとえば、サーバ、ラップトップ・コンピュータ、デスクトップ・コンピュータ、パームトップ・コンピュータ、パーソナル電子デバイスなど）、パーソナル・コンピュータ（ＰＣ）、ハードコピー機器（たとえば、プリンタ、プロッタ、ファックス機など）、銀行窓口機（たとえば、現金自動振込機）などがあるが、これらに限られるわけではない。インフォメディアリとは、商品およびサービスの生産者の代わりに情報を提供するウェブ・サイトのことであり、サプライヤーおよびその他の企業が提供する製品／サービスに関する関連情報を企業に提供する。コンテントとは、アプリケーション・プログラム、ドライバ・プログラム、ユーティリティ・プログラム、ペイロードや、それらの組み合わせ、さらに、グラフィックス情報資料（たとえば、記事、株式市況）などのことであり、単一または任意の組み合わせの形をとる。「ペイロード」とは、グラフィックスまたは情報資料（記事、株式市況など）を含むメッセージのことで、ファイルやアプリケーションが含まれる場合がある。一実施形態では、ペイロードはあらかじめ定められた時刻に、システムの大容量記憶メディアに転送される。さらに、「通信リンク」とは、通信のメディアまたはチャネルのことである。通信リンクには、電話回線、モデム接続、インターネット接続、統合デジタル通信網（「ＩＳＤＮ」）接続、非同期転送モード（ＡＴＭ）接続、フレーム・リレー接続、Ｅｔｈｅｒｎｅｔ接続、同軸ケーブル接続、光ファイバ接続、衛星回線接続（たとえば、デジタル衛星サービスなど）、無線接続、高周波（ＲＦ）リンク、電磁リンク、双方向ページング接続などと、さらにこれらの組み合わせが含まれるが、これらに限られるわけではない。
【００１０】
さらに、オペレーティング・システム（「ＯＳ」）のロードとは、オペレーティング・システムのブートストラップ・ローダの初期配置のことである。一実施形態では、ＯＳのロード時に、通常、１セクタ分の情報がハードディスクからシステム・メモリにロードされる。それとは別に、ブートストラップ・ローダが、ネットワークからシステム・メモリにロードされる。ＯＳの「ブート」とは、ブートストラップ・ローダが実行されることである。その結果、ＯＳはシステムの制御下に置かれる。ＯＳのブート時に実行される動作には、システム構成設定、デバイス検出、ドライバのロード、およびユーザ・ログインなどがある。ＯＳ実行時とは、ブート段階の完了とＯＳによるアプリケーションの実行の開始のことである。一実施形態では、ＯＳ実行時に、ＯＳはアプリケーションの実行または稼動またはその両方のためユーザと対話する。パワー・オン・セルフ・テスト（ＰＯＳＴ）とは、ＯＳをロードする前にシステム・ハードウェアの構成を設定しテストするために実行される命令群のことである。
【００１１】
システムの概要
本発明の実施形態が含まれているシステム例の説明をここで説明する。
【００１２】
図１は、本発明の装置と方法を使用する情報分配システム１０の一実施形態のシステム・ブロック図である。システム１０は、インフォメディアリを提供する機能に関するものである。主に、保証サービス登録、インターネット・サービス登録、システム・プロファイル、およびユーザのプリファレンス（嗜好）から収集されたインターネットのユーザ・プロファイルとシステム・プロファイルの安全なプライベート・リポジトリの構築および保守作業を伴う。最初に、この情報を使用して、ユーザを購入ハードウェアおよびソフトウェア製品のメーカーに登録し、次にオンラインまたはその他のサービスのプロバイダに登録する。そのうちに、ユーザ・データを使用して、ユーザ・プロファイルを作成し、ユーザに関連ソフトウェアの更新およびアップグレードを通知したり、関連製品のオンラインの購入を勧めたり、１対１のカスタマイズされたマーケティングおよびその他のサービスを利用できるようにする。
【００１３】
一実施形態では、２つのソフトウェア・モジュールが本発明のさまざまな実施形態を実装するために用いられている。１つはユーザのシステムに常駐するもので、あらかじめ定められたウェブ・サイトにアクセスする場合に使用する。たとえば、一実施形態では、オペレーティング・システムおよび基本入出力システム（ＢＩＯＳ）はコンピュータ・システムにプレインストールされており、コンピュータ・システムの続く最初の電源投入時に、説明のため第１のソフトウェア・モジュールと呼ばれるアプリケーション（一実施形態では、第１のソフトウェア・モジュールは初期スタートアップ・アプリケーション（ＩＳＵＡ）であり、これについては次のセクションで説明する）により、ブート前環境で１つまたは複数の実行可能プログラムを起動することができる。一実施形態では、第１のソフトウェア・モジュールにより、ＯＳのロード、ブート、実行または稼動またはその両方を行う前に、１つまたは複数の実行可能プログラムを起動できる。一実施形態では、ユーザは前記プログラムの使用（つまり、第１のソフトウェア・モジュールの使用）を選択するよう勧められ、また他の実施形態では、プログラムは自動的に起動される。第１のソフトウェア・モジュールに含まれるプログラムにより、ツールおよびユーティリティは適切な時期に動作できるようになり、また適切なユーザ権限があれば、ユーザはＰＣのインターネット接続を介してドライバ、アプリケーション、および追加ペイロードを含む第２のソフトウェア・モジュールをダウンロードすることができる。さらにプログラムにより、ＯＳの正常な起動に失敗した場合にシステムのリモート管理を行うこともできる。
【００１４】
第２のソフトウェア・モジュールが送られると、これはメモリ内に常駐し、第１のソフトウェア・モジュールの転送されたコピーを使用禁止にすることができる。そのままシステムの不揮発性メモリ内に常駐している第１のソフトウェア・モジュールのオリジナル・コピーは、第２のソフトウェア・モジュールが機能しなくなったり、破損したり、削除されるまでアイドル状態を続け、そのような事態になったときに、上述のようにオリジナルの第１のソフトウェア・モジュールのコピーを再び転送する。第２のソフトウェア・モジュールは、詳細な加入資料をダウンロードする権限を求めるため、ユーザをインターネット上の特定のサーバに接続し、あらかじめ定められたウェブ・サイトに導くアプリケーションを含んでいてよい。第２のソフトウェア・モジュールはさらに、第１のソフトウェア・モジュールのコンテントと同じまたは類似のコンテントを含むこともできる。
【００１５】
一実施形態では、システムは読み取り専用メモリＢＩＯＳ（ＲＯＭ  ＢＩＯＳ）に格納される初期ペイロードを含むこともできる。一実施形態では、初期ペイロードは第１のソフトウェア・モジュール（たとえば、ＩＳＵＡ）の一部である。他の実施形態では、初期ペイロードはＲＯＭ  ＢＩＯＳ内に、第１のソフトウェア・モジュールとは別のモジュールとして格納される。一実施形態では、パワー・オン・セルフ・テスト（ＰＯＳＴ）が実行されてからＯＳをブート、ロード、および／または実行するまでの間に初期ペイロードをＲＯＭ  ＢＩＯＳから起動して画面に表示する。これは、システムの製造、組み立て、テスト時や、エンド・ユーザが最初にシステムをアクティブにするときなど、あらかじめ定められた時間に実行される。他の実施形態では、この初期ペイロードは、システムの製造、組み立て、テスト時や、エンド・ユーザが最初にシステムをアクティブにするときなど、あらかじめ定められた時間にあらかじめ定められた場所（システムのハードディスクなど）にコピーされる。一度コピーされたペイロードは、ＰＯＳＴが実行されてからＯＳが動作するまでの間に実行され、グラフィック、グラフィックまたは情報資料を含むメッセージ、アニメーション、Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＪＰＥＧ）／Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）形式の素材を画面に表示することができる。追加プログラムおよび／またはペイロードが送られると（インターネットやその他の外部接続を介して）、表示画面を使って、ＯＳのブートまでの間にメッセージやグラフィックスの形でカスタマイズされた画面を提供することができる。さらに、第１のソフトウェア・モジュールで送られた実行可能プログラム、さらにウェブ・サイトからダウンロードされた後発のプログラム（第２のソフトウェア・モジュールなど）を使用して、ＰＣを調査し、インストールされているデバイス、ドライバ、およびアプリケーションのいろいろな種類を判別することができる。一実施形態では、引用により本発明に取り込まれている「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ａｕｔｏｍａｔｉｃａｌｌｙ  Ｉｎｓｔａｌｌｉｎｇ  Ａｎｄ  Ｃｏｎｆｉｇｕｒｉｎｇ  Ｓｏｆｔｗａｒｅ  ｏｎ  ａ  Ｃｏｍｐｕｔｅｒ」という名称の米国同時係属出願第＿＿＿号において説明されているように、第１のソフトウェア・モジュールを使用して、ユーザ用のショートカットおよび／またはブックマークを識別し、自動的に作成する。ウェブ・サイトからダウンロードされたプログラムは、ユーザのプリファレンスに基づいてユーザ・プロファイルを収集し保持するソフトウェアを含むことができる。このような情報をインフォメディアリに送り、その後、その情報の一部および／または情報に基づいて編集されたデータをサプライヤやその他の企業に転送し、前記サプライやおよびその他の企業が提供する情報の更新または改訂を受け取ることができる。
【００１６】
図１では、情報分配システム１０は１つまたは複数の通信リンク３０1〜３０Nを介して１つまたは複数のユーザ・コンピュータ・システム４０1〜４０N（「４０」）に接続するサービス・センタ２０を備える。サービス・センタ２０は１つまたは複数のサーバ２２、１つまたは複数のデータベース２４、および１つまたは複数のコンピュータ２６1〜２６Mを備える。１つまたは複数のコンピュータ２６1〜２６Mは、複数のユーザ・コンピュータ・システム４０1〜４０Nによる同時アクセスが可能である。複数のコンピュータを使用する場合、ローカル・エリア・ネットワーク（ＬＡＮ）またはその他の類似の接続技術によりコンピュータ２６1〜２６Mを接続することができる。しかし、サービス・センタ２０が他の構成を備えることも可能である。たとえば、多数の内部プログラムまたはプロセスが稼動している少数の大型コンピュータ（つまり、少数のメインフレーム・コンピュータ、ミニ・コンピュータなど）で、ユーザ・コンピュータとの通信リンクを確立することができる。
【００１７】
サービス・センタ２０は、さらに、リモート・ネットワーク５０（たとえば、インターネット）またはリモート・サイト（たとえば、図１には示されていないが、衛星）に接続することもできる。リモート・ネットワーク５０またはリモート・サイトを使用することで、サービス・センタ２０は、サービス・センタ２０に格納することが可能なさまざまなコンピュータ・ソフトウェア、コンテントなどを提供することができる。サービス・センタのコンピュータ（たとえば、コンピュータ２６1）に接続されている１つまたは複数のデータベース２４に、コンピュータ２６で使用できるコンピュータ・ソフトウェアをデータベース・エントリとして記録する。一実施形態では、それぞれのユーザ・コンピュータ４０1〜４０Nは、それぞれ安全なデータベース（図に示されていない）を持ち、そのデータベースには他のコンピュータからはアクセスできない。通信リンク３０1〜３０Nにより、１つまたは複数のユーザ・コンピュータ・システム４０1〜４０Nはコンピュータ２６1〜２６Mに同時に接続できる。接続の管理は、サーバ２２が行う。
【００１８】
ユーザ・コンピュータ・システム４０が情報サービス・コンピュータ２６との双方向通信を確立した後、以下に説明する方法でコンテントがユーザ・コンピュータ・システム４０に送られる。ダウンロードされたコンテントには、ユーザ・プロファイルとともにユーザのシステムのプロファイルを作成するために、ユーザおよび／またはユーザ・コンピュータ・システムのハードウェアおよび／またはソフトウェアを調査するアプリケーションを調査するアプリケーションが含まれる。ユーザおよび／またはユーザのコンピュータ・システムから収集された情報はその後、サービス・センタ２０に送られ、さらにユーザおよびシステム・プロファイルに基づいてコンテントがユーザ・コンピュータ４０に送られる。サービス・コンピュータ２６に接続されているデータベースのデータベース・エントリには、ユーザが使用できるコンピュータのソフトウェア、ハードウェア、およびサードパーティのサービスおよび製品に関する情報が収められている。ユーザ・プロファイルおよび／またはシステム・プロファイルに基づいて、コンテントをさらにユーザ・コンピュータに送って表示する。コンテントには、既存のコンピュータ・ソフトウェアのパッチおよび修正、既存のコンピュータ・ソフトウェアの新バージョン、全く新しいコンピュータ・ソフトウェア、新しいヘルプ・ファイルなどの入手に関する情報の要約を含めることもできる。コンテントにはさらに、ユーザが注目しているハードウェアおよびサードパーティの製品およびサービスの入手に関する情報も入れられる。そこで、ユーザは、入手可能な製品およびサービスの要約から項目を１つまたは複数選択し、サービス・コンピュータ２６からユーザ・コンピュータに製品を転送するよう要求することができる。それとは別に、ユーザは入手可能な製品およびサービスの要約に載っている望む製品またはサービスを購入することもできる。
【００１９】
図２は、本発明の実施形態を実装するコンピュータ・システム１００例の図である。コンピュータ・システム１００は、ユーザ・コンピュータ・システム４０1〜４０Nやコンピュータ２６1〜２６M（図１）の一実施形態を示しているが、他の実施形態も容易に使用できる。
【００２０】
図２では、コンピュータ・システム１００はプロセッサまたは中央処理装置（ＣＰＵ）１０４を備えている。図に示されているＣＰＵ１０４は、計算を実行する算術論理演算装置（ＡＬＵ）、データおよび命令の一時記憶用のレジスタ群、およびシステム１００の動作を制御する制御装置を備える。一実施形態では、ＣＰＵ１０４は、ＩｎｔｅｌTM製のｘ８６、ＰｅｎｔｉｕｍTM、Ｐｅｎｔｉｕｍ  ＩＩTM、およびＰｅｎｔｉｕｍ  ＰｒｏTMマイクロプロセッサ、ＡＭＤTM製のＫ−６マイクロプロセッサ、またはＣｙｒｉｘTM  Ｃｏｒｐ製の６ｘ８６ＭＸマイクロプロセッサのうちのいずれかを含む。さらに例として、Ｄｉｇｉｔａｌ  Ｅｑｕｉｐｍｅｎｔ  ＣｏｒｐｏｒａｔｉｏｎTM製のＡｌｐｈａTMプロセッサ、ＭｏｔｏｒｏｌａTM製の６８０Ｘ０プロセッサ、またはＩＢＭTM製のＰｏｗｅｒ  ＰＣTMプロセッサなども含まれる。さらに、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ、ＭＩＰＳ、ＩＢＭ、Ｍｏｔｏｒｏｌａ、ＮＥＣ、Ｃｙｒｉｘ、ＡＭＤ、Ｎｅｘｇｅｎなどの各社が製造しているプロセッサをはじめとするさまざまなプロセッサを使用して、ＣＰＵ１０４とすることができる。ＣＰＵ１０４は、マイクロプロセッサに限定されず、マイクロコントローラ、デジタル・シグナル・プロセッサ、縮小命令セット・コンピュータ（ＲＩＳＣ）、特定用途向け集積回路などの形態もとりうる。１つのＣＰＵ１０４で示されているが、コンピュータ・システム１００はそれとは別に、複数の処理装置を備えることもできる。
【００２１】
ＣＰＵ１０４は、ＣＰＵバス１０８を介してバス・コントローラ１１２に結合されている。バス・コントローラ１１２には、メモリ・コントローラ１１６が内蔵されているが、メモリ・コントローラ１１６はバス・コントローラ１１２の外部デバイスであってもよい。メモリ・コントローラ１１６は、ＣＰＵ１０４またはその他のデバイスがメモリ・バス１２０を介してシステム・メモリ１２４にアクセスするためのインタフェースを備えている。一実施形態では、システム・メモリ１２４はシンクロナス・ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）を含む。システム・メモリ１２４は、オプションで、高速メモリ・デバイスまたはメモリ回路を増設したり、代替高速メモリ・デバイスまたはメモリ回路を入れることができる。バス・コントローラ１１２は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バスなどのシステム・バス１２８に結合されている。システム・バス１２８に結合されているのは、グラフィックス・コントローラ、グラフィックス・エンジンまたはビデオ・コントローラ１３２、大容量記憶手段１５２、通信インタフェース・デバイス１５６、１つまたは複数の入出力（Ｉ／Ｏ）デバイス１６８1〜１６８N、および拡張バス・コントローラ１７２である。ビデオ・コントローラ１３２は、ビデオ・メモリ１３６（たとえば、８メガバイト）とビデオＢＩＯＳ１４０に結合され、これらはすべて、番号１４４で示されているように、単一のカードまたはデバイス上に集積することができる。ビデオ・メモリ１３６には、表示画面１４８に情報を表示するための表示データが格納され、ビデオＢＩＯＳ１４０には、ビデオ・コントローラ１３２を制御するためのコードおよびビデオ・サービスが格納される。他の実施形態では、ビデオ・コントローラ１３２はＡｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）バスを介してＣＰＵ１０４に結合される。
【００２２】
大容量記憶手段１５２は、ハードディスク、フロッピ・ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、高密度フロッピ・ディスク、大容量取り外し可能メディア、小容量取り外し可能メディア、半導体メモリ・デバイスなどおよびそれらの組み合わせを含む（が、これらに限られるわけではない）。大容量記憶手段１５２は他の大容量記憶メディアを含んでいてよい。通信インタフェース・デバイス１５６は、通信リンク１６０を介してネットワーク１６４にアクセスするため、ネットワーク・カード、モデム・インタフェースなどを備える。Ｉ／Ｏデバイス１６８1〜１６８Nには、キーボード、マウス、オーディオ／サウンド・カード、プリンタなどがある。Ｉ／Ｏデバイス１６８1〜１６８Nは、コンパクト・ディスク・ドライブ、デジタル・ディスク・ドライブ、テープ・ドライブ、ｚｉｐドライブ、Ｊａｚｚドライブ、デジタル・ビデオ・ディスク（ＤＶＤ）ドライブ、半導体メモリ・デバイス、光磁気ディスク・ドライブ、高密度フロッピ・ディスク・ドライブ、大容量取り外し可能メディア・ドライブ、小容量メディア・デバイス、これらの任意の組み合わせなどのディスク・ドライブであってよい。拡張バス・コントローラ１７２は、システム・ファームウェア１７６が格納された不揮発性メモリ１７５に結合されている。システム・ファームウェア１７６は、特にコンピュータ・システム１００のハードウェア・デバイスを制御するために使用されるシステムＢＩＯＳ（番号８２、図３）を含む。システム・ファームウェア１７６はさらに、ＲＯＭ１８０とフラッシュ（またはＥＥＰＲＯＭ）１８４も含む。拡張バス・コントローラ１７２はさらに、ＲＡＭ、ＲＯＭ、および／またはフラッシュ・メモリ（図に示されていない）を持つ拡張メモリ１８８に結合されている。システム１００はさらに、バス・コントローラ１１２に結合されたメモリ・モジュール１９０を含んでいてよい。一実施形態では、メモリ・モジュール１９０は、ＲＡＭ１９２とフラッシュ（またはＥＥＰＲＯＭ）１９４を含む。
【００２３】
当業者であれば熟知しているように、コンピュータ・システム１００はさらに、オペレーティング・システム（ＯＳ）と少なくとも１つのアプリケーション・プログラムを備え、一実施形態では、これらは大容量記憶手段１５２からシステム・メモリ１２４にロードされ、ＰＯＳＴの実行後起動される。ＯＳは、ＤＯＳ、ＷｉｎｄｏｗｓTM（たとえば、Ｗｉｎｄｏｗｓ  ９５TM、Ｗｉｎｄｏｗｓ  ９８TM、Ｗｉｎｄｏｗｓ  ＮＴTM）、Ｕｎｉｘ、Ｌｉｎｕｘ、ＯＳ／２、ＯＳ／９、Ｘｅｎｉｘなどどのような種類のＯＳでもよく、またこれらに限られる、あるいは制約されるわけではない。オペレーティング・システムは、コンピュータ・システムの動作とリソースの割り当てを制御する１つまたは複数のプログラムの集まりである。アプリケーション・プログラムは、ユーザが望む作業を実行する１つまたは複数のソフトウェア・プログラムの集まりである。
【００２４】
コンピュータ・プログラミングの分野の当業者の慣例にしたがって、断りのない限り、以下の段落で本発明を説明する際に、コンピュータ・システム１００で実行される操作を記号で表現する。前記操作のことを、コンピュータで実行されるともいう。記号で表された操作がＣＰＵ１０４によるデータ・ビットを表す電気信号の操作とシステム・メモリ１２４内のメモリ・ロケーションにデータ・ビットを保持する操作、さらに信号のその他の処理を含むことが予想される。データ・ビットが保持されているメモリ・ロケーションは、データ・ビットに対応する特定の電気特性、磁気特性、光学特性、または有機的特性を持つ物理的な場所である。
【００２５】
本発明の要素は、ソフトウェアで実装した場合、本質的には、必要な作業を実行するコード・セグメントである。プログラムまたはコード・セグメントは、プロセッサで読み取り可能なメディアに格納したり、伝送メディアまたは通信リンクを介して搬送波に乗せられたコンピュータ・データ信号により伝送することができる。「プロセッサで読み取り可能なメディア」は、情報を格納または転送することができる任意のメディアでかまわない。プロセッサで読み取り可能なメディアとしては、たとえば、電子回路、半導体メモリ・デバイス、ＲＯＭ、フラッシュ・メモリ、消去可能ＲＯＭ（ＥＲＯＭ）、フロッピ・ディスク、ＣＤ−ＲＯＭ、光ディスク、ハードディスクなどがある。コンピュータ・データ信号は、電子ネットワーク・チャネル、光ファイバ、空気、電磁気、ＲＦリンクなどの伝送メディアにより伝播することができる信号であれば何でもよい。コード・セグメントは、インターネット、イントラネットなどのコンピュータ・ネットワークを介してダウンロードすることができる。
【００２６】
図３は、コンピュータ・システム１００の論理図である。図２および図３で、システム・ファームウェア１７６は、ＰＯＳＴ実行時にシステム・メモリ１２４にロードされ、プロセッサ１０４によってその後実行されるソフトウェア・モジュールおよびデータを含む。一実施形態で、システム・ファームウェア１７６はシステムＢＩＯＳハンドラ、ハードウェア・ルーチンなど、ＲＯＭアプリケーション・プログラム・インタフェース（ＲＡＰＩ）モジュール８４、初期スタートアップ・アプリケーション（ＩＳＵＡ）モジュール８６、初期ペイロード８８ａ、暗号キー９０、暗号エンジン９２、および表示エンジン９４を含む。システム・ファームウェア１７６の前記モジュールおよび部分は、ＲＯＭ１８０および／またはフラッシュ１８４に含まれる場合がある。それとは別に、システム・ファームウェア１７６の前記モジュールおよび部分は、ＲＯＭ１９０および／またはフラッシュ１９４に含まれる場合がある。ＲＡＰＩ  ８４は、ＲＯＭアプリケーション・プログラムとシステムＢＩＯＳ８２との間の安全なインタフェースとなる。ＲＡＰＩ  ８４、ＩＳＵＡ８６、および初期ペイロード８８ａはそれぞれ、別々に開発され、コンピュータ・システム１００を最初に使用する前にシステム・ファームウェア１７６に格納してもよい。一実施形態で、ＲＡＰＩ  ８４、ＩＳＵＡ  ８６、および初期ペイロード８８ａはそれぞれ、Ｐｈｏｅｎｉｘ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｌｔｄ．によって開発されたプロプライエタリ・ソフトウェアを含む。ＲＡＰＩ  ８４の一実施形態は、Ｐｈｏｅｎｉｘ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｌｔｄ．に譲渡され、引用により本発明に取り込まれている、１９９９年６月１８日出願の「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｓｅｃｕｒｅｌｙ  Ｕｔｉｌｉｚｉｎｇ  Ｂａｓｉｃ  Ｉｎｐｕｔ  ａｎｄ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ（ＢＩＯＳ）Ｓｅｒｖｉｃｅｓ」という名称の米国同時係属出願第＿＿号に記載されている。ＩＳＵＡ８６の一実施形態は、Ｐｈｏｅｎｉｘ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｌｔｄ．に譲渡され、引用により本発明に取り込まれている、１９９９年６月１８日出願の「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ａｕｔｏｍａｔｉｃａｌｌｙ  Ｉｎｓｔａｌｌｉｎｇ  ａｎｄ  Ｃｏｎｆｉｇｕｒｉｎｇ  Ｓｏｆｔｗａｒｅ  ｏｎ  ａ  Ｃｏｍｐｕｔｅｒ」という名称の米国同時係属出願第＿＿号に記載されている。
【００２７】
一実施形態で、図３および４Ａおよび４Ｂで示されているように、最初にコンピュータ・システム１００の電源をオンにした後、システムはＰＯＳＴ手順を開始する。初期ＰＯＳＴの実行時に、Ａ１に示されているように、ＩＳＵＡ  ８６が大容量記憶手段１５２に転送される。一実施形態では、オペレーティング・システムがインストールされた後（ただし、オペレーティング・システムのロードおよび動作前に）システム１００の電源が最初にオンになったときに、前記転送は製造および／または組み立て工程で行われる。他の実施形態では、前記転送は、ユーザがシステム１００を受け取り、電源を投入した後、製造および／組み立て工程の後に行うことができる。さらに他の実施形態では、ＩＳＵＡ８６の転送時に、追加プログラム、アプリケーション、ドライバ、データ、グラフィックスおよびその他の情報も、（たとえばＲＯＭから）大容量記憶手段１５２に転送することができる。たとえば、転送には、大容量記憶手段１５２への初期ペイロード８８ａの転送が含まれ、その後、初期ペイロードは大容量記憶手段１５２か送られる。それとは別に、初期ペイロードをＲＯＭから送ることができる。前記転送を行うシステムおよびプロセスの一実施形態は、Ｐｈｏｅｎｉｘ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｌｔｄ．に譲渡され、その内容が引用により本発明に取り込まれている、１９９９年６月１８日出願の「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄｆｏｒ  Ｔｒａｎｓｆｅｒｒｉｎｇ  ａｎ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  ｆｒｏｍ  Ｓｙｓｔｅｍ  Ｆｉｒｍｗａｒｅ  ｔｏ  ａ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ」という名称の米国同時係属出願第＿＿号に記載されている。前記転送を行うシステムおよびプロセスの他の実施形態は、Ｐｈｏｅｎｉｘ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｌｔｄ．にそれぞれ譲渡され、それぞれの内容が引用により本発明に取り込まれている、１９９９年３月１９日出願の「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｐｒｏｖｉｄｉｎｇ  Ｍｅｍｏｒｙ−ｂａｓｅｄ  Ｄｅｖｉｃｅ  Ｅｍｕｌａｔｉｏｎ」という名称の米国同時係属出願第０９／２７２８５９号、１９９９年６月１８日出願の「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｐｒｏｖｉｄｉｎｇ  Ｍｅｍｏｒｙ−Ｂａｓｅｄ  Ｄｅｖｉｃｅ  Ｅｍｕｌａｔｉｏｎ１」という名称の米国同時係属一部継続出願第＿＿号、１９９９年６月１８日出願の「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｉｎｓｅｒｔｉｎｇ  Ｏｎｅ  ｏｒ  Ｍｏｒｅ  ＦｉｌｅｓＯｎｔｏ  Ｍａｓｓ  Ｓｔｏｒａｇｅ」という名称の米国同時係属出願第＿＿号に記載されている。
【００２８】
一実施形態では、ＩＳＵＡ８６は、エンド・ユーザのシステム上に常駐するプレインストール・プログラムがあるかどうかを判別するコンピュータ・ソフトウェア実行可能プログラムである。あれば、それらのプレインストール・プログラムを識別し、ショートカット（Ｗｉｎｄｏｗｓオペレーティング・システムの場合にはデスクトップに）またはブックマークを作成して、プログラムをユーザが自動的に起動できるようにする。この実施形態では、以下に述べるように、この実行可能プログラムはさらにサーバ２２および／またはサービス・コンピュータ２６のうちの１つ（図１）の１つまたは複数のアプリケーションと双方向通信を開始し、確立することができる。さらに、一実施形態では、ＰＯＳＴ実行中に表示エンジン９４により初期ペイロード８８ａのグラフィカル・コンテントがユーザの表示画面１４８に表示される。それとは別に、後発のブート・プロセスの後に初期ペイロード８８ａのグラフィカル・コンテントを表示することができる。たとえば、以下に述べるようにユーザのプロファイルの一部として、１つまたは複数の製品および／またはサービスに関する補足情報を取得するかどうかをユーザに問い合わせる。ユーザが取得するつもりであれば、後発のブート・プロセスで望む製品および／またはサービスに関するコンテントが表示される。
【００２９】
ＰＯＳＴが完了すると、ＯＳがロードされ、実行され、初期化される。その後、標準ＯＳドライバおよびサービスがロードされる。次に、ユーザは、年齢、性別、趣味などの人口学的情報を含む登録情報の入力が求められる。さらに、ＩＳＵＡ８６が実行され、バックグラウンドで稼動して、図２のネットワーク１６４（たとえば、インターネット）上のコンピュータ・システム１００とリモート・サーバ（たとえば、図２のサーバ２２）の間で通信リンクが確立されるのを検出するまでアイドル状態に入っている。一実施形態では、ＩＳＵＡ８６はオペレーティング・システムを検索して、システムにプリロードされ、プレインストールされているアプリケーションがあるかどうかを判別することができる。あれば、ＩＳＵＡ８６は、通信リンクが確立された後、アプリケーションがあらかじめ定められたサーバ内に起動されるように自動的にショートカットおよび／またはブックマークを用意する。この通信リンクは、ソケットによるネットワーク・プロトコル・スタック、（たとえば、ＴＣＰ／ＩＰ）または従来技術で知られている他の双方向通信手法により確立することができる。通信リンク３０が確立されると、ＩＳＵＡ８６は要求信号をサーバ２２（図Ａ２に示されている）に発行し、コンテント・モジュール６０から初期コンテント・パッケージをダウンロードする。サーバは、この要求に応答して、一実施形態では大容量記憶手段１５２に格納されている初期コンテント・パッケージ６２（図Ａ３に示されている）をダウンロードする。一実施形態では、初期コンテント６２および後発コンテント６４は別々に作成することができ、それぞれ、サーバ２２上に初期コンテント６２および後発コンテント６４を格納する前に、暗号キーを使って暗号化および／または電子署名される。初期コンテント６２および／または後発コンテント６４が後でシステム１００にダウンロードされると、暗号エンジン９２はキー９０を使用して、初期コンテント６２および／または後発コンテント６４を解読する。
【００３０】
前述のように、初期コンテント・パッケージ６２はアプリケーション６２ａ、ドライバ６２ｂ、およびペイロード６２ｃを含むことができる。一実施形態では、アプリケーション６２ａはデータ・ローダ・アプリケーションおよびプロファイル・マネージャ・アプリケーションを含む。データ・ローダ・アプリケーションの機能は、ＩＳＵＡ８６と同じか、または似ており、いったんダウンロードされると、ＩＳＵＡ８６を使用禁止にし、置き換える。さらに詳しく述べると、データ・ローダ・アプリケーションは、サーバ２２とコンピュータ・システム１００との双方向通信の開始、確立、および終了を行うことができるコンピュータ・ソフトウェア・プログラムである。データ・ローダ・アプリケーションはさらに、サーバ２２とコンピュータ・システム１００の間のトラフィック制御管理を備えているだけでなく、エンド・ユーザのシステムと指定サーバの間の通信およびエンド・ユーザのシステムへのコンテント・ダウンロードを容易に行えるようにする他の機能も備えている。
【００３１】
プロファイル・マネージャは、ユーザ・プリファレンス、システム・ハードウェア、およびコンピュータ・システム１００にインストールされているソフトウェアに基づいてコンピュータ・システム１００のユーザおよびシステム・プロファイルを取得する。コンピュータ・システム１００のユーザおよびシステム・プロファイルを取得した後、プロファイル・マネージャ・アプリケーションは、その結果をデータ・ローダ・アプリケーションに転送し、その後、情報をサーバ２２に送り、ユーザ指定プリファレンスをデータベース２４（図１）と照合する。結果は、あらかじめ定められている間隔で、あるいはユーザから要求があったときに、転送することができる。次に、サーバ２２はユーザ・プロファイルまたは人口統計学的データを処理し、コンテントを類似のプロファイルを持つユーザに目標を絞る。さらに、複数のユーザのユーザ・プロファイル・データをサーバ２２上で編集し、集めて、集計されたユーザ・プロファイル・モデルを作成する。次に、ユーザ・プロファイル・データおよび／または集計ユーザ・プロファイル・モデル（図Ａ４に示されている）に基づいてコンテントをユーザ・コンピュータ・システムに送信する。後発コンテント６４をダウンロードし、番号８８ｂで示されているシステム・ファームウェア１７６に格納する。一実施形態では、後発コンテント６４はフラッシュまたはＥＥＰＲＯＭなどの不揮発性メモリに格納され、当業者であればよく知っているように、後発コンテントのロードは、ＲＯＭのリフラッシュによって行われる。後発コンテント６４はさらに、１つまたは複数のファイルとして大容量記憶手段に格納したり、あるいはこれを使用して、ＷｉｎｄｏｗｓTMシステム・ファイルを（ＷｉｎｄｏｗｓTM環境のもとで）修正することもできる。コンピュータ・システム１００がアクティブ状態になっているかぎり、プロファイル収集プロセスは継続する。一実施形態では、ユーザのプロファイルを受け取り、サーバ２２で分析した後、コンテントをダウンロードすることができる。
【００３２】
その後コンピュータ・システム１００の電源を投入すると（図４Ｂを参照）、システムは再びＰＯＳＴを実行する。すると、すでにダウンロードされ、システム・ファームウェア１７６に格納されており、著作権問題が解決されたコンテントが表示され、それからオペレーティング・システムのロードおよび／または実行が始まる。ＷｉｎｄｏｗｓTM環境では、ＷｉｎｄｏｗｓTMのロゴがオペレーティング・システムの初期ロード中に表示され、その後、すでにダウンロードされ、システム・ファームウェア１７６に格納されているコンテントを表示する１つまたは複数の画面で置き換えられる。
【００３３】
コンテントを１つまたは複数のファイルとして大容量記憶手段１５２に格納する場合、ＲＯＭをリフラッシュするのとは反対に、ブートアップ時とシャットダウン時に表示されるＷｉｎｄｏｗｓTMのロゴを変更するか、または置き換えることができる。このアプローチを採用する一実施形態では、Ｐｈｏｅｎｉｘ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，ＬＴＤ．に譲渡され、その内容が引用により本発明に取り込まれている、１９９９年６月１８日出願の「Ｄｉｓｐｌａｙｉｎｇ  Ｉｍａｇｅｓ  ｄｕｒｉｎｇ  Ｂｏｏｔ−ｕｐ  ａｎｄ  Ｓｈｕｔ−ｄｏｗｎ」という名称の米国同時係属出願第＿＿号に記載されているように、対応するＷｉｎｄｏｗｓTMシステム・ファイルをコンテント（すなわち、グラフィックス・ファイルなど）を表示する１つまたは複数のファイルで置き換える。ブートアップＷｉｎｄｏｗｓ表示ファイルは名前がＬＯＧＯ．ＳＹＳとなっており、通常、Ｗｉｎｄｏｗｓディレクトリに置かれている。最初にＷｉｎｄｏｗｓTM  ＬＯＧＯ．ＳＹＳファイルは、Ｗｉｎｄｏｗｓディレクトリから他のディレクトリに移される。次に、コンテントのグラフィックス・ファイルの名前がＬＯＧＯ．ＳＹＳに付け替えられ、ＷｉｎｄｏｗｓTMディレクトリに移される。オペレーティング・システムは、最初に起動されたときにこのファイルを取り出し、コンテントを表画面に表示する。ＷｉｎｄｏｗｓTMは、ＬＯＧＯ．ＳＹＳファイルが、解像度３２０×４００、２５６色のビットマップ・ファイルであると想定するが、ＷｉｎｄｏｗｓTMでは、後から、表示のためこの解像度を６４０×４００に拡大する。したがって、コンテントのグラフィックス・ファイルは同じグラフィックス形式とする（通常、ＬＯＧＯ．ＳＹＳに名前を変更する前に拡張子「．ＢＭＰ」付きの名前になっている）。
【００３４】
その後、オペレーティング・システムがロードされ、実行され、初期化される。標準のオペレーティング・システム・ドライバおよびアプリケーションもロードされる。次にプロファイル・マネージャが実行される。あらかじめ定められているウェブ・サイトとのリンクが確立されると、さらにコンテントをダウンロードし、表示することができる。前記追加コンテントは、任意に提供されたり、ユーザまたはユーザのシステムの調査から得られた情報をもとに提供される。他の実施形態では、ブート・プロセスが完了すると、表示画面の一部を使用して、グラフィックスまたは情報資料とともにすでに表示されているメッセージに関する詳細情報のアクセスに使用されるアイコンまたはショートカットを実現することができる。他の実施形態では、シャットダウン・プロセス時にグラフィックスまたは情報資料を含むメッセージを再び表示し、たとえば、「Ｗｉｎｄｏｗｓ  ｉｓ  ｓｈｕｔｔｉｎｇ  ｄｏｗｎ」あるいは「Ｉｔ  ｉｓ  ｎｏｗ  ｓａｆｅ  ｔｏ  ｔｕｒｎ  ｏｆｆ  ｙｏｕｒ  ｃｏｍｐｕｔｅｒ」というメッセージを表示する画面表示を他の選択されたコンテントで置き換えることができる。
【００３５】
図５は、本発明の実施形態によるＢＩＯＳ２０５および不揮発性記憶デバイス２２０の論理図である。図５の論理図は、単一のデバイスまたは複数のデバイスとして実装することが可能なＢＩＯＳ２０５を示している。ＢＩＯＳ２０５は、他のモジュールの中でも特に、ソース・アプリケーション・モジュール２１０およびターゲット・アプリケーション・モジュール２１５を含む。一実施形態では、ＢＩＯＳ２０５の生成時にソースおよびターゲット・モジュール２１０および２１５がインストールされる。少なくともＢＩＯＳ２０５の一部は、ＥＥＰＲＯＭやフラッシュ・メモリなどの電気的変更可能不揮発性メモリを備える。そこで、他の実施形態では、ＢＩＯＳ２０５を生成し、インストールした後、ターゲット・モジュール２１５をＢＩＯＳ２０５の中にプログラムする。一実施形態において、ターゲット・アプリケーション・モジュール２１５は図３に示されているＩＳＡＵ８６である。他の実施形態では、ターゲット・アプリケーション・モジュール２１５はＩＳＡＵ８６を置き換えた後のデータ・ローダ・アプリケーションでもある。ソース・アプリケーション・モジュール２１０は、ＢＩＯＳのＰＯＳＴ実行時のある時点から実行される。一実施形態において、ソース・アプリケーション・モジュール２１０はシステムＢＩＯＳ８２内に配置されている（図３）。
【００３６】
さらに図５には、不揮発性メモリ２２０が示されており、これにはさまざまな形態のものがある。一実施形態では、不揮発性メモリ２２０として、大容量記憶装置（たとえば、ハードディスク）、光デバイスなど、あるいはそれらの組み合わせ（たとえば、図２の大容量記憶装置）があるがこれらに限られたり、制約されたりするわけではない。ソース・アプリケーション・モジュール２１０とターゲット・アプリケーション・モジュール２１５は、ＢＩＯＳ２０５ではなく不揮発性メモリ２２０に格納してもよいことを注意しなければならない。
【００３７】
図２および図５では、コンピュータ・システム１００が最初にオンになると、ソース・アプリケーション・モジュール２１０は、矢印２４０で示されているように、オペレーティング・システムが存在しているかどうかを判別する。別の言い方をすると、ソフトウェア・モジュール２１０が、ターゲット・アプリケーション・モジュール２１５をインストールするのにすべての条件が満たされているかどうかをチェックするということである。一実施形態では、ソース・アプリケーション・モジュールは、（ｉ）ターゲット・メディア（たとえば、ハードディスク）上のパーティション、（ｉｉ）ターゲット・メディア有情の認識されているファイル・システム構造（たとえば、ＦＡＴテーブル）、（ｉｉｉ）ファイル・システム構造内のターゲット・オペレーティング・システム、および／または（ｉｖ）ターゲット・アプリケーションで使用される必要なファイルの存在を検出するという方法でオペレーティング・システムが存在しているかどうかを判別する。
【００３８】
オペレーティング・システムが存在していることが判明したら、ソース・アプリケーション・モジュール２１０は共有リソース２３０がターゲット・メディア（たとえば、大容量記憶装置２２０）のあらかじめ定められた場所に存在するかどうかをチェックする。共有リソース２３０が存在していなければ、ソース・アプリケーション・モジュール２１０は、矢印２５０で示されているように、共有リソース２３０を生成し、（矢印２４５）ターゲット・アプリケーション・モジュール２１５を番号２２５で示されているターゲット・メディア（たとえば、大容量デバイス２２０）にインストールする。共有リソース２３０は、ソース・アプリケーション・モジュール２１０およびターゲット・アプリケーション・モジュール２２５の両方によって共有されるフラグまたは変数が格納されているファイルまたは不揮発性メモリ２２０上のメモリ・ロケーションとすることができる。それとは別に、共有リソース２３０は、ＢＩＯＳ２０５（たとえば、ＥＥＰＲＯＭ、フラッシュなど）の電気的変更可能な部分に配置することもできる。共有リソース２３０は、ターゲット・アプリケーション・モジュール２２５をインストールする前に、インストールするのと同時に、あるいはインストールした後に生成できる。
【００３９】
ターゲット・アプリケーション・モジュール２２５は、ターゲット・メディアにインストールされた後、コンピュータ・システム１００上で稼動する実行可能プログラムとなる。一実施形態では、ターゲット・アプリケーション・モジュール２２５は、コンピュータ・システム１００が起動され、オペレーティング・システムがロードされるごとに毎回バックグラウンドで実行される。この実施形態では、ターゲット・アプリケーション・モジュール２２５はＩＳＡＵ８６（図３）である。それとは別に、ターゲット・アプリケーション・モジュール２２５はさらに、ＩＳＡＵ８６によってコンピュータ・システム１００にダウンロードされるデータ・ローダ・アプリケーションでもよく、ＩＳＡＵ８６はこのアプリケーションで置き換えられる。上述のように、ＩＳＡＵ８６は、バックグラウンドで稼動し、インターネット接続（または他のネットワーク接続）が検出されるまでアイドル状態のままである。そこで、ＩＳＡＵ８６は定期的に（たとえば、１５秒ごとに）ポーリングしてインターネット接続が存在しているかどうかを調べる。
【００４０】
一実施形態では、ターゲット・アプリケーション・モジュール２２５が正常に機能しているかどうかを判別する基準として（ｉ）インターネット接続がＸ回（たとえば、５回）あるかどうかを調べるポーリング操作、（ｉｉ）インターネット接続があるかどうかを検出する操作、および／または（ｉｉｉ）データ・ローダ・アプリケーションを正常にダウンロードできたという事実を使用する。ターゲット・アプリケーション・モジュール２２５がデータ・ローダ・アプリケーションであるか、データ・ローダ・アプリケーションになった場合、ターゲット・アプリケーション・モジュール２２５が機能しているかどうかを判別する基準は異なることがある。データ・ローダ・アプリケーションの機能としては、コンテントをリモート・コンピュータ（たとえば、ウェブ・サイト）からダウンロードする機能があるが、これらに限られたり、制約されるわけではない。ターゲット・アプリケーション・モジュール２２５は他の機能を実行することができるため、ターゲット・アプリケーション・モジュール２２５が機能しているかどうかを判別する基準が異なることがあるという点に注意しなければならない。ただし、本発明の実施形態では、どのようなターゲット・アプリケーション・モジュールであろうと、あるいはどのような条件のもとでターゲット・アプリケーション・モジュールが正常に機能しているとみなされようと、ターゲット・アプリケーション・モジュールを自動的にインストールする、正常に機能しない場合にターゲット・アプリケーション・モジュールを自動的にアンインストールする、および／またはある種の条件のもとでターゲット・アプリケーション・モジュールを自動的に再インストールするというメカニズムを備える。
【００４１】
ターゲット・アプリケーション・モジュール２２５が実行できない場合、共有リソース内に生成された第１のフラグはリセットされず、ソース・アプリケーション・モジュールは、次回実行されたときに、ターゲット・アプリケーション・モジュールが正常に実行または稼動しないことを検出する。実行できない原因としては、とりわけ、ターゲット・アプリケーション・モジュールの転送ができない、ターゲット・メディアに不具合がある、ターゲット・アプリケーション・モジュールを処理するオペレーティング・システムが機能しないなどいろいろな要因が考えられる。ターゲット・アプリケーション・モジュールが第１のあらかじめ定められた回数だけ連続して実行できない場合に、ソース・アプリケーション・モジュールはターゲット・アプリケーション・モジュールをターゲット・メディアに自動的に再インストールする。代案としては、ソース・アプリケーション・モジュールは他のメディアにターゲット・アプリケーション・モジュールを自動的にインストールする。
【００４２】
ターゲット・アプリケーション・モジュールが実行できても、正常に機能しない場合、共有リソース内に生成された第２のフラグはリセットされず、ソース・アプリケーション・モジュールは、次回実行されたときに、ターゲット・アプリケーション・モジュールが正常に機能しないことを検出できる。ターゲット・アプリケーション・モジュールが第２のあらかじめ定められた回数だけ連続して正常に機能しない場合に、ソース・アプリケーション・モジュールはターゲット・アプリケーション・モジュールをターゲット・メディアから自動的にアンインストールする。アンインストールが正常に行われた後、ソース・アプリケーション・モジュールはオプションにより、他のフラグをたてて、ターゲット・アプリケーション・モジュールがさらに自動的にインストールされないようにする。それとは別に、ユーザ側にこのフラグのリセットを任せるか、またはあらかじめ定められた期間が経過した後フラグがリセットされることで、ソース・アプリケーション・モジュールは再びターゲット・アプリケーション・モジュールの再インストールを行おうとする。
【００４３】
ターゲット・アプリケーション・モジュール２２５によって基準が満たされると、第１と第２のフラグがリセットされ、次回実行したときに、ターゲット・アプリケーション・モジュール２２５が正常に実行され機能したことをソース・アプリケーション・モジュール２１０に示す。
【００４４】
ソース・アプリケーション・モジュール２１０はさらに、エラーの発生していない場合に再インストールを考慮して、共有リソースおよび／またはターゲット・アプリケーション・モジュール２２５の状態を監視する。たとえば、ターゲット・アプリケーション・モジュール２２５がハードディスクにインストールされた後、そのハードディスクが取り外されるか、消去され場合、あるいは新しいオペレーティング・システム・ファイルがインストールされ、ターゲット・アプリケーション・モジュール２２５および／または共有リソース２３０の特性が変化した場合に、ソース・アプリケーション・モジュール２１０は、ターゲット・アプリケーション・モジュール２２５および／または共有リソース２３０が存在していないことを検出し、再インストールする。
【００４５】
図６は、本発明の一実施形態によるソース・アプリケーション・モジュール３００によって実行される動作の流れ図である。ソース・アプリケーション・モジュール３００は、ＢＩＯＳのＰＯＳＴ実行時のある時点に起動される。図６において、ソース・アプリケーション・モジュール３００はブロック３０２から開始し、そこでソース・アプリケーション・モジュール３００はターゲット・メディア（たとえば、大容量記憶装置やフラッシュなどの不揮発性メモリ）上のあらかじめ定められた場所の共有リソースを探す。ブロック３０４で、共有リソース・ファイルが存在していなければ、ソース・アプリケーション・モジュール３００はターゲット・メディア上のあらかじめ定められている場所に共有リソースを生成し、格納する（ブロック３０６）。次に、ソース・アプリケーション・モジュール３００は、共有リソース・ファイル内に多数のフラグを作成し、初期化する。特に、ＳＯＵＲＣＥ＿ＡＰＰ＿ＤＩＳＡＢＬＥは０に設定され、ＳＴＡＲＴ＿ＦＡＩＬおよびＥＸＩＴ＿ＦＡＩＬは１にそれぞれ設定される。次に、ブロック３０８で、ターゲット・アプリケーション・モジュールがターゲット・メディアにインストールされる。一実施形態では、ターゲット・アプリケーション・モジュールをインストールおよび／または再インストールするステップは、（ｉ）パーティション・テーブルの有無を判別するステップ、（ｉｉ）アクティブ状態のパーティションを見つけて、そのタイプがサポートされているかどうかを判別するステップ、（ｉｉｉ）ファイル・アロケーション・テーブルおよびディレクトリ構造を調べて、正常にインストールされたオペレーティング・システムが存在しているかどうかを判別するステップ、（ｉｖ）オペレーティング・システム初期化ファイルなどを調べるステップを含む。オペレーティング・システムがインストールされていると判断した後、ソース・アプリケーション・モジュールはファイル・システム構造を操作して、ターゲット・サブディレクトリ内に追加ファイル・エントリを作成する。ファイル・エントリを作成した後、ソース・アプリケーション・モジュールはターゲット・アプリケーション・モジュールおよびその関連ファイルを圧縮解除し、ターゲット・サブディレクトリにコピーする。ターゲット・アプリケーション・モジュールがインストールされた後、ソース・アプリケーション・モジュール３００は終了する（ブロック３２４）。ブロック３０６および３０８は、特に、ターゲット・メディアが取り外されたり消去された場合、あるいは共有リソース・ファイルが消去された場合に、ソース・アプリケーション・モジュール３００が最初に実行されるときに実行されることに注意されたい。
【００４６】
一方、ブロック３０４で、共有リソース・ファイルが存在し、ターゲット・アプリケーション・モジュールがインストールされていることを示している場合、ソース・アプリケーション・モジュール３００は、ブロック３１０で、ＳＯＵＲＣＥ＿ＡＰＰ＿ＤＩＳＡＢＬＥを調べる。ＳＯＵＲＣＥ＿ＡＰＰ＿ＤＩＳＡＢＬＥが１であれば、ソース・アプリケーション・モジュール３００は終了する。ＳＯＵＲＣＥ＿ＡＰＰ＿ＤＩＳＡＢＬＥが１でなければ、ソース・アプリケーション・モジュール３００は、ブロック３１２で、ＥＸＩＬ＿ＦＡＩＬを調べる。Ｎを正の整数（たとえば、６）としたときにＥＸＩＴ＿ＦＡＩＬがＮよりも大きく、ターゲット・アプリケーション・モジュールがＮ回連続して正常に機能しなかったことを示している場合、ソース・アプリケーション・モジュール３００は自動的に、ターゲット・アプリケーション・モジュールをアンインストールまたは使用禁止にし（ブロック３１４）、ＳＯＵＲＣＥ＿ＡＰＰ＿ＤＩＳＡＢＬＥを１に修正し（ブロック３１６）、終了する。ただし、一実施形態では、ターゲット・アプリケーション・モジュールの早すぎるアンインストールを防止するために、Ｎを２またはそれ以上に設定している。あらゆる状況のもとでターゲット・アプリケーション・モジュールをアンインストールするのは、考えられる障害原因に照らして、厳しすぎ、不自由きわまりない場合がある。たとえば、エラー状態または障害が、たとえターゲット・アプリケーション・プログラムが正常に動作していたとしてもユーザがコンピュータの電源を不適切に切ったことで発生する場合もある。
【００４７】
ＥＸＩＴ＿ＦＡＩＬがＮ以下であれば、ソース・アプリケーション・モジュール３００は、ＳＴＡＲＴ＿ＦＡＩＬを調べる（ブロック３１８）。Ｍを正の整数（たとえば、４）としたときにＳＴＡＲＴ＿ＦＡＩＬがＭよりも大きく、ターゲット・アプリケーション・モジュールがＭ回連続して正常に起動しなかったことを示している場合、ソース・アプリケーション・モジュール３００は自動的に、ターゲット・アプリケーション・モジュールを再インストールし（ブロック３２０）、終了する。ターゲット・アプリケーション・モジュールは、消去されていたり、破損していたり、オペレーティング・システム・ファイルと互換性がない場合などに、正常に起動しないことがある。ＳＴＡＲＴ＿ＦＡＩＬがＮ以下であれば、ソース・アプリケーション・モジュール３００は、共有リソース内に置かれているＥＸＩＴ＿ＦＡＩＬとＳＴＡＲＴ＿ＦＡＩＬを両方ともインクリメントする（ブロック３２２）。
【００４８】
図７は、本発明の一実施形態例によりターゲット・メディア上にインストールしたときにターゲット・アプリケーション・モジュール４００によって実行される動作の流れ図である。図７で、ターゲット・アプリケーション・モジュール４００はブロック４０２から開始し、パラメータの初期化、オペレーティング・システム・ファイルの有無の確認、ターゲット・アプリケーション・モジュール・ファイルの有無の確認などの初期化を実行する。ブロック４０２が正常に実行されると、ＳＴＡＲＴ＿ＦＡＩＬはブロック４０４で０にリセットされ、ターゲット・アプリケーション・モジュール４００が実行可能であることを示す。ブロック４０６で、ターゲット・アプリケーション・モジュール４００が正常に機能するかどうかを判別する。ターゲット・アプリケーション・モジュール４００が正常に機能しているかどうかを判別する基準は、アプリケーションごとに異なるが、一実施形態に従って、基準例を上に挙げてある。ターゲット・アプリケーション・モジュール４００が正常に機能していれば、ＥＸＩＴ＿ＦＡＩＬは０にリセットされ（ブロック４０８）、ターゲット・アプリケーション・モジュール４００はブロック４１０で終了する。ターゲット・アプリケーション・モジュール４００が正常に機能していなければ、ＥＸＩＴ＿ＦＡＩＬを０にリセットせずにブロック４１０で終了する。
【００４９】
本発明は、ターゲット・アプリケーション・モジュールと、障害発生の場合の前記ターゲット・アプリケーション・モジュールの自動アンインストールを監視するソース・アプリケーション・モジュールを実現するものである。本発明には、多数の非決定論的シナリオによる障害の発生を検出する、ユーザに知らせたりユーザに介入を求めることなくターゲット・アプリケーション・モジュールを自動アンインストールする、自動インストールを妨げる非決定論的シナリオを自己検出する、オペレーティング・システムを通さずにターゲット・アプリケーション・モジュールをアンインストールするといった利点がある。
【００５０】
いくつかの実施形態の例について説明し、添付の図面で示したが、このような実施形態は広範な本発明を単に説明しているだけであり、制約しているわけではなく、本発明が図に示され説明されている特定の構成および配列に限られないことは、当業者であれば他のさまざまな修正が起こりうるため、理解されるであろう。
【図面の簡単な説明】
【図１】本発明の装置と方法を使用する情報分配システムの一実施形態のシステム・ブロック図である。
【図２】本発明の実施形態を実装するプロセッサ・システムまたはユーザ・コンピュータ・システム例の図である。
【図３】本発明の一実施形態の論理図である。
【図４Ａ】、【図４Ｂ】本発明の原理に従って提供されるプロセス流れ図の一実施形態の図である。
【図５】本発明の実施形態によるＢＩＯＳおよび不揮発性記憶デバイスの論理図である。
【図６】本発明の一実施形態によるソース・アプリケーション・モジュールによって実行される動作の流れ図である。
【図７】本発明の一実施形態例によりターゲット・メディア上にインストールしたときにターゲット・アプリケーション・モジュールによって実行される動作の流れ図である。
【符号の説明】
２２０  不揮発性記憶デバイス
２１０、３００  ソース・アプリケーション・モジュール
２１５、２２５、４００  ターゲット・アプリケーション・モジュール
２３０  共有リソース
【図１】
0004842421.tif 000002
【図２】
0004842421.tif 000003
【図３】
0004842421.tif 000004
【図４Ａ】
0004842421.tif 000005
【図４Ｂ】
0004842421.tif 000006
【図５】
0004842421.tif 000007
【図６】
0004842421.tif 000008
【図７】
0004842421.tif 000009