(57)【特許請求の範囲】
【請求項１】
複数の計算システムを含むコンピューター・ネットワーク環境における、少なくとも１つのプロセッサーおよびメモリを含むクライアント・コンピューター・システムにおいての、オン・デマンドのステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動するための方法であって、
管理コンピューター・システムから送られた、仮想ソフトウェア・アプリケーションが前記クライアント・コンピューター・システムにて発行されることを示すインジケーションを、前記クライアント・コンピューター・システムが受け取る動作と、
前記管理コンピューター・システムから送られた、仮想ソフトウェア・アプリケーションが前記クライアント・コンピューター・システムにて発行されることを示すインジケーションを、前記クライアント・コンピューター・システムが受け取ったことに応答して、仮想ソフトウェア・アプリケーションの一部である指定された高レベルのデータ・ファイルおよびディレクトリーのリストを含む高レベル・ファイル・リストを、前記クライアント・コンピューター・システムが作成する動作と、
アプリケーション・ユーザーから、前記仮想ソフトウェア・アプリケーションがアクセスされるというインジケーションを、前記クライアント・コンピューター・システムが受け取る動作と、
前記仮想ソフトウェア・アプリケーションがアクセスされるというインジケーションに基づいて、アクセスされるデータ・ファイルに対するスパース・データ・ファイルを動的に作成する動作であって、前記スパース・データ・ファイルは、アクセスされるデータ・ファイルのファイル名およびファイル・サイズを含み、前記スパース・データ・ファイルに対応するデータは、リモート・データ・ストアに格納される、動作と、
前記仮想ソフトウェア・アプリケーションが前記スパース・データ・ファイルのうちの１以上のものへのアクセスを試みていると判定した後、要求に応じて、前記スパース・データ・ファイルに対応する前記データを前記リモート・データ・ストアから動的に、前記クライアント・コンピューター・システムがストリーミングする動作と
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記アプリケーション・ユーザーからの前記インジケーションは、仮想ソフトウェア・アプリケーションが初期設定されることを示す、方法。
【請求項３】
請求項２に記載の方法であって、スパース・データ・ファイルは、前記仮想ソフトウェア・アプリケーションを初期設定する際に用いられるファイルに対して動的に作成される、方法。
【請求項４】
請求項３に記載の方法であって、
前記アプリケーション・ユーザーから、前記仮想ソフトウェア・アプリケーションがアクセスされるというインジケーションを、前記クライアント・コンピューター・システムが受け取ったことに応答して、前記仮想ソフトウェア・アプリケーションを初期設定するために用いられる特定のレジストリー・ファイルのリストを含むレジストリー・ファイルのリストを、前記クライアント・コンピューター・システムが作成する動作と、
前記特定のレジストリー・ファイルを、前記クライアント・コンピューター・システムが動的に作成する動作であって、生成された前記特定のレジストリー・ファイルは前記クライアント・コンピューター・システムのレジストリーへ書き込まれる動作と、
を更に含む方法。
【請求項５】
請求項１〜４のいずれか一項に記載の方法であって、
前記アプリケーション・ユーザーからの前記インジケーションが、指定されたファイルがアクセスされることを示すことを、前記クライアント・コンピューター・システムが判定する動作であって、前記指定されたファイルは、サブディレクトリーに位置する、動作と、
前記指定されたデータ・ファイルのルート・ディレクトリーおよび介在する各サブディレクトリーに対してのスパース・データ・ファイルを動的に、前記クライアント・コンピューター・システムが作成する動作と
を更に含む方法。
【請求項６】
請求項１〜５のいずれか一項に記載の方法であって、管理ユーザーは、１以上の指定されたファイルに対してオン・デマンドのステージングがオーバーライドされることを示し、前記指定されたファイルが前記クライアント・コンピューター・システムのディスクへ、前記クライアント・コンピューター・システムがプリロードする、方法。
【請求項７】
請求項１〜６のいずれか一項に記載の方法であって、前記クライアント・コンピューター・システムがストリーミングするデータ・ファイルは、前記クライアント・コンピューター・システムのローカル・データ・ストアに、前記クライアント・コンピューター・システムが格納する、方法。
【請求項８】
請求項７に記載の方法であって、以前にストリーミングされたデータ・ファイルに関する後続のアプリケーション・リクエストは、遂行するために、前記クライアント・コンピューター・システムによって、インターセプトされ前記ローカル・データ・ストアへ送られる、方法。
【請求項９】
複数の計算システムを含むコンピューター・ネットワーク環境における、少なくとも１つのプロセッサーおよびメモリを含むクライアント・コンピューター・システムにおいての、オン・デマンドのレジストリー・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動するための方法であって、
管理コンピューター・システムから送られた、仮想ソフトウェア・アプリケーションが前記クライアント・コンピューター・システムにて発行されることを示すインジケーションを、前記クライアント・コンピューター・システムが受け取る動作と、
前記管理コンピューター・システムから送られた、仮想ソフトウェア・アプリケーションが前記クライアント・コンピューター・システムにて発行されることを示すインジケーションを、前記クライアント・コンピューター・システムが受け取ったことに応答して、前記仮想ソフトウェア・アプリケーションにより用いられる指定された高レベルのレジストリー・ファイルのリストを含む高レベル・レジストリー・ファイルを、前記クライアント・コンピューター・システムが作成する動作と、
アプリケーション・ユーザーから、前記仮想ソフトウェア・アプリケーションがアクセスされるというインジケーションを、前記クライアント・コンピューター・システムが受け取る動作と、
前記仮想ソフトウェア・アプリケーションがアクセスされるというインジケーションに基づいて、前記高レベルのレジストリー・ファイルのリストにリストされアクセスされるレジストリー・ファイルを、前記クライアント・コンピューター・システムが動的に作成する動作であって、作成された前記レジストリー・ファイルは前記クライアント・コンピューター・システムのレジストリーへ書き込まれる、動作と、
前記仮想ソフトウェア・アプリケーションが１以上の更なるレジストリー・ファイルへのアクセスを試みていると判定した後、要求に応じて、前記クライアント・コンピューター・システムのレジストリーにおいて前記更なるレジストリー・ファイルを、前記クライアント・コンピューター・システムが動的に作成する動作と
を含む方法。
【請求項１０】
請求項９に記載の方法であって、前記仮想ソフトウェア・アプリケーションを初期設定する際に用いられるファイルに対して、レジストリー・ファイルは動的に作成される、方法。
【請求項１１】
請求項９又は１０に記載の方法であって、前記レジストリーは、非同期で、前記クライアント・コンピューター・システムへプリロードされる、方法。
【請求項１２】
複数のクライアント計算システムを含むコンピューター・ネットワーク環境における、少なくとも１つのプロセッサーおよびメモリを含む管理コンピューター・システムにおいての、オン・デマンドのステージングを用いて仮想ソフトウェア・アプリケーションを迅速に発行するための方法であって、
コンピューター管理者から、１以上の仮想ソフトウェア・アプリケーションが１以上のクライアント・コンピューター・システムにおいて発行されるということを示すインジケーションを、前記管理コンピューター・システムが受け取る動作と、
受け取った前記インジケーションに応じて、前記１以上のクライアント・コンピューター・システムに対して前記仮想ソフトウェア・アプリケーションを、前記管理コンピューター・システムが発行する動作と
を含み、前記発行する動作は、
複数の前記クライアント・コンピューター・システムのうちの少なくとも１つにおいて、仮想ソフトウェア・アプリケーションの一部である指定された高レベルのデータ・ファイルおよびディレクトリーのリストを含む高レベル・ファイル・リストを、前記管理コンピューター・システムが発行する動作と、
要求に応じて、前記仮想ソフトウェア・アプリケーションにより要求されたデータ・ファイルに対して、１以上のスパース・データ・ファイルを、前記管理コンピューター・システムが作成する動作と
を含む、
方法。
【請求項１３】
請求項１２に記載の方法であって、前記１以上のクライアント・コンピューター・システムに対して前記仮想ソフトウェア・アプリケーションを、前記管理コンピューター・システムが発行する動作とは、
前記クライアント・コンピューター・システムにおいて、前記仮想ソフトウェア・アプリケーションの初期設定の後に用いられる指定された高レベルのレジストリー・ファイルのリストを含む高レベル・レジストリー・ファイル・リストを、前記管理コンピューター・システムが作成する動作と、
受け取った前記インジケーションに基づいて、前記高レベルのレジストリー・ファイルのリストにリストされアクセスされるレジストリー・ファイルを動的に、前記管理コンピューター・システムが作成する動作であって、作成された前記レジストリー・ファイルが前記クライアント・コンピューター・システムのレジストリーへ書き込まれるようにする、動作と
を更に含む、方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  コンピューターは、労働力、家庭、モバイル・デバイス、および他の多くの場所で、高度に統合されている。コンピューターは、大量の情報を迅速かつ効率的に処理することができる。コンピューターで実行されるように設計されたソフトウェア・アプリケーションは、ユーザーが、ビジネス・アプリケーション、学業、エンターテイメント、およびその他を含む広範囲の種類の機能を行うことを可能にする。多くの場合、ソフトウェア・アプリケーションは、特定のタスク、例えば、文書を作成するためのワード・プロセッサー・アプリケーションや、Ｅメールの送信、受信、および整理のためのＥメール・プログラムなどを行うように、設計される。
【０００２】
[0002]  幾つかの場合、ソフトウェア・アプリケーションはアプリケーション・サーバーにより提供することができる。それらのアプリケーションは、シン・クライアント・コンピューター・システムや他のネットワーク化されたコンピューター・システムへ、提供することができる。それらのアプリケーションは、アプリケーション・サーバーで実行して、単に、ユーザーのコンピューター・システムのユーザー・インターフェースを介して、ユーザーに呈示することができる。従って、それらのタイプのアプリケーションは、仮想アプリケーションと呼ばれる。アプリケーション・サーバーは、多数のそれらのアプリケーションをホストすることができ、各アプリケーションは、異なるユーザーによりアクセスされる。仮想アプリケーションは、ユーザーのコンピューター・システムでステージングされ、仮想アプリケーションの多くの部分をユーザーのローカル・ハード・ドライブや他のデータ・ストアへロード（少なくとも一時的に）される。
【発明の概要】
【０００３】
[0003]  ここで説明される実施形態は、オン・デマンドのファイル・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動すること、オン・デマンドのレジストリー・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動すること、およびオン・デマンドのステージングを用いて仮想ソフトウェア・アプリケーションを迅速に発行することに関する。１つの実施形態では、コンピューター・システムは、仮想アプリケーション・パッケージの一部である指定された高レベルのデータ・ファイルおよびディレクトリーのリストを含む高レベル・ファイル・リストを、作成する。コンピューター・システムは、アプリケーション・ユーザーから、仮想アプリケーションがアクセスされるというインジケーション（indication）を受け取り、その受け取ったインジケーションに基づいて、アクセスされるそれらのデータ・ファイルに対してのスパース・データ・ファイルを動的に作成する。スパース・ファイルは、アクセスされるそれらのデータ・ファイルのファイル名およびファイル・サイズを含む。スパース・データ・ファイルに対応するデータは、リモート・データ・ストアに格納される。次に、仮想アプリケーションがスパース・データ・ファイルへアクセスすることを試みていると判定した後、コンピューター・システムは、リモート・データ・ストアから、要求に応じて、スパース・データ・ファイルに対応するデータを動的にストリーミングする。
【０００４】
[0004]  別の実施形態では、コンピューター・システムは、仮想ソフトウェア・アプリケーションにより用いられる指定された高レベルのレジストリー・ファイルのリストを含む高レベル・レジストリー・ファイル・リストを、作成する。コンピューター・システムは、アプリケーション・ユーザーから、仮想アプリケーションがアクセスされるというインジケーションを受け取り、その受け取ったインジケーションに基づいて、アクセスされるものであり高レベル・リストにリストされるそれらのレジストリー・ファイルを、動的に作成する。このように、作成されたレジストリー・ファイルは、クライアント・コンピューター・システムのレジストリー内へ書き込まれる。次に、アプリケーションが追加のレジストリー・ファイルへアクセスすることを試みていると判定した後、コンピューター・システムは、要求に応じて、クライアント・コンピューター・システムのレジストリーにおいて追加のレジストリー・ファイルを作成する。
【０００５】
[0005]  更に別の実施形態では、管理コンピューター・システムは、管理者の制御の下でクライアント・コンピューター・システムにおいて様々な仮想ソフトウェア・アプリケーションが発行されることを示す入力を、コンピューター管理者から受け取る。次に、受け取った入力に応じて、管理コンピューター・システムは、様々な異なるクライアント・コンピューター・システムに対して仮想ソフトウェア・アプリケーションを発行する。発行することは、クライアント・コンピューター・システムの少なくとも１つにおいて、仮想アプリケーション・パッケージの一部である指定された高レベルのデータ・ファイルおよびディレクトリーのリストを含む高レベル・ファイル・リストを作成することと、仮想ソフトウェア・アプリケーションにより要求されたデータ・ファイルに対して、要求に応じてスパース・データ・ファイルを作成することとを、含む。
【０００６】
[0006]  この概要は、以下の詳細な説明で更に説明する概念のうちの選択したものを、簡素化した形で紹介するために提供されている。この概要は、特許請求の範囲に記載の主題事項の鍵となる特徴や本質的な特徴を特定することを意図しておらず、また、特許請求の範囲に記載の主題事項の範囲を決定する際の支援として用いることを意図していない。
【０００７】
[0007]  更なる特徴および利点は、後の説明で述べられており、また、一部は、当業者には説明から明らかであり、また、ここでの教示を実施することにより学ぶことができる。本発明の特徴および利点は、特許請求の範囲において示す装置や組み合わせを用いることにより実現し、得ることができる。本発明の実施形態の特徴は、以下の説明および特許請求の範囲から更に完全に明らかになるか、または以下で述べる発明を実施することにより学ぶことができる。
【０００８】
[0008]  本発明の実施形態の上記および他の利点および特徴を更に明確にするために、図面を参照して、本発明の実施形態のより特定的な説明を提供する。それらの図面は、単に、本発明の典型的な実施形態を示すものであり、従って、本発明の範囲を限定するものとして考慮されないと、理解される。本発明の実施形態は、図面を用いて更に特定的かつ詳細に記述され説明される。
【図面の簡単な説明】
【０００９】
【図１】図１は、オン・デマンドのファイル・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動することを含む本発明の実施形態が動作できるコンピューター・アーキテクチャーを示す。
【図２】図２は、オン・デマンドのファイル・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動するための例示の方法のフローチャートを示す。
【図３】図３は、オン・デマンドのファイル・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動するための例示の方法のフローチャートを示す。
【図４】図４は、オン・デマンドのステージングを用いて仮想ソフトウェア・アプリケーションを迅速に発行するための例示の方法のフローチャートを示す。
【図５】図５は、オン・デマンドのレジストリー・ステージングを用いて仮想ソフトウェア・アプリケーションが迅速に起動させられるコンピューター・アーキテクチャーを示す。
【発明を実施するための形態】
【００１０】
[0014]  ここで説明される実施形態は、オン・デマンドのファイル・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動すること、オン・デマンドのレジストリー・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動すること、およびオン・デマンドのステージングを用いて仮想ソフトウェア・アプリケーションを迅速に発行することに関する。１つの実施形態では、コンピューター・システムは、仮想アプリケーション・パッケージの一部である指定された高レベルのデータ・ファイルおよびディレクトリーのリストを含む高レベル・ファイル・リストを、作成する。コンピューター・システムは、アプリケーション・ユーザーから、仮想アプリケーションがアクセスされるというインジケーションを受け取り、その受け取ったインジケーションに基づいて、アクセスされるそれらのデータ・ファイルに対してのスパース・データ・ファイルを動的に作成する。スパース・ファイルは、アクセスされるそれらのデータ・ファイルのファイル名およびファイル・サイズを含む。スパース・データ・ファイルに対応するデータは、リモート・データ・ストアに格納される。次に、仮想アプリケーションがスパース・データ・ファイルへアクセスすることを試みていると判定した後、コンピューター・システムは、リモート・データ・ストアから、要求に応じて、スパース・データ・ファイルに対応するデータを動的にストリーミングする。
【００１１】
[0015]  別の実施形態では、コンピューター・システムは、仮想ソフトウェア・アプリケーションにより用いられる指定された高レベルのレジストリー・ファイルのリストを含む高レベル・レジストリー・ファイル・リストを、作成する。コンピューター・システムは、アプリケーション・ユーザーから、仮想アプリケーションがアクセスされるというインジケーションを受け取り、その受け取ったインジケーションに基づいて、アクセスされるものであり高レベル・リストにリストされるそれらのレジストリー・ファイルを、動的に作成する。このように、作成されたレジストリー・ファイルは、クライアント・コンピューター・システムのレジストリー内へ書き込まれる。次に、アプリケーションが追加のレジストリー・ファイルへアクセスすることを試みていると判定した後、コンピューター・システムは、要求に応じて、クライアント・コンピューター・システムのレジストリーにおいて追加のレジストリー・ファイルを作成する。
【００１２】
[0016]  更に別の実施形態では、管理コンピューター・システムは、管理者の制御の下でクライアント・コンピューター・システムにおいて様々な仮想ソフトウェア・アプリケーションが発行されることを示す入力を、コンピューター管理者から受け取る。次に、受け取った入力に応じて、管理コンピューター・システムは、様々な異なるクライアント・コンピューター・システムに対して仮想ソフトウェア・アプリケーションを発行する。発行することは、クライアント・コンピューター・システムの少なくとも１つにおいて、仮想アプリケーション・パッケージの一部である指定された高レベルのデータ・ファイルおよびディレクトリーのリストを含む高レベル・ファイル・リストを作成することと、仮想ソフトウェア・アプリケーションにより要求されたデータ・ファイルに対して、要求に応じてスパース・データ・ファイルを作成することとを、含む。
【００１３】
[0017]  以下の説明は、行うことができる幾つかの方法および方法の実行に関する。方法の実行は、特定の順に説明されるか、またはフローチャートにおいて特定の順に生じるように示されている場合があるが、特に述べていないかぎりは、必ずしも特定の順にする必要はなく、また、１つの実行が、その実行の前に別の実行が完了されることを条件とする場合には、特定の順にする必要があることに、留意されたい。
【００１４】
[0018]  後に詳細に説明するが、本発明の実施形態は、例えば１以上のプロセッサーやシステム・メモリーなどのようなコンピューター・ハードウェアを含む特定用途向けまたは汎用のコンピューターを含むか、またはそのようなコンピューターを用いる。また、本発明の範囲内にある実施形態は、コンピューター実行可能命令および／またはデータ構造を搬送または格納する物理的および他のコンピューター可読媒体を含む。そのようなコンピューター可読媒体は、汎用または特定用途向けのコンピューター・システムによりアクセスできる任意の使用可能な媒体とすることができる。データの形でコンピューター実行可能命令を格納するコンピューター可読媒体は、コンピューター・ストレージ媒体である。コンピューター実行可能命令を搬送するコンピューター可読媒体は伝送媒体である。従って、限定ではなく例として、本発明の実施形態は、少なくとも２つの異なる種類のコンピューター可読媒体、即ち、コンピューター・ストレージ媒体および伝送媒体を含むことができる。
【００１５】
[0019]  コンピュータ・ストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、ＲＡＭをベースにしたソリッド・ステート・ドライブ（ＳＤＤ）、フラッシュ・メモリ、相変化メモリー（ＰＣＭ）または他のタイプのメモリー、または他の光ディスク・ストレージ、磁気ディスク・ストレージ、または他の磁気記憶装置、またはコンピューター実行可能命令またはデータまたはデータ構造の形態で望まれるプログラム・コード手段を格納するために使用でき且つ汎用または特定用途向けのコンピュータによりアクセスできる他の任意の媒体を含む。
【００１６】
[0020]  「ネットワーク」は、コンピューター・システムおよび／またはモジュールおよび／または他の電子デバイスの間での電子データのトランスポートを可能とする１以上のデータ・リンクおよび／またはデータ・スイッチとして定義される。ネットワーク（有線、ワイヤレス、または有線とワイヤレスとの組み合わせの何れか）を通じて情報がコンピューターへ転送または提供されるとき、コンピューターは、適切に、その接続を伝送媒体として見る。伝送媒体はネットワークを含むことができ、ネットワークは、コンピューター実行可能命令の形態やデータ構造の形態にされたデータや望まれるプログラム・コード手段を搬送するために使用でき、かつ汎用または特定用途向けのコンピューターによりアクセスできる。上記のものの組み合わせも、コンピューター可読媒体の範囲に含まれるべきである。
【００１７】
[0021]  更に、コンピューター・システムの様々なコンポーネントへ到達すると、コンピューター実行可能命令またはデータ構造の形態のプログラム・コード手段は、伝送媒体からコンピューター・ストレージ媒体へ（またはその逆に）自動的に転送される。例えば、ネットワークまたはデータ・リンクを介して受け取ったコンピューター実行可能命令またはデータ構造は、ネットワーク・インターフェース・モジュール（例えば、ネットワーク・インターフェース・カード、即ち、「ＮＩＣ」）内のＲＡＭへバッファ記憶することができ、次に、コンピューター・システムのＲＡＭへ、および／またはコンピューター・システムの揮発性の低いコンピューター・ストレージ媒体へ、最終的に転送される。従って、コンピューター・ストレージ媒体が、伝送媒体を用いる（主に用いることさえある）コンピューター・システム・コンポーネントに含まれ得ることを、理解すべきである。
【００１８】
[0022]  コンピューター実行可能（またはコンピューター理解可能）命令は、例えば、汎用コンピューター、特定用途向けコンピューター、または特定用途向け処理デバイスに、１つの特定の機能または１グループの機能を行わせる命令を含む。コンピューター実行可能命令は、例えば、バイナリーや、アセンブリ言語などのような中間フォーマット命令や、更にはソース・コードなどであり得る。主題事項は、構造的な特徴や方法論的な動作に対して特定的な言語で記載されているが、特許請求の範囲で定義される主題事項は、上記の特徴や動作に必ずしも限定されるものではない。むしろ、説明した特徴や動作は、特許請求の範囲を実施する際の例示的形態として開示されたものである。
【００１９】
[0023]  本発明を、多くのタイプのコンピューター・システム構成を用いて、ネットワーク・コンピューティング環境において実施できることが、当業者には理解できるであろう。コンピューター・システム構成は、パーソナル・コンピューター、デスクトップ・コンピューター、ラップトップ・コンピューター、メッセージ・プロセッサー、手持ち型デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブルの消費者向け電子機器、ネットワークＰＣ、ミニコンピューター、メインフレーム・コンピューター、モバイル電話、ＰＤＡ、ページャー、ルーター、スイッチなどを含む。また、本発明は、分散型システム環境において実施することができる。分散型システム環境では、ローカル・コンピューター・システムとリモート・コンピューター・システムとがネットワークを介してリンクされ（有線データ・リンク、ワイヤレス・データ・リンク、または有線データ・リンクとワイヤレス・データ・リンクとの組み合わせの何れかによる）、それぞれがタスク（例えば、クラウド・コンピューティング、クラウド・サービスなど）を行う。分散型システム環境では、プログラム・モジュールは、ローカル・メモリー・ストレージ・デバイスとリモート・メモリー・ストレージ・デバイスとの双方に配されることができる。
【００２０】
[0024]  図１は、本発明の原理を用いることができるコンピューター・アーキテクチャー１００を示す。コンピューター・アーキテクチャー１００はクライアント・コンピューター・システム１０１を含む。クライアント・コンピューター・システム１０１は、任意のタイプのローカル・コンピューター・システム、またはクラウド・コンピューター・システムを含めての分散型コンピューター・システムとすることができる。クライアント・コンピューター・システムは、特定のタスクを行うための様々なモジュールおよび他のエレメントを含む。例えば、スパース・ファイル作成モジュール１１５は、後に更に説明するように、スパース・ファイルを作成することができる。クライアント・コンピューター・システムは、１以上の仮想アプリケーション１１０を含む。各仮想アプリケーションは、アプリケーション・サーバーから、またはリモート・データ・ストアから、実行することができる。アプリケーションは、ローカルにインストールされていなくても、ローカルにインストールされたアプリケーションのように現れ得る。アプリケーションのファイル１３１は、必要に応じて、リモート・データ・ストア１３０からストリーミングすることができる。
【００２１】
[0025]  最初に、クライアント・コンピューター・システム（例えば、１０１）に対して仮想アプリケーションが発行されたとき、仮想アプリケーションはファイル・リスト１１１を含む。ファイル・リストは、高レベルのデータ・ファイルおよびディレクトリーのリスト１１２を含む。従って、アプリケーションの対応するファイルの全てではないが幾つかは、そのファイル・リストにリストされる。実際のファイルは、ローカル・データ・ストア１２０（例えば、ハード・ディスク）には格納されず、ファイル・リストが格納される。仮想アプリケーションによりファイル・リストが要求されると、要求されたファイルのそれぞれに対してスパース・ファイルが作成される。ここで用いる「スパース・ファイル」という用語は、ファイルの名前１２２およびサイズ１２３を含むプレースホルダーを指す。従って、スパース・ファイルが存在するので、ファイルに対するローカル・ファイル・システム・コールは、肯定（positive）を返すことになり、ファイルがディスク上にローカルに存在することを示す。しかし、ファイルの実際のデータはディスクに格納されていない。ファイルの実際のデータ１３１は、仮想アプリケーションにより要求されるまで、リモート・データ・ストア１３０に格納されている。データが要求されると、データはローカル・データ・ストアへとストリーミングされ、少なくとも幾つかの実施形態では、後の使用のために格納される。
【００２２】
[0026]  アプリケーションによりファイルが必要とされると（例えば、ユーザーがアプリケーションの新たなフィーチャーへアクセスする）、スパース・ファイル作成モジュール１１５は、それぞれの要求されたファイルに対してスパース・ファイルを作成する。それらのスパース・ファイルは、木／ディレクトリー構造に作ることができる。最終的に（アプリケーションのフィーチャーの全てがアクセスされた場合）、アプリケーションのファイルおよびディレクトリーの全ては、ローカル・データ・ストア１２０に格納される。全くアクセスされていないファイルおよびディレクトリーは、ディスク（ローカル）に全く作成されず、従って、ディスク空間リソースを消費しないことに、留意されたい。幾つかの場合、管理者（例えば、管理ユーザー１４５）は、上述のオン・デマンドのステージングをオーバーライドして、全てのファイルをディスクへプリロードすることを選択することができる。そのような場合、アプリケーションのデータ・ファイルは、余すところなくストリーミングされてローカルに格納される。
【００２３】
[0027]  以下で、次のものを含む様々な実施形態を説明する。１）発行オペレーションを実質的に即座に完了させる、迅速な発行。２）仮想アプリケーションの迅速な起動。仮想アプリケーションのファイルは、アプリケーションを起動する前に、ローカルに存在する必要はない。要求に応じてスパース・ファイルが作成され、要求に応じてデータが充填（ストリーミング）される。３）初回アクセス・ペナルティのみ。データ・ファイルが作成されストリーミングされた後、それらはもはやスパースではなく、更なるアップデートやアクセスを必要としない。低レベルのストリーミング・フィルターは、ファイル・システム・アクセスをもはやインターセプトも処理もしない。後の使用は、残りの仮想化ソフトウェア・スタックが仮想アプリケーションの名前空間をローカル・ファイル・システムの名前空間とブレンドする、というデータ・ファイル・システム・ブレンドを含むことができる。４）ディスク空間リソースは、必要な場合のみ、消費される。ファイルやディレクトリーが全くアクセスされない場合、データ・ファイルは、スパース的にさえ、ディスクに全く作成されない。データ・ファイルが列挙型（enumeration）を介してアクセスされたが何も読み出されない場合、ファイルはスパース的にのみ存在する。ファイル・コンテンツが読み出されたときのみ、何らかの有意なディスク空間が消費される。
【００２４】
[0028]  データ・ファイルと同様に、オペレーティング・システムのレジストリーを、スパース・ファイルおよびデータ・ストリーミングを用いて、動的に事前設定（populate）することができる。アプリケーションのレジストリー・コンテンツの軽量のリストが、クライアント・コンピューター・システムへダウンロードされる。アプリケーション発行オペレーションは、リストがダウンロードされるとすぐに、完了する。クライアント・コンピューター・システムでのバックグラウンド・プロセスは、レジストリー・コンテンツをシステムのレジストリーへロードする。レジストリーとファイルとの間には違いがあることに、注意されたい。ファイルおよびディレクトリーは要求に応じて作成されるが、それらのコンテンツは、アクセスされるまで（または管理者がステージングをオーバーライドしてパッケージ・コンテンツをプリロードするまで）、ターゲット・マシンへストリーミングされない。レジストリーは、クライアント・コンピューター・システムへプリロードされ得るが、それは発行オペレーションに対して同期した様式でなされる。
【００２５】
[0029]  アプリケーション・パッケージがターゲット・マシンで発行されるとき、様々なレジストリー・ファイルは、初めてアクセスされたきに、ローカルでコピーされ得る。レジストリー・ファイルは、標準フォーマットの整形式レジストリー・ハイブ・ファイル（well-formed registry hive file）である。これはファイルであるので、最初に、上述のオン・デマンドのステージングの方法を用いて作成される。作成された後、それは、クライアント・コンピューター・システムのネイティブのレジストリーへマウントされ（従って、そのコンテンツがストリーミングされ）、それにより、そのコンテンツは、読み出して、クライアント・コンピューター・システム１０１上の予め定めた場所へコピーすることができる。
【００２６】
[0030]  アプリケーション仮想化ソフトウェアは、オペレーティング・システムのネイティブのレジストリーを仮想アプリケーションのレジストリーとブレンドするために用いることができ、それにより、仮想アプリケーション１１０へ統合されたように見える。最初のアクセスにおいて、仮想アプリケーションを初期設定するために用いられる様々なレジストリー・キーが、作成される。最終的に、発行オペレーションおよび仮想アプリケーション使用の双方と非同期的に、パッケージ・レジストリー・コンテンツは、ターゲット・マシンのレジストリーへロードされる。
【００２７】
[0031]  ここで説明する実施形態は、以下のエレメントのうちの１以上のものを含む。１）クライアント・コンピューター・システムのセキュリティの継承。例えば、或るコンピューター・システは、別のコンピューター・システムとは異なるレジストリー・キーを有し得る。各コンピューター・システムのローカル・キーは、１つのアプリケーション・パッケージと共に、全てのクライアント・コンピューター・システムのキーをオーバーライドするのではなく、用いられる。２）クライアント・コンピューター・システムのレジストリーへのアクセスは通常通りである。何れかの既存のレジストリー保護が存在し、それぞれがプレマシン粒度（pre-machine granularity）を持つ。３）迅速な発行オペレーション。発行オペレーションは、スパース・レジストリー・ハイブ・ファイルがディスクに作成されるのさえ待たず、直ちに完了する。４）迅速なレジストリー・コンテンツの可用性（availability）。仮想アプリケーションが初めて起動したとき、レジストリー・ファイルがマウントされる。これは初めてのアクセスであるので、それはスパース的にディスクに作成され、この時にストリーミングされる。５）仮想アプリケーションの迅速な最初の起動。関連する唯一の同期するオペレーションは、アプリケーション・パッケージ・レジストリー・ハイブ・ファイルのディスクへのストリーミングおよびロードである。レジストリー・アクセスは、続いて監視される。ターゲット・マシンのレジストリー内のコピー先へまだコピーされていないコンテンツへの何れのアクセスも、優先順位が上げられる。６）各レジストリー・ファイルがターゲットのコピー先（クライアント・コンピューター・システムのレジストリー内）へコピーされた後、追加的にコピーすることは不要である。アプリケーション・パッケージ・レジストリー・ハイブ・ファイルがコピーされた後、ブレンドすることを必要とする名前空間を、仮想ソフトウェアによりブレンドすることができる。これらの構成は、図２、３、および４のそれぞれの方法２００、３００、および４００と関連して後に更に説明する。
【００２８】
[0032]  上述のシステムおよびアーキテクチャーを考慮すると、開示される主題事項に従ってインプリメントされ得る方法論は、図２、３、および４のフロー・チャートを参照すると、より良く理解できるであろう。説明を簡単にするために、方法論は、一連のブロックで示され、説明される。しかし、特許請求の範囲に記載の主題事項は、ブロックの順番により限定されないことを、理解および解釈すべきである。なぜなら、幾つかのブロックは、ここで示され説明される順とは別の順序で生じることや、他のブロックと同時に生じることがあり得るからである。更には、以下で説明する方法論を実施するために、全ての示したブロックを必要としない場合もある。
【００２９】
[0033]  図２は、オン・デマンドのファイル・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動するための方法２００のフロー・チャートを示す。ここで、方法２００を、環境１００のコンポーネントおよびデータを頻繁に参照して説明する。
【００３０】
[0034]  方法２００は、クライアント・コンピューター・システムにおいて、仮想アプリケーション・パッケージの一部である指定された高レベルのデータ・ファイルおよびディレクトリーのリストを含む高レベル・ファイル・リストを作成する動作を含む（動作２１０）。例えば、ファイル・リスト１１１は、コンピューター・システム１０１において作成することができる。ファイル・リストは、所与の仮想アプリケーション１１０の一部である高レベルのデータ・ファイルおよびディレクトリーのリストを含む。リスト１１２内のファイルは、アプリケーションのユーザー・インターフェース（ＵＩ）の一部であるファイルのリストと、アプリケーションの開始プロセスの一部、またはアプリケーションの主な機能の一部、またはアプリケーションの任意の他の部分のファイルのリストとを、含み得る。従って、高レベルのデータ・ファイルおよびディレクトリーのリスト１１２は、アプリケーションに応じて又は管理者の設定に応じて、非常に短いリストから非常に長いリストまでの何れかの範囲となる。各アプリケーションは、そのパッケージに属する設定ファイルを有することができる。従って、ファイル・リスト１１１は、単に、そのアプリケーション・パッケージのファイルまたはパッケージのファイルのサブセットを、含むことができる。
【００３１】
[0035]  方法２００はまた、アプリケーションのユーザーから、仮想アプリケーションがアクセスされることのインジケーションを受け取る動作を含む（動作２２０）。例えば、クライアント・コンピューター・システム１０１は、ユーザー１０５から、仮想アプリケーション１１０がアクセスされることを示すインジケーション１０６を、受け取ることができる。幾つかの場合、このインジケーションは、アプリケーションが既に実行されているときに、受け取ることができる。別の場合では、インジケーションは、アプリケーションが開始されること、または、より特定的には、アプリケーションのユーザー・インターフェースが開始されることを、示すことができる。そのような場合、仮想アプリケーションを初期設定する際に用いられるファイルに対して、スパース・ファイルが動的に作成される。
【００３２】
[0036]  先に述べたように、スパース・ファイルは、対応するファイルのファイル名１２２およびファイル・サイズ１２３を含むのみのプレースホルダーである。スパース・ファイル作成モジュール１１５は、受け取ったインジケーションに基づいて、アクセスされるデータ・ファイルに対するスパース・データ・ファイル１２１を動的に作成することができる（プログラムを開始させるため、または、プログラムが既に実行されているときにはプログラムのフィーチャーへアクセスするため）。ユーザーのインジケーション１０６に応じて、スパース・ファイルは、アクセスされる各データ・ファイルに対して動的に作成される。スパース・ファイルは、クライアント・コンピューター・システムでローカル・データ・ストア１２０に、ローカルに作成される（動作２３０）。各スパース・ファイルは、ローカルに又はリモート・データ・ストア１３０に格納される、対応するデータ・ファイルを有する。幾つかの実施形態では、ファイルが初めてアクセスされるとき、そのファイルに対するスパース・ファイルがローカル・データ・ストアに作成される。次に、ファイル・システムによる何れの最初のリクエストも、スパース・ファイルを読み、次に、ファイルがローカルに格納されることを考える。ファイル・システムにおいて、ファイルのデータを実際に読み出すためのデータ・リード・リクエストが受け取られると、リクエストがリモート・データ・ストア（例えば、クラウド）へ送られ、適切なアプリケーション・ファイル１３１が取り出されて、クライアント・コンピューター・システムのローカル・データ・ストアへストリーミングされる。次に、ファイル・システムは、これ及び後続のデータ・リクエストに対して、ローカル・データ・ストアからデータを読み出す。
【００３３】
[0037]  幾つかの場合、クライアント・コンピューター・システムは、ユーザー１−５からのインジケーション１０６が、指定されたディレクトリーがアクセスされるということを示すと、判定することができる。そのような場合、スパース・ファイル作成モジュール１１５は、指定されたディレクトリーおよびそのイミディエイト・コンテンツ（immediate contents）に対するスパース・ファイルを動的に作成することができる。従って、スパース・ファイルは、指定されたディレクトリーの何れのデータ・ファイルも、および何れのサブフォルダーの名前も、含むであろう。しかし、指定されたディレクトリーのサブフォルダーの下にあるデータ・ファイルやサブフォルダーに対するパース・ファイルは、作成されないであろう。このように、スパース・ファイルは、アクセスされた（またはアクセスを要求された）データ・ファイルに対してのみ作成される。ユーザーが、アクセスされる特定のファイルを要求し、そのファイルがサブディレクトリーに位置する場合、スパース・ファイル作成モジュール１１５は、指定されたデータ・ファイルのルート・ディレクトリーおよび介在する各サブディレクトリーに対するスパース・ファイルを、動的に作成することができる。
【００３４】
[0038]  次に、上記で示したように、クライアント・コンピューター・システムのファイル・システムが、仮想アプリケーション１１０がスパース・データ・ファイル１２１の１以上のものへアクセスを試みていると判定したとき、クライアント・コンピューター・システムは、アクセスされたスパース・ファイルに対応するデータ・ファイルがリモート・データ・ストアから要求に応じて動的にストリーミングされることを、要求する（動作２４０）。それらのデータ・ファイルは、単一で、複数で、シリーズで、またはパラレルで、ストリーミングすることができる。ファイルは、ローカルに格納してアクセスすることができ、また、仮想アプリケーションへ直接にストリーミングすることができる。ファイルがローカル・データ・ストアに格納される場合、何れの後続のアクセス・リクエストも、データ・ファイルへローカルにアクセスすることにより、満たすことができる。仮想アプリケーション・レジストリー・ファイルもまた、同様にして作成することができる。スパース・レジストリー・ファイルは、仮想アプリケーションによりアクセスされるレジストリー・ファイルに対して、動的に作成することができる。これは、後に図３を参照して詳細に説明する。
【００３５】
[0039]  また、１以上の指定されたデータ・ファイルまたは仮想アプリケーションに対してオン・デマンドのステージングがオーバーライドされることを、管理ユーザー１４５が示し得ることに、留意されたい。例えば、アプリケーションが非常に小さい場合、管理者は、オン・デマンドのステージングがオーバーライドされること、および指定されたデータ・ファイルがローカル・データ・ストアへローカルにプリロードされることを、示すことができる。管理者がオン・デマンドのステージングをオーバーライドしたファイルまたはアプリケーションは、アプリケーションがローカルにインストールされたかのように、ファイル・システムにより通常通りにアクセスすることができる。更に、仮想アプリケーション・ファイルがローカル・データ・ストアに格納されたとき（ストリーミングされた後、またはオーバーライドが原因で）、ローカル・ファイル・システムの名前空間を、仮想アプリケーションにより直接的に使用するために、仮想アプリケーションにより用いられる名前空間とブレンドすることができる。
【００３６】
[0040]  図３は、オン・デマンドのレジストリー・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動するための方法３００のフロー・チャートを示す。ここで、方法３００を、図４の環境４００のコンポーネントおよびデータを頻繁に参照して説明する。
【００３７】
[0041]  方法３００は、クライアント・コンピューター・システムにおいて、仮想ソフトウェア・アプリケーションにより用いられる指定された高レベルのレジストリー・ファイルのリストを含む高レベル・レジストリー・ファイル・リストを作成する動作を含む（動作３１０）。例えば、レジストリー・ファイル・リスト４６１は、クライアント・コンピューター・システム４５０において作成することができる。ファイル・リストは、仮想アプリケーション４６０により用いられる高レベル・レジストリー・ファイルのリスト４６２を含む。ファイル・リスト１１１と同様に、レジストリー・ファイル・リストは、仮想アプリケーションにより用いられるレジストリー・ファイルの全てまたは一部を含み得る。クライアント・コンピューター・システムは、アプリケーション・ユーザー４５５から、仮想アプリケーションがアクセスされるというインジケーション４５６を、受け取ることができる（動作３２０）。そのインジケーションを受け取るとき、アプリケーションがまだ実行されていないことがあり得、その場合、インジケーションは、アプリケーションを開始することを要求している。インジケーションを受け取るときに、仮想アプリケーションが既に実行されている場合、そのインジケーションは、アプリケーションにより提供されるがまだ使用されていない機能を、要求するものであり得る。
【００３８】
[0042]  受け取ったインジケーション４５６に応じて、レジストリー・ファイル作成モジュール４６５は、高レベル・リスト４６２においてリストされアクセスされるレジストリー・ファイルを、受け取ったインジケーションに基づいて、動的に作成することができる（動作３３０）。このように、動的に作成されたレジストリー・ファイルは、クライアント・コンピューター・システムのレジストリー４７０へ書き込まれる。従って、アクセスされる各レジストリー・ファイル４７１に対して、対応するスパース・ファイルが作成され得る。次に、レジストリー・ファイル４７６からのデータ、値、またはキーがアクセスされると、それらはリモート・データ・ストア４７５からストリーミングされる。レジストリー・ステージングは、少なくとも幾つかの場合において、複数の異なる仮想ソフトウェア・アプリケーションのために、組み合わせることができる。従って、複数の仮想アプリケーションに対するレジストリー・ファイルを、リモート・データ・ストアから同時に動的にストリーミングすることができる。また、レジストリー・ファイルの動的な作成は、クライアント・コンピューター・システムでバックグラウンド・プロセスとして行うことができることに、留意されたい。
【００３９】
[0043]  アプリケーション４６０が更なるレジストリー・ファイルへのアクセスを試みているとの判定に応じて、レジストリー・ファイル作成モジュールは、要求に応じて、クライアント・コンピューター・システムのレジストリー４７０に更なるレジストリー・ファイルを動的に作成することができる（動作３４０）。アプリケーションが初めて初期設定される場合、レジストリー・ファイルは、アプリケーションを初期設定する際に用いられるファイルに対して動的に作成される。アプリケーションが既に実行されている場合、レジストリー４７１は、新たにアクセスされたフィーチャーで使用するために、動的に作成される。動的に作成されたレジストリー・ファイル（作成された理由が何であれ）へのアクセスがもはや可能ではない場合、アプリケーションが要求しているキーのために必要なデータを含むレジストリー・ファイルは、要求に応じてクライアント・コンピューター・システムへストリーミングされる。更に、仮想アプリケーションからの何れのリクエストも、レジストリー・キー・レベルでインターセプトすることができる。次に、レジストリー・キーは、動的に作成されたレジストリー・ファイルからのデータを用いて、要求に応じて、各データ・リクエストに対して作成することができる。時間が経つと、アプリケーションに対する各レジストリー・ファイルは、動的に作成され、ローカル・システムのレジストリー４７０に格納される。それらのレジストリー・ファイルのそれぞれは、非同期で動的に作成することができる（または、幾つかの場合において、管理者によりプリロードすることを指定された場合にはプリロードすることができる）。
【００４０】
[0044]  図４は、オン・デマンドのステージングを用いて仮想ソフトウェア・アプリケーションを迅速に発行するための方法４００のフロー・チャートを示す。ここで、方法４００を、環境１００のコンポーネントおよびデータを頻繁に参照して説明する。
【００４１】
[0045]  方法４００は、コンピューター管理者から、１以上のクライアント・コンピューター・システムにおいて１以上の仮想ソフトウェア・アプリケーションが発行されることを示す入力を、受け取る動作を含む（動作４１０）。例えば、管理コンピューター・システム１４０は、管理ユーザー１４５から入力１４６を受け取る。入力は、クライアント・コンピューター・システム１０１（および任意の数の他のクライアント・コンピューター・システム）において様々な指定された仮想アプリケーション１１０が発行されることを、示し得る。受け取った入力に応じて、仮想アプリケーション発行モジュール１４１は、クライアント・コンピューター・システムに対して仮想アプリケーションを発行することができる（動作４２０）。発行は、少なくともクライアント・コンピューター・システム１０１において、仮想アプリケーション・パッケージの一部である指定された高レベルのデータ・ファイルおよびディレクトリーのリスト１１２を含む高レベル・ファイル・リスト１１１を作成する動作を、含む（動作４２０Ａ）。発行はまた、スパース・ファイル作成モジュール１１５が、仮想ソフトウェア・アプリケーション１１０により要求されたデータ・ファイル１３１に対しての１以上のスパース・データ・ファイル１２１を、要求に応じて作成する動作を、含む（動作４２０Ｂ）。
【００４２】
[0046]  このように、管理ユーザーは、複数の異なるコンピューター・システムに対してアプリケーションを発行することができる。管理ユーザーは、インジケーションを送ることのみ必要とされ、アプリケーションのアイコンが、アプリケーションを発行された各コンピューター・システムに現れ得る。ユーザーが、アプリケーションを開始するためにアイコンをクリックすると、上述のオン・デマンドのステージングが開始する。アプリケーションを初期設定するために用いられる各ファイルは、作成された対応するスパース・データを有する。実際のデータが要求されるとき、そのデータは、リモート・データ・ストアからストリーミングされ、ローカルに格納されるか、または仮想アプリケーションへ直接にストリーミングされる。次に、仮想アプリケーションが実行中になると、アクセスされる何れの後続の仮想アプリケーション・ファイルも、作成された対応するスパース・ファイルを有することになり、リモート・データ・ストアからストリーミングされることになる。更に、アプリケーションが最初に発行されるとき、アプリケーションの初期設定の後に使用される指定された高レベルのレジストリー・ファイルのリストを含む高レベル・レジストリー・ファイル・リストが、作成され得る。次に、プログラムを初期設定するため又はアプリケーションの新たな部分へアクセスするためにアクセスされる、高レベル・リストにリストされるレジストリー・ファイルが、動的に作成され、クライアント・コンピューター・システムのレジストリーに書き込まれる。このように、アプリケーションを、実質的に即座に発行することができ、アプリケーションに対するアップデートを、管理ユーザーのインジケーションで動的に発行することができる。
【００４３】
[0047]  従って、オン・デマンドのファイル・ステージングを用いて仮想ソフトウェア・アプリケーションを迅速に起動する方法、システム、およびコンピューター・プログラム製品が提供される。更に、オン・デマンドのレジストリー・ステージングを用いてアプリケーションを迅速に起動する、およびオン・デマンドのステージングを用いて仮想ソフトウェア・アプリケーションを迅速に発行する方法、システム、およびコンピューター・プログラム製品が提供される。
【００４４】
[0048]  本発明は、本発明の精神および本質的特徴から離れずに、別の特定の形態で実施することもできる。説明した実施形態は、全ての点で、単なる例示であり、限定するものではないと考慮される。従って、本発明の範囲は、上記の説明ではなく、特許請求の範囲により示される。特許請求の範囲と等価の意味および範囲にある全ての変更は、特許請求の範囲の範囲内に含まれる。
【図１】
0006285870.tif 000002
【図２】
0006285870.tif 000003
【図３】
0006285870.tif 000004
【図４】
0006285870.tif 000005
【図５】
0006285870.tif 000006