(57)【要約】仮想アプリケーションは、ホストオペレーティングシステム内のいくつかの拡張ポイントで構成することができる。仮想アプリケーションは、プライベート名前空間で構成することができ、このプライベート名前空間内には、レジストリ設定、動的にリンクされたライブラリ、および他のコンポーネントなどの様々なコンポーネントを駐在させることができる。構成中、仮想アプリケーションのプライベート名前空間内のオブジェクトをポインティングすることができるリンクを、ホストオペレーティングシステム内に配置することができ、したがってオペレーティングシステム、および他のアプリケーションによって、仮想アプリケーションを起動、制御、またはその他の形で相互作用することができる。こうしたリンクは、ファイルシステム、レジストリ、または他の位置に配置することができ、他の仮想アプリケーションを含めて、他のアプリケーションからも利用可能となり得る。構成ルーチンによって、アプリケーションを構成し得る時点で、ホストオペレーティングシステム内にリンクを配置することができる。
2013524365.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータプロセッサ上で実施される方法であって、
ホストオペレーティングシステム内にアプリケーションバーチャライザをインストールするステップであって、前記アプリケーションバーチャライザは、記憶された項目を備えるプライベート名前空間を有し、前記ホストオペレーティングシステムは、パブリック名前空間を有するステップと、
前記パブリック名前空間内に、前記プライベート名前空間内の第１の位置への第１のリンクを構築するステップと、
前記第１のリンクを備えるコマンドを受け取るステップと、
前記第１のリンクから前記第１の位置を特定するステップと、
前記第１の位置を前記アプリケーションバーチャライザに渡すステップであって、前記アプリケーションバーチャライザは、仮想アプリケーションを起動し、前記コマンドを処理するように構成されるステップと
を含むことを特徴とする方法。
【請求項２】
前記パブリック名前空間内に、前記プライベート名前空間内の第２の位置への第２のリンクを構築するステップであって、前記第２の位置は、値を備えるステップと、
前記第２のリンクを求める要求を受け取るステップと、
前記第２のリンクから前記第２の位置を特定するステップと、
前記プライベート名前空間から前記値を取得するステップと、
前記値を用いて前記要求に応答するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記第２のリンクは、ホストファイルシステム内に配置されることを特徴とする請求項２に記載の方法。
【請求項４】
前記第２のリンクは、ホストレジストリ内に配置されることを特徴とする請求項２に記載の方法。
【請求項５】
前記プライベート名前空間は、前記仮想アプリケーション用の実行可能なコードを備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記プライベート名前空間は、前記仮想アプリケーション用のレジストリ設定を備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記アプリケーションバーチャライザと、前記第１のリンクとは、インストールパッケージ内に設けられることを特徴とする請求項１に記載の方法。
【請求項８】
前記インストールパッケージは、
前記第１のリンクを備えるマニフェストを読み取り、
前記ホストオペレーティングシステム内に前記第１のリンクを構築する
インストールプログラムを備えることを特徴とする請求項７に記載の方法。
【請求項９】
前記コマンドは、前記ホストオペレーティングシステム内の第２のアプリケーションバーチャライザ内で実行する第２の仮想アプリケーションから受け取られることを特徴とする請求項１に記載の方法。
【請求項１０】
前記アプリケーションバーチャライザは、前記仮想アプリケーションにストリーム配信されることを特徴とする請求項１に記載の方法。
【請求項１１】
ホストオペレーティングシステムと、
インストールパッケージであって、
プライベート名前空間、
前記プライベート名前空間内の宛先位置への第１のリンクを備えるマニフェストであり、前記第１のリンクは、前記ホストオペレーティングシステム内の元位置を備えるマニフェスト、および
アプリケーションバーチャライザ
を備えるインストールパッケージと、
インストールプログラムであって、
前記アプリケーションパッケージから前記アプリケーションバーチャライザをインストールし、
前記アプリケーションパッケージから前記マニフェストを読み取り、前記第１のリンクを構築する
ように構成されたインストールプログラムと
を備えることを特徴とするシステム。
【請求項１２】
前記インストールプログラムは、第２のシステム上で実行可能であることを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記アプリケーションバーチャライザが、第２のシステム上で実行されるときに、前記アプリケーションを前記アプリケーションバーチャライザにストリーム配信するストリーミングサーバをさらに備えることを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記アプリケーションバーチャライザは、前記ストリーミングサーバへのリンクを備えることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記宛先位置は、前記プライベート名前空間内のレジストリ位置であることを特徴とする請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション仮想化に関する。
【背景技術】
【０００２】
アプリケーション仮想化は、アプリケーションを、ホストオペレーティングシステムから、またはオペレーティングシステム内で動作可能な他のアプリケーションから独立させる技術である。アプリケーション仮想化は、その他の形では互換性のない２つ以上のアプリケーションを、同じオペレーティングシステム上で、サイドバイサイドで実行することを可能とするなど、多くの利点を有し得る。多くの場合、仮想アプリケーションを構成し、管理する方が、ホストアプリケーションをインストールするよりも遙かに簡単となり得る。
【発明の概要】
【０００３】
仮想アプリケーションは、ホストオペレーティングシステム内のいくつかの拡張ポイントで構成することができる。仮想アプリケーションは、プライベート名前空間で構成することができ、このプライベート名前空間内には、レジストリ設定、動的にリンクされたライブラリ、および他のコンポーネントなどの様々なコンポーネントを駐在させることができる。構成中、仮想アプリケーションのプライベート名前空間内のオブジェクトをポインティングする（ｐｏｉｎｔ）ことができるリンクを、ホストオペレーティングシステム内に配置することができ、したがってオペレーティングシステム、および他のアプリケーションによって、仮想アプリケーションを起動、制御、またはその他の形で相互作用することができる。こうしたリンクは、ファイルシステム、レジストリ、または他の位置に配置することができ、他の仮想アプリケーションを含めて、他のアプリケーションからも利用可能となり得る。構成ルーチンによって、アプリケーションを構成し得る時点で、ホストオペレーティングシステム内にリンクを配置することができる。
【０００４】
この「概要」は、以下の「詳細な説明」でさらに説明する概念の抜粋を簡略化した形で示すものである。この「概要」は、特許請求する主題の重要な特徴または本質的な特徴を特定するためのものでも、特許請求する主題の範囲を限定するものでもない。
【図面の簡単な説明】
【０００５】
【図１】仮想化アプリケーションを備えたシステムを示す実施形態の図である。
【図２】仮想化アプリケーションをインストールする方法を示す実施形態の流れ図である。
【図３】プライベート名前空間へのリンクに応答する方法を示す実施形態の流れ図である。
【発明を実施するための形態】
【０００６】
仮想アプリケーションは、ホストオペレーティングシステムのパブリック名前空間から、仮想アプリケーションが使用するプライベート名前空間へのポインタを用いて、ホストオペレーティングシステムで実行することができる。ポインタは、例えば、ホストオペレーティングシステムのレジストリ、およびファイルシステム内に駐在させることができ、それによって他のアプリケーションおよびオペレーティングシステムが、仮想アプリケーションにアクセス、制御、および動作することが可能となり得る。
【０００７】
仮想アプリケーションは、ホストオペレーティングシステム内に、アプリケーションバーチャライザ内のプライベート名前空間へのリンクを構築することができるインストールプログラムによって構成し、利用することができる。インストールプログラムは、アプリケーションバーチャライザをインストールすることができ、したがってユーザまたは別のアプリケーションによって、仮想アプリケーションを起動し、相互作用することができるようになる。
【０００８】
多くの実施形態では、ユーザは、アプリケーションバーチャライザ内で動作する仮想アプリケーションが、あたかもその仮想アプリケーションが、ホストオペレーティングシステムでネイティブに（ｎａｔｉｖｅｌｙ）実行しているかのように体感することができる。仮想アプリケーションは、グラフィカルユーザインタフェースを提示することができ、カットアンドペースト機能、および類似の他のグラフィカルユーザインタフェース要素など、ネイティブに実行しているアプリケーションと同様に相互作用することが可能となり得る。
【０００９】
仮想アプリケーションは、アプリケーションバーチャライザ内で動作することができ、プライベート名前空間、およびその仮想アプリケーションが利用可能なホストオペレーティングシステムの名前空間を有することができる。かかる構成によって、仮想アプリケーションは、仮想アプリケーション用の多くのデータソースを、プライベート名前空間内に保持しながら、ホストオペレーティングシステムのファイルシステム、レジストリ、および他の機能にアクセスすることが可能となり得る。
【００１０】
本明細書全体を通して、同じ参照番号は、図の説明全体を通して同じ要素を示す。
【００１１】
要素が「接続される」または「結合される」と称する場合、それらの要素は、互いに直接接続または結合されることがあり、または１つもしくは複数の介在要素が存在してもよい。一方、要素が「直接接続される」または「直接結合される」と称する場合、介在要素は存在しない。
【００１２】
主題は、デバイス、システム、方法、および／またはコンピュータプログラム製品として実施することができる。したがって、主題の一部または全ては、ハードウェア、および／またはソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコード、ステートマシン、ゲートアレイ他を含む）として実施することができる。さらに、主題は、命令実行システムによって、または命令実行システムと共に使用される媒体において実施される、コンピュータ使用可能またはコンピュータ可読のプログラムコードを有するコンピュータ使用可能またはコンピュータ可読の記憶媒体上のコンピュータプログラム製品の形を取ることができる。本明細書において、コンピュータ使用可能またはコンピュータ可読の媒体とは、命令実行システム、装置、またはデバイスによって、またはそれらと共に使用されるプログラムを保存、記憶、通信、伝搬、または転送することができる任意の媒体でよい。
【００１３】
コンピュータ使用可能またはコンピュータ可読の媒体は、それだけに限られるものではないが、例えば、電子、磁気、光学、電磁、赤外線、または半導体システム、装置、デバイス、または伝搬媒体でよい。限定ではなく、例によって示すものであるが、コンピュータ可読媒体は、コンピュータ記憶媒体、および通信媒体を備えることができる。
【００１４】
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための、任意の方法または技術で実装される揮発性、および不揮発性の、取外し可能な媒体、および取外し不可能な媒体が含まれる。コンピュータ記憶媒体には、それだけに限られるものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、かつ命令実行システムによってアクセスすることができる他の任意の媒体が含まれる。コンピュータ使用可能またはコンピュータ可読の媒体は、プログラムがその上に印刷された紙または他の適切な媒体でよいことに留意されたい。というのは、こうしたプログラムは、例えば、紙または他の適切な媒体の光学走査を介して電子的に取り込み、次いで、必要に応じてコンパイル、解釈、またはその他の適切な形で処理し、その後コンピュータメモリに記憶できるためである。
【００１５】
通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の転送機構などの変調されたデータ信号の形の他のデータを実施するものであり、いかなる情報伝達媒体も含まれる。用語「変調されたデータ信号」とは、１つまたは複数のその特性セット（ｃｈａｒａｃｔｅｒｉｓｔｉｃｓ  ｓｅｔ）を有する信号、または信号内の情報を符合化する形で変更された信号として定義することができる。限定ではなく、例によって示すものであるが、通信媒体には、有線ネットワーク、または直接有線接続などの有線媒体、およびアコースティック、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上述したもののいかなる組合せもやはり、コンピュータ可読媒体の範囲内に含まれるべきである。
【００１６】
主題がコンピュータ実行可能な命令の一般的な例として実施される場合、その実施形態は、１つまたは複数のシステム、コンピュータ、または他のデバイスによって実行されるプログラムモジュールを備えることができる。一般に、プログラムモジュールは、特定のタスクを実施する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能は、様々な実施形態において、必要に応じて、組み合わせる、または分散させることができる。
【００１７】
図１は、仮想化アプリケーションを備えたシステムを示す実施形態１００の図である。実施形態１００は、仮想化アプリケーションを、完全にインストールされた構成、またはストリーミング構成のいずれかで有することができるシステムの簡略化した例である。
【００１８】
図１の図は、システムの機能コンポーネントを示す。場合によって、コンポーネントは、ハードウェアコンポーネント、ソフトウェアコンポーネント、またはハードウェアとソフトウェアの組合せでよい。コンポーネントのいくつかは、アプリケーションレベルのソフトウェアでよく、他のコンポーネントは、オペレーティングシステムレベルのコンポーネントでよい。ある場合には、一コンポーネントを別のコンポーネントに接続するには、近距離接続でよく、その場合２つ以上のコンポーネントが単一のハードウェアプラットフォーム上で動作することになる。他の場合には、接続は、長距離に及ぶネットワーク接続を介して行うことができる。各実施形態で、異なるハードウェア、ソフトウェア、および相互接続アーキテクチャを用いて、上述の機能を実現することができる。
【００１９】
実施形態１００は、あるアプリケーションを仮想化した形で実行することができるシステムの例である。仮想化した形では、アプリケーションを他のアプリケーションから、かつオペレーティングシステムから独立させることができる。アプリケーションバーチャライザは、仮想化アプリケーションがリファレンスすることができるプライベート名前空間を構築することによって、分離層（ｓｅｐａｒａｔｉｏｎ  ｌａｙｅｒ）を設けることができる。アプリケーションバーチャライザによって、アプリケーションは、プライベート名前空間をまずリファレンスすることが可能となり、プライベート名前空間にリファレンスが見当たらない場合、アプリケーションは、次いでパブリック名前空間内の項目をリファレンスすることが可能となり得る。
【００２０】
プライベート名前空間は、ファイル、ライブラリ、アセンブリ、レジストリ設定、および多くの異なる機能について仮想化アプリケーションが使用することができる他の変数などの項目を含むことができる。ある場合には、プライベート名前空間内の項目によって、仮想アプリケーションを起動することができ、時には、かかる起動項目は、仮想アプリケーションを実行する際にその仮想アプリケーションが消化することができる変数または他の情報と共に受け取ることができる。他の場合では、プライベート名前空間内の項目に、照会可能な値を含めることができる。
【００２１】
実施形態１００のアプリケーション仮想化システムは、プライベート名前空間内の項目をポインティングすることができるリンクまたはリファレンスをパブリック名前空間内に含むことができる。こうしたリンクは、様々なアプリケーション向けの機構とすることができ、ユーザ入力を誘導して仮想アプリケーションにアクセスすることができる。ある場合には、かかるリンクを一仮想アプリケーションで用いて、別の仮想アプリケーションと通信する、または呼び出すことができる。
【００２２】
リンクの一使用例として、ファイルの種類の関連付けに使用することができる。いくつかのオペレーティングシステムでは、あるファイルの種類を特定のアプリケーションと関連付けることが可能となり得る。ファイルブラウザまたは他の機構を用いてファイルが「開」にされると、レジストリまたは他の位置にある、ファイルの種類を関連付けるエントリを照会して、もしあれば、どのアプリケーションをそのファイルの種類と関連付けることができるか判定することができる。仮想化アプリケーションの場合、プライベート名前空間内に、仮想アプリケーションをファイルの種類と関連付けるリンクを構築することができる。多くのオペレーティングシステムでは、かかるリンクは、オペレーティングシステムのレジストリ内に配置することができる。
【００２３】
こうしたリンクは、仮想アプリケーションのインストール工程中に構築することができる。インストール工程では、アプリケーションバーチャライザ、およびアプリケーションを実行するために使用することができる他のコンポーネントをインストールすることができ、また、仮想アプリケーション用のプライベート名前空間内の項目をリファレンスする様々なリンクをパブリック名前空間内に構成することができる。パブリックリンクは、他のアプリケーションからもアクセス可能とすることができ、リンクがリファレンスされると、アプリケーションバーチャライザによってインターセプトし、処理することができる。
【００２４】
アプリケーションバーチャライザは、プライベート名前空間内部のある位置へのリンクを受け取り、そのリンクに基づいていくつかの行為を実施することができる。ある場合には、アプリケーションバーチャライザは、アプリケーションを起動することができる。ある場合には、アプリケーションを起動し、リンクと共に受け取ったパラメータをアプリケーションに渡すことができる。さらに他の場合には、アプリケーションバーチャライザは、リンクの要求に基づいて、プライベート名前空間内の値を送り返すことができる。
【００２５】
仮想化アプリケーションは、ストリーム配信アプリケーション（ｓｔｒｅａｍｅｄ  ａｐｐｌｉｃａｔｉｏｎ）でもよい。ストリーム配信アプリケーションでは、アプリケーションを実行している際の要求に基づいて、アプリケーションの一部分をストリーミングサーバからダウンロードすることができる。クライアントデバイス上のストリーミングクライアントは、アプリケーションによって一部分をリファレンスする際に、その一部分をストリーミングサーバから要求することができる。
【００２６】
実施形態１００は、ハードウェアコンポーネント１０４、およびソフトウェアコンポーネント１０６を含む従来のコンピューティングデバイスを表すことができるデバイス１０２を例示している。デバイス１０２は、デスクトップコンピュータ、サーバコンピュータ、ゲームコンソール、ネットワーク機器、または他のデバイスなど、任意の種類のコンピューティングデバイスでよい。ある場合には、デバイス１０２は、ラップトップコンピュータ、ネットブックコンピュータ、携帯情報端末、携帯電話、または他のデバイスなどの携帯式デバイスでよい。
【００２７】
ハードウェアコンポーネント１０４は、プロセッサ１０８、ランダムアクセスメモリ１１０、および不揮発性記憶装置１１２を含むことができる。ハードウェアコンポーネント１０４はまた、ネットワークインターフェイス１１４、およびユーザインターフェイス１１６を含むことができる。
【００２８】
ソフトウェアコンポーネント１０６は、パブリック名前空間１２０を含むことができるオペレーティングシステム１１８を含むことができる。パブリック名前空間１２０は、レジストリ１２２、およびファイルシステム１２４を含むことができる。
【００２９】
パブリック名前空間１２０は、オペレーティングシステムが追跡し、オペレーティングシステム内で実行するアプリケーションが利用可能な、様々な項目を含むことができる。多くの実施形態では、パブリック名前空間１２０へのアクセスは、ある場合に制限することができる。例えば、オペレーティングシステムは、ユーザ、デバイス、アプリケーション、または項目にアクセスしようとする他のエンティティによって提示される資格情報に基づいて、パブリック名前空間１２０のある部分へのアクセスを許可または拒否できるアクセス制限を有することができる。
【００３０】
パブリック名前空間１２０は、オペレーティングシステム１１８によって管理され、アクセス制限を条件として、異なるアプリケーションおよびユーザによって利用可能となり得るので、このパブリック名前空間１２０は「パブリック」と呼ばれる。仮想アプリケーションは、プライベート名前空間を有することができ、このプライベート名前空間は、その仮想アプリケーションには利用可能であるが、一般に、他のアプリケーションからは検索またはアクセスすることができないので、「プライベート」である。
【００３１】
ネイティブアプリケーション１２６は、オペレーティングシステム１１８のパブリック名前空間１２０内で実行するアプリケーションとすることができる。ネイティブアプリケーションは、従来の、非仮想化アプリケーションでよい。
【００３２】
インストールアプリケーション１２８を用いて、デバイス１０２上に仮想アプリケーションをインストールし、構成することができる。インストールアプリケーション１２８は、仮想アプリケーションをデバイス１０２上でうまく実行できるように、いくつかの異なる機能を実施することができ、こうした機能には、プライベート名前空間を構築するステップ、ならびにパブリック名前空間１２０の位置からプライベート名前空間へのリンク１２３および１２５を設けるステップが含まれる。リンク１２３および１２５は、パブリック名前空間のレジストリ１２２、およびファイルシステム１２４の内部にそれぞれ存在するように例示されており、これらのリンクは、仮想アプリケーションへのエントリポイントとなり得る。インストールアプリケーション１２８によって実施することができる工程の例については、本明細書の後半に示す実施形態２００で理解できよう。
【００３３】
アプリケーションバーチャライザ１３０は、インストールアプリケーション１２８によってインストールすることができ、アプリケーションを仮想的な形で実行する機構でよい。アプリケーションバーチャライザ１３０は、プライベートファイルシステム１３４、ならびにレジストリ１３６用のプライベートエントリを含むことができるプライベート名前空間１３２を管理することができる。仮想アプリケーション１３８は、アプリケーションバーチャライザ１３０によって実行することができ、プライベート名前空間１３２にアクセスすることができる。
【００３４】
ストリーミング仮想化アプリケーションもやはり、インストールアプリケーション１２８によってインストールすることができる。ストリーミング版では、プライベートファイルシステム１４４、およびレジストリ１４６用のプライベートエントリを含むプライベート名前空間１４２を含むアプリケーションバーチャライザ１４０を含むことができる。仮想アプリケーションとは異なり、ストリーミングクライアント１４８は、アプリケーションまたはアプリケーションバーチャライザ１４０によってアプリケーションの一部分が要求されたときに、その部分をストリーミングサーバ１６８からフェッチすることができる。いくつかの実施形態では、ストリーミングクライアント１４８は、プライベートファイルシステム１４４内のファイル、およびレジストリ１４６用のプライベートエントリを含めて、プライベート名前空間１４２の一部分をフェッチすることができる。
【００３５】
プライベート名前空間１３２および１４２は、仮想アプリケーション１３８から、または仮想アプリケーション実行時に、ストリーミングクライアント１４８によって供給される仮想アプリケーションからアクセス可能となり得る。プライベート名前空間１３２および１４２はまた、プライベート名前空間１３２および１４２にポインティングできるリンク１２３および１２５を介してアクセス可能となり得、それによって他のアプリケーションが、仮想アプリケーション、その設定、および他の情報に直接アクセスすることが可能となり得る。
【００３６】
デバイス１０２は、ネットワーク１５０に接続されているとして例示され、このネットワーク１５０には、インストールサーバ１５２、およびストリーミングサーバ１６８を接続することができる。
【００３７】
インストールサーバ１５２は、異なる仮想アプリケーションをインストールするためにデバイス１０２によって使用できるいくつかのインストールパッケージ１５４を含むことができる。インストールパッケージ１５４は、インストールクライアント１５６を含むことができ、このインストールクライアント１５６は、クライアントデバイス１０２上で動作して、仮想アプリケーションを実行可能に構成する、実行可能なインストールアプリケーション１２８でよい。
【００３８】
インストールパッケージ１５４は、アプリケーションを仮想的な形で実行するために使用できるコンポーネントを全て含むことができる。例えば、インストールパッケージ１５４は、アプリケーションバーチャライザ１５８を含むことができる。アプリケーションバーチャライザ１５８は、クライアントデバイス上でネイティブに実行することができ、かつ仮想アプリケーション用のリソースとなり得るようにインストールすることができる。
【００３９】
インストールパッケージ１５４は、ファイル１６２、およびレジストリ１６４用のエントリを含むことができるプライベート名前空間１６０を含むことができる。プライベート名前空間１６０は、仮想アプリケーション１６６を表すファイルを全て含むことができるという点において、完全に組み込む（ｆｕｌｌｙ  ｐｏｐｕｌａｔｅ）ことができる。ある場合には、インストールパッケージ１５４内のプライベート名前空間１６０は、フレームワーク、または部分的に組み込まれた（ｓｐａｒｓｅｌｙ  ｐｏｐｕｌａｔｅ）ファイル、レジストリ設定、および他の項目の組を含むことができ、このフレームワークは、アプリケーション１６６、またはアプリケーションバーチャライザ１５８によってさらに組み込むことができる。
【００４０】
インストールパッケージ１５４は、マニフェスト１６３を含むことができる。マニフェスト１６３は、パブリック名前空間内に配置されたリンクを含むことができ、プライベート名前空間１６０をポインティングすることができる。マニフェスト１６３は、インストール中にインストールクライアント１５６によって処理できる追加の項目を含むことができる。
【００４１】
インストールサーバ１５２は、仮想アプリケーションを、クライアントデバイス１０２上でインストールし、実行する前に、どのように準備することができるかの一例を示している。インストールサーバ１５２は、様々なクライアントデバイス上でダウンロードし、インストールできる多くの異なるパッケージ１５４を含むことができる。いくつかの実施形態では、インストールパッケージ１５４は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、または他の記憶媒体に記憶することができ、クライアントデバイス１０２によって読み取って、そのアプリケーションをインストールすることができる。
【００４２】
インストールパッケージ１５４は、完全インストール用、ならびにストリーミングアプリケーション用に構築することができる。完全インストールでは、インストールパッケージ１５４は、実行可能なファイル、およびデータファイルを含めて、全てのファイルを含むことができ、また、仮想アプリケーションを実行可能にする他の任意のリソースも含むことができる。完全インストールでは、クライアントデバイス１０２は、例えばストリーミングサーバ１６８などの追加のいかなるリソースも必要なく、アプリケーションを完全に実行することが可能となり得る。
【００４３】
ストリーミングアプリケーションは、ストリーミングサーバ１６８から、仮想アプリケーション用の実行可能なファイル、およびデータファイルの大部分を取得することができる。ストリーミングアプリケーションは、アプリケーションバーチャライザ１５８、およびストリーミングクライアントを単にインストールするだけで、インストールすることができる。ストリーミングクライアントは、ストリーミングサーバ１６８と通信して、要求に応じて、アプリケーションの一部分を取得することができる。ある場合には、ストリーミングアプリケーションは、ローカルキャッシュに記憶することができ、アプリケーションを再度実行するときに、再度使用することができる。
【００４４】
ストリーミング実施形態では、アプリケーションを起動する度に、クライアントデバイス１０２とストリーミングサーバ１６８間で通信を行って、アプリケーションの最新版を特定し、取得することができる。ストリーミングサーバ１６８は、アプリケーションを実行開始できるように、アプリケーションの小部分をクライアントデバイス１０２に伝送することができ、その後、そのアプリケーションによって追加の部分が要求されると、その追加の部分を伝送することができる。ストリーミングクライアントは、どの部分が要求されているかを監視し、それらの部分をストリーミングサーバ１６８から取得することができる。
【００４５】
ストリーミングサーバ１６８は、いくつかのストリーミングパッケージ１７０を含むことができ、それぞれが異なるアプリケーションを表すことができる。アプリケーションストリーマ１７２は、ストリーミングクライアントと通信して、ストリーミングパッケージ１７０の、ストリーミングクライアントから要求され得る部分を、ダウンロードすることができる。
【００４６】
各ストリーミングパッケージ１７０は、ファイル１７６、およびレジストリ１７８用の設定を含むことができるプライベート名前空間１７４を含むことができる。ファイル１７６は、仮想化アプリケーション１８０用の実行可能なファイルの全て、または一部分を含むことができる。
【００４７】
図２は、仮想アプリケーションをインストールする方法を示す実施形態２００の流れ図である。実施形態２００は、インストールアプリケーションによって実施することができる方法の一例であり、このインストールアプリケーションは、オペレーティングシステム上でネイティブに実行して、コンポーネントをインストールし、構成することができ、それによって仮想アプリケーションを実行することができる。実施形態２００は、実施形態１００のインストールアプリケーション１２８または１５６などのインストールアプリケーションによって実施することができる工程の一例である。
【００４８】
他の実施形態では、異なる順序付け、追加のステップまたはより少ないステップ、および異なる呼称または用語を用いて、同様の機能を果たすことができる。いくつかの実施形態では、様々な動作または動作の組を、他の動作と同期して、または非同期の形で並行して実施することができる。本明細書で選択した諸ステップは、いくつかの動作の原理を簡略化した形で例示するために選択したものである。
【００４９】
実施形態２００は、仮想アプリケーションをクライアントデバイス上で動作させるように構成することができる一機構を例示している。実施形態２００の方法は、ネイティブに動作することができる実行可能なプログラムをインストールし、それによってアプリケーションを独立させ、次いで、そのアプリケーション用のプライベート名前空間に組み込むことができる。この方法はまた、パブリック名前空間からプライベート名前空間内の位置へのリンクを含むことができる。
【００５０】
ブロック２０２で、インストールパッケージを受け取ることができ、ブロック２０４で、インストールアプリケーションは、実行を開始することができる。インストールアプリケーションの動作は、実施形態２００の残る部分に影響を及ぼし得る。
【００５１】
ブロック２０６で、インストールアプリケーションは、事前にインストールされたアプリケーションバーチャライザがあるかを検索することができる。ブロック２０８で、アプリケーションバーチャライザがインストールされていなかった場合、ブロック２１０で、アプリケーションバーチャライザをインストールする。
【００５２】
ブロック２１２で、プライベート名前空間の新しいインスタンスを生成することができる。事前にインストールされたアプリケーションバーチャライザがあった場合、プライベート名前空間の新しいインスタンスによって、一アプリケーションバーチャライザが２つ以上の仮想アプリケーションを実行することが可能となり、それぞれがそれ自体のプライベート名前空間を有することになる。いくつかの実施形態では、アプリケーションバーチャライザの第２のインスタンスを実行して、第２の仮想アプリケーションを支持することができ、他の実施形態では、アプリケーションバーチャライザの単一のインスタンスによって、２つ以上の仮想化アプリケーションを、独立に、しかし同時に実行可能とすることができる。
【００５３】
ブロック２１４で、マニフェスト内のリンクを処理することができる。マニフェストは、インストールアプリケーションによって処理すべき項目を含む、テキストファイルまたはＸＭＬファイルなどの一覧でよい。ブロック２１４の各リンクについて、ブロック２１６で、リンクをパブリック名前空間内にインストールし、プライベート名前空間内のある位置にリンクさせることができる。リンクは、ポインタ、リファレンス、位置、またはパブリック名前空間からアクセスすることができ、プライベート名前空間へのアクセスを可能とする他の識別子でよい。
【００５４】
使用の一シナリオとして、仮想アプリケーションを、特定のファイルの種類と関連付けることができるアプリケーションとして登録することが可能である。多くのオペレーティングシステムでは、特定のファイル名拡張子を備えたファイルを、そのファイルを開き、処理することができる特定のアプリケーションに関連付けることができる。例えば、あるレジストリ設定は、ファイル名が「．ｄｏｃｘ」で終わる各ファイルを、特定のワードプロセッシングアプリケーションと関連付けるものとして定義することができる。ワードプロセッシングアプリケーションが仮想アプリケーションである場合、レジストリ内のリンクによって、仮想アプリケーションのプライベート名前空間をポインティングすることができ、それによって仮想化ワードプロセッシングアプリケーションを実行することができる。
【００５５】
ブロック２１６で確立されたいくつかのリンクによって、仮想アプリケーションを起動することができる。かかるリンクのいくつかは、パラメータ、または他の情報をそのアプリケーションに渡し、それによってアプリケーションがその情報を処理可能にすることができる。いくつかの例では、仮想アプリケーションは、コールに応答して値または他の情報を送り返すことができる。
【００５６】
ある場合には、ブロック２１６で確立されたリンクは、プライベート名前空間内のファイル、または設定に記憶することができる構成情報をポインティングすることができる。かかる場合、リンクは、ファイルまたは設定をトラバースして（ｔｒａｖｅｒｓｅ）調べ、その位置に記憶することができる値または他の情報を送り返すことができる。
【００５７】
ブロック２１４で、各リンクをインストールした後、アプリケーションを構成することができる。
【００５８】
ブロック２１８で、アプリケーションがストリーミングアプリケーションである場合、ブロック２２０で、ストリーミングクライアントをインストールし、ブロック２２２で、構成することができる。ストリーミングクライアントは、ストリーミングサーバと通信して、アプリケーションが一部分を要求するときに、アプリケーションのその部分をフェッチすることができる。ブロック２２２における構成には、ストリーミングサーバのアドレスをインストールするステップ、およびストリーミングクライアントによって使用できる他のパラメータを構成するステップが含まれ得る。ブロック２２２における構成後、ブロック２２８で、インストールを完了することができる。
【００５９】
ブロック２１８で、アプリケーションがストリーミングクライアントでない場合、ブロック２２４で、プライベート名前空間の全項目をインストールすることができ、ブロック２２６で、続いてアプリケーションをインストールすることができる。ブロック２２４および２２６の動作は、仮想アプリケーションの完全インストールを表すことができる。アプリケーションは完全にインストールすることができ、したがってこのアプリケーションは、あるデバイス上で、他のデバイスにアクセスすることなく実行することができる。ブロック２２６におけるインストール後、ブロック２２８で、インストールを完了することができる。
【００６０】
図３は、プライベート名前空間へのリンクに応答する方法を示す実施形態３００の流れ図である。実施形態３００は、パブリック名前空間からのリンクがプライベート名前空間に入る際にアプリケーションバーチャライザによって実施することができるいくつかの動作の簡略化した例である。
【００６１】
他の実施形態では、異なる順序付け、追加のステップまたはより少ないステップ、および異なる呼称または用語を用いて、同様の機能を果たすことができる。いくつかの実施形態では、様々な動作または動作の組を、他の動作と同期して、または非同期の形で並行して実施することができる。本明細書で選択した諸ステップは、いくつかの動作の原理を簡略化した形で例示するために選択したものである。
【００６２】
実施形態３００は、アプリケーションバーチャライザによって実施することができる工程のいくつかの例である。アプリケーションバーチャライザは、パブリック名前空間内で利用可能なリンクからプライベート名前空間へのリファレンスを監視することができる。アプリケーションバーチャライザは、パブリック名前空間からのリンクをインターセプトすることができ、また、プライベート名前空間への接続を可能とする。
【００６３】
ブロック３０２で、パブリック名前空間内のリンクをリファレンスすることができる。リンクは、アプリケーションが、例えば、キーの値を求めるためにレジストリに照会を行う際にリファレンスすることができる。別の例では、ユーザが、スタートメニューにある、パブリック名前空間内からプライベート名前空間内の実行可能なファイルへのリンクをリファレンスするショートカットをクリックすることができる。
【００６４】
さらに別の実施形態では、ユーザが、コマンドシェルを用い、パイプラインコマンドによって、一アプリケーションの出力を仮想アプリケーションに接続することができる。仮想アプリケーションは、プライベート名前空間内の別の位置にリンクすることができるパブリック名前空間内の名前を用いてリファレンスすることができる。
【００６５】
ブロック３０４で、アプリケーションバーチャライザは、プライベート名前空間にリンクすることができるリファレンスを受け取ることができる。ブロック３０６で、リンクを求める要求を、プライベート名前空間の値を読み取ることによって扱うことができ、アプリケーションを起動しない場合、ブロック３０８で、その値を取得し、ブロック３１０で、その値を要求者に送り返すこと（return）ができる。
【００６６】
ブロック３０６で、仮想アプリケーションを起動することによって要求を満たすことができる場合、ブロック３１２で、仮想環境内でアプリケーションを起動することができる。ブロック３０４で受け取ったリファレンスに、パラメータ、値、または他の情報が含まれていた場合、ブロック３１４で、そうした情報をアプリケーションに渡すことができる。
【００６７】
いくつかのリファレンスによって、アプリケーションを起動し、値を受け取ることができる。例えば、オペレーティングシステムは、ファイルの種類の関連付けを用いて、開くべき特定のファイルの種類の選択をユーザから受け取ることができ、次いで、オペレーティングシステムは、パブリック名前空間内のファイルの種類の関連付けを探すことができる。ファイルの種類の関連付けは、プライベート名前空間にリンクさせることができ、その時点で、ブロック３１２で、アプリケーションバーチャライザがアプリケーションを起動し、ブロック３１４で、そのアプリケーションにファイル名を渡すことができる。その後、アプリケーションは、ファイルを開いて、動作を開始することができる。
【００６８】
かかる例では、仮想アプリケーションによって生成されたユーザインターフェイスをユーザに提示することができ、ユーザは、そのアプリケーションと相互作用し始めることができる。かかる例では、ブロック３１６で、アプリケーションから応答がないことが予測され得、仮想アプリケーションは、受け取った値を用いて実行することができる。
【００６９】
別の例では、仮想アプリケーションは、パイプラインコマンドを用いてコマンドシェル内においてリファレンスすることができる。パイプラインコマンドは、一アプリケーションの出力を別のアプリケーションの入力に誘導することができる。時には、２つ、３つ、またはより多くのアプリケーションをパイプラインで一体にすることができる。かかる例では、仮想アプリケーションは、一アプリケーションから入力を受け取り、別のアプリケーションによって消化することができる出力で応答することができる。かかる例では、ブロック３１６で、応答があることが予測され、ブロック３２０で、アプリケーションバーチャライザは、応答値を用いて応答することができる。
【００７０】
主題の前述の説明は、例示および説明の目的で提示してきたものである。主題を開示の厳密な形で網羅するものでも、またはそのように限定するものでもなく、上記の教示に照らして、他の改変形態、および変形形態が考えられ得る。諸実施形態は、本発明の原理、およびその実際的な応用例を最も良く説明し、それによって、他の当業者が、企図される特定の使用に適した様々な実施形態、および様々な改変形態において本発明を最も良く利用することができるようにするために選択し、説明したものである。添付の特許請求の範囲は、従来技術によって限定される場合を除き、他の代替的実施形態も含むものとして解釈されるものである。
【図１】
2013524365.tif 000003
【図２】
2013524365.tif 000004
【図３】
2013524365.tif 000005
【国際調査報告】
2013524365.tif 000006
2013524365.tif 000007