特許第6192534号(P6192534)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

<>
  • 特許6192534-仮想アプリケーション拡張ポイント 図000002
  • 特許6192534-仮想アプリケーション拡張ポイント 図000003
  • 特許6192534-仮想アプリケーション拡張ポイント 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6192534
(24)【登録日】2017年8月18日
(45)【発行日】2017年9月6日
(54)【発明の名称】仮想アプリケーション拡張ポイント
(51)【国際特許分類】
   G06F 9/445 20060101AFI20170828BHJP
【FI】
   G06F9/06 610L
【請求項の数】20
【全頁数】17
(21)【出願番号】特願2013-503780(P2013-503780)
(86)(22)【出願日】2011年3月25日
(65)【公表番号】特表2013-524365(P2013-524365A)
(43)【公表日】2013年6月17日
(86)【国際出願番号】US2011030053
(87)【国際公開番号】WO2011126776
(87)【国際公開日】20111013
【審査請求日】2014年3月25日
【審判番号】不服2016-5119(P2016-5119/J1)
【審判請求日】2016年4月7日
(31)【優先権主張番号】12/754,623
(32)【優先日】2010年4月6日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100101373
【弁理士】
【氏名又は名称】竹内 茂雄
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100153028
【弁理士】
【氏名又は名称】上田 忠
(72)【発明者】
【氏名】ジョン エム.シーハン
(72)【発明者】
【氏名】クリストファー エイチ.ライアーソン
【合議体】
【審判長】 辻本 泰隆
【審判官】 佐久 聖子
【審判官】 須田 勝巳
(56)【参考文献】
【文献】 特表2008−509475号公報
【文献】 クライアント環境劇的“カイゼン”計画Part2第4の仮想化環境Microsoft SoftGrid試用レポート,Windows Server World,株式会社アイ・ディ・ジー・ジャパン,2007年 9月 1日,Vol.12,No.9(通巻199号),p.53−61
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/44-9/455
(57)【特許請求の範囲】
【請求項1】
デバイスで仮想アプリケーションを動作させるためにコンピュータプロセッサにより実施される方法であって、
アプリケーションバーチャライザを前記デバイスにインストールするステップであって、前記アプリケーションバーチャライザは、前記仮想アプリケーションを実行し、該仮想アプリケーションに関する1つ又は複数の項目を記憶するプライベート名前空間を管理するように構成され、記憶された前記1つ又は複数の項目は、ファイルの種類の関連付けの定義を含み、該ファイルの種類の関連付けは、前記仮想アプリケーションを特定のファイルの種類に関連付け、該プライベート名前空間は、当該プライベート名前空間に記憶された前記項目は前記仮想アプリケーションにより概してアクセス可能であるが、前記デバイス上の他のアプリケーションは前記プライベート名前空間に記憶された前記項目にネイティブにアクセスすることを妨げられるように、前記仮想アプリケーションに対してプライベートである、ステップと、
前記プライベート名前空間へのリンクを定めるステップであって、前記リンクは、記憶された前記1つ又は複数の項目から選択された、記憶されたある項目にアクセスするための拡張ポイントを提供し、前記リンクは、前記他のアプリケーションが前記仮想アプリケーションと、記憶された前記ある項目にアクセスすることによる特定の手法で相互作用可能なように構成され、前記相互作用は、前記他のアプリケーションが、前記ファイルの種類の関連付けにアクセスすることにより、前記仮想アプリケーションを起動することを含む、ステップと、
前記他のアプリケーションによりアクセス可能な前記リンクを、該リンクを前記デバイスのホストオペレーティングシステムのパブリック名前空間に記憶することにより作成するステップと、
前記リンクの選択を含むコマンドを前記アプリケーションバーチャライザで受けるステップであって、前記リンクは、前記パブリック名前空間から、前記他のアプリケーションのうちのあるアプリケーションによって選択されたものである、ステップと、
前記リンクの選択を受けることに応答して、
記憶された前記ある項目を前記リンクから識別し、
前記あるアプリケーションが前記仮想アプリケーションと、記憶された前記ある項目へのアクセスを介した前記特定の手法で相互作用することを可能にする
ステップと
を含むことを特徴とする方法。
【請求項2】
第2のリンクを前記プライベート名前空間に定めるステップであって、前記第2のリンクは、記憶された前記1つ又は複数の項目から選択された、記憶された第2の項目にアクセスするための拡張ポイントを提供し、前記第2のリンクは、前記他のアプリケーションが前記仮想アプリケーションと、記憶された前記第2の項目にアクセスすることによる特定の手法で相互作用することを可能にするように構成される、ステップと、
前記他のアプリケーションによりアクセス可能な前記第2のリンクを、該第2のリンクを前記パブリック名前空間に記憶することによって作成するステップと、
前記第2のリンクの選択を含む第2のコマンドを前記アプリケーションバーチャライザで受けるステップであって、前記第2のリンクは、前記パブリック名前空間から、前記他のアプリケーションのうちの第2のアプリケーションにより選択されたものである、ステップと、
前記第2のリンクの選択を受けることに応答して、
記憶された前記第2の項目を前記第2のリンクから識別し、
前記第2のアプリケーションが前記仮想アプリケーションと、記憶された前記第2の項目へのアクセスを介した第2の特定の手法で相互作用することを可能にする
ステップと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記第2のリンクは、ホストファイルシステム内に配置されることを特徴とする請求項2に記載の方法。
【請求項4】
前記第2のリンクは、ホストレジストリ内に配置されることを特徴とする請求項2に記載の方法。
【請求項5】
前記プライベート名前空間は、前記仮想アプリケーション用の実行可能なコードを備えることを特徴とする請求項1に記載の方法。
【請求項6】
前記プライベート名前空間は、前記仮想アプリケーション用のレジストリ設定を備えることを特徴とする請求項5に記載の方法。
【請求項7】
前記アプリケーションバーチャライザと、前記リンクとは、インストールパッケージ内に設けられることを特徴とする請求項1に記載の方法。
【請求項8】
前記インストールパッケージは、
前記リンクを備えるマニフェストを読み取り、
前記ホストオペレーティングシステム内に前記リンクを構築する
インストールプログラムを備えることを特徴とする請求項7に記載の方法。
【請求項9】
前記リンクの選択を含むコマンドを受けるステップは、該コマンドを、前記デバイスの第2のアプリケーションバーチャライザ内で実行される第2の仮想アプリケーションから受けるステップを含むことを特徴とする請求項1に記載の方法。
【請求項10】
前記仮想アプリケーションは、前記アプリケーションバーチャライザにストリーム配信されることを特徴とする請求項1に記載の方法。
【請求項11】
デバイスが、アプリケーションバーチャライザを前記デバイスにインストールするステップであって、前記アプリケーションバーチャライザは、仮想アプリケーションを実行し、該仮想アプリケーションに関する1つ又は複数の項目を記憶するプライベート名前空間を管理するように構成され、記憶された前記1つ又は複数の項目は、ファイルの種類の関連付けの定義を含み、該ファイルの種類の関連付けは、前記仮想アプリケーションを特定のファイルの種類に関連付け、前記プライベート名前空間は、当該プライベート名前空間に記憶された前記項目は前記仮想アプリケーションにより概してアクセス可能であるが、前記デバイス上の他のアプリケーションは前記プライベート名前空間に記憶された前記項目にネイティブにアクセスすることを妨げられるように、前記仮想アプリケーションに対してプライベートである、ステップと、
前記デバイスが、前記プライベート名前空間へのリンクを定めるステップであって、前記リンクは、前記ファイルの種類の関連付けにアクセスするための拡張ポイントを提供し、前記リンクはマニフェストにおいて定義され、前記リンクは、前記他のアプリケーションが前記仮想アプリケーションを前記ファイルの種類の関連付けにアクセスすることにより起動することを可能にする、ステップと、
前記デバイスが、前記他のアプリケーションによりアクセス可能な前記リンクを、該リンクを前記デバイスのホストオペレーティングシステムのレジストリに記憶することによって作成するステップであって、該ホストオペレーティングシステムのレジストリは前記デバイスのパブリック名前空間に配置された、ステップと、
前記デバイスが、前記特定のファイルの種類を有するあるファイルを開く要求を受けるステップと、
前記デバイスが、前記ホストオペレーティングシステムのレジストリから、前記リンクが前記特定のファイルの種類に関連付けられていることを判定するステップと、
前記デバイスが、前記リンクに従い前記あるファイルを処理するための前記仮想アプリケーションを起動するステップと
を含むことを特徴とする方法。
【請求項12】
前記デバイスが、第2のリンクを前記プライベート名前空間に定めるステップであって、前記第2のリンクは、記憶された前記1つ又は複数の項目から選択された、記憶された第2の項目にアクセスするための拡張ポイントを提供し、前記第2のリンクは、前記他のアプリケーションが前記仮想アプリケーションと、記憶された前記第2の項目にアクセスすることによる特定の手法で相互作用することを可能にするように構成される、ステップと、
前記デバイスが、前記他のアプリケーションによりアクセス可能な前記第2のリンクを、該第2のリンクを前記パブリック名前空間に記憶することによって作成するステップと、
前記デバイスが、前記第2のリンクの選択を含む第2のコマンドを前記アプリケーションバーチャライザで受けるステップであって、前記第2のリンクは、前記パブリック名前空間から、前記他のアプリケーションのうちの第2のアプリケーションにより選択されたものである、ステップと、
前記第2のリンクの選択を受けることに応答して、前記デバイスが、
記憶された前記第2の項目を前記第2のリンクから識別し、
前記第2のアプリケーションが前記仮想アプリケーションと、記憶された前記第2の項目へのアクセスを介した第2の特定の手法で相互作用することを可能にする
ステップと
をさらに含むことを特徴とする請求項11に記載の方法。
【請求項13】
第2の要求は第2の仮想アプリケーションにより構築されることを特徴とする請求項12に記載の方法。
【請求項14】
前記仮想アプリケーションは、前記アプリケーションバーチャライザにストリーム配信されることを特徴とする請求項13に記載の方法。
【請求項15】
デバイスで仮想アプリケーションを動作させるための方法を実装するためのコンピュータプログラムであって、該コンピュータプログラムは、1つ又は複数のコンピュータ記憶デバイスに記憶されたコンピュータ実行命令を含み、該コンピュータ実行命令がプロセッサにより実行されると前記方法が実行され、当該方法は、
アプリケーションバーチャライザを前記デバイスにインストールするステップであって、前記アプリケーションバーチャライザは、前記仮想アプリケーションを実行し、該仮想アプリケーションに関する1つ又は複数の項目を記憶するプライベート名前空間を管理するように構成され、記憶された前記1つ又は複数の項目は、ファイルの種類の関連付けの定義を含み、該ファイルの種類の関連付けは、前記仮想アプリケーションを特定のファイルの種類に関連付け、該プライベート名前空間は、当該プライベート名前空間に記憶された前記項目は前記仮想アプリケーションにより概してアクセス可能であるが、前記デバイス上の他のアプリケーションは前記プライベート名前空間に記憶された前記項目にネイティブにアクセスすることを妨げられるように、前記仮想アプリケーションに対してプライベートである、ステップと、
前記プライベート名前空間へのリンクを定めるステップであって、前記リンクは、記憶された前記1つ又は複数の項目から選択された、記憶されたある項目にアクセスするための拡張ポイントを提供し、前記リンクは、前記他のアプリケーションが前記仮想アプリケーションと、記憶された前記ある項目にアクセスすることによる特定の手法で相互作用可能なように構成され、前記相互作用は、前記他のアプリケーションが、前記ファイルの種類の関連付けにアクセスすることにより、前記仮想アプリケーションを起動することを含む、ステップと、
前記他のアプリケーションによりアクセス可能な前記リンクを、該リンクを前記デバイスのホストオペレーティングシステムのパブリック名前空間に記憶することにより作成するステップと、
前記リンクの選択を含むコマンドを前記アプリケーションバーチャライザで受けるステップであって、前記リンクは、前記パブリック名前空間から、前記他のアプリケーションのうちのあるアプリケーションによって選択されたものである、ステップと、
前記リンクの選択を受けることに応答して、
記憶された前記ある項目を前記リンクから識別し、
前記あるアプリケーションが前記仮想アプリケーションと、記憶された前記ある項目へのアクセスを介した前記特定の手法で相互作用することを可能にする
ステップと
を含むことを特徴とするコンピュータプログラム。
【請求項16】
コンピュータ実行命令であって、実行されると、
第2のリンクを前記プライベート名前空間に定めるステップであって、前記第2のリンクは、記憶された前記1つ又は複数の項目から選択された、記憶された第2の項目にアクセスするための拡張ポイントを提供し、前記第2のリンクは、前記他のアプリケーションが前記仮想アプリケーションと、記憶された前記第2の項目にアクセスすることによる特定の手法で相互作用することを可能にするように構成される、ステップと、
前記他のアプリケーションによりアクセス可能な前記第2のリンクを、該第2のリンクを前記パブリック名前空間に記憶することによって作成するステップと、
前記第2のリンクの選択を含む第2のコマンドを前記アプリケーションバーチャライザで受けるステップであって、前記第2のリンクは、前記パブリック名前空間から、前記他のアプリケーションのうちの第2のアプリケーションにより選択されたものである、ステップと、
前記第2のリンクの選択を受けることに応答して、
記憶された前記第2の項目を前記第2のリンクから識別し、
前記第2のアプリケーションが前記仮想アプリケーションと、記憶された前記第2の項目へのアクセスを介した第2の特定の手法で相互作用することを可能にする
ステップと
を実行する前記コンピュータ実行命令をさらに含むことを特徴とする請求項15に記載のコンピュータプログラム。
【請求項17】
前記あるアプリケーション及び前記第2のアプリケーションは同じアプリケーションであることを特徴とする請求項16に記載のコンピュータプログラム。
【請求項18】
前記プライベート名前空間は第1のプライベート名前空間であり、前記あるアプリケーションは第2の仮想化アプリケーションであり、該第2の仮想化アプリケーションは、第2のプライベート名前空間に記憶された1つ又は複数の第2の項目に関係し、該第2のプライベート名前空間は前記第1のプライベート名前空間とは異なることを特徴とする請求項15に記載のコンピュータプログラム。
【請求項19】
実行されると前記プライベート名前空間へのリンクを定めるステップを実行するコンピュータ実行命令は、実行されると、パラメータを前記仮想アプリケーションに渡すことと前記仮想アプリケーションに対する構成情報をトラバースすることのうちの一方を可能とする前記プライベート名前空間へのリンクを定めるステップを実行するコンピュータ実行命令を含むことを特徴とする請求項15に記載のコンピュータプログラム。
【請求項20】
実行されると前記プライベート名前空間へのリンクを定めるステップを実行するコンピュータ実行命令は、実行されると、前記パブリック名前空間内のファイルシステムと前記パブリック名前空間内のレジストリのうちの一方から前記プライベート名前空間へのリンクを定めるステップを実行するコンピュータ実行命令を含むことを特徴とする請求項15に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーション仮想化に関する。
【背景技術】
【0002】
アプリケーション仮想化は、アプリケーションを、ホストオペレーティングシステムから、またはオペレーティングシステム内で動作可能な他のアプリケーションから独立させる技術である。アプリケーション仮想化は、その他の形では互換性のない2つ以上のアプリケーションを、同じオペレーティングシステム上で、サイドバイサイドで実行することを可能とするなど、多くの利点を有し得る。多くの場合、仮想アプリケーションを構成し、管理する方が、ホストアプリケーションをインストールするよりも遙かに簡単となり得る。
【発明の概要】
【0003】
仮想アプリケーションは、ホストオペレーティングシステム内のいくつかの拡張ポイントで構成することができる。仮想アプリケーションは、プライベート名前空間で構成することができ、このプライベート名前空間内には、レジストリ設定、動的にリンクされたライブラリ、および他のコンポーネントなどの様々なコンポーネントを駐在させることができる。構成中、仮想アプリケーションのプライベート名前空間内のオブジェクトをポインティングする(point)ことができるリンクを、ホストオペレーティングシステム内に配置することができ、したがってオペレーティングシステム、および他のアプリケーションによって、仮想アプリケーションを起動、制御、またはその他の形で相互作用することができる。こうしたリンクは、ファイルシステム、レジストリ、または他の位置に配置することができ、他の仮想アプリケーションを含めて、他のアプリケーションからも利用可能となり得る。構成ルーチンによって、アプリケーションを構成し得る時点で、ホストオペレーティングシステム内にリンクを配置することができる。
【0004】
この「概要」は、以下の「詳細な説明」でさらに説明する概念の抜粋を簡略化した形で示すものである。この「概要」は、特許請求する主題の重要な特徴または本質的な特徴を特定するためのものでも、特許請求する主題の範囲を限定するものでもない。
【図面の簡単な説明】
【0005】
図1】仮想化アプリケーションを備えたシステムを示す実施形態の図である。
図2】仮想化アプリケーションをインストールする方法を示す実施形態の流れ図である。
図3】プライベート名前空間へのリンクに応答する方法を示す実施形態の流れ図である。
【発明を実施するための形態】
【0006】
仮想アプリケーションは、ホストオペレーティングシステムのパブリック名前空間から、仮想アプリケーションが使用するプライベート名前空間へのポインタを用いて、ホストオペレーティングシステムで実行することができる。ポインタは、例えば、ホストオペレーティングシステムのレジストリ、およびファイルシステム内に駐在させることができ、それによって他のアプリケーションおよびオペレーティングシステムが、仮想アプリケーションにアクセス、制御、および動作することが可能となり得る。
【0007】
仮想アプリケーションは、ホストオペレーティングシステム内に、アプリケーションバーチャライザ内のプライベート名前空間へのリンクを構築することができるインストールプログラムによって構成し、利用することができる。インストールプログラムは、アプリケーションバーチャライザをインストールすることができ、したがってユーザまたは別のアプリケーションによって、仮想アプリケーションを起動し、相互作用することができるようになる。
【0008】
多くの実施形態では、ユーザは、アプリケーションバーチャライザ内で動作する仮想アプリケーションが、あたかもその仮想アプリケーションが、ホストオペレーティングシステムでネイティブに(natively)実行しているかのように体感することができる。仮想アプリケーションは、グラフィカルユーザインタフェースを提示することができ、カットアンドペースト機能、および類似の他のグラフィカルユーザインタフェース要素など、ネイティブに実行しているアプリケーションと同様に相互作用することが可能となり得る。
【0009】
仮想アプリケーションは、アプリケーションバーチャライザ内で動作することができ、プライベート名前空間、およびその仮想アプリケーションが利用可能なホストオペレーティングシステムの名前空間を有することができる。かかる構成によって、仮想アプリケーションは、仮想アプリケーション用の多くのデータソースを、プライベート名前空間内に保持しながら、ホストオペレーティングシステムのファイルシステム、レジストリ、および他の機能にアクセスすることが可能となり得る。
【0010】
本明細書全体を通して、同じ参照番号は、図の説明全体を通して同じ要素を示す。
【0011】
要素が「接続される」または「結合される」と称する場合、それらの要素は、互いに直接接続または結合されることがあり、または1つもしくは複数の介在要素が存在してもよい。一方、要素が「直接接続される」または「直接結合される」と称する場合、介在要素は存在しない。
【0012】
主題は、デバイス、システム、方法、および/またはコンピュータプログラム製品として実施することができる。したがって、主題の一部または全ては、ハードウェア、および/またはソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード、ステートマシン、ゲートアレイ他を含む)として実施することができる。さらに、主題は、命令実行システムによって、または命令実行システムと共に使用される媒体において実施される、コンピュータ使用可能またはコンピュータ可読のプログラムコードを有するコンピュータ使用可能またはコンピュータ可読の記憶媒体上のコンピュータプログラム製品の形を取ることができる。本明細書において、コンピュータ使用可能またはコンピュータ可読の媒体とは、命令実行システム、装置、またはデバイスによって、またはそれらと共に使用されるプログラムを保存、記憶、通信、伝搬、または転送することができる任意の媒体でよい。
【0013】
コンピュータ使用可能またはコンピュータ可読の媒体は、それだけに限られるものではないが、例えば、電子、磁気、光学、電磁、赤外線、または半導体システム、装置、デバイス、または伝搬媒体でよい。限定ではなく、例によって示すものであるが、コンピュータ可読媒体は、コンピュータ記憶媒体、および通信媒体を備えることができる。
【0014】
コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための、任意の方法または技術で実装される揮発性、および不揮発性の、取外し可能な媒体、および取外し不可能な媒体が含まれる。コンピュータ記憶媒体には、それだけに限られるものではないが、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD−ROM、DVD(digital versatile disk)、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、かつ命令実行システムによってアクセスすることができる他の任意の媒体が含まれる。コンピュータ使用可能またはコンピュータ可読の媒体は、プログラムがその上に印刷された紙または他の適切な媒体でよいことに留意されたい。というのは、こうしたプログラムは、例えば、紙または他の適切な媒体の光学走査を介して電子的に取り込み、次いで、必要に応じてコンパイル、解釈、またはその他の適切な形で処理し、その後コンピュータメモリに記憶できるためである。
【0015】
通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の転送機構などの変調されたデータ信号の形の他のデータを実施するものであり、いかなる情報伝達媒体も含まれる。用語「変調されたデータ信号」とは、1つまたは複数のその特性セット(characteristics set)を有する信号、または信号内の情報を符合化する形で変更された信号として定義することができる。限定ではなく、例によって示すものであるが、通信媒体には、有線ネットワーク、または直接有線接続などの有線媒体、およびアコースティック、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上述したもののいかなる組合せもやはり、コンピュータ可読媒体の範囲内に含まれるべきである。
【0016】
主題がコンピュータ実行可能な命令の一般的な例として実施される場合、その実施形態は、1つまたは複数のシステム、コンピュータ、または他のデバイスによって実行されるプログラムモジュールを備えることができる。一般に、プログラムモジュールは、特定のタスクを実施する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能は、様々な実施形態において、必要に応じて、組み合わせる、または分散させることができる。
【0017】
図1は、仮想化アプリケーションを備えたシステムを示す実施形態100の図である。実施形態100は、仮想化アプリケーションを、完全にインストールされた構成、またはストリーミング構成のいずれかで有することができるシステムの簡略化した例である。
【0018】
図1の図は、システムの機能コンポーネントを示す。場合によって、コンポーネントは、ハードウェアコンポーネント、ソフトウェアコンポーネント、またはハードウェアとソフトウェアの組合せでよい。コンポーネントのいくつかは、アプリケーションレベルのソフトウェアでよく、他のコンポーネントは、オペレーティングシステムレベルのコンポーネントでよい。ある場合には、一コンポーネントを別のコンポーネントに接続するには、近距離接続でよく、その場合2つ以上のコンポーネントが単一のハードウェアプラットフォーム上で動作することになる。他の場合には、接続は、長距離に及ぶネットワーク接続を介して行うことができる。各実施形態で、異なるハードウェア、ソフトウェア、および相互接続アーキテクチャを用いて、上述の機能を実現することができる。
【0019】
実施形態100は、あるアプリケーションを仮想化した形で実行することができるシステムの例である。仮想化した形では、アプリケーションを他のアプリケーションから、かつオペレーティングシステムから独立させることができる。アプリケーションバーチャライザは、仮想化アプリケーションがリファレンスすることができるプライベート名前空間を構築することによって、分離層(separation layer)を設けることができる。アプリケーションバーチャライザによって、アプリケーションは、プライベート名前空間をまずリファレンスすることが可能となり、プライベート名前空間にリファレンスが見当たらない場合、アプリケーションは、次いでパブリック名前空間内の項目をリファレンスすることが可能となり得る。
【0020】
プライベート名前空間は、ファイル、ライブラリ、アセンブリ、レジストリ設定、および多くの異なる機能について仮想化アプリケーションが使用することができる他の変数などの項目を含むことができる。ある場合には、プライベート名前空間内の項目によって、仮想アプリケーションを起動することができ、時には、かかる起動項目は、仮想アプリケーションを実行する際にその仮想アプリケーションが消化することができる変数または他の情報と共に受け取ることができる。他の場合では、プライベート名前空間内の項目に、照会可能な値を含めることができる。
【0021】
実施形態100のアプリケーション仮想化システムは、プライベート名前空間内の項目をポインティングすることができるリンクまたはリファレンスをパブリック名前空間内に含むことができる。こうしたリンクは、様々なアプリケーション向けの機構とすることができ、ユーザ入力を誘導して仮想アプリケーションにアクセスすることができる。ある場合には、かかるリンクを一仮想アプリケーションで用いて、別の仮想アプリケーションと通信する、または呼び出すことができる。
【0022】
リンクの一使用例として、ファイルの種類の関連付けに使用することができる。いくつかのオペレーティングシステムでは、あるファイルの種類を特定のアプリケーションと関連付けることが可能となり得る。ファイルブラウザまたは他の機構を用いてファイルが「開」にされると、レジストリまたは他の位置にある、ファイルの種類を関連付けるエントリを照会して、もしあれば、どのアプリケーションをそのファイルの種類と関連付けることができるか判定することができる。仮想化アプリケーションの場合、プライベート名前空間内に、仮想アプリケーションをファイルの種類と関連付けるリンクを構築することができる。多くのオペレーティングシステムでは、かかるリンクは、オペレーティングシステムのレジストリ内に配置することができる。
【0023】
こうしたリンクは、仮想アプリケーションのインストール工程中に構築することができる。インストール工程では、アプリケーションバーチャライザ、およびアプリケーションを実行するために使用することができる他のコンポーネントをインストールすることができ、また、仮想アプリケーション用のプライベート名前空間内の項目をリファレンスする様々なリンクをパブリック名前空間内に構成することができる。パブリックリンクは、他のアプリケーションからもアクセス可能とすることができ、リンクがリファレンスされると、アプリケーションバーチャライザによってインターセプトし、処理することができる。
【0024】
アプリケーションバーチャライザは、プライベート名前空間内部のある位置へのリンクを受け取り、そのリンクに基づいていくつかの行為を実施することができる。ある場合には、アプリケーションバーチャライザは、アプリケーションを起動することができる。ある場合には、アプリケーションを起動し、リンクと共に受け取ったパラメータをアプリケーションに渡すことができる。さらに他の場合には、アプリケーションバーチャライザは、リンクの要求に基づいて、プライベート名前空間内の値を送り返すことができる。
【0025】
仮想化アプリケーションは、ストリーム配信アプリケーション(streamed application)でもよい。ストリーム配信アプリケーションでは、アプリケーションを実行している際の要求に基づいて、アプリケーションの一部分をストリーミングサーバからダウンロードすることができる。クライアントデバイス上のストリーミングクライアントは、アプリケーションによって一部分をリファレンスする際に、その一部分をストリーミングサーバから要求することができる。
【0026】
実施形態100は、ハードウェアコンポーネント104、およびソフトウェアコンポーネント106を含む従来のコンピューティングデバイスを表すことができるデバイス102を例示している。デバイス102は、デスクトップコンピュータ、サーバコンピュータ、ゲームコンソール、ネットワーク機器、または他のデバイスなど、任意の種類のコンピューティングデバイスでよい。ある場合には、デバイス102は、ラップトップコンピュータ、ネットブックコンピュータ、携帯情報端末、携帯電話、または他のデバイスなどの携帯式デバイスでよい。
【0027】
ハードウェアコンポーネント104は、プロセッサ108、ランダムアクセスメモリ110、および不揮発性記憶装置112を含むことができる。ハードウェアコンポーネント104はまた、ネットワークインターフェイス114、およびユーザインターフェイス116を含むことができる。
【0028】
ソフトウェアコンポーネント106は、パブリック名前空間120を含むことができるオペレーティングシステム118を含むことができる。パブリック名前空間120は、レジストリ122、およびファイルシステム124を含むことができる。
【0029】
パブリック名前空間120は、オペレーティングシステムが追跡し、オペレーティングシステム内で実行するアプリケーションが利用可能な、様々な項目を含むことができる。多くの実施形態では、パブリック名前空間120へのアクセスは、ある場合に制限することができる。例えば、オペレーティングシステムは、ユーザ、デバイス、アプリケーション、または項目にアクセスしようとする他のエンティティによって提示される資格情報に基づいて、パブリック名前空間120のある部分へのアクセスを許可または拒否できるアクセス制限を有することができる。
【0030】
パブリック名前空間120は、オペレーティングシステム118によって管理され、アクセス制限を条件として、異なるアプリケーションおよびユーザによって利用可能となり得るので、このパブリック名前空間120は「パブリック」と呼ばれる。仮想アプリケーションは、プライベート名前空間を有することができ、このプライベート名前空間は、その仮想アプリケーションには利用可能であるが、一般に、他のアプリケーションからは検索またはアクセスすることができないので、「プライベート」である。
【0031】
ネイティブアプリケーション126は、オペレーティングシステム118のパブリック名前空間120内で実行するアプリケーションとすることができる。ネイティブアプリケーションは、従来の、非仮想化アプリケーションでよい。
【0032】
インストールアプリケーション128を用いて、デバイス102上に仮想アプリケーションをインストールし、構成することができる。インストールアプリケーション128は、仮想アプリケーションをデバイス102上でうまく実行できるように、いくつかの異なる機能を実施することができ、こうした機能には、プライベート名前空間を構築するステップ、ならびにパブリック名前空間120の位置からプライベート名前空間へのリンク123および125を設けるステップが含まれる。リンク123および125は、パブリック名前空間のレジストリ122、およびファイルシステム124の内部にそれぞれ存在するように例示されており、これらのリンクは、仮想アプリケーションへのエントリポイントとなり得る。インストールアプリケーション128によって実施することができる工程の例については、本明細書の後半に示す実施形態200で理解できよう。
【0033】
アプリケーションバーチャライザ130は、インストールアプリケーション128によってインストールすることができ、アプリケーションを仮想的な形で実行する機構でよい。アプリケーションバーチャライザ130は、プライベートファイルシステム134、ならびにレジストリ136用のプライベートエントリを含むことができるプライベート名前空間132を管理することができる。仮想アプリケーション138は、アプリケーションバーチャライザ130によって実行することができ、プライベート名前空間132にアクセスすることができる。
【0034】
ストリーミング仮想化アプリケーションもやはり、インストールアプリケーション128によってインストールすることができる。ストリーミング版では、プライベートファイルシステム144、およびレジストリ146用のプライベートエントリを含むプライベート名前空間142を含むアプリケーションバーチャライザ140を含むことができる。仮想アプリケーションとは異なり、ストリーミングクライアント148は、アプリケーションまたはアプリケーションバーチャライザ140によってアプリケーションの一部分が要求されたときに、その部分をストリーミングサーバ168からフェッチすることができる。いくつかの実施形態では、ストリーミングクライアント148は、プライベートファイルシステム144内のファイル、およびレジストリ146用のプライベートエントリを含めて、プライベート名前空間142の一部分をフェッチすることができる。
【0035】
プライベート名前空間132および142は、仮想アプリケーション138から、または仮想アプリケーション実行時に、ストリーミングクライアント148によって供給される仮想アプリケーションからアクセス可能となり得る。プライベート名前空間132および142はまた、プライベート名前空間132および142にポインティングできるリンク123および125を介してアクセス可能となり得、それによって他のアプリケーションが、仮想アプリケーション、その設定、および他の情報に直接アクセスすることが可能となり得る。
【0036】
デバイス102は、ネットワーク150に接続されているとして例示され、このネットワーク150には、インストールサーバ152、およびストリーミングサーバ168を接続することができる。
【0037】
インストールサーバ152は、異なる仮想アプリケーションをインストールするためにデバイス102によって使用できるいくつかのインストールパッケージ154を含むことができる。インストールパッケージ154は、インストールクライアント156を含むことができ、このインストールクライアント156は、クライアントデバイス102上で動作して、仮想アプリケーションを実行可能に構成する、実行可能なインストールアプリケーション128でよい。
【0038】
インストールパッケージ154は、アプリケーションを仮想的な形で実行するために使用できるコンポーネントを全て含むことができる。例えば、インストールパッケージ154は、アプリケーションバーチャライザ158を含むことができる。アプリケーションバーチャライザ158は、クライアントデバイス上でネイティブに実行することができ、かつ仮想アプリケーション用のリソースとなり得るようにインストールすることができる。
【0039】
インストールパッケージ154は、ファイル162、およびレジストリ164用のエントリを含むことができるプライベート名前空間160を含むことができる。プライベート名前空間160は、仮想アプリケーション166を表すファイルを全て含むことができるという点において、完全に組み込む(fully populate)ことができる。ある場合には、インストールパッケージ154内のプライベート名前空間160は、フレームワーク、または部分的に組み込まれた(sparsely populate)ファイル、レジストリ設定、および他の項目の組を含むことができ、このフレームワークは、アプリケーション166、またはアプリケーションバーチャライザ158によってさらに組み込むことができる。
【0040】
インストールパッケージ154は、マニフェスト163を含むことができる。マニフェスト163は、パブリック名前空間内に配置されたリンクを含むことができ、プライベート名前空間160をポインティングすることができる。マニフェスト163は、インストール中にインストールクライアント156によって処理できる追加の項目を含むことができる。
【0041】
インストールサーバ152は、仮想アプリケーションを、クライアントデバイス102上でインストールし、実行する前に、どのように準備することができるかの一例を示している。インストールサーバ152は、様々なクライアントデバイス上でダウンロードし、インストールできる多くの異なるパッケージ154を含むことができる。いくつかの実施形態では、インストールパッケージ154は、DVD(Digital Versatile Disk)、または他の記憶媒体に記憶することができ、クライアントデバイス102によって読み取って、そのアプリケーションをインストールすることができる。
【0042】
インストールパッケージ154は、完全インストール用、ならびにストリーミングアプリケーション用に構築することができる。完全インストールでは、インストールパッケージ154は、実行可能なファイル、およびデータファイルを含めて、全てのファイルを含むことができ、また、仮想アプリケーションを実行可能にする他の任意のリソースも含むことができる。完全インストールでは、クライアントデバイス102は、例えばストリーミングサーバ168などの追加のいかなるリソースも必要なく、アプリケーションを完全に実行することが可能となり得る。
【0043】
ストリーミングアプリケーションは、ストリーミングサーバ168から、仮想アプリケーション用の実行可能なファイル、およびデータファイルの大部分を取得することができる。ストリーミングアプリケーションは、アプリケーションバーチャライザ158、およびストリーミングクライアントを単にインストールするだけで、インストールすることができる。ストリーミングクライアントは、ストリーミングサーバ168と通信して、要求に応じて、アプリケーションの一部分を取得することができる。ある場合には、ストリーミングアプリケーションは、ローカルキャッシュに記憶することができ、アプリケーションを再度実行するときに、再度使用することができる。
【0044】
ストリーミング実施形態では、アプリケーションを起動する度に、クライアントデバイス102とストリーミングサーバ168間で通信を行って、アプリケーションの最新版を特定し、取得することができる。ストリーミングサーバ168は、アプリケーションを実行開始できるように、アプリケーションの小部分をクライアントデバイス102に伝送することができ、その後、そのアプリケーションによって追加の部分が要求されると、その追加の部分を伝送することができる。ストリーミングクライアントは、どの部分が要求されているかを監視し、それらの部分をストリーミングサーバ168から取得することができる。
【0045】
ストリーミングサーバ168は、いくつかのストリーミングパッケージ170を含むことができ、それぞれが異なるアプリケーションを表すことができる。アプリケーションストリーマ172は、ストリーミングクライアントと通信して、ストリーミングパッケージ170の、ストリーミングクライアントから要求され得る部分を、ダウンロードすることができる。
【0046】
各ストリーミングパッケージ170は、ファイル176、およびレジストリ178用の設定を含むことができるプライベート名前空間174を含むことができる。ファイル176は、仮想化アプリケーション180用の実行可能なファイルの全て、または一部分を含むことができる。
【0047】
図2は、仮想アプリケーションをインストールする方法を示す実施形態200の流れ図である。実施形態200は、インストールアプリケーションによって実施することができる方法の一例であり、このインストールアプリケーションは、オペレーティングシステム上でネイティブに実行して、コンポーネントをインストールし、構成することができ、それによって仮想アプリケーションを実行することができる。実施形態200は、実施形態100のインストールアプリケーション128または156などのインストールアプリケーションによって実施することができる工程の一例である。
【0048】
他の実施形態では、異なる順序付け、追加のステップまたはより少ないステップ、および異なる呼称または用語を用いて、同様の機能を果たすことができる。いくつかの実施形態では、様々な動作または動作の組を、他の動作と同期して、または非同期の形で並行して実施することができる。本明細書で選択した諸ステップは、いくつかの動作の原理を簡略化した形で例示するために選択したものである。
【0049】
実施形態200は、仮想アプリケーションをクライアントデバイス上で動作させるように構成することができる一機構を例示している。実施形態200の方法は、ネイティブに動作することができる実行可能なプログラムをインストールし、それによってアプリケーションを独立させ、次いで、そのアプリケーション用のプライベート名前空間に組み込むことができる。この方法はまた、パブリック名前空間からプライベート名前空間内の位置へのリンクを含むことができる。
【0050】
ブロック202で、インストールパッケージを受け取ることができ、ブロック204で、インストールアプリケーションは、実行を開始することができる。インストールアプリケーションの動作は、実施形態200の残る部分に影響を及ぼし得る。
【0051】
ブロック206で、インストールアプリケーションは、事前にインストールされたアプリケーションバーチャライザがあるかを検索することができる。ブロック208で、アプリケーションバーチャライザがインストールされていなかった場合、ブロック210で、アプリケーションバーチャライザをインストールする。
【0052】
ブロック212で、プライベート名前空間の新しいインスタンスを生成することができる。事前にインストールされたアプリケーションバーチャライザがあった場合、プライベート名前空間の新しいインスタンスによって、一アプリケーションバーチャライザが2つ以上の仮想アプリケーションを実行することが可能となり、それぞれがそれ自体のプライベート名前空間を有することになる。いくつかの実施形態では、アプリケーションバーチャライザの第2のインスタンスを実行して、第2の仮想アプリケーションを支持することができ、他の実施形態では、アプリケーションバーチャライザの単一のインスタンスによって、2つ以上の仮想化アプリケーションを、独立に、しかし同時に実行可能とすることができる。
【0053】
ブロック214で、マニフェスト内のリンクを処理することができる。マニフェストは、インストールアプリケーションによって処理すべき項目を含む、テキストファイルまたはXMLファイルなどの一覧でよい。ブロック214の各リンクについて、ブロック216で、リンクをパブリック名前空間内にインストールし、プライベート名前空間内のある位置にリンクさせることができる。リンクは、ポインタ、リファレンス、位置、またはパブリック名前空間からアクセスすることができ、プライベート名前空間へのアクセスを可能とする他の識別子でよい。
【0054】
使用の一シナリオとして、仮想アプリケーションを、特定のファイルの種類と関連付けることができるアプリケーションとして登録することが可能である。多くのオペレーティングシステムでは、特定のファイル名拡張子を備えたファイルを、そのファイルを開き、処理することができる特定のアプリケーションに関連付けることができる。例えば、あるレジストリ設定は、ファイル名が「.docx」で終わる各ファイルを、特定のワードプロセッシングアプリケーションと関連付けるものとして定義することができる。ワードプロセッシングアプリケーションが仮想アプリケーションである場合、レジストリ内のリンクによって、仮想アプリケーションのプライベート名前空間をポインティングすることができ、それによって仮想化ワードプロセッシングアプリケーションを実行することができる。
【0055】
ブロック216で確立されたいくつかのリンクによって、仮想アプリケーションを起動することができる。かかるリンクのいくつかは、パラメータ、または他の情報をそのアプリケーションに渡し、それによってアプリケーションがその情報を処理可能にすることができる。いくつかの例では、仮想アプリケーションは、コールに応答して値または他の情報を送り返すことができる。
【0056】
ある場合には、ブロック216で確立されたリンクは、プライベート名前空間内のファイル、または設定に記憶することができる構成情報をポインティングすることができる。かかる場合、リンクは、ファイルまたは設定をトラバースして(traverse)調べ、その位置に記憶することができる値または他の情報を送り返すことができる。
【0057】
ブロック214で、各リンクをインストールした後、アプリケーションを構成することができる。
【0058】
ブロック218で、アプリケーションがストリーミングアプリケーションである場合、ブロック220で、ストリーミングクライアントをインストールし、ブロック222で、構成することができる。ストリーミングクライアントは、ストリーミングサーバと通信して、アプリケーションが一部分を要求するときに、アプリケーションのその部分をフェッチすることができる。ブロック222における構成には、ストリーミングサーバのアドレスをインストールするステップ、およびストリーミングクライアントによって使用できる他のパラメータを構成するステップが含まれ得る。ブロック222における構成後、ブロック228で、インストールを完了することができる。
【0059】
ブロック218で、アプリケーションがストリーミングクライアントでない場合、ブロック224で、プライベート名前空間の全項目をインストールすることができ、ブロック226で、続いてアプリケーションをインストールすることができる。ブロック224および226の動作は、仮想アプリケーションの完全インストールを表すことができる。アプリケーションは完全にインストールすることができ、したがってこのアプリケーションは、あるデバイス上で、他のデバイスにアクセスすることなく実行することができる。ブロック226におけるインストール後、ブロック228で、インストールを完了することができる。
【0060】
図3は、プライベート名前空間へのリンクに応答する方法を示す実施形態300の流れ図である。実施形態300は、パブリック名前空間からのリンクがプライベート名前空間に入る際にアプリケーションバーチャライザによって実施することができるいくつかの動作の簡略化した例である。
【0061】
他の実施形態では、異なる順序付け、追加のステップまたはより少ないステップ、および異なる呼称または用語を用いて、同様の機能を果たすことができる。いくつかの実施形態では、様々な動作または動作の組を、他の動作と同期して、または非同期の形で並行して実施することができる。本明細書で選択した諸ステップは、いくつかの動作の原理を簡略化した形で例示するために選択したものである。
【0062】
実施形態300は、アプリケーションバーチャライザによって実施することができる工程のいくつかの例である。アプリケーションバーチャライザは、パブリック名前空間内で利用可能なリンクからプライベート名前空間へのリファレンスを監視することができる。アプリケーションバーチャライザは、パブリック名前空間からのリンクをインターセプトすることができ、また、プライベート名前空間への接続を可能とする。
【0063】
ブロック302で、パブリック名前空間内のリンクをリファレンスすることができる。リンクは、アプリケーションが、例えば、キーの値を求めるためにレジストリに照会を行う際にリファレンスすることができる。別の例では、ユーザが、スタートメニューにある、パブリック名前空間内からプライベート名前空間内の実行可能なファイルへのリンクをリファレンスするショートカットをクリックすることができる。
【0064】
さらに別の実施形態では、ユーザが、コマンドシェルを用い、パイプラインコマンドによって、一アプリケーションの出力を仮想アプリケーションに接続することができる。仮想アプリケーションは、プライベート名前空間内の別の位置にリンクすることができるパブリック名前空間内の名前を用いてリファレンスすることができる。
【0065】
ブロック304で、アプリケーションバーチャライザは、プライベート名前空間にリンクすることができるリファレンスを受け取ることができる。ブロック306で、リンクを求める要求を、プライベート名前空間の値を読み取ることによって扱うことができ、アプリケーションを起動しない場合、ブロック308で、その値を取得し、ブロック310で、その値を要求者に送り返すこと(return)ができる。
【0066】
ブロック306で、仮想アプリケーションを起動することによって要求を満たすことができる場合、ブロック312で、仮想環境内でアプリケーションを起動することができる。ブロック304で受け取ったリファレンスに、パラメータ、値、または他の情報が含まれていた場合、ブロック314で、そうした情報をアプリケーションに渡すことができる。
【0067】
いくつかのリファレンスによって、アプリケーションを起動し、値を受け取ることができる。例えば、オペレーティングシステムは、ファイルの種類の関連付けを用いて、開くべき特定のファイルの種類の選択をユーザから受け取ることができ、次いで、オペレーティングシステムは、パブリック名前空間内のファイルの種類の関連付けを探すことができる。ファイルの種類の関連付けは、プライベート名前空間にリンクさせることができ、その時点で、ブロック312で、アプリケーションバーチャライザがアプリケーションを起動し、ブロック314で、そのアプリケーションにファイル名を渡すことができる。その後、アプリケーションは、ファイルを開いて、動作を開始することができる。
【0068】
かかる例では、仮想アプリケーションによって生成されたユーザインターフェイスをユーザに提示することができ、ユーザは、そのアプリケーションと相互作用し始めることができる。かかる例では、ブロック316で、アプリケーションから応答がないことが予測され得、仮想アプリケーションは、受け取った値を用いて実行することができる。
【0069】
別の例では、仮想アプリケーションは、パイプラインコマンドを用いてコマンドシェル内においてリファレンスすることができる。パイプラインコマンドは、一アプリケーションの出力を別のアプリケーションの入力に誘導することができる。時には、2つ、3つ、またはより多くのアプリケーションをパイプラインで一体にすることができる。かかる例では、仮想アプリケーションは、一アプリケーションから入力を受け取り、別のアプリケーションによって消化することができる出力で応答することができる。かかる例では、ブロック316で、応答があることが予測され、ブロック320で、アプリケーションバーチャライザは、応答値を用いて応答することができる。
【0070】
主題の前述の説明は、例示および説明の目的で提示してきたものである。主題を開示の厳密な形で網羅するものでも、またはそのように限定するものでもなく、上記の教示に照らして、他の改変形態、および変形形態が考えられ得る。諸実施形態は、本発明の原理、およびその実際的な応用例を最も良く説明し、それによって、他の当業者が、企図される特定の使用に適した様々な実施形態、および様々な改変形態において本発明を最も良く利用することができるようにするために選択し、説明したものである。添付の特許請求の範囲は、従来技術によって限定される場合を除き、他の代替的実施形態も含むものとして解釈されるものである。
図1
図2
図3