(57)【要約】  リソース検出のための技術は、アプリケーションに関係付けられたアプリケーションインストーラを作動させること、および、アプリケーションインストーラによって創られた呼び出しを通信傍受することを含む。この技術によって構築されたシステムは、リソースが通信傍受された呼び出しからアプリケーションによって要求されたリソースを推測できる。システムは、インストーラに関係するアプリケーションの遠隔配置でのストリーミングを容易にするために、ストリーミングファイルを創出する。【選択図】図６
2008512744.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のアプリケーションに関係付けられたアプリケーションインストーラを実行することと、
アプリケーションインストーラによって創られた呼び出しを傍受することと、
アプリケーションインストーラに関係付けられるべきリソースおよび設定を傍受された呼び出しから決定することと、
実行時にアプリケーションをストリームするよう設定されたストリーミングアプリケーションを創出することを備える方法。
【請求項２】
アップデートをアプリケーションと関係付けることと、
アップデートに関係付けられたアップデートを実行することと、
アップデートインストーラによって創られた呼び出しを傍受することと、
アップデートに関係付けられるべきリソース及び設定を傍受された呼び出しから決定することと、
アップデートの設定及びリソースの要求に従ってストリーミングアプリケーションをアップデートすることをさらに備える請求項１に記載の方法。
【請求項３】
初期ストリーミングアプリケーションを創出することと、
ジャンプスタートデータを捕捉することと、
ジャンプスタートデータを初期ストリーミングアプリケーションに併合することをさらに備える請求項１に記載の方法。
【請求項４】
アプリケーションの論理分割のためのジャンプスタートデータを捕捉することと、
各論理分割のためにジャンプスタートデータを併合するとともに、併合されたジャンプスタートデータを使用するストリーミングアプリケーションを再構築することをさらに備える請求項１に記載の方法。
【請求項５】
１つ以上のアプリケーションに関係付けられたアプリケーションインストーラを実行する手段と、
アプリケーションインストーラによって創られた呼び出しを傍受する手段と、
アプリケーションインストーラに関係付けられるべきリソースおよび設定を傍受された呼び出しから決定する手段と、
実行時にアプリケーションをストリームするよう設定されたストリーミングアプリケーションを創出する手段を備えるシステム。
【請求項６】
１つ以上のアプリケーションに関係付けられたアプリケーションインストーラが実行される環境を少なくとも部分的に提供するように構成されるアプリケーションインストーラ実行モジュールと、
その環境で実行されるアプリケーションインストーラによって創られた呼び出しを傍受するように構成された傍受モジュールと、
インストールによって関係付けられたデータを記録し、傍受された呼び出しからアプリケーションに関係付けられるべきリソースを推測する記録モジュールと、
実行時に、アプリケーションをストリームするように構成されたストリームファイルを創出するように構成されたストリームファイル創出モジュールを備えるシステム。
【請求項７】
アプリケーションにアップデートを関係付ける手段と、
アップデートに関係付けられたアップデートインストーラを実行する手段と、
アップデートインストーラによって創られた呼び出しを傍受する手段と、
アップデートに関係付けられるべきリソースを設定を傍受された呼び出しから決定する手段と、
アップデートの設定およびリソースの要求に従ってストリーミングアプリケーションをアップデートする手段をさらに備える請求項６に記載のシステム。
【請求項８】
初期のストリーミングアプリケーションを創出する手段と、
ジャンプスタートデータを捕捉する手段と、
ジャンプスタートデータを初期のストリーミングアプリケーションに併合する手段をさらに備える請求項６に記載のシステム。
【請求項９】
アプリケーションの論理分割のためのジャンプスタートデータを捕捉する手段と、
各論理分割のためにジャンプスタートデータを併合する手段と、
併合されたジャンプスタートデータを使用するストリーミングアプリケーションを再構築する手段をさらに備える請求項６に記載のシステム。
【請求項１０】
アプリケーションインストーラによって創られた呼び出しは、レジストリ値の変更に関係付けられる請求項６に記載のシステム。
【請求項１１】
アプリケーションインストーラによって創られた呼び出しは、ファイルの変更に関係付けられる請求項６に記載のシステム。
【請求項１２】
アプリケーションに関係付けられるべきリソースを傍受された呼び出しから決定する手段をさらに備える請求項６に記載のシステム。
【請求項１３】
１つ以上のアプリケーションに関係付けられたアプリケーションインストーラが実行される環境を少なくとも部分的に提供するように構成されたアプリケーションインストーラ実行モジュールと、
その環境で実行される間にアプリケーションインストーラによって創られた呼び出しを傍受するように構成された傍受モジュールと、
インストールによって関係付けられたデータを記録し、傍受された呼び出しからアプリケーションに関係付けられるべき設定を推測するように構成された記録モジュールと、
実行時に、アプリケーションをストリームするストリームアプリケーションを創出するように構成されたストリーミングアプリケーション創出モジュールを備えるシステム。
【請求項１４】
アプリケーションのアップデートに関係付けられたアップデートインストーラを実行するためのアップデートインストーラを備え、
傍受モジュールは、アップデートインストーラによって創られた呼び出しを傍受し、
記録モジュールはアップデートに関係付けられるべき設定を記録し、
ストリーミングアプリケーション創出モジュールは、記録された設定によってストリーミングアプリケーションをアップデートする請求項１３に記載のシステム。
【請求項１５】
ストリーミングアプリケーション創出モジュールは初期ストリーミングアプリケーションを創出し、ジャンプスタートデータを捕捉するために使用されるテストコンピュータを備え、ストリーミングアプリケーション創出モジュールはジャンプスタートデータを初期ストリーミングアプリケーションに併合する請求項１３に記載のシステム。
【請求項１６】
ストリーミングアプリケーションの論理分割のためのジャンプスタートデータが捕捉されると、ストリーミングアプリケーション創出モジュールは、各論理分割のためのジャンプスタートデータを併合でき、併合されたジャンプスタートデータを使用するストリーミングアプリケーションの再構築を促進する請求項１３に記載のシステム。
【請求項１７】
アプリケーションインストーラによって創られた呼び出しは、レジストリの変更に関係付けられる請求項１３に記載のシステム。
【請求項１８】
アプリケーションインストーラによって創られた呼び出しは、ファイルの変更に関係付けられる請求項１３に記載のシステム。
【請求項１９】
アプリケーションに関係付けられるべきリソースを傍受された呼び出しから決定するストリーミングアプリケーション創出モジュールをさらに備える請求項１３に記載のシステム。
【請求項２０】
ストリーミングアプリケーションはトークンファイルとストリームファイルを備える請求項１３に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
仮想インストールは、ソフトウェアのストリーミングを容易にするために使われる。仮想インストールによって、ソフトウェアは、実際にソフトウェアをダウンロードすることなく仮想的にインストールされる。仮想インストール用ソフトウェアに係る技術としてストリーミングが必要となる。通常、ソフトウェアストリーミングは、ストリーミング中に、いかなるファイルやリソースがプログラムによって消費されることになっているかを予期することが必要になる。ソフトウェアが必要とされているリソース（資源）を備えていることを保証する技術として、プログラムのインストールの前にドライブのスナップショットをとること、プログラムのインストールを行うこと、プログラムインストール後にスナップショットをとること、そして、どんな変化がドライブに生じたかを特定するためにプログラムインストール前のスナップショットとプログラムインストール後のスナップショットを比較すること、を伴う。これによって、プログラムにより使われるリソースが決定される。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
しかしながら、この技術はドライブのスナップショットを取ることを必要としており、それは時間の浪費となり、比較的に大量のメモリまたは記憶リソースを消費することにもなりかねない。
【課題を解決するための手段】
【０００３】
本発明は、１つ以上のアプリケーションに関係付けられたアプリケーションインストーラを実行することと、アプリケーションインストーラによって創られた呼び出しを傍受することと、アプリケーションインストーラに関係付けられるべきリソースおよび設定を傍受された呼び出しから決定することと、実行時にアプリケーションをストリームするよう設定されたストリーミングアプリケーションを創出することを備える方法である。
【０００４】
また、本発明は、アップデートをアプリケーションと関係付けることと、アップデートに関係付けられたアップデートを実行することと、アップデートインストーラによって創られた呼び出しを傍受することと、アップデートに関係付けられるべきリソース及び設定を傍受された呼び出しから決定することと、アップデートの設定及びリソースの要求に従ってストリーミングアプリケーションをアップデートすることをさらに備えていてもよい。
【０００５】
また、本発明は、初期ストリーミングアプリケーションを創出することと、ジャンプスタートデータを捕捉することと、ジャンプスタートデータを初期ストリーミングアプリケーションに併合することをさらに備える方法である。
【０００６】
また、アプリケーションの論理分割のためのジャンプスタートデータを捕捉することと、各論理分割のためにジャンプスタートデータを併合するとともに、併合されたジャンプスタートデータを使用するストリーミングアプリケーションを再構築することをさらに備えていてもよい。
【０００７】
また、本発明は、１つ以上のアプリケーションに関係付けられたアプリケーションインストーラを実行する手段と、アプリケーションインストーラによって創られた呼び出しを傍受する手段と、アプリケーションインストーラに関係付けられるべきリソースおよび設定を傍受された呼び出しから決定する手段と、実行時にアプリケーションをストリームするよう設定されたストリーミングアプリケーションを創出する手段を備えるシステムである。
【０００８】
また、本発明は、１つ以上のアプリケーションに関係付けられたアプリケーションインストーラが実行される環境を少なくとも部分的に提供するように構成されるアプリケーションインストーラ実行モジュールと、その環境で実行されるアプリケーションインストーラによって創られた呼び出しを傍受するように構成された傍受モジュールと、インストールによって関係付けられたデータを記録し、傍受された呼び出しからアプリケーションに関係付けられるべきリソースを推測する記録モジュールと、実行時に、アプリケーションをストリームするように構成されたストリームファイルを創出するように構成されたストリームファイル創出モジュールを備えていてもよい。
【０００９】
また、本発明は、アプリケーションにアップデートを関係付ける手段と、アップデートに関係付けられたアップデートインストーラを実行する手段と、アップデートインストーラによって創られた呼び出しを傍受する手段と、アップデートに関係付けられるべきリソースと設定を傍受された呼び出しから決定する手段と、アップデートの設定およびリソースの要求に従ってストリーミングアプリケーションをアップデートする手段をさらに備えていてもよい。
【００１０】
また本発明は、初期のストリーミングアプリケーションを創出する手段と、ジャンプスタートデータを捕捉する手段と、ジャンプスタートデータを初期のストリーミングアプリケーションに併合する手段をさらに備えていてもよい。
【００１１】
また、本発明は、アプリケーションの論理分割のためのジャンプスタートデータを捕捉する手段と、各論理分割のためにジャンプスタートデータを併合する手段と、併合されたジャンプスタートデータを使用するストリーミングアプリケーションを再構築する手段をさらに備えていてもよい。
【００１２】
また、本発明は、アプリケーションインストーラによって創られた呼び出しは、レジストリ値の変更に関係付けられる構成を採用できる。
【００１３】
また、本発明は、アプリケーションインストーラによって創られた呼び出しは、ファイルの変更に関係付けられる構成を採用できる。
【００１４】
また、本発明は、アプリケーションに関係付けられるべきリソースを傍受された呼び出しから決定する手段をさらに備えていてもよい。
【００１５】
また、本発明は、１つ以上のアプリケーションに関係付けられたアプリケーションインストーラが実行される環境を少なくとも部分的に提供するように構成されたアプリケーションインストーラ実行モジュールと、その環境で実行される間にアプリケーションインストーラによって創られた呼び出しを傍受するように構成された傍受モジュールと、インストールによって関係付けられたデータを記録し、傍受された呼び出しからアプリケーションに関係付けられるべき設定を推測するように構成された記録モジュールと、実行時に、アプリケーションをストリームするストリームアプリケーションを創出するように構成されたストリーミングアプリケーション創出モジュールを備えるシステムである。
【００１６】
また、本発明は、アプリケーションのアップデートに関係付けられたアップデートインストーラを実行するためのアップデートインストーラを備え、傍受モジュールは、アップデートインストーラによって創られた呼び出しを傍受し、記録モジュールはアップデートに関係付けられるべき設定を記録し、ストリーミングアプリケーション創出モジュールは、記録された設定によってストリーミングアプリケーションをアップデートする構成を採用できる。
【００１７】
また、本発明は、ストリーミングアプリケーション創出モジュールは初期ストリーミングアプリケーションを創出し、ジャンプスタートデータを捕捉するために使用されるテストコンピュータを備え、ストリーミングアプリケーション創出モジュールはジャンプスタートデータを初期ストリーミングアプリケーションに併合する構成を採用できる。
【００１８】
また、本発明は、ストリーミングアプリケーションの論理分割のためのジャンプスタートデータが捕捉されたとき、ストリーミングアプリケーション創出モジュールは、各論理分割のためのジャンプスタートデータを併合でき、併合されたジャンプスタートデータを使用するストリーミングアプリケーションの再構築を促進する構成を採用できる。
【００１９】
また、本発明は、アプリケーションインストーラによって創られた呼び出しが、レジストリの変更に関係付けられる構成を採用できる。
【００２０】
また、本発明は、アプリケーションインストーラによって創られた呼び出しが、ファイルの変更に関係付けられる構成を採用できる。
【００２１】
また、本発明は、アプリケーションに関係付けられるべきリソースを傍受された呼び出しから決定するストリーミングアプリケーション創出モジュールをさらに備えるようにしてもよい。
【００２２】
また、本発明は、ストリーミングアプリケーションがトークンファイルとストリームファイルを備える構成を採用できる。
【発明を実施するための最良の形態】
【００２３】
図１−６に係る以下の説明は、コンピュータハードウェアの概要と、ここに記載された発明の方法を実行するのに適した他のコンポーネントを提供するためのものであり、本発明の適用可能な環境を制限するものではない。同様に、コンピュータハードウェアと他の動作コンポーネントはここに説明された発明の装置の一部として適したものであり得る。本発明は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム化可能な家電、ネットワークＰＣ、小型コンピュータ、メインフレームコンピュータ等の、他のコンピュータシステムコンフィギュレーションによって実行される。本発明はまた、通信ネットワークを通して接続される遠隔処理装置によってタスクが実行される分散コンピューティング環境において実行可能である。
【００２４】
図１は、ネットワークシステム１００を示している。このネットワークシステム１００は、インターネットなどのネットワーク１０２を通じて接続された、いくつかのコンピュータシステムを含む。ここで使用される用語「インターネット」は、ＴＣＰ／ＩＰプロトコルなどの所定のプロトコル、およびワールドワイドウェブ（ウェブ)を作るようなハイパーテキストマークアップ言語（ＨＴＭＬ）ドキュメントのためのハイパーテキストトランスファプロトコル（ＨＴＴＰ）のような他のプロトコルを使用する複数のネットワークのうちの１つのネットワークを参照する。インターネットの物理的接続と、インターネットのプロトコルおよび通信手順は、当業者によく知られているものである。
【００２５】
ウェブサーバ１０４は通常、サーバコンピュータシステムとして動作する少なくとも１つのコンピュータシステムであり、ワールドワイドウェブのプロトコルで動作するように構成され、インターネットに接続されている。ウェブサーバシステム１０４は従来のサーバコンピュータシステムであってもよい。付随的に、ウェブサーバ１０４は、クライアントシステムのためにインターネットへのアクセスを提供するＩＳＰの一部であってもよい。ウェブサーバ１０４は、自身が、ウェブコンテンツ１０８につながれたサーバコンピュータシステム１０６につながれたものとして示される。このウェブコンテンツ１０８は、メディアデータベースのフォームと考えられる。図１は２つのコンピュータシステム１０４と１０６を示している。ウェブサーバシステム１０４とサーバコンピュータシステム１０６は、異なるソフトウェアの構成要素を備えており、ウェブサーバシステム１０４とサーバコンピュータシステム１０６はウェブサーバ機能とサーバコンピュータシステム１０６によって提供されたサーバ機能を提供している異なるソフトウェアコンポーネントを有する1つのコンピュータシステムであってもよい。ウェブコンテンツ１０８は、メディアデータベースの一形態と考えることができる。
【００２６】
ネットワーク１０２へのアクセスは一般にＩＳＰ１１０と１１６などのインターネットサービスプロバイダ（ＩＳＰ）によって提供される。クライアントコンピュータシステム１１２、１１８、１２２および１２６などのクライアントシステムのユーザは、ＩＳＰ１１０と１１６を通じてインターネットへのアクセスを得る。インターネットへのアクセスは、クライアントコンピュータシステムのユーザに、情報を交換すること、ｅメールを送受信すること、ＨＴＭＬフォーマットにおいて用意されているドキュメントを見ることを可能にする。これらのドキュメントはウェブサーバ１０４などのウェブサーバによってしばしば提供される。このウェブサーバ１０４は、インターネット「上」にある、と呼ばれる。しばしばこれらのウェブサーバは、ＩＳＰ１１０などのＩＳＰによって提供される。しかしながら、コンピュータシステムは、システムがＩＳＰになることなしにセットアップされ、インターネットに接続される。
【００２７】
クライアントコンピュータシステム１１２、１１８、１２２、および１２６はそれぞれ、適切なウェブブラウジングソフトウェアと一緒に、ウェブサーバ１０４によって提供されたＨＴＭＬページを見ることができる。ＩＳＰ１１０はモデムインタフェース１１４を通じてクライアントコンピュータシステム１１２にインターネット接続を提供する。モデムインタフェース１１４は、クライアントコンピュータシステム１１２の一部と考えることができる。クライアントコンピュータシステムはパーソナルコンピュータシステム、ネットワークコンピュータ、ウェブテレビシステム、または他のコンピュータシステムであってもよい。図１では「モデム」の総称としてモデムインタフェース１１４を示しており、インタフェースは、アナログモデム、「ｉｓｄｎ」モデム、ケーブルモデム、衛星トランスミッションインタフェース（例えば「ダイレクトＰＣ」)、または他のコンピュータシステムにあるコンピュータシステムを結合するための他のインタフェースであってもよい。
【００２８】
図１に示すように、ＩＳＰ１１４と同様に、ＩＳＰ１１６は、クライアントシステム１１８、１２２および１２６のためインターネット接続を提供する。これらの３つのコンピュータシステムについては、接続は、同一にはなっていない（同じではない）。クライアントコンピュータシステム１２２と１２６はＬＡＮ１３０の一部であり、クライアントコンピュータシステム１１８はモデムインタフェース１２０を通じて接続される。
【００２９】
クライアントコンピュータシステム１２２と１２６は、ネットワークインタフェース１２４と１２８を通じてＬＡＮ１３０に接続される。ネットワークインタフェース１２４と１２８はイーサネット（登録商標）ネットワークまたは他のネットワークインタフェースであってもよい。ＬＡＮ１３０はまた、ローカルエリアネットワークのためにファイアウォールと他のインターネット関連のサービスを提供することができるゲートウェイコンピュータシステム１３２に接続される。このゲートウェイコンピュータシステム１３２は、クライアントコンピュータシステム１２２と１２６にインターネット接続を提供するためにＩＳＰ１１６に接続される。ゲートウェイコンピュータシステム１３２は従来のサーバコンピュータシステムであってもよい。
【００３０】
また、サーバコンピュータシステム１３４は、ゲートウェイシステム１３２を通してインターネットと接続する必要がなく、クライアント１２２と１２６にファイル１３８や他のサービスを提供するためのネットワークインタフェース１３６を通じて、ＬＡＮ１３０に直接接続されてもよい。
【００３１】
図２はシステム１００（図１）での使用のためのコンピュータシステム１４０を示している。コンピュータシステム１４０は、クライアントコンピュータシステム、サーバコンピュータシステム、ウェブサーバシステムとして使用される従来のコンピュータシステムであってもよい。そのようなコンピュータシステムは、ＩＳＰ１１０（図１)などのインターネットサービスプロバイダの多くの機能を実行するために使用される。コンピュータシステム１４０はコンピュータ１４２、Ｉ／Ｏデバイス１４４、およびディスプレイデバイス１４６を含む。コンピュータ１４２はプロセッサ１４８、通信インタフェース１５０、メモリ１５２、ディスプレイコントローラ１５４、不揮発性記憶装置１５６、およびＩ／Ｏコントローラ１５８を含む。コンピュータシステム１４０は、Ｉ／Ｏデバイス１４４とディスプレイデバイス１４６とに接続されるか、またはＩ／Ｏデバイス１４４とディスプレイデバイス１４６を含んでいてもよい。
【００３２】
コンピュータ１４２は通信インタフェース１５０を介して外部システムに接続する。インタフェース１５０はモデムまたはネットワークインタフェースを含んでいてもよい。通信インタフェース１５０がコンピュータシステム１４０のまたは別のコンピュータ１４２の一部であるとみなされることが判るであろう。通信インタフェースは、アナログモデム、isdnモデム、ケーブルモデム、トークンリングインタフェース、衛星トランスミッションインタフェース（例えば「ダイレクトＰＣ」)、または他のコンピュータシステムに、あるコンピュータシステムを結合するための他のインタフェースであってもよい。
【００３３】
プロセッサ１４８は例えばインテル（登録商標）ペンティアムマイクロプロセッサまたはモトローラパワーＰＣマイクロプロセッサなどの従来のマイクロプロセッサであってもよい。メモリ１５２はプロセッサ１４８にバス１６０で接続される。メモリ１５２はダイナミックランダムアクセスメモリ（ｄｒａｍ)であってもよく、スタティックラム（ｓｒａｍ）を含むこともできる。バス１６０は、メモリ１５２を、プロセッサ１４８、不揮発性ストレージ１５６、ディスプレイコントローラ１５４、Ｉ／Ｏコントローラ１５８に接続する。
【００３４】
Ｉ／Ｏデバイス１４４は、キーボード、ディスクドライブ、プリンタ、スキャナ、マウスや他のポイティングデバイスを含む他の入出力装置を含んでいてもよい。ディスプレイコントローラ１５４は従来の方法でディスプレイデバイス１４６のディスプレイを制御できる。ディスプレイデバイス１４６は例えばブラウン管（ＣＲＴ）または液晶ディスプレイ（ＬＣＤ）であってもよい。ディスプレイコントローラ１５４とＩ／Ｏコントローラ１５８は従来の周知の技術によって実施されることができる。
【００３５】
不揮発性記憶装置１５６は、大量のデータのために、大抵、磁気のハードディスク、光ディスク、または別形式の記憶装置となっている。このデータには、コンピュータ１４２のソフトウェアの実行中に、ダイレクトメモリアクセスプロセスによってメモリ１５２にしばしば書き込まれるものもある。当業者は、直ちに、用語「機械可読メディア」または「コンピュータが読み取り可能なメディア」が、プロセッサ１４８によってアクセス可能で、また、データ信号をエンコードする搬送波を取り巻く任意のタイプの記憶装置でも含むと認めるであろう。
【００３６】
コンピュータシステム１４０は、異なるアーキテクチャを有する多くの実行可能なコンピュータシステムの1つの例である。例えば、インテルマイクロプロセッサによるパーソナルコンピュータは、多重バスをしばしば有する。多重バスの一つは、周辺機器のためのＩ／Ｏバスであったり、プロセッサ１４８とメモリ１５２を直接接続するものであり得る。メモリ１５２は、しばしばメモリバスと呼ばれる。バスは、異なるバスプロトコルのためどのような必要な翻訳をも実行するブリッジコンポーネントを通して共に接続される。
【００３７】
ネットワークコンピュータは、本発明によって使用される別のタイプのコンピュータシステムである。ネットワークコンピュータは通常ハードディスクまたは他の大容量記憶装置を含まず、実行可能なプログラムはプロセッサ１４８による実行のためにネットワーク接続からメモリ１５２中にロードされる。この技術分野で知られているウェブテレビシステムは、本発明に係るコンピュータシステムであると考えられるが、それは所定の入出力デバイスなどの図２で示された機能のいくつかを欠いていてもよい。典型的なコンピュータシステムは、通常、少なくともプロセッサ、メモリ、およびプロセッサにメモリを結合したバスを含む。
【００３８】
さらに、コンピュータシステム１４０は、ディスク動作システムなどのファイル管理システムを含む動作システムソフトウェアによってコントロールされる。ディスク動作システムは動作システムソフトウェアの一部である。その関連したファイル管理システムソフトウェアを有する動作システムソフトウェアの１つの例はワシントン州レドモンドのマイクロソフト社からウィンドウズ（登録商標）として知られている動作システムとそれらに関連したファイル管理システムである。これに関連したファイル管理システムソフトウェアを有する動作システムソフトウェアの別の例はリナックス動作システムとその関連したファイル管理システムである。ファイル管理システムは、一般に不揮発性記憶装置１５６中に記憶されており、データを入力、出力したり、メモリにデータを記憶したり、不揮発性記憶装置１５６にファイルを記憶させたりするためのオペレーティンシステムに要求された様々の行為を、プロセッサ１４８に実行させる。
【００３９】
詳細な説明中のいくつかの部分の記載は、コンピュータのメモリ内のデータビット上における操作のアルゴリズムとシンボリック表記によって示される。これらのアルゴリズム的な記載および表記は、データ処理技術の分野における当業者によって用いられる手法であり、彼らの仕事を他の当業者に最も効果的に伝達できるものである。ここにあるアルゴリズムは、一般に、望まれた結果に導く操作の自己矛盾のないものと考えられる。操作は物理量の物理的な操作を要求するものである。通常は必要ないが、これらの量は記憶、転送、結合、比較等の操作が可能な電子的、磁気的な信号の形式をとる。これらの信号は、ビット、値、要素、記号、文字、用語、数等を参照する共通の用法の理由で、時には便利であることが証明されている。これらのすべての又は類似の用語は、適当な物理量に関連付けられるものであり、また、単にこれらの量に適用される便利なラベルであることが想起されるべきである。特に述べられない限り、以下の議論から明白でない限り、「プロセッシング」（処理）、「コンピューティング」、「カルキュレーティング」（計算）、「ディターミニング」（決定）、「ディスプレイング」（表示）等の用語を用いる議論は、コンピュータシステム、あるいは類似の電子コンピューティングデバイスの実行および処理をいう。コンピュータシステム、あるいは類似の電子コンピューティングデバイスは、コンピュータシステムのレジスタやメモリ内で物理（電子）量として表現されたデータを、コンピュータシステムのメモリ、レジスタ、他の情報記憶装置、伝達装置あるいは表示装置内で同じように表現された物理量へと操作・変換するものである。
【００４０】
本発明は、いくつかの実施形態において、ここでの操作の実行のための装置と関係する。この装置は、要求された処理のために特別に組み立てられたものであってもよく、あるいは、コンピュータ内で記憶されたコンピュータプログラムによって選択的に駆動乃至再構成される汎用コンピュータを構成するものであってもよい。そのようなコンピュータプログラムは、これらに限定されるものではないが、フロッピーディスク（登録商標）を含むあらゆるタイプのディスク、オプティカルディスク、ＣＤロム、光磁気ディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気あるいは光カード、あらゆる電子的命令の記憶に適したメディア、互いに結合されたコンピュータシステムバス等の読み込み可能な記憶媒体に記憶されていてもよい。
【００４１】
ここで表されたアルゴリズムとディスプレイは、いかなる特殊なコンピュータあるいは他の装置と固有な関係を有するものではない。種々の汎用システムは、ここでの教示によるプログラムとともに使用され、あるいは、要求された方法ステップを実行するためのより特殊な装置を構築するのに便利であることが証明される。これらのシステムの変化のための要求されたストラクチャは、以下の説明から明らかとなるであろう。さらに、本発明はいかなる特定のプログラム言語によっても記載されず、様々な実施形態が種々のプログラミング言語を用いて実行され得る。
【００４２】
図３は、コンピュータシステム１４０（図２）の一部を示しており、システム１００の構成要素を示している。図３は、コンピュータシステム１４０、ネットワーク１６２、テストコンピュータ１６４を示している。ネットワーク１６２は、インターネット、ローカルエリアネットワークやワイドエリアネットワーク（ＬＡＮやＷＡＮ）、他のイントラネットやネットワーク等のグローバルインフォメーションネットワークであってもよい。例えば、ネットワーク１０２（図１）は、ネットワーク１６２を含んでいてもよい。これに代えて、ＬＡＮ１３０（図１）は、ネットワーク１６２を含んでいてもよい。さらにこれに代えて、コンピュータシステム１４０は、テストコンピュータ１６４に物理的に又は無線によって結合されたものであってもよい。
【００４３】
試行錯誤を通じて原始的な動作環境はストリーミングアプリケーションのような所定のアプリケーションをテストするのに重要であることが見出された。そのために、ある実施形態では、原始的なテスト環境を確実なものにするためのゴースティングが使用される。ゴースティングはクリーンな環境を準備し、クリーン環境（ゴーストされたパーティション）に関連したパーティションのコピーを創り出し、クリーン環境を復旧させるために、ゴーストされたパーティションを上書きすることを含む技術である。このように、ゴースティングは、「パーティション、セーブ、リストア」手続として考えられている。ゴースティングを容易にするユーティリティとして「Ｎｏｒｔｏｎ  Ｇｈｏｓｔ（登録商標）７．５」がある。ある実施形態において、アプリケーションの単なる除去や、従来のバックアップを実行することは、所定のファイルやレジストリの値を取り除くには不十分である。例えば、従来のバックアップを実行することは、アプリケーションを取り除くことはできるかもしれないが、そのアプリケーションに関するレジストリの値を残してしまう。レジストリの値はアプリケーションが再インストールされれば、再び使用されてしまう。しかしながら、ストリーミングアプリケーションの状況では、テスト環境は、ストリーミングアプリケーションがまるでテストマシーン上にないかの如く毎回改めて始動されなければならない。それにより、ある実施形態において、テストコンピュータ１６４はゴーストされた設定を有し得る。また、テストコンピュータ１６４は、クリーンな動作環境を有する。この動作環境は、ファイル、およびアプリケーションが取り除かれた後に残るアプリケーションに関連したレジストリの値の産物を削除することによって完成されるものである。
【００４４】
テストコンピュータ１６４は、ネットワーク１６２に接続されていて、アクセス可能になっている。テストコンピュータ１６４は、コンピュータシステム１４０（図２）のようなコンピュータシステムの部分となり得る。テストコンピュータ１６４は、プロセッサ、メモリ、プロセッサとメモリを結合するバスを含み得る。テストの目的のために、設定は、関連性のない、あるいは気の散るようなアプリケーションを可能な限り少なく含むべきである。例えば、コンピュータシステム１４０がストリーミングのためのアプリケーションを準備するために使用されるならば、その準備は、ストリーミングアプリケーションと結合しないレジストリの値を生み出す。レジストリの値がコンピュータシステム１４０に存在していることから、ストリーミングアプリケーションは、同じコンピュータでテストされた場合、レジストリの値が、適切に捕捉されておらず、ストリーミングアプリケーションに結合していないにも関わらず、このレジストリの値を利用する。また、ストリーミングアプリケーションが異なるコンピュータで作動しているときには、ストリーミングアプリケーションは、それに利用可能な適切なレジストリの値を有していない。この理由から、ある実施形態において、テストコンピュータ１６４は、プロセッシングおよびテストアプリケーションのためのコンピュータシステム１４０との結合を伴って使用される。さらに、アプリケーションの処理後にコンピュータシステム１４０上にその産物が残るという理由により、テストコンピュータ１６４は、しばしばコンピュータシステム１４０に加えられるのが望ましい。また、コンピュータシステム１４０は、プロセスおよびテストアプリケーションに使用され得る。また、コンピュータシステム１４０は、プロセスおよびテストアプリケーションに使用され得る。ここで、コンピュータシステム１４０は、適切にクリーンにされるかまたはパーティション化される。テストは推奨されるのであるが、はっきりと要求されるものではない点に留意が必要である。
【００４５】
コンピュータシステム１４０は、プロセッサ１６６と、プロセッサ１６６をメモリ１６８と結合するバス１７０を含む。メモリ１６８はＤＲＡＭやＳＲＡＭのような両方の揮発性メモリと、不揮発性メモリを含み得る。プロセッサ１６６は、メモリ１６８内のコードを実行する。メモリ１６８は、通信傍受に基づくリソース検出プログラム１７２、インストーラ１７４、およびリソース１７６を含む。コンピュータシステム１４０におけるいくつかのあるいは全てのアプリケーションやデータは、サーバコンピュータ１６（図１）のような、ウェブコンテンツとして供給される。アプリケーションやデータは、サーバコンピュータ１３４（図１）のような、ＬＡＮあるいはＷＡＮ上のサーバコンピュータの部分となり得る。インストーラ１７４によって関係付けられたアプリケーションと共に使用されるプログラムは、テストコンピュータ１６４上に配置される。そして、プログラムは、コンピュータシステム１４０上で要求されたものであってもよいし、要求されなくてもよい。例えば、アプリケーションが所定のバージョンの「ＤｉｒｅｃｔＸ（登録商標）」、「Ａｃｒｏｂａｔ（登録商標）」、「ＱｕｉｃｋＴｉｍｅ（登録商標）」を要求するなら、特定のバージョンがテストコンピュータ１６４で要求され得る。また、インストーラ１７４は、「ＤｉｒｅｃｔＸ」のようなプログラムがすでにインストールされているかどうかをチェックし、プログラムがインストールされていない場合には、インストールを行ってもよい。
【００４６】
通信傍受に基づいたリソース検出プログラム１７２は、インストーラ１７４が実行されている間、このインストーラ１７４を監視する。.通信傍受に基づくリソース検出プログラムは、インストーラ１７４と関係付けられたリソース１７６の記録を創り出す。リソース１７６は、インストール済みのファイル、レジストリのキー、およびインストーラ１７４によって呼び出され、あるいは使用された他のリソースを含み得る。ある実施形態において、インストーラ１７４は、インストーラ１７４が遠隔リソースにアクセスする必要がないように内蔵型となっている。いくつかの又は全てのリソース１７６はインストーラ１７４内に含まれていてもよい、含まれていなくてもよい。また、リソースは、遠隔配置で利用され、インストーラ１７４が実行されたときに、ダウンロードされ、提供される。通信傍受に基づくリソース検出プログラム１７２は、リソースがインストーラ１７４と関係付けられたアプリケーションをストリームする必要のある記録から推測を行う。
【００４７】
インストーラ１７４は、サブプロセスを含んでいてもよいし、含んでいなくてもよい。例えば、インストーラ１７４は、「ＤｉｒｅｃｔＸ」のようなプログラムがインストールされたかどうかをチェックし、プログラムがインストールされていなければ、インストールを行う。プログラムのインストールは、インストーラ１７４のサブプロセスとして実行され得る。他のサブプロセスの例は、ＧＵＩのユーザからの情報を集めて情報を利用するインストーラ（サブプロセス）を実行するインストーラ１７４を含んでいてもよい。他の例は、マイクロソフト（登録商標）のインストーラで、これはサービスモデルのもとでのものであり、サブシステムがファイルをコピーし、レジストリエントリを創り出すものである。複合的なサブプロセスに分割されるインストーラ１７４を生じさせる多くの異なる理由やプログラミングスタイルがある。これらは単なる例である。サブプロセスは、それら自体、インストーラであってもなくてもよい。例えば、サブプロセスは、インストーラ１７４によってもたらされ得る。ここで、インストーラ１７４とインストーラ１７４のサブプロセスの活動をトラッキング可能とする技術が提供される。図４Ｂを参照して、マルチプロセスインストーラの一例が後に記載されている。
【００４８】
通信傍受に基づくリソース検出プログラム１７２は、論理的に機能モジュールに分割されている。例えば、通信傍受に基づくリソース検出プログラム１７２は、通信傍受モジュール１７８、アプリケーションインストーラ実行モジュール１８０、記録モジュール１８２、検証モジュール１８４、パージングモジュール１８６、およびストリーミングアプリケーション創出モジュール１８８を含む。
【００４９】
ある実施形態において、通信傍受モジュール１７８は、インストーラ１７４の実行に優先して始動される。また、通信傍受モジュール１７８は、インストーラ１７４と同時に又はインストーラ１７４の後に始動されてもよい。通信傍受モジュール１７８は実行時間中に操作される。
【００５０】
アプリケーションインストーラ実行モジュール１８０は、インストーラ１７４を実行する環境の一部を提供する。ある実施形態において、通信傍受に基づくリソース検出プログラム１７２は、その環境の少なくとも一部を提供する。他の実施形態において、いくつかの又は全てのアプリケーションインストーラ実行モジュール１８０は、動作システムあるいはインストーラ１７４のようなアプリケーションインストーラを実行するためのプログラムから提供される。ある実施形態において、アプリケーションインストーラ実行モジュール１８０は、例えばインストーラ１７４が実行されたことをユーザが指示するＧＵＩを含む。アプリケーションインストーラ実行モジュール１８０は、それからインストーラ１７４を実行する。
【００５１】
インストーラ１７４が作動している間、通信傍受モジュール１７８と関係付けられたインターセプタがインストーラによって作られた呼び出しを捕捉する。呼び出しは、ファイルシステム、レジストリ、その他の呼び出しを含み得る。呼び出しの傍受は、例えば、オフセット値を変えること、あるいはファイルシステムフックテクニックを使うことによって達成される点に留意されるべきである。これらの技術は周知であるので、通信傍受技術の詳細な説明は省略する。図４Ａから図４Ｃは、呼び出し捕捉を説明する。
【００５２】
図４Ａに示すように、ツール１９０は、インストーラ１９２を実行する。ツールは、例えば、通信傍受に基づくリソース検出プログラム１７２であってもよい。インストーラ１９２を実行するツール１９０のモジュールは、例えば、通信傍受に基づくリソース検出プログラム１７２のアプリケーションインストーラ実行モジュール１８０であってもよい。インターセプタ１９４は、インストーラ１９２の所定の動作を監視する。前記したように、インターセプタ１９４は、インストーラ１９２の実行に優先して実行され得る。インターセプタ１９４は、例えば、通信傍受に基づくリソース検出プログラム１７２の通信傍受モジュール１７８によって実行させられる。図４Ａの例において、インターセプタ１９４は、ファイルシステム呼び出し１９８およびレジストリ呼び出し２００を捕捉する。「呼び出し」の用語は、インストーラ１９２が実行された環境を変化させるどのような動作をも含む。図４Ａの例において、インターセプタ１９４は、環境変数呼び出し２０２を動的には監視しない。なぜなら、環境変数は、インストーラ１９２が終了した後にチェックされるからである（図示せず）。しかしながら、また、インターセプタ１９４はあらゆる呼び出し、コマンド、インストーラ１９２と関係付けられた他の動作を動的に捕捉するように設定される。捕捉されたデータの記録は、図３の記録モジュール１８２を参照しながら後に記載されている。
【００５３】
図４Ｂは、インストーラ１９２（図４Ａ）と、インストーラ１９２によって生じたサブプロセス２０４を示している。前記のように、インストーラはサブプロセスから生じる。サブプロセスは、それ自体、インストーラであってもよく、インストーラでなくてもよいサブプロセスは、それら自体、１つまたはそれより多くのサブプロセスを生み出すことができる。ある実施形態において、インターセプタ１９４（図４Ａ）は、インストーラ１９２と同様に、サブプロセス２０４からの呼び出しを捕捉できるようになっている。ツールは、サブプロセス呼び出しが、例えば、親プロセスＩＤを使用する親プロセスに戻って追跡すること等により、インターセプタ１９４によって捕捉されることを決定することができるようになっている。このように、インストーラ１９２において階層関係（例えば、親−子）を伴うサブプロセスからの呼び出しは、ある実施形態において、関係のあるものとして仮定され、捕捉される。逆に、インストーラ１９２における階層関係を有しないプロセスによって作られた呼び出しは、無視され得る。インストーラが例えばシステムサービスへのＡＰＩ呼び出しを作るような場合には、親インストーラ１９２に追跡されない呼び出しを追跡するのが望ましい。図４Ｃは、インストーラ１９２（図４Ａ）と、ＡＰＩ呼び出しを伴うインストーラ１９２によって生み出されたシステムサービス２０６を示している。システムサービス２０６はインストーラ１９２による階層関係を有していてもよいし、有していなくてもよい。それにも関わらず、システムサービス２０６と関係する呼び出しを捕捉する（１９６）のが望ましい。ある実施形態において、システムサービス２０６に関する呼び出しが捕捉されることを保証するために、ネームテーブルがツールによって維持され、あるいは使用される。ネームテーブルは可能なシステムサービス（例えば、ＭＳＩ．ｅｘｅ）のリストの作成を含む。テーブル中にリストされたシステムサービスが、インストール（例えばインストーラ１９２が作動している間）の状況で実行されたとき、そのシステムサービスは、インストールに関係するものとして仮定される。それに応じて、システムサービスの動作が捕捉される。また、インターセプタ１９４（図４Ａ）は、ＡＰＩ呼び出し自体を捕捉し、インストールの状況においてインストーラ１９２と関係するシステムサービスを決定する。
【００５４】
図３を再度参照すると、記録モジュール１８２は、インストールに関係したデータを記録し、リソースが、例えば捕捉された呼び出しに基づいたインストーラ１７４と関係することを推測する。記録されたデータは、ディレクトリ、ファイル、レジストリキー、レジストリの値その他のデータを含み得る。記録モジュール１８２は、データを、データを通信傍受モジュール１７８によって捕捉されたものとして、あるいはインストーラ１７４が終了した後に捕捉されたものとして、記録する。また、記録モジュール１８２のいくつかの記録機能性は、通信傍受モジュール１７８に含まれる。例えば、通信傍受モジュール１７８は、呼び出しを傍受し、かつ呼び出しを記録する。この状況において、データの通信傍受および記録は、捕捉データとして参照される。
【００５５】
図５Ａと図５Ｂは、ある実施形態において記録モジュール１８２に記録されたデータを示している。図５Ａに示すように、データはキーと値を有するストラクチャ２０８を含み得る。ストラクチャ２０８は、レジストリキーとレジストリ値を表すことを意味する。ストラクチャ２０８は、インストーラが実行されている間に、生成（創成）され、変更され、消去されたレジストリ値へのパスを含むトレースファイル中に記録され得る。図５Ｂに示すように、データは、ディレクトリとファイルを有するストラクチャ２１０を含み得る。ストラクチャ２１０は、インストーラが実行されている間に生成（創出）され、変更され、あるいは消去されたファイルへのパスを含むトレースファイルに記録されたファイルディレクトリとして表されている。ある実施形態においては、ファイルディレクトリに関するトレースファイルは実際のファイル（例えば、パスのみを含むトレースファイル）を含まない。また、トレースファイルは、実際のファイルを含んでいてもよい。
【００５６】
ある実施形態において図３を再度参照すると、記録モジュール１８２は、データを記録している間、１またはそれより多くのワーキングファイルあるいはデータベースを維持する。これらのファイルは、レジストリ値へのパス、ファイルへのパスの両方を含むトレースファイルとなり得る。例えば、ファイルは、レジストリバスデータを記録するための「．ｉｒｂ」、ファイルパスデータを記録するための「．ｉｆｂ」ファイル、除外、エラーその他の注記を記録する「．ｌｏｇ」ファイルを含む。トレースファイルは、通信傍受モジュール１７８が更なるデータを捕捉したとき、あるいはインストーラ１７４が終了したときに、アップデートされる。トレースファイルは、付属的なものである。記録モジュール１８２は、データパス（例えば、ファイル）を伴うトレースファイルの生成のまたリアルタイムでデータを維持できる。
【００５７】
検証モジュール１８４はインストーラ１７４が終了したときに引き継ぎを行う。インストーラ１７４はサブプロセスあるいはシステムが終了する前に終了する点が留意されるべきである。この場合、検証モジュール１８４は、サブプロセスとシステムサービスが終了するまで、開始されない。そのため、検証モジュール１８４は、インストールが完了したときにユーザに指示するように促すようにしてもよい。また、検証モジュール１８４は、インストーラが終了するまでに全てのプロセスが生み出されることを決定するためにチェックを行うようにしてもよい。いかなる場合においても、インストーラ１７４（および適用可能であれば、他のプロセス）が終了したとき、通信傍受モジュール１７８はインターセプタを止める検証モジュール１８４は、それから、記録モジュール１８２によってどのようなエラーあるいは注記が記録されたかを決定するために、例えばログファイルをチェックする。もし、ログファイルがエントリを含む場合、ユーザは、インストールを中止し、再始動させ、再設定を含むような、処理を指示するように促される。もし、ログファイルが空であれば、検証モジュールは、例えば、ログファイルを消去し得る。
【００５８】
パージングモジュール１８６は、ストリーミングアプリケーションファイルを作るために、トレースファイルを解析する。パージングモジュール１８６は、記録モジュール１８２がまたファイルやレジストリ値を動的にアップデートすることができることから、付属的なものとされている。しかしながら、ある実施形態において、記録モジュール１８２は、トレースファイルを維持する。パージングモジュール１８６は、トレースファイルを通り、それぞれのパスのための値を得る。パージングモジュール１８６は、ファイルあるいはレジストリ値が見つからない場合は、消去されたものとみなす。例えば、インストーラ１７４がファイルを作り、ファイルを変更し、それから、ファイルを消去した場合に、トレースファイルはファイルへのパスを未だ含み得る。後に、パージングモジュール１８６は消去に関係するパスにたどり着くと、その仮定は検証される。パージングモジュール１８６が一度トレースファイルを通ると、余剰なものや不一致が軽減され、あるいは削除され、そして記録は、レジストリ値とファイルを含むことになる。ファイルは、リスト中に体系化される。
【００５９】
ストリーミングアプリケーション創出モジュール１８８は、インストーラを関係する１またはこれより多くのアプリケーションのストリーミングを容易にするためのストリーミングアプリケーションを創出するために、レコードを使用する。ある実施形態において、ストリーミングアプリケーションは、トークンファイル（例えば、「．ｔｏｋ」ファイルル）と、ストリームファイル（例えば、「．ｓｔｃ」ファイル）を含む。ストリーミングアプリケーションは、また、テキストファイル（例えば、「．ｔｘｔ」ファイル）を含み得る。ストリーミングアプリケーション創出モジュール１８８は、トークンファイルを創出し、エンコードし得る。トークンファイルは、様々なリソースのパスを含む。トークンファイルは、ストリーミングアプリケーションを受け取るコンピュータが、全てのリソースを備えており、アプリケーションを作動させる必要がある、と信じるように、このコンピュータをごまかす必要のある情報を含むものと考えられる。ストリーミングアプリケーション創出モジュール１８８は、ストリームファイルを創出し、処理（例えば、ファイルを圧縮、暗号化）する。ストリームファイルは、ブロックの連続した列を含む。ブロックは、ブロックに分割されたファイルのリストから処理される。コンピュータへのアプリケーションのストリーミングが行われるとき、コンピュータは、常にいくつかのブロックを必要とし得る。もしコンピュータが更なるブロックを必要とする場合、コンピュータは、サーバからさらなるブロックを要求し、サーバは、ストリームファイルから更なるブロックを提供する。「．ｓｔｗ」ファイルはまた、記録のコピーを含んで創出される。図６を参照して記載されるように、「ｓｔｗ」ファイルは、アップデートのサブシーケントインストールあるいは他のアプリケーションと併合され得る。
【００６０】
図６は、通信傍受に基づくリソース検出のための方法の一例であるフローチャートを示している。フローチャートは、検出プロクラムの作動中にブロック２１２から始まる。検出プログラムは、通信傍受に基づく検出プログラム１７２（図３）のような、通信傍受に基づく検出プログラムである。検出プログラムは、前景または背景において作動し得るようになっている。また、検出プログラムは、インストーラが実行されようとしている最初の決定を追跡することができる。検出プログラムは、ダウンロード又はストリーミングのために局部的に利用可能であったり、遠隔的に利用可能であってもよい。
【００６１】
図７Ａは、図６を参照して記載されている検出プログラムを伴う使用のためのＧＵＩの一例を示している。図７Ａの例において、無題のアプリケーションウィンドウが表示されているが、データは入っていない（例えば、アプリケーションインストーラが未だ選ばれていない理由による）。図７Ａの例において、検出プログラムは、「ＳｔｒｅａｍＷｅａｖｅｒ（登録商標）３．０」と関係付けられる。
【００６２】
図６を再度参照すると、フローチャートは、モニタの始動に係るブロック２１４を続ける。モニタは、例えば、図３に参照用に記載された通信傍受モジュールであってもよい。
【００６３】
フローチャートは、アプリケーションインストーラの実行に係るブロック２１６を続ける。アプリケーションインストーラは、１又はこれより多くのアプリケーションと関係付けられる。アプリケーションインストーラは、検出プログラムと関係付けられたウィンドウ又はシェル内から実行され得る。例えば、ユーザは、検出プログラムと関係付けられたＧＵＩ内から実行するためのアプリケーションインストーラを選ぶように促される。
【００６４】
図７Ｂは、図７ＡのＧＵＩを示しており、ファイルのドロップダウンメニューが開いた状態で、「マージインストーラデータ」のメニューオプションが強調表示されたものである。図７Ｂの例において、「マージインストーラデータ」のメニューオプションが選択されているとき、図７Ｃに示すような、キャプチャーインストーラセッティングダイアログボックスが表示される。ユーザは、図７Ｄに示すアプリケーションインストーラへパスを入力することができる。
【００６５】
図６を再度参照すると、フローチャートは、インストールの監視に係るブロック２１８を続ける。検出プログラムは、例えば、アプリケーションファイル、ディレクトリロケーション、リソース、レジストリセッティング、あるいは環境変数に関係付けられたアプリケーションインストーラによって作られた呼び出しを通信傍受する。検出プログラムは、どんなファイルがロードされたかということ、およびレジストリ値がどこにセットされたかということ、の両方をアプリケーションインストーラが実行されている間に監視する。この方法で、検出プログラムは、特有のリソースあるいはセッティングの発見を容易にし得る。
【００６６】
フローチャートは、アプリケーションインストーラに関係づけられたリソースの記録の創出に係るブロック２２０を続ける。アプリケーションインストーラに関係付けられたリソースは、アプリケーションインストーラに関係付けられた呼び出しや他の動作から決定される。記録は、インストールされたファイルおよび創出されたレジストリキーを含み得る。
【００６７】
フローチャートは、記録のパージングに係るブロック２２２を続ける。記録のパージングは、パージングモジュール１８６（図３）のような、パージングモジュールによって達成され得る。図７Ｅから図７Ｈは、ユーザがどのようにして記録を見ることができるかについての例を示している。
【００６８】
図７Ｅに示すように、例えば、ビュードロップダウンメニューからのメニューオプションの１つを選択することにより、アプリケーションによって関係付けられた種々のデータを見ることができる。３つのメニューオプションの例は、ファイルオプション、レジストリオプション、およびプロジェクトセッティングオプションである。
【００６９】
もし、例えば、ファイルオプションが選択された場合、図７Ｆに示されるようなビューが表示される。図７において、記録は「Ａｃｒｏｂａｔ Ｒｅａｄｅｒ．ｓｔｗ」となっている。この記録は、図示の目的のみで使用される、「Ａｃｒｏｂａｔ Ｒｅａｄｅｒ（登録商標）」と関係付けられる。記録は、ファイル「Ｒｅａｄｅｒ．ｐｄｆ」の参照を含む。この例において、インストーラの例は、インストールされた１つのファイルに関係付けられており、他のインストーラは、複数のファイルをインストールできる。図７Ｆのビューのファイルに関係付けられたファイルや値は、変更可能であり、新たなファイルを追加可能である点に留意されるべきである。ビューに表示されたデータは、インストーラによって初期にインストールされたものであることを表示している。いくつかの又は全ての値は、後に記載されているトークンファイルに組み込まれている。
【００７０】
もし、例えば、レジストリオプション（図７Ｅ）が選択された場合、図７Ｇに示されるようなビューが表示される。図７Ｇにおいて、レジストリは、アプリケーションによって関係付けられた複数の値を含んでいる。バリューネームと、関係付けられた値は、変更可能であり、新たな値が追加可能である点に留意されるべきである。図７Ｇのビューに表示されたデータは、インストーラによって初期にインストールされたことを表示している。値への変更は、システムディレクトリに反映さえてもよいし、反映されなくてもよい。いくつかの又は全ての値は、後に記載されているトークンファイルに組み込まれている。
【００７１】
もし、例えば、プロジェクトセッティングオプション（図７Ｅ）が選択された場合、図７Ｈに示されるようなビューが表示される。図７Ｈにおいて、種々のアプリケーションとシステムの情報が表示されている。ユーザは、いくつかの又は全てのデータを入力することを要求され、あるいは、いくつかの又は全てのデータが自動的に入力される。図７Ｈの例において、ビューは、アプリケーション情報のウィンドウ枠、アプリケーションの実行のウィンドウ枠、動作システムのサポートのウィンドウ枠、および要求されたシステムコンポーネントのウィンドウ枠を含んでいる。
【００７２】
アプリケーション情報のウィンドウ枠には、タイトルについての一般情報が明記される。この情報は、記録内（例えば、「．ｓｔｗ」ファイル）に記憶され、処理されたタイトルを追跡するのに用いられる。いくつかの情報は、後述するストリームファイルおよびトークンファイルを創出するために使用される。ショートネームは、トークンファイルやストリームファイルのネーミングに使用され、そしてショートネームは、エンドユーザが、後述するソフトウェアプレイヤーで見ることができるタイトル名を決定する。情報は、後述するサーバ用のアプリケーションインストールファイルを創るために使用される。情報の大部分は、アプリケーションの発行者からくるものであるが、プログラム記述（テキスト）フィールドは、例えば処理組織によって入力されたアプリケーションについてのコメントを含んでいる。この情報は、情報目的のみ（例えば、情報がストリームファイルを創るために使用されない）のための記録に含まれる。この情報は、処理されたアプリケーションを管理するために、データベースに呼び込まれる。
【００７３】
アプリケーションの実行のウィンドウ枠（図７Ｈ）において、フィールドは、アプリケーションや、アプリケーションが探し当てた、関係付けられたファイルからのワーキングディレクトリを始動するコマンドラインを含んでいる。典型的に、ワーキングディレクトリは、コマンドラインで使用されるディレクトリと同じであるが、常にこのような状況というわけではない。
【００７４】
動作システムのサポートのウィンドウ枠（図７Ｈ）において、アプリケーションに互換性がある動作システムが表示されている。後述するように、トークンファイルにアクセスがあったときに、ソフトウェアプレイヤーがユーザの動作システムに互換性があるかどうかを決定できるように、この情報は、トークンファイルに記憶される。
【００７５】
要求されたシステムコンポーネントのウィンドウ枠（図７Ｈ）において、コンポーネントはアプリケーションを伴った使用のために要求されたコンポーネントが表示されている。この情報は、トークンファイルに記憶され、後述するように、ソフトウェアプレイヤーは、ユーザが要求されたコンポーネントなしでソフトウェアの使用を試みたときに警告メッセージを提供する。また、ソフトウェアプレイヤーは、要求されたコンポーネントなしにスタートさせようとするアプリケーションを全く許さない。
【００７６】
図６を再度参照すると、フローチャートは、ブロック２２４で記録に従ってストリーミングアプリケーションを創出することを続ける。ストリーミングアプリケーションは、ＳＴＣファイル、トークンファイル、テキストファイル、あるいはこれらのファイル、又はアプリケーションインストーラに関係付けられたアプリケーションのストリーミングを容易にする他のファイルのいくつかを結合したものを含む。
【００７７】
フローチャートは、判断ポイント２２６でアップデートが存在するかどうかを決定することを続ける。アップデートが存在する場合（２２６−Ｙ）には、フローチャートは、付属的なブロック２２８でアップデートインストーラを実行することを続け、そして前記ブロック２１８から続ける。ブロック２２８は、アップデータが必須でないという理由により、付属的なものとなっている。アップデートされたアプリケーションのインストールからのデータを含むアプリケーションレコード（例えば、「．ｓｔｗ」ファイル）をシステムが含んでいてもよいし、含んでいなくてもよい点に留意されるべきである。この例では、ブロック２２４において、ストリーミングアプリケーションの創出は、記憶された記録を、アップデートインストーラに関係付けられた新たな記録に併合することを含んでいる。あらゆるアップデート、パッチ、あるいは他のアプリケーションは、ストリーミングアプリケーションに組み込まれる。
【００７８】
図７Ｉから図７Ｋは、ある実施形態におけるストリーミングアプリケーションの創出を達成するためのＧＵＩを示している。図７Ｉは、図７ＡのＧＵＩを示しており、ドロップダウンメニューが開いた状態で、そして強調表示された「Ｃｒｅａｔｅ Ｔｏｋｅｎ／ＳＴＣ Ｆｉｌｅｓ」メニューオプション表示されている。図７Ｉの例において、「Ｃｒｅａｔｅ Ｔｏｋｅｎ／ＳＴＣ Ｆｉｌｅｓ」メニューオプションが選択されたとき、図７Ｊに示されるような、アウトプットファイルダイアログボックスが表示される。図７Ｊのアウトプットファイルダイアログボックスにおいて、アウトプットファイル名が例えばユーザによって提供されるＯＫボタンがクリックされると、ＳＤＣファイル（例えば、トークンおよびＳＴＣファイル）が創出される。ある実施形態において、これらのファイルは、創出されて明記されたディレクトリに記憶される。図７Ｋは、その例を続け、３つのファイルを示している。図７Ｋの例において、３つのファイルはネーミングの慣例によって、「ｐρ_ｎａｍｅ」「ｕｕｉｄ」．ｓｔｃ「ａｐｐ_ｎａｍｅ」「ｕｕｉｄ」．ｔｏｋ、「ａρ ρ_ｎａｍｅ」「ｕｕｉｄ」．ｔｘｔというように名付けられる。「ａρ ρ_ｎａｍｅ」は、上述した図７Ｈで記載されたショートネームである。「ｕｕｉｄ」の値は、それぞれの構造について独特で識別可能なファイルを創出する。ある実施形態において、「．ｓｔｃ」ファイルは、ストリームサーバに置かれ、関係するアプリケーションをストリームするために使用される。ある実施形態において、「．ｔｏｋ」ファイルは、トークンサーバに置かれる「．ｔｏｋ」と同様なものである。ある実施形態では、「．ｔｘｔ」ファイルは、サーバにアプリケーションをインストールするために使用される。
【００７９】
図６を再度参照すると、更なるアップデートがない場合（２２６−Ｎ）には、フローチャートは、付属的なブロック２３０で、テストコンピュータにストリーミングアプリケーションをコピーすることを続ける。テストコンピュータが使用される必要がないという理由によりブロック２３０は付属的なものとなっている。例えば、ストリーミングアプリケーションは、インストーラを実行するか、または処理を実行する同一のコンピュータでテストされる。
【００８０】
フローチャートは、付属的なブロック２３２でストリーミングアプリケーションをテストすることで終了する。テストが付属的である（これが推奨されるのであるが）という理由により、ブロック２３２は、付属的なものとなっている。テストのときは、ユーザは、ソフトウェアプレイヤーや関係するアプリケーションを始動させるために、「．ｔｏｋ」ファイルを実行する。アプリケーションは、それが正しい動作をすることを検証するためにテストされる。そして、アプリケーションはジャンプスタートされる。
【００８１】
ジャンプスターティングは、アプリケーションが作動される前に、ソフトウェアプレイヤーキャッシュにおいて必要となるアプリケーションのストリームブロックをストリームすることを特定する処理である。可変のデータ量がジャンプスタートのためにキャッシュされる。一般に、相対的に大きなデータ量がプレキャッシュされると、初期始動時間は早くなり、後に必要に応じてロードされブロックの遅れが減少する。アプリケーションが作動される２番目の時間において、キャッシュから排出されない限り、アプリケーションはディスクキャッシュからロードされ、アプリケーションスタートアップ時間は、早く与えられることに留意すべきである。
【００８２】
図８はジャンプスタートを実行するための方法に係るフローチャートを示している。フローチャートは、ブロック２３４でジャンプスタートデータを創出することから始まる。ジャンプスタートデータは、例えば、ある一定期間、ストリーミングアプリケーションを実行することによって創出される。ゲームの状況では、ジャンプスタートデータは、ゲームのレベル（例えば、レベル１）を達成したときに創出される。ジャンプスタートデータは、ジャンプスタートデータが創出されるときに使用されるブロックを識別する。例えば、もし、ジャンプスタートデータの送出の際に、コンピュータがストリーミングアプリケーション（例えば「．ｓｔｃ」ファイル）のブロック１、２、および３にアクセスした場合、ジャンプスタートデータは、ブロック１、２、および３にアイデンティファイアーあるいはポインタを含める。後に、ストリーミングアプリケーションがジャンプスタートされたとき、ブロック１、２、および３が必要とされることが判る。それに応じて、ブロック１、２、および３は、アプリケーションを作動させることに優先して提供される。例えば、コンピュータは、最初に、ブロック１、２、および３をダウンロードする。これは、ストリーミングアプリケーションの「ジャーキー」やスロースタートアップを防ぐのに有用である。
【００８３】
フローチャートは、ブロック２３６でジャンプスタートデータをストリーミングアプリケーションに係る記録に併合する。例えば、ジャンプスタートデータは、「．ｓｔｊ」ファイルに記憶され得る。「．ｓｔｗ」はストリーミングアプリケーションを創出するために使用されるストリーミングアプリケーションの記録を含み得る。ブロック２３６では、新たな記録（例えば、新たな「．ｓｔｗ」ファイル）を創出するために、「．ｓｔｊ」ファイルが「．ｓｔｗ」ファイルに併合される。新たな「．ｓｔｗ」ファイルは、新たなストリーミングアプリケーションを創出するために使用され得る。新たなストリーミングアプリケーションは、上述したように、ストリーミングアプリケーションを受け取るコンピュータが最初にジャンプスタートをダウンロードすることを保証するように構成される。
【００８４】
フローチャートは、決定ポイント２３８で、追加のジャンプスタートが望ましいか否かの決定を続ける。付加されたジャンプスタートが望ましいものである場合は、フローチャートは、ブロック２３４に戻ってそこから続きを行う。ある実施形態において、１又はこれより多くの追加のジャンプスタートがストリーミングの性能を改良するために創出される。追加として、あるいは２番目に、ジャンプスタートはストリーミングが始まった後の改良された性能を促進し得る。例えば、ゲームの状況では、最初、または基礎的なジャンプスタートは、ゲームの「レベル１」で使用されるブロックをダウンロードする。ゲームのストリーミングが始まると、コンピュータは、プレイヤーが「レベル１」を攻略している間に、背景内のゲームの後の部分で使用されるブロックをダウンロードできるようになる。これは、初期のジャンプスタートの後のストリーミングの性能を改良できる。
【００８５】
全てのジャンプスタートが創出され、併合されたとき、フローチャートは終了する。
【００８６】
図９は、ある実施形態による方法の一例を示している。フローチャートは、ブロック２４０でアプリケーションインストーラの実行を開始し、アプリケーションインストーラは１又はこれより多くのアプリケーションと関係付けられる。フローチャートは、ブロック２４２でアプリケーションインストーラによって創られた呼び出しを通信傍受することを続ける。フローチャートは、ブロック２４４で通信傍受された呼び出し、リソース、セッティングがから、アプリケーションに関係するリソースとセッティングの決定を続ける。フローチャートは、ブロック２４６で、作動するときに、アプリケーションをストリームするように構成されたストリーミングアプリケーションを創出して、終了する。
【００８７】
本発明は所定の実施形態の観点から記載されているが、所定の変更、置換、およびその等価物が本発明における発明の及ぶ範囲内にあることは、当業者に認識されるであろう。それは、以下に加えられたクレームが本発明の正確な思想および範囲内におけるそのような変更、置換およびその等価物の全てを含むことを意味し、発明は、クレームによってのみ限定される。
【図面の簡単な説明】
【００８８】
【図１】図１は、一実施形態において使用されるネットワークシステムを示している。
【図２】図２は、図１のシステムの中で使用のためのコンピュータシステムを示している。
【図３】図３は、図２のコンピュータシステムの一部と図１のシステムの構成を示している。
【図４】図４Ａから図４Ｃは、一実施形態による呼び出し捕捉を示している。
【図５】図５Ａ、図５Ｂは、実施形態による記録されたデータを示している。
【図６】図６は、通信傍受型リソース検出のための方法の一例を示したフローチャートである。
【図７Ａ】図７Ａは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｂ】図７Ｂは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｃ】図７Ｃは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｄ】図７Ｄは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｅ】図７Ｅは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｆ】図７Ｆは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｇ】図７Ｇは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｈ】図７Ｈは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｉ】図７Ｉは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｊ】図７Ｊは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図７Ｋ】図７Ｋは、実施形態によるＧＵＩの一例を説明するためのスクリーンショットを示している。
【図８】図８は、ジャンプスタートのための方法の一例に係るフローチャートを示している。
【図９】図９は、実施形態における方法の一例に係るフローチャートを示している。
【図１】
2008512744.tif 000003
【図２】
2008512744.tif 000004
【図３】
2008512744.tif 000005
【図４】
2008512744.tif 000006
【図５】
2008512744.tif 000007
【図６】
2008512744.tif 000008
【図７Ａ】
2008512744.tif 000009
【図７Ｂ】
2008512744.tif 000010
【図７Ｃ】
2008512744.tif 000011
【図７Ｄ】
2008512744.tif 000012
【図７Ｅ】
2008512744.tif 000013
【図７Ｆ】
2008512744.tif 000014
【図７Ｇ】
2008512744.tif 000015
【図７Ｈ】
2008512744.tif 000016
【図７Ｉ】
2008512744.tif 000017
【図７Ｊ】
2008512744.tif 000018
【図７Ｋ】
2008512744.tif 000019
【図８】
2008512744.tif 000020
【図９】
2008512744.tif 000021
【国際調査報告】
2008512744.tif 000022
2008512744.tif 000023
2008512744.tif 000024