仮想アプリケーションをアップデートする方法であって、メモリ内に記憶されるコンピュータ実行可能命令を実行するように構成される少なくとも1つのプロセッサを使用して、仮想アプリケーションのロードされた第1のバージョンと、前記仮想アプリケーションの第2のバージョンのメタデータとを比較する動作と、前記第1のバージョンのファイルへのハードリンクを作成する動作であって、前記ファイルは、前記第1のバージョンから前記第2のバージョンに変更されない、作成する動作とを実行するステップを含むことを特徴とする方法。前記第1のバージョンから前記第2のバージョンに変更される場合に、前記ファイルの少なくとも一部の取得を開始するステップをさらに含むことを特徴とする請求項1に記載の方法。前記ファイルの前記少なくとも一部の取得をプロキシから開始することを特徴とする請求項2に記載の方法。前記ファイル全体の、情報源からの取得を開始するステップをさらに含み、前記ファイルは、前記第1のバージョンおよび前記第2のバージョンに対して異なることを特徴とする請求項1に記載の方法。変更量が閾値を満たすまたは超える時に、開始することを特徴とする請求項1に記載の方法。仮想アプリケーションのアップデートを円滑にするシステムであって、メモリに接続されるプロセッサであって、アプリケーションパッケージのロードされた旧バージョンと、前記アプリケーションパッケージの新バージョンとを比較するように構成される第1のコンポーネントと、無変更のファイルの新バージョンと旧バージョンとの間のハードリンクを作成するように構成される第2のコンポーネントと、変更されたファイルの少なくとも一部の、情報源からの取得を開始するように構成される第3のコンポーネントとを含む、前記メモリに記憶されるコンピュータ実行可能コンポーネントを実行するように構成されるプロセッサを備えたことを特徴とするシステム。前記変更されたファイルの一部を、前記アプリケーションパッケージの前記旧バージョンからの対応するファイルからコピーするように構成される第4のコンポーネントをさらに含むことを特徴とする請求項6に記載のシステム。前記第3のコンポーネントが、前記新バージョンに対して一意的である新しいファイルの、前記情報源からの取得を開始するように構成されることを特徴とする請求項6に記載のシステム。前記第3のコンポーネントが、変更の程度に基づき、変更されたファイル全体の、前記情報源からの取得を開始するように構成されることを特徴とする請求項6に記載のシステム。前記情報源がプロキシであることを特徴とする請求項6に記載のシステム。以下の詳細は、概して仮想アプリケーションの効果的なアップデート例えば、アップデート/アップグレードを対象とする。アプリケーションの新バージョンは、旧バージョンと連動して作成可能である。例えば、ブロックマップおよび中央ディレクトリを利用して旧バージョンと新バージョンの比較に基づき、種々の動作を行うことができる。特に、新しいファイルが、対応する古いファイルに対して無変更のままである場合、ファイルの新バージョンから旧バージョンにハードリンクを作成できる。その結果、新バージョンについてファイルを複製する必要がないため、ディスク空き容量が保たれる。さらに、アップデートの中断または失敗が旧バージョンに影響せず、新バージョンを旧バージョンと同時に実行できる。ファイルが変更される場合、無変更データの部分別名、ブロックを旧バージョンからコピー可能であり、残りの部分をサーバ等の別の情報源から取得可能である。従って、ファイルの変更部分のみがダウンロードされるため、ネットワーク帯域幅が保存される。また、中でもプロキシ、複数のクライアント、および複数のクライアントデータストアの利用を含む保存されたネットワーク帯域幅に、さらなる最適化を使用することが可能である。ここで、本開示の種々の態様が、添付の図面を参照してさらに詳細に記載されるが、全体を通して同様の数字は同様または対応する要素を参照する。しかし、図面およびそれに関する詳細な説明が、請求される主題を開示される特定の形式に限定することは意図されない旨を理解すべきである。むしろ、請求される主題の精神および範囲の中に入る全ての変形、等価物、代替を包含することが意図される。まず図1を参照すると、仮想アプリケーションのアップデートを円滑にするシステム100が例示される。システム100は、クライアント-サーバパラダイムに従って動作するように構成される。クライアント110およびサーバ130は、ハードウェアおよび/またはソフトウェア例えば、スレッド、プロセス、コンピュータ、コンピュータ装置とすることができる。さらに、クライアント110は、クライアントデータストア120に接続することができ、サーバはサーバデータストア140に接続することができる。また、クライアント110とサーバ130は、インターネットなどのワイドエリアネットワークを含むがこれに限定されない通信ネットワークを介して通信可能である。システム100はアプリケーションの仮想化を可能にすることができ、それにおいて、通信ネットワーク150を介してサーバ130およびサーバデータストア140からアプリケーションをストリーミングすることにより、クライアント110および関連するクライアントデータストア120上に、アプリケーションがインストールされるのではなくロードされる。ここで示すように、ストリームコンポーネント112が、アプリケーションをサーバ130に要求し続いてサーバ130から受け取ることにより、そのようなアプリケーションストリーミングを達成するように構成される。例えば、サーバデータストア140には、アプリケーションの実行ファイルおよびメタデータを含むV1パッケージ122が含まれる。ストリームコンポーネント112は、サーバ130にV1パッケージ122を要求することができる。それに応答して、サーバ130は、V1パッケージ122をサーバデータストア140から回収し、通信ネットワーク150を介して送信してクライアント110に相対するストリームコンポーネント112にV1パッケージ122を返すことができる。次に、ストリームコンポーネント112は、ローカルキャッシュに相当し得るクライアントデータストア120にV1パッケージ122をロードすることができる。さらに、ストリーミングの処理のため、パッケージ全体が到着するまで、パッケージの一部を受信しながらロードすることができる。図2を簡単に検討すると、例示のアプリケーションパッケージ200が示される。例示のように、アプリケーションパッケージには、ヘッダ210、ファイルデータ220、ブロックマップ230、および中央ディレクトリ240が含まれる。ヘッダ210は、アプリケーションパッケージに関する一般情報例えば、サイズ、オフセット...を提供する。ファイルデータ220は、アプリケーションの機能を実装する複数の実行ファイルおよび非実行ファイルに相当する。ブロックマップ230は、クライアントがローカルファイル内の1つのオフセットをパッケージのオフセットに変換するための方法を提供するメタデータファイルである。さらに、ブロックマップ230は、改ざんを防ぎ、かつ、ブロック間の差を計算可能にするブロックレベルのハッシュを提供する。中央ディレクトリ240には、ファイルとサブディレクトリとに関するメタデータが含まれる。例えば、アプリケーションに、ファイルfoo.exeと、bar内のファイルalpha.dllおよびbeta.dllを有するサブディレクトリbarとが含まれていた場合、中央ディレクトリ240には、ローカルシステム上にその階層例えば、foo.exeというファイル、2つのファイルalpha.dllおよびbeta.dllを含んでいたディレクトリbarを再現するために必要な情報が含まれる。図1に戻ると、先に述べたように、ストリームコンポーネント112はサーバ130に接続し、V1パッケージ122をダウンロードすることができる。さらに詳細には、中央ディレクトリは、ダウンロードされて、パッケージ内にローカルバージョンのファイルとディレクトリを作成するために利用されることが可能である。そして、ストリームコンポーネント112は、全てのファイルをクライアントデータストア120のローカルシステム上に常駐させることができる。これは、ローカルファイルシステム内の場所例えば、ファイルfoo.dll、オフセット0x400からパッケージ内の範囲例えば、sample.appv、オフセット0x63000に移行させるブロックマップを使用することにより、達成させることができる。ストリームコンポーネント112にはまた、アプリケーションの旧バージョンをアプリケーションの新バージョンにアップデートするように構成されるアップデートコンポーネント114が含まれる。今までのアップデートの解決法は、アンインストールと再インストール、およびパッチングという2つのカテゴリの内の1つに含まれる。アンインストールと再インストールごとに、全てのファイルを含むアプリケーションの以前のバージョンはシステムから削除され、新バージョンがダウンロードかつインストールされる。しかしここで、アプリケーション内のファイルの15だけが変更された場合、全てのアプリケーションファイルがダウンロードされる。これはネットワーク帯域幅を非効率的に使用することであり、また、アプリケーションがこの時間使用できないため中断時間を増加させる。パッチングは、2つの既知のバージョンのファイル間の差に基づく、ビルドラボにおけるパッチの計算を伴う。パッチはダウンロードされファイルのトップに適用される。これには、変更されたデータ用のネットワーク帯域幅が必要であるだけだが、ビルドラボが以前のビルドのライブラリを維持して差を生成することが必要であり、また、パッチが順次適用される必要がある例えば、パッチ1、パッチ2、パッチ3...。アップデートコンポーネント114は、より効果的なアプローチを仮想アプリケーションのアップデートに提供することができる。さらに具体的には、アップデートコンポーネント114は、新バージョンおよび旧バージョンの無変更のファイルをハードリンクすることにより格納空間を保存すること、かつ、ネットワーク帯域幅の効果的な使用を、とりわけファイル変更の要求に制限することにさせることができる。さらに、アプリケーションの旧バージョンと新バージョンの両方が共存可能であり、アップデートは順次実行される必要がない。図3は、代表的なアップデートコンポーネント114をさらに詳細に例示する。アップデートコンポーネント114には、前処理コンポーネント310およびパッケージビルドコンポーネント320が含まれる。前処理コンポーネント310は、1つまたは複数の前処理動作を実行してアプリケーションのアップデートを円滑にするように構成される。制限ではなく例として、前処理コンポーネント310は、アプリケーションパッケージの中央ディレクトリおよびブロックマップを利用して新パッケージのローカルなスパースコピーを作成することができ、スパースコピーには、メタデータ例えば、ファイル名、サイズ...が含まれるが内容がないスパースファイルが含まれる。パッケージビルドコンポーネント320は、スパースパッケージを利用してローカルパッケージをビルドすることができる。例えば、パッケージビルドコンポーネント320は、ファイルを別のファイルにリンクすること、ファイルまたはファイルの一部をコピーすること、および/または新しいファイルを注入することができる。図4を検討すると、代表的なパッケージビルドコンポーネント320が例示され、比較コンポーネント410、ハードリンクコンポーネント420、コピーコンポーネント430、およびストリーム開始コンポーネント440が含まれる。比較コンポーネント410は、旧パッケージおよび新パッケージを分析すること、2つの間の差および/または類似を識別することができる。換言すれば、比較コンポーネント410は、アプリケーションの第1のバージョンに関連するファイルのリスト、およびアプリケーションの第2のバージョンに関連するファイルのリストを調べて変更を判定することができる。一実施形態によると、ファイルまたはファイルの一部に対するアプリケーションのハッシュ機能別名、ハッシュコード、ハッシュの結果が、比較コンポーネント410により利用されて差を識別することができる。比較コンポーネント410が、新しいファイルは同じファイルの旧バージョンに対して無変更であると判定すると、ファイルの旧バージョンと新バージョンの間のハードリンクを作成するように構成されるハードリンクコンポーネント420を使用することができる。言い方を変えれば、同じままであるファイルの別のコピーを生成するのではなく、エントリを新バージョンのパッケージ内に挿入させることができ、旧パッケージによって常駐にされる同一のファイルにファイルを関連付ける。そのようなハードリンクは、ファイルの複製コピーを格納するのではなく、リンクを使用して元のファイルの場所を参照することにより、少なくとも格納空間を保存する。これに限定されないが、ハードリンクは、ディスクの記憶装置のコストが高いリモートデスクトップおよび仮想デスクトップでのアプリケーション配置について特に有用であり得る。ファイルが変更された場合に、比較コンポーネント410により判定される時は、コピーコンポーネント430およびストリーム開始コンポーネント440が利用可能である。コピーコンポーネント430は、マッチングブロック、すなわち換言すれば、ファイルの無変換の部分を、旧バージョンから新バージョンにコピーするように構成される。パッケージブロックマップが提供するハッシュを利用して、ファイルのマッチングブロックおよび非マッチングブロックを識別することが可能である。変更部分については、ストリーム開始コンポーネント440が、サーバなどの情報源からのそのような部分の取得を開始することができる。コピーされた部分および取得された部分は共にファイルを含む。さらに、新バージョンに旧バージョンの一部ではない新しいファイルが含まれる場合、新しいファイルの全体の取得を、ストリーム開始コンポーネント440により開始することができる。このように、変更されたファイルおよび旧バージョンの一部ではない新しいファイルの部分にダウンロードを限定することにより、ネットワーク帯域幅が保存される。空間および帯域幅を保存することに加えて、パッケージビルドコンポーネント320は、旧バージョンと新バージョンの同時実行、およびアップデート中の失敗の許容差を許容することができる。典型的なアップデートスキームは、ファイルに対する削除またはコピーを伴う。従って、アップデート中にエラーがある場合、旧バージョンを、いくつかのファイルが削除またはインストールされた不完全な状態のままにすることができる例えば、部分的なアップグレード。ファイルの一部のハードリンクおよびコピーを利用することにより、中断または失敗したアップグレードは元のアプリケーションまたは旧アプリケーションバージョンに影響を与えない。同様に、アプリケーションの旧バージョンおよび新バージョンは共存可能であり、これは、例えば、特定のコンピュータのユーザが2人おり、第1のユーザがアプリケーションの第1のバージョンを、第2のユーザが同じアプリケーションの第2のバージョンを使用したい場合に有用となり得る。図1に戻ると、第2のバージョンのアプリケーション、すなわち、V2パッケージ124、が利用可能である時、アップデートコンポーネント114が、サーバ130からV2中央ディレクトリおよびブロックマップのダウンロードを開始することができる。続いて、中央ディレクトリは、コンテントディレクトリ内にファイル用のスパースファイルおよびエントリ用のディレクトリを作成するローカルファイルシステムに、拡張可能である。そして、アップデートコンポーネント114は古いファイルおよび新しいファイルのリストを調べることができ、V2パッケージ124内にファイルが存在する場合、アップデートコンポーネント114は、ファイルがV1パッケージ122に対して変更されているかどうかを判定する。この判定は、古いファイルと新しいファイルの間のブロックのハッシュを比較することにより行うことが出可能である。アップデートされたバージョンにおいて変更されていないファイルは、例えば、矢印で示すようにV1パッケージの場所からV2パッケージの場所に、アップデートコンポーネント114によりハードリンクさせることができる。ファイルが変更されている場合、アップデートコンポーネント114は、ファイルの旧バージョンからファイルの新バージョンにマッチングブロックをコピーし、変更部分をダウンロードすることができる。同様に、新しいファイルがアップデートされたバージョンには存在するが元のバージョンには存在しない場合、そのファイルはダウンロード可能である。一実施形態によると、2つのバージョンのブロックマップおよび中央ディレクトリを利用して、1つの任意のバージョンから別のバージョンに移行させることができる。例えば、あるユーザがバージョン1を持っているが1ヶ月間オフラインにしている状況を考える。この間、アプリケーションベンダは、多数のアップグレードを発行、または現バージョンが今度はバージョン4になるように修正する。ユーザはバージョン2と3をパッケージに適用する必要がない。それどころか、アップデートコンポーネント114は、バージョン4に関連するブロックマップを取得し、バージョン1とバージョン4の差を計算し、それらの変更を適用することができる。図5は、一実施形態による仮想アプリケーションのアップデートを円滑にするシステム500を例示する。システム550には、2つまたはそれ以上のクライアント110を含むことができ、そのそれぞれがストリームコンポーネント112およびアップデートコンポーネント114を含む。本明細書において上述したように、ファイルがアプリケーションの旧バージョンからアプリケーションの新バージョンに変更される場合、または、新しいファイルが新バージョンにより導入される場合、そのような変更されたデータの少なくとも一部をローカルシステムの外部から取得することが可能である。有利には、ダウンロードを変更に限定することによりネットワーク帯域幅を保存することが可能である。しかし、データ取得は、プロキシコンポーネント510を利用することによりさらに最適化が可能である。プロキシコンポーネント510は、ローカルまたはリモートのプロキシまたは中間段階であり、とりわけ、ファイルまたはその一部を格納するためのキャッシュ512を有する。複数のクライアント110は、プロキシコンポーネント510と対話し、変更されたデータを入手することができる。要求したデータが以前にサーバから回収されてキャッシュ512内に存在する場合、データは要求クライアントに返されることが可能である。あるいは、データはサーバから回収され、次回の使用のためにキャッシュ512内に格納されてよい。このように、アップデートされたアプリケーションパッケージは、各クライアントにより別々にダウンロードされるのとは対照的に、プロキシコンポーネント510により一度ダウンロードされ、複数のクライアント110により利用されることが可能である。さらに、クライアント110が別のクライアント110と通信可能に接続される場合、アップグレード情報が交換されてよい。例えば、第1のクライアント上でファイルの取得が必要であると判定されると、第1のクライアントはファイルを第2のクライアントに要求可能であり、第2のクライアントはファイルのコピーを返すことができる。その結果、ネットワーク帯域幅は、クライアントとクライアントの通信例えば、有線、無線、ブルートゥース....を経由してさらに保存され得る。同様に、サーバが利用可能でない場合でも、アップグレードを実行させることができる。図6は、一実施形態による仮想アプリケーションのアップデートを円滑にするシステム600を例示する。システムには、上述のようにクライアント110、ストリームコンポーネント112、およびアップデートコンポーネント114が含まれる。加えて、クライアント110は、2つのクライアントデータストア、すなわち第1のクライアントデータストア620および第2のクライアントデータストア630を含み、および/またはこれらと対話する。いくつかのシナリオにおいて、クライアント110は、複数である別々のユーザをサポートし、各ユーザが特定のクライアントデータストアを有するようにすることができる。アップデートコンポーネント114は、これらの別々のストアを利用して、中でも、変更されたデータを取得することができる。例えば、第1のクライアントデータストア620について、V1パッケージ122がV2パッケージ124にアップデートされる場合、第2のクライアントデータストア630がクエリされかつ利用され、可能な場合は、変更されたデータ、または旧バージョンのV1パッケージ122について含まれない新しいファイルを取得することができる。もちろん、別のクライアントデータストアが利用可能でない場合、または必要なデータを有していない場合、アップデートコンポーネント114は、他の情報源の中でもサーバ、プロキシ、または他のクライアントからデータの取得を求めることができる。上述のように、アップデートコンポーネント114は、サーバ、プロキシ、クライアント、またはクライアントデータストアなどの種々の情報源からデータを取得可能である。もちろん、この情報源のリストは包括的ではない。さらに、アップデートコンポーネント114は、1つの情報源を利用して他を除外する必要はない。事実、複数の情報源を利用して、同じまたは異なるファイルについてデータの取得が可能である。加えて、データは、2つまたはそれ以上の情報源に同時に要求してよく、その場合データは、第1の情報源から使用されて要求に応答する。加えて、どの1つまたは複数の情報源が使用されるべきかについて、利用可能な情報源、予測応答時間、経済的コストおよび負荷を含むがこれらに限定されない任意の数の要因に基づき判定を行うことが可能である。またさらに、アップデートコンポーネント114は、どの情報源のデータを要求するのかだけでなく、要求されるデータの量についても判定することができる。一実施形態によると、アップデートコンポーネント114は、以前のバージョンの一部を形成していなかった変更されたデータおよび新しいファイルに、要求を限定することが可能である。しかし、アップデートコンポーネント114は、もっと多くのデータを回収するように構成されてよい。例えば、変更量に対して、閾値を事前に準備、判定および推測を行うことができる。例えば、ファイルの50以上に影響を与える変更がファイルに含まれる場合、変更された部分だけでなくファイル全体を要求することができる。とりわけクライアントおよびネットワーク負荷、ならびにネットワークの速度およびコストを含む多数の要因に基づき、閾値を調整可能である。例として、ネットワーク使用に関連するデータ単位例えば、キロバイト、メガバイト...の経済的コストがかかる場合、ファイル全体を求める要求がなされる前は、ファイルの変化率は、100でない場合、100に近似する必要がないことを示す高い値に、閾値を設定することができる。前述のシステム、アーキテクチャ、環境などは、いくつかのコンポーネント間の相互作用について記載された。そのようなシステムおよびコンポーネントには、それらのコンポーネントまたはその中に特定されるサブコンポーネント、特定のコンポーネントまたはサブコンポーネントの内のいくつか、および/または、追加のコンポーネントが含まれてよいことは理解すべきである。サブコンポーネントはまた、親コンポーネント内に含まれるのではなく他のコンポーネントに対して通信可能に接続されるコンポーネントとして実装されてもよい。さらに、1つまたは複数のコンポーネントおよび/またはサブコンポーネントは、単一のコンポーネントに組み込まれて集約機能を提供することができる。システム、コンポーネントおよび/またはサブコンポーネント間の通信は、プッシュモデルおよび/またはプルモデルのどちらかに従って達成可能である。コンポーネントは、簡潔にする目的で本明細書に詳細には記載しないが、当業者には既知の1つまたは複数の他のコンポーネントと対話してもよい。さらに、上記に開示されるシステムおよび以下の方法の種々の一部は、人口知能、機械学習もしくは知識、または、ルールベースのコンポーネント、サブコンポーネント、プロセス、手段、方法論、もしくは機構例えば、サポートベクタマシン、ニューラルネットワーク、エキスパートシステム、ベイジアン信念ネットワーク、ファジー論理、データ融合エンジン、分類子...を含むことまたはこれらから成ることが可能である。そのようなコンポーネントにより、とりわけ、特定の機構またはそれにより実行されるプロセスを自動化し、システムおよび方法の一部をより適応力があり、また効果的かつ知的なものにすることが可能である。制限ではなく例として、アップデートコンポーネント114は、そのような機構を利用して、回収するデータ量およびどの1つまたは複数の情報源にデータを要求するかを判定または推測することが可能である。上記に記載した例示のシステムを考慮すると、開示される主題に従って実装されてよい方法論は、図7から11のフローチャートを参照することでよりよく理解されるであろう。説明を簡単にする目的で、方法論が一連のブロックとして示され記載されるが、請求される主題がブロックの順番によって制限されず、いくつかのブロックが本明細書に示され記載されるものとは異なる順番で、および/または、他のブロックと同時に発生してよいことは理解かつ認識されるべきである。また、以下に記載される方法を実装するために、例示される全てのブロックが必要とされるわけではない。図7を参照すると、仮想アプリケーションをアップデートする方法700が示される。参照番号710にて、アプリケーションの第1のバージョンとアプリケーションの第2のバージョンとの差が判定される。例えば、ファイルブロックに関連するハッシュコードを利用して、ファイルの一部、またファイルそのものが異なるかどうかについて判定することができる。番号720にて、第1および第2のバージョンから同一のファイルに対するハードリンクを作成することができる。換言すれば、第1のバージョンから第2のバージョンに変更されないファイルは、第2のバージョン用に複製コピーを作成するのではなく、第1のバージョンのファイルの場所にリンクされる。参照番号730にて、サーバ、プロキシ、クライアント、および/またはクライアントデータストアを含むがこれに限定されない1つまたは複数の情報源に対して、第1のバージョンと第2のバージョンのファイル間の差のストリーミングすなわちダウンロードを開始することができる。図8は、アプリケーションのアップデートを円滑にするための前処理の方法800のフローチャート図である。参照番号810にて、次のパッケージファイルが取得される。番号820にて、パッケージのファイル全てが処理されたかどうか、または換言すれば、ファイルのリストの最後に到達したかどうかについて判定することができる。最後に到達しはい、全てのパッケージのファイルが処理されたことが示される場合、方法800は終了する。しかし、最後に到達していない場合いいえ、メタデータ例えば、ファイル名、サイズ...を含むが内容がない特定のファイルについてスパースファイルが作成される。そして、840にて、スパースファイルの作成が成功したかどうかについてチェックがなされる。作成が成功した場合はい、方法800は参照番号810にループして戻り、そこで次のパッケージファイルが取得される。作成が不成功の場合いいえ、方法800は850に進み、そこで前回実行した前処理動作、すなわち段階分け動作がロールバック後進復帰例えば、アンドゥされ、方法800は終了する。図9は、仮想アプリケーションをアップデートする方法900を例示する。参照番号910にて、ファイルが、新パッケージから取得されるか、または新パッケージに対して識別される。番号920にて、パッケージ内の全てのファイルが処理されたかどうか、または換言すれば、ファイルのリストの最後に到達したかどうかについて判定される。全てのファイルが処理された場合はい、方法900は終了する。他方の場合いいえ、方法900は、930へ進み、そこで旧パッケージ内にファイルが存在するかどうかについて判定される。旧パッケージ内にファイルが存在しない場合いいえ、方法900は940へ進み、そこでファイルのダウンロードが開始またはキュー待ち行列入るされ、方法900は参照番号910にループして戻る。ファイルが旧パッケージ内に存在する場合はい、方法900は950へ進み、そこで、例えば、ファイルまたはファイルの一部に関連するハッシュコードを比較することにより、新しいファイルが、対応する古いファイルに対して無変更であるかどうかについて判定される。ファイルが無変更の場合はい、方法900は960に進み、そこで、古いファイルと新しいファイルの間に、新しいファイルが、常駐する古いファイルの場所に対して関連付けされるようなハードリンクが作成される。続いて、参照番号910にて、新しいパッケージファイルを取得することができる。しかし、950にて、ファイルが変更されていると判定される場合いいえ、方法900は番号970へ進み、そこで、マッチングハッシュコードを有するブロックがファイルからコピーされ新しいファイルに追加される。別の言い方をすれば、古いファイルから新しいファイルに変更されないデータの一部が、古いファイルからコピーされ新しいファイルに追加される。参照番号980にて、ファイルの非マッチングブロックのダウンロードが開始される。続いて、コピーされたデータおよび取得されたデータを組み合わせて新しいファイルを形成することができる。次に、方法900は参照番号910に戻り、全てのファイルが処理されてしまうまで次のファイルを取得する。図10は、仮想アプリケーションをアップデートする方法1000を示す。参照番号1010にて、新しいディレクトリが作成される。新しいディレクトリはスパースディレクトリであってよく、ファイルに関する情報を含むが内容がない1つまたは複数のスパースファイルを含むことができる。番号1012にて、新しいパッケージファイルがスパースディレクトリから取得されるか、スパースディレクトリによって識別される。1014にて、パッケージ内の全てのファイルが処理されたかどうか、または換言すれば、パッケージまたはファイルのリストの最後に到達したかどうかについてチェックがなされる。全てのパッケージファイルが処理された場合はい、方法1000は終了する。他方の場合はい、方法は番号1016へ進み、そこで、新しいファイルが、ファイルの旧バージョンまたは以前のバージョンに対して変更されたかどうかについて判定される。ファイルが変更されなかった場合いいえ、方法は1018へ進み、そこで、ハードリンクが、古いファイルパスと新しいファイルのパスの間に作成され、続いて、番号1012にて新しいファイルが取得すなわち識別される。ファイルが変更された場合はい、方法1000は1020に進み、そこで、旧パッケージの対応する古いファイル例えば、無変更のから少なくともファイルの一部をコピーする試みがなされる。番号1022にて、1020のコピー動作が成功したと判定される場合、または換言すれば、失敗しなかった場合いいえ、方法は1024へ進み、そこで、変更されたブロックのストリーミング、すなわちダウンロードが開始される。続いて、方法1000は番号1012に戻り、そこで、次のファイルが取得される。しかし、1022にて、1020のコピー動作が失敗したと判定される場合はい、方法1000は1026に進み、そこで、ファイル全体のストリーミングが開始され、番号1012にループして戻り、次のファイルが取得、すなわち識別される。図11は、変更されたデータを情報源から取得する方法1100のフローチャート図である。参照番号1110にて、ファイル全体および/またはファイルブロックがプロキシに要求される。1120にて、要求が失敗したかどうか、または別の言い方をすれば、結実しなかったかどうか、について判定される。要求された結果を要求が返した場合いいえ、方法1100は終了する。あるいは、要求が失敗した場合はい、方法1100は番号1030に進み、そこで、ファイル全体および/またはファイルブロックがローカルコンピュータに要求される。換言すれば、変更されたデータを求める有線または無線の要求を、別のローカルコンピュータに対して行うことができる。1140にて、要求が結果を返す場合、方法1100は終了する。他方の場合はい、方法1100は1150に進み、そこで、ファイル全体および/またはブロックを求める要求が、単一マシン上の代替のユーザストアに対して行われる。要求が成功する場合、または換言すれば、失敗しない場合いいえ、方法1100は終了する。要求が、要求されるデータを産出できない場合はい、方法1100は参照番号1170へ進み、そこで、ファイル全体および/またはファイルブロックが仮想アプリケーションサーバなどのサーバに要求され、方法1100は終了する。要するに、ファイル全体および/またはファイルブロックは、アプリケーションサーバ以外に多くの他のデータソースの内の1つに要求されてよく、多くの他のデータソースが要求されたデータを提供できる場合、ワイドエリアネットワーク帯域幅を保存することができる。本明細書において使用される時、用語コンポーネントおよびシステムならびにその形は、コンピュータ関連の実体、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのどれかに言及することが意図される。例えば、コンポーネントは、プロセッサ上で稼働するプロセス、プロセッサ、オブジェクト、インスタンス、実行ファイル、実行ファイルのスレッド、プログラム、および/またはコンピュータであってよいが、これに限定されない。例として、コンピュータ上で稼働するアプリケーションおよびコンピュータの両方をコンポーネントとすることができる。1つまたは複数のコンポーネントはプロセスおよび/または実行ファイルのスレッド内に存在してよく、また、1つのコンポーネントは1つのコンピュータ上にローカライズされてよく、および/または2つまたはそれ以上のコンピュータ間に分散されてよい。語例示のまたはその種々の形は、例、例証、または実例として機能することを意味するために本明細書で使用される。本明細書において例示のとして記載されるいずれの態様または設計も、他の態様または設計よりも好適または有利であるとは必ずしも解釈されない。さらに、例は、単に明確さおよび理解の目的で提供され、かつ、請求される主題または本開示の関連箇所をいか様にも制限または限定しない。さまざまな範囲の多数の追加または代替の例が存在するが、簡潔にする目的で省略されたことは理解すべきである。本明細書において使用される時、用語推測または推測するは概して、事象および/またはデータを介して獲得されるような観察結果の集合から、システム、環境、および/またはユーザについて推論するまたはその状態を推測するプロセスを言う。推測は、特定のコンテキストまたは動作を識別するために使用することができ、または、例えば、状態に対する確立分布を生成することができる。推測は確立的なものであってよく、すなわち、データおよび事象の考察に基づく関心事の状態に対する確立分布の計算である。推測はまた、事象および/またはデータの集合から高レベルの事象を形成するために使用される技術に言及してもよい。そのような推測により、観察された事象および/または記憶された事象データの集合から、結果として新しい事象または動作が構築され、これは、事象が一時的に極めて近接して相互関係があるかどうかに係わらず、また、事象およびデータが1つまたはいくつかの事象およびデータソースに由来するものであるかどうかに係わらない。種々の分類スキームおよび/またはシステム例えば、サポートベクタマシン、ニューラルネットワーク、エキスパートシステム、ベイジアン信念ネットワーク、ファジー論理、データ融合エンジン...を、請求される主題と関連して自動的動作および/または推測される動作を実行することに関連して、使用することができる。さらに、用語含む含有する有する有しているまたはその種々の形が、詳細な説明または請求の範囲において使用される限りにおいて、そのような用語は用語備えると同様に包括的であることが意図され、備えるが請求の範囲において移行語として使用される時に解釈されるのと同様である。請求される主題のコンテキストを提供するために、図12および以下の検討では、主題の種々の態様を実装可能な適切な環境について簡単で概略的な説明を提供することが意図される。しかし、適切な環境は単なる例であり、使用または機能の範囲について何ら制限を示唆することは意図されない。上記に開示されるシステムおよび方法は、1つまたは複数のコンピュータ上で稼働するプログラムのコンピュータ実行可能命令の一般的文脈で記載することができるが、当業者は、態様が、他のプログラムモジュールなどと組み合わせて実行可能でもあることを認識するであろう。概して、プログラムモジュールには、中でも、特定のタスクを実行し、および/または、特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造が含まれる。さらに、当業者は、上記のシステムおよび方法が種々のコンピュータシステム構成を用いて実践可能であることを理解するであろう。種々のコンピュータシステム構成には、シングルプロセッサ、マルチプロセッサまたはマルチコアプロセッサのコンピュータシステム、ミニコンピュータ装置、メインフレームコンピュータ、ならびに、パーソナルコンピュータ、携帯用コンピュータ装置例えば、携帯情報端末PDA、電話、時計...、マイクロプロセッサベース電子機器またはプログラム可能家庭用電子機器または工業電子機器などが含まれる。態様はまた、タスクが通信ネットワークを介してリンクされるリモート処理装置により実行される、分散コンピュータ環境において、実践可能である。しかし、請求される主題の態様の全てではなくいくつかはスタンドアロンのコンピュータ上で実践可能である。分散コンピュータ環境において、プログラムモジュールはローカルおよびリモートのメモリ記憶装置の一方または両方に設置されてよい。図12を参照すると、一例の汎用コンピュータ1210またはコンピュータ装置例えば、デスクトップ、ラップトップ、サーバ、携帯用、プログラム可能家庭用、または工業用の電子機器、セットトップボックス、ゲームシステム...が例示される。コンピュータ1210には、1つまたは複数のプロセッサ1220、メモリ1230、システムバス1240、大容量記憶装置1250、および1つまたは複数のインターフェースコンポーネント1270が含まれる。システムバス1240は、少なくとも上記のシステムコンポーネントを通信可能に接続させる。しかし、その最も簡素な形態において、コンピュータ1210はメモリ1230に接続され、種々のコンピュータ実行可能な動作、命令、および/またはメモリ1230内に記憶されるコンポーネントを実行する1つまたは複数のプロセッサ1220を含むことができることを理解すべきである。プロセッサ1220は、汎用プロセッサ、DSPdigitalsignalprocessor、ASICapplicationspecificintegratedcircuit、FPGAfieldprogrammablegatearrayもしくは他のプログラム可能論理装置、離散ゲートもしくはトランジスタ論理、離散ハードウェアコンポーネント、または本明細書に記載される機能を実行するべく設計されるこれらの任意の組み合わせ、を用いて実装可能である。汎用プロセッサはマイクロプロセッサであってよいが、代替えとしは、プロセッサは、任意のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってよい。プロセッサ1220はまた、コンピュータ装置、例えば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、マルチコアプロセッサ、DSPコアを併用する1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成においても実装されてよい。コンピュータ1210は、様々なコンピュータ可読媒体を含むことまたはこれと対話することができ、請求される主題の1つまたは複数の態様を実装するコンピュータ1210の制御を円滑にする。コンピュータ可読媒体は、コンピュータ1210によるアクセスが可能、かつ、揮発性および不揮発性の媒体ならびに着脱可能および着脱不可能の媒体を含む任意の利用可能な媒体とすることができる。制限ではなく例として、コンピュータ可読媒体にはコンピュータ記憶媒体および通信媒体が含まれてよい。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装される、揮発性および不揮発性、着脱可能および着脱不可能の媒体が含まれる。コンピュータ記憶媒体には、メモリ装置例えば、RAMrandomaccessmemory、ROMreadonlymemory、EEPROMelectricallyerasableprogrammablereadonlymemory...、磁気記憶装置例えば、ハードディスク、フロッピー登録商標ディスク、カセット、テープ...、光ディスク例えば、CDcompactdisk、DVDdigitalversatiledisk...、および、ソリッドステート装置例えば、SSDsolidstatedrive、フラッシュメモリ装置例えば、カード、スティック、キードライブ......、または、所望の情報を記憶するために使用可能かつコンピュータ1210がアクセス可能な任意の他の媒体、が含まれるがこれに限定されない。通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または、搬送波もしくは他の転送機構などの変調データ信号内の他のデータを具現化し、任意の情報配信媒体を含む。用語変調データ信号は、その1つまたは複数の特徴が信号内の情報を符号化するように設定または変更された信号を意味する。制限ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、RF、赤外線および他の無線媒体などの無線媒体が含まれる。上記のいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含むものとする。メモリ1230および大容量記憶装置1250は、コンピュータ可読記憶媒体の例である。コンピュータ装置の正確な構成および型に依って、メモリ1230は、揮発性例えば、RAM、不揮発性例えば、ROM、フラッシュメモリ...またはこの2つの何らかの組み合わせとすることができる。例として、基本入出力力システムBIOSは、コンピュータ1210内の要素間で起動時などに情報を転送する基本ルーチンを含むもので、不揮発性メモリに記憶させることが可能であり、一方、揮発性メモリは外部キャッシュメモリとして動作することができ、中でも、プロセッサ1220による処理を円滑にする。大容量記憶装置1250には、メモリ1230に関連する大量のデータを記憶するための着脱可能/着脱不可能、揮発性/不揮発性コンピュータ記憶媒体が含まれる。例えば、大容量記憶装置1250には、磁気もしくは光のディスクドライブ、フロッピーディスクドライブ、フラッシュメモリ、ソリッドステートドライブ、またはメモリスティック、などの1つまたは複数の装置が含まれるがこれに限定されない。メモリ1230および大容量記憶装置1250には、オペレーティングシステム1260、1つまたは複数のアプリケーション1262、1つまたは複数のプログラムモジュール1264、およびデータ1266を含むこと、すなわちこれらを記憶することができる。オペレーティングシステム1260は、コンピュータ1210のリソースを制御および割り当てるべく動作する。アプリケーション1262には、システムおよびアプリケーションソフトウェアの一方または両方が含まれ、メモリ1230および/または大容量記憶装置1250内に記憶されるプログラムモジュール1264およびデータ1266を介してオペレーティングシステム1260によるリソースの管理を活用して、1つまたは複数の動作を実行することができる。よって、アプリケーション1262は、それにより提供される論理に従って汎用コンピュータ1210を専用マシンに変えることができる。請求される主題の全てまたは一部は、ソフトウェア、ファームウェア、ハードウェアまたはその任意の組み合わせを制作するための標準プログラミング技術および/または工学技術を使用して実装され、コンピュータを制御して開示される機能を実現させる。制限ではなく例として、ストリームコンポーネント112およびアップデートコンポーネント114またはその一部は、アプリケーション1262のものであってよく、またはその一部を形成するものであってよく、かつ、1つまたは複数のプロセッサ1220により実行される時に機能性を実現させることができる、メモリおよび/または大容量記憶装置1250に記憶される1つまたは複数のモジュール1264およびデータ1266を含むことができる。特定の一実施形態によると、プロセッサ1220は、SOCsystemonachipまたは、単一の集積回路基板上にハードウェアとソフトウェアの両方を含む、または換言すれば統合する同様のアーキテクチャに相当するものとしてよい。ここで、プロセッサ1220には、中でも、少なくともプロセッサ1220およびメモリ1230と同様な1つまたは複数のプロセッサおよびメモリを含むことができる。従来のプロセッサには、最小限のハードウェアとソフトウェアが含まれ、外付けのハードウェアとソフトウェアに広範囲に依存する。対称的に、プロセッサのSOC実装はより強力であり、ハードウェアとソフトウェアをその内部に組み込み、最少の、または外付けに依存せずに、ハードウェアとソフトウェアを用いて特定の機能性を有効にする。例えば、ストリームコンポーネント112、アップデートコンポーネント114、および/または関連する機能性は、SOCアーキテクチャでハードウェア内に組み込まれてよい。コンピュータ1210にはまた、システムバス1240と通信可能に接続され、かつ、コンピュータ1210との相互作用を円滑にする1つまたは複数のインターフェースコンポーネント1270が含まれる。例として、ポート例えば、シリアル、パラレル、PCMCIA、USB、FireWire...またはインターフェースカード例えば、サウンド、ビデオ...などとすることができる。一例の実装において、インターフェースコンポーネント1270はユーザ入出力インターフェースとして具現化することができ、1つまたは複数の入力装置例えば、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、カメラ、他のコンピュータ...などのポインティングデバイスを介してユーザがコマンドおよび情報をコンピュータ1210に入力することを可能にする。別の例の実装において、インターフェースコンポーネント1270は出力周辺インターフェースとして具現化し、出力を、中でも、ディスプレイ例えば、CRT、LCD、プラズマ...、スピーカ、プリンタ、および/または他のコンピュータに供給することができる。さらに、インターフェースコンポーネント1270は、ネットワークインターフェースとして具現化することができ、有線または無線の通信リンクを介するなどして他のコンピュータ装置図示せずとの通信を可能にする。上記に記載されたものには、請求される主題の態様の例が含まれる。もちろん、請求される主題を説明する目的でコンポーネントまたは方法論の全ての考え得る組み合わせを記載することは不可能であるが、当業者は、開示される主題の多くのさらなる組み合わせおよび置き換えが可能であることを理解するであろう。従って、開示される主題には、添付の請求項の精神および範囲内に入るような全ての変更、修正、および変形を包含することが意図される。