(57)【要約】      （修正有）【課題】ソフトウェア製品の出荷用可視化ソフトウェア（ｖｉｓｕａｌｉｚａｔｉｏｎ  ｓｏｆｔｗａｒｅ）の使用方法の様々な実施態様を開示する。【解決手段】仮想化ソフトウェア（１２４）上で実行する仮想マシン（１２２）のオペレーティング環境（１１２）は、製品アプリケーション（１１８）（例えば、出荷対象のソフトウェア）による必要に応じ、ゲストオペレーティングシステム（１１４）と必須アプリケーション（１１６）により構成することができる。次に、ゲストオペレーティングシステム（１１４）上に製品アプリケーション（１１８）をインストールすることができ、製品アプリケーション（１１８）を含み仮想マシン（１２２）全体のイメージ（１２０）を捕捉することができる。次に、複数のエンドユーザ装置（１３６Ａ）、（１３６Ｂ）にイメージ（１２０）を提供することにより製品アプリケーション（１１８）を配備（例えば出荷）することができる。【選択図】図１
2008090840.tif 000002
【特許請求の範囲】
【請求項１】
仮想化ソフトウェア（１２４）上で実行する仮想マシン（１２２）のオペレーティング環境（１１２）を構成する工程であって、該仮想マシン（１２２）はゲストオペレーティングシステム（１１４）と、製品アプリケーション（１１８）に関連した必須アプリケーション（１１６）とを含む、工程と、
前記ゲストオペレーティングシステム（１１４）上に前記製品アプリケーション（１１８）をインストールする工程と、
前記製品アプリケーション（１１８）を含み前記仮想マシン（１２２）のイメージ（１２０）を捕捉する工程と、
前記仮想マシン（１２２）（該仮想マシン（１２２）の前記オペレーティング環境（１１２）の前記製品アプリケーション（１１８）を含む）をその上に実装するために、複数のエンドユーザ装置（１３６Ａ、１３６Ｂ）に前記イメージ（１２０）を提供することにより、前記製品アプリケーション（１１８）を配備する工程と、を含む方法。
【請求項２】
前記構成する工程は、
前記オペレーティング環境（１１２）上に前記ゲストオペレーティングシステム（１１４）をインストールする工程を含む、請求項１に記載の方法。
【請求項３】
前記構成する工程は、
前記仮想マシン（１２２）上に前記製品アプリケーション（１１８）をインストールする、および／または動作させるために、前記必須アプリケーション（１１６）を必要とするということを判断する工程と、
前記ゲストオペレーティングシステム（１１４）上に前記必須アプリケーション（１１６）をインストールする工程と、を含む、請求項１に記載の方法。
【請求項４】
前記構成する工程は、
前記製品アプリケーション（１１８）が前記エンドユーザ装置（１３６Ａ、１３６Ｂ）のそれぞれのハードウェアコンポーネントとやりとりできるようにする前記オペレーティング環境（１１２）を構成する工程を含む、請求項１に記載の方法。
【請求項５】
前記インストールする工程は、
前記ホスト装置（１２６）上で実行する前記仮想マシン（１２２）の前記ゲストオペレーティングシステム（１１４）上に前記製品アプリケーション（１１８）を構成する工程を含む、請求項１に記載の方法。
【請求項６】
前記インストールする工程は、
前記ホスト装置（１２６）上で実行する前記仮想マシン（１２２）のゲストオペレーティングシステム（１１４）上に前記製品アプリケーション（１１８）をインストールする工程と、
前記製品アプリケーション（１１８）を初期化する工程と、を含む、請求項１に記載の方法。
【請求項７】
前記捕捉する工程は、
前記仮想マシン（１２２）の前記ゲストオペレーティングシステム（１１４）上で前記製品アプリケーション（１１８）を初期化する工程と、
前記初期化された製品アプリケーション（１１８）を含み前記仮想マシン（１２２）の前記イメージ（１２０）を捕捉する工程と、を含む、請求項１に記載の方法。
【請求項８】
前記捕捉する工程は、
前記製品アプリケーション（１１８）の実行時点を決定する工程と、
前記実行時点に達するまで前記製品アプリケーション（１１８）を実行する工程と、
前記エンドユーザ装置（１３６Ａ、１３６Ｂ）において該実行時点から実行するために、前記実行時点までに実行された前記製品アプリケーション（１１８）を含み前記仮想マシン（１２２）の前記イメージ（１２０）を捕捉する工程と、を含む、請求項１に記載の方法。
【請求項９】
前記捕捉する工程は、
前記エンドユーザ装置（１３６Ａ、１３６Ｂ）が前記イメージ（１２０）の少なくとも一部を修正するのを防止するように構成されたシール（１３０）を前記イメージ（１２０）に適用する工程を含む、請求項１に記載の方法。
【請求項１０】
前記捕捉する工程は、
前記イメージ（１２０）に対する有効期限（１２８）を決定する工程であって、前記有効期限（１２８）は、該有効期限（１２８）に達すると前記仮想マシン（１２２）の前記オペレーティング環境（１１２）上の前記製品アプリケーション（１１８）の動作を少なくとも部分的に防止するように構成された、工程と、
前記イメージ（１２０）に前記有効期限（１２８）を適用する工程と、を含む、請求項１に記載の方法。
【請求項１１】
前記配備する工程は、
前記仮想化ソフトウェア（１２４）のローカルバージョンがインストールされる前記複数のエンドユーザ装置（１３６Ａ、１３６Ｂ）に前記イメージ（１２０）を提供する工程であって、前記複数のエンドユーザ装置（１３６Ａ、１３６Ｂ）は前記イメージ（１２０）を受信および／または検索するように構成される、工程を含む、請求項１に記載の方法。
【請求項１２】
前記配備する工程は、
前記エンドユーザ装置（１３６Ａ、１３６Ｂ）によりアクセス可能なサービスとして前記ホスト装置（１２６）上に前記イメージ（１２０）を提供する工程を含む、請求項１に記載の方法。
【請求項１３】
前記配備する工程は、
前記エンドユーザ装置（１３６Ａ、１３６Ｂ）に前記イメージ（１２０）を提供する工程であって、前記エンドユーザ装置（１３６Ａ、１３６Ｂ）上の仮想化ソフトウェア（１２４）は、前記オペレーティング環境（１１２）において前記製品アプリケーション（１１８）を動作させることを含み前記仮想マシン（１２２）を実施するように構成された、工程と、を含む、請求項１に記載の方法。
【請求項１４】
前記配備する工程は、
前記エンドユーザ装置（１３６Ａ、１３６Ｂ）に前記イメージ（１２０）を提供する工程であって、前記各エンドユーザ装置（１３６Ａ、１３６Ｂ）は前記仮想化ソフトウェア（１２４）のローカルバージョンを実行するために割当てられた資源を含む、工程を含む、請求項１に記載の方法。
【請求項１５】
仮想化ソフトウェア（１２４）上で実行するとともに、製品アプリケーション（１１８）に関連したゲストオペレーティングシステム（１１４）と必須アプリケーション（１１６）とを含む仮想マシン（１２２）のオペレーティング環境（１１２）を構成し、
前記ゲストオペレーティングシステム（１１４）上に前記製品アプリケーション（１１８）をインストールし、
前記製品アプリケーション（１１８）を含み前記仮想マシン（１２２）のイメージ（１２０）を捕捉し、
前記仮想マシン（１２２）（該仮想マシン（１２２）の前記オペレーティング環境（１１２）における前記製品アプリケーション（１１８）を含む）をその上に実装するために、複数のエンドユーザ装置（１３６Ａ、１３６Ｂ）にイメージ（１２０）を配送することにより、前記製品アプリケーション（１１８）を配備する、ように構成されたプロセッサを含む装置。
【請求項１６】
顧客用の製品アプリケーション（１１８）をインストールする方法であって、
前記顧客（１３４）のローカル装置（１３６Ａ、１３６Ｂ）用の前記製品アプリケーション（１１８）をインストールするために該顧客（１３４）からの注文１３８を判断する工程と、
前記注文１３８に基づいて、ホスト装置（１２６）の仮想化ソフトウェア（１２４）上で実行する仮想マシン（１２２）のオペレーティング環境（１１２）を構成する工程と、
前記製品アプリケーション（１１８）に基づいて、前記オペレーティング環境（１１２）に含まれるゲストオペレーティングシステム（１１４）を決定する工程と、
前記製品アプリケーション（１１８）に関連する必須アプリケーション（１１６）を含むために前記ゲストオペレーティングシステム（１１４）を構成する工程と、
前記ゲストオペレーティングシステム（１１４）上に前記製品アプリケーション（１１８）をインストールする工程と、
前記ホスト装置（１２６）の前記仮想マシン（１２２）のイメージ（１２０）を捕捉する工程と、
前記仮想化ソフトウェア（１２４）にアクセスするために前記顧客（１３４）に指示（１３２）を与える工程と、
前記仮想マシン（１２２）が実行できるように前記顧客（１３４）に前記イメージ（１２０）を提供する工程と、を含む方法。
【請求項１７】
注文を決定する前記工程は、前記顧客（１３４）の複数のコンピュータ（１３６Ａ、１３６Ｂ）上に前記製品アプリケーション（１１８）をインストールするために前記注文（１３８）を受信する工程を含む、請求項１６に記載の方法。
【請求項１８】
前記ゲストオペレーティングシステム（１１４）を構成する工程は、
前記製品アプリケーション（１１８）が前記ゲストオペレーティングシステム（１１４）上に存在する必須アプリケーション（１１６）から恩恵を受けるということを判断する工程と、
前記ゲストオペレーティングシステム（１１４）に前記必須アプリケーション（１１６）を提供する工程と、を含む、請求項１６に記載の方法。
【請求項１９】
前記イメージ（１２０）を提供する工程は、前記顧客（１３４）のローカル装置（１３６Ａ）上で実行中の前記仮想化ソフトウェア（１２４）のローカルバージョン上で実行するための前記イメージ（１２０）を提供する工程を含む、請求項１６に記載の方法。
【請求項２０】
前記イメージ（１２０）を提供する工程は、前記顧客（１３４）によりアクセス可能なサービスとしてホスト装置（１２６）上に前記イメージ（１２０）を提供する工程を含む、請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、ソフトウェア製品の出荷用仮想化ソフトウェアの使用方法に関する。
【背景技術】
【０００２】
ソフトウェアアプリケーションが複雑になるにつれ、複雑なソフトウェアアプリケーションの配備（そのインストールを含む）もまたさらに複雑で問題があり、および／または時間がかかるようになるであろう。その結果、顧客が複雑なアプリケーションをインストールするのを手助けするためにアプリケーションベンダーはますます多くの時間と金を費やすかもしれない。さらに、限られたコンピューティング資源を有する移動体装置のユーザが複雑なアプリケーションをインストールし／実行しようとする（アプリケーション初期設定シーケンスを実行することを含む）際などは、複雑なアプリケーションを動作させたい顧客は比較的込み入っていった初期化シーケンスを必要とするであろう。
【０００３】
さらに、顧客が、複雑なアプリケーションのインストールを必要とする多くのプラットフォーム、サイト、および／または従業員を有し得る企業体である場合などは、ソフトウェアアプリケーション群が配備される異機種混合の状況（ｈｅｔｅｒｏｇｅｎｅｏｕｓ  ｌａｎｄｓｃａｐｅｓ）が存在し得る。このような異機種混合の状況は、ソフトウェア提供者が事前に知るのが困難と考えられる多様なハードウェアおよびソフトウェア環境を有し得る。例えば、特定の顧客は、複雑なアプリケーションをインストールするのに必要なハードウェア／ソフトウェア要件を有するかもしれないし、あるいは有さないかもしれない。たとえインストールが成功しても、ソフトウェア提供者はインストールされたアプリケーションを維持し、および／またはアップグレードする際、苦労するであろう。
【発明の開示】
【課題を解決するための手段】
【０００４】
ソフトウェア製品の出荷用可視化ソフトウェア（ｖｉｓｕａｌｉｚａｔｉｏｎ  ｓｏｆｔｗａｒｅ）の使用方法の様々な実施態様を開示する。例示的実施態様では、仮想化ソフトウェア（ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ｓｏｆｔｗａｒｅ）上で実行する仮想マシンのオペレーティング環境は、製品アプリケーション（例えば、出荷対象のソフトウェア）の必要に応じ、ゲストオペレーティングシステムと必須アプリケーションにより構成することができる。次に、ゲストオペレーティングシステム上に製品アプリケーションをインストールすることができ、製品アプリケーションを含む仮想マシン全体のイメージを捕捉することができる。次に、仮想マシンのオペレーティング環境内に製品アプリケーションを含む仮想マシンをその上に実装することができる複数のエンドユーザ装置に該イメージを提供することにより、製品アプリケーションを配備（例えば出荷）することができる。
【０００５】
別の例示的実施態様では本装置はプロセッサを含んでよい。該プロセッサは、ゲストオペレーティングシステムと製品アプリケーションに関連した必須アプリケーションとにより、仮想化ソフトウェア上で実行する仮想マシンのオペレーティング環境を構成することができる。次に、該プロセッサは、製品アプリケーションをゲストオペレーティングシステム上にインストールして、製品アプリケーションを含む仮想マシンのイメージを捕捉することができる。次に、仮想マシンのオペレーティング環境内の製品アプリケーションをその上に実装することができる複数のエンドユーザ装置にイメージを配布することにより、製品アプリケーションを配備することができる。
【０００６】
別の例示的実施態様では、顧客からの注文が、製品アプリケーションは顧客のローカル装置にインストールされると規定していることをまず判断することにより、顧客に対し製品アプリケーションをインストールすることができる。第２に、該注文に基づいて、ホスト装置上で実行する仮想マシンのオペレーティング環境を構成することができる。第３に、製品アプリケーションに基づいて、オペレーティング環境内に含むべきゲストオペレーティングシステムを決定することができる。第４に、必須アプリケーションによりゲストオペレーティングシステムを構成することができる。第５に、ゲストオペレーティングシステム上に製品アプリケーションをインストールすることができる。第６に、ホスト装置の仮想マシンのイメージを捕捉することができる。最後に、仮想化ソフトウェアと仮想マシンを実行するためのイメージとにどのようにアクセスするかについての両方の指示を顧客に与えることができる。
【０００７】
一つまたは複数の実施態様の詳細は、添付図面と以下の明細書に説明される。他の特徴は本明細書と添付図面と特許請求の範囲から明らかになる。
【発明を実施するための最良の形態】
【０００８】
図１は、ソフトウェア製品の出荷用仮想化ソフトウェアを使用するための例示的システム１００のブロック図である。図１の例では、システム１００は、ソフトウェア提供者にとって効率的でしかも顧客または他の受取人にとって容易で直観的でかつ信頼できるやり方で、ソフトウェア提供者が顧客または他のユーザにソフトウェアをインストール、配備、配布、または出荷できるようにする。例えば、ソフトウェア提供者と受取人の両者に同じ（または互換性のある）仮想化ソフトウェアの使用を要求することにより、当該取引の両者において最小努力でしかも広範囲な種類のプラットフォームにわたってソフトウェアインストールを行うことができる。さらに、最初のインストール後、ソフトウェアの操作、修理、アップグレードもまた効率的で信頼できるやり方で実行することができる。
【０００９】
システム１００は製品アプリケーション配布システム１０２を含む。追加または代替の機能だけでなく今述べた機能の一部またはすべてを提供するために製品アプリケーション配布システム１０２を使用することができる。例えば、顧客または他の受取人が同じかまたは類似の仮想化ソフトウェアを実行しているとの予想のもとに、製品アプリケーション配布システム１０２はソフトウェア提供者により実行中の仮想化ソフトウェア１２４の環境において動作することができる。
【００１０】
こうして、製品アプリケーション配布システム１０２を使用してソフトウェアをソフトウェア提供者側にインストールすることができ、つぎに該ソフトウェアを受取人側に提供することができ、すべてが同じかまたは類似した仮想化ソフトウェアの環境となる。上記のように、システム１００と互換性があり、かつ製品アプリケーション配布システム１０２を実装するために使用可能なこのような仮想化ソフトウェアは多くの種類が存在する。さらに、例えば製品アプリケーション配布システム１０２はローカルにインストールされ実行されるソフトウェアを表してもよいし、あるいは例えばインターネットまたは他のネットワークを介しリモートで（全部または一部分が）アクセスされるソフトウェアを表してもよい。
【００１１】
例えば、ソフトウェア提供者側のこのような仮想化ソフトウェアはワークステーション仮想化ソフトウェア１２４を含んでもよく、このワークステーション仮想化ソフトウェア１２４は、本来のソフトウェア／ハードウェアの環境において、外来／ゲストソフトウェアおよび／またはハードウェアのエミュレーションを提供するように構成されたアプリケーションまたは製品一式を表してよい。図１では、例えばワークステーション仮想化ソフトウェア１２４は、ホスト装置１２６の環境におけるソフトウェアおよび／またはハードウェアのエミュレーションを表す。ホスト装置１２６は、例えばデスクトップコンピュータ、ラップトップコンピュータ、またはサーバーなど、ワークステーション仮想化ソフトウェア２２４を支援するように動作可能な任意の装置を含むことができ、実質的に任意の業界標準ハードウェアプラットフォームを実装することができる。
【００１２】
ワークステーション仮想化ソフトウェア１２４は、仮想マシン１２２を設計し実装するために使用することができる。仮想マシン１２２は、個別の物理的コンピュータの所望の実質的に任意の様相を表現しエミュレートすることができ、あたかも自身のプロセッサ、メモリ、入力／出力、周辺装置を使用するかのように動作し、従ってユーザの経験はこのような個別のコンピュータをあたかも使用するのと同じになる。例えばホスト装置１２６は、一定量の処理パワーおよびメモリならびに一定数／一定種類の入力／出力および周辺装置（例えばビデオアダプタ、ネットワークアダプタ、ハードディスクアダプタ、および／またはＵＳＢ、シリアルまたはパラレル装置用のドライバ）を有してよい。これらの特徴のいくつかのサブセットはワークステーション仮想化ソフトウェア１２４により仮想マシン１２２に割り当てられてもよく、従って仮想マシン１２２は割当てられた特徴のサブセットを有する異なるコンピュータとして動作することができる。こうして製品アプリケーション配布システム１０２はホスト装置１２６とは独立して（本明細書の目的のために）仮想マシン１２２上で実行することができる。
【００１３】
ワークステーション仮想化ソフトウェア１２４は、複数の仮想マシン１２２の生成と動作を同時に許容する。例示的なワークステーション仮想化ソフトウェア１２４は、ＶＭｗａｒｅ  Ｗｏｒｋｓｔａｔｉｏｎ（商標）または少なくとも上記機能のいくつかを実行するように動作可能な他の任意の仮想化ソフトウェアでよい。上記のように、ホスト装置１２６はワークステーション仮想化ソフトウェア１２４を支援するために動作可能な実質的に任意の装置（仮想マシン１２２とそのインストールされたコンポーネントのすべてを含む）を含むことができる。
【００１４】
従って、ワークステーション仮想化ソフトウェア１２４の仮想マシン１２２上で実行する製品アプリケーション配布システム１０２は、製品アプリケーション１１８を仮想マシン１２２上にインストールするために使用することができる。上記のように、製品アプリケーション１１８は、顧客または他の受取人への配備の準備ができた、ソフトウェア提供者により提供されるソフトウェアを表すかあるいは含むことができる。ソフトウェア開発者は、例えば製品アプリケーション１１８を既にコード化、デバッグ、試験しておくことができ、そして図１では顧客１３４により代表される一人または複数の顧客に製品アプリケーション１１８（または製品アプリケーション１１８の最新版）を配備する準備ができている。
【００１５】
例えば、顧客１３４がワークステーション仮想化ソフトウェア１２４と同じかまたは類似した仮想化ソフトウェアを実行すると予想することにより、ソフトウェア提供者は、例えば最も効率的で効果的と考えられる任意のやり方で製品アプリケーション１１８を仮想マシン１２２上に容易に直接インストールすることができる。次に、以下にさらに詳細に説明されるように、製品アプリケーション配布システム１０２は、顧客１３４への出荷と、顧客側にインストールされると予想される仮想化ソフトウェア上での以後の実行とのために、仮想マシン１２２のイメージ１２０を捕捉するために使用することができる。このようにして、顧客１３４は当該のインストールまたは環境設定を実行することなく仮想マシン１２２（製品アプリケーション１１８を含む）を容易に実行することができる。従って、顧客１３４の経験を改善することができ、製品アプリケーション１１８を顧客側でインストールする際のエラーの機会を低減またはなくすことができる。
【００１６】
図１の例では、製品アプリケーション配布システム１０２は、環境設定ロジック１０４、インストールロジック１０６、捕捉ロジック（ｃａｐｔｕｒｅ  ｌｏｇｉｃ）１０８、配備ロジック（ｄｅｐｌｏｙｍｅｎｔ  ｌｏｇｉｃ）１１０を含むことができる。製品アプリケーション配布システム１０２およびロジックコンポーネント１０４〜１１０は以下に説明するやり方で構築され使用される例示的なコンポーネントを表す。但し、このような例は限定するものではなく、製品アプリケーション配布システム１０２、ロジックコンポーネント１０４〜１１０、他のコンポーネント（図示せず）の特徴と機能は、重複してもよく、および／またはその間で共有されてもよく、および／または図１に図示されるものとは別のところに配置されてもよいことを理解されたい。例えば製品アプリケーション配布システム１０２またはそのコンポーネント１０４〜１１０は、オペレーティング環境１１２および／またはゲストオペレーティングシステム１１４において実行することができる。さらに、製品アプリケーション配布システム１０２および／またはロジックコンポーネント１０４〜１１０の様々な様相は人間のユーザにより実行または指示されてもよい。
【００１７】
図１の例では、環境設定ロジック１０４は、例えば仮想マシン１２２に関連したオペレーティング環境１１２を構成するために使用可能な製品アプリケーション配布システム１０２の一つまたは複数のコンポーネントを表すことができる。オペレーティング環境１１２とは、通常、当該プログラムが仮想マシン１２２上で実行される環境をいう。仮想マシン１２２の上記説明からわかるように、この環境はソフトウェアおよびハードウェア設定／割り当て（例えば、オペレーティング環境１１２とともにＵＳＢポートまたは他の入出力ポートを含むべきかどうか）の両方を含むことができる。
【００１８】
別の例として、オペレーティング環境１１２は、ゲストオペレーティングシステム１１４が構成またはインストールされる環境を提供することができる。例えば、環境設定ロジック１０４は、恐らく製品アプリケーション１１８の以後のインストールに備え、オペレーティング環境１１２上にゲストオペレーティングシステム１１４をインストールすることができる。ゲストオペレーティングシステム１１４は、ホスト装置１２６上で実行するオペレーティングシステムとは異なってもよいことを理解されたい。例えば、ホスト装置１２６がＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（商標）を動作させる一方で、ゲストオペレーティングシステム１１４はＬｉｎｕｘ（商標）であってよい。
【００１９】
ゲストオペレーティングシステム１１４は、例えば仮想マシン１２２のハードウェアおよびソフトウェア資源を管理することを含みオペレーティングシステムの通常の任務を実行することができる。より具体的には、例えばゲストオペレーティングシステム１１４はメモリを制御し割り当て、命令の処理を優先付け、入出力デバイスを制御し、ネットワーク接続を手助けし、ファイルを管理することができる。例えばゲストオペレーティングシステムは、Ｗｉｎｄｏｗｓ（商標）、Ｌｉｎｕｘ（商標）、ＭＡＣ  ＯＳＸ（商標）、または製品アプリケーション１１８を動作させるために仮想マシン１２２上で構成され得る他の任意のゲストオペレーティングシステムであってよい。
【００２０】
環境設定ロジック１０４は、またゲストオペレーティングシステム１１４上にインストールされる必須アプリケーション１１６を、製品アプリケーション１１８が必要とするかどうかを判断することができる。次に、上記必要な必須アプリケーション１１６をインストールするために環境設定ロジック１０４を使用することができる。例えば、環境設定ロジック１０４は、ゲストオペレーティングシステム１１４がＷｉｎｄｏｗｓ  ＸＰ（商標）でなければならないということと、製品アプリケーション１１８がＷｉｎｄｏｗｓ  ＸＰ（商標）環境内にＪａｖａ（商標）開発キット２．０（Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ  ２．０）のインストールまたは可用性とを同時に必要とするということとを判断することができる。従って、ゲストオペレーティングシステム１１４上にこれらのコンポーネントをインストールするために環境設定ロジック１０４を使用することができる。
【００２１】
必須アプリケーション１１６は、製品アプリケーション１１８がゲストオペレーティングシステム１１４上にインストールされるおよび／またはその上で実行されるために必要とされるまたは推奨され得る任意のソフトウェアプログラム、アプリケーション、プラグイン、またはコードを含むことができる。必須アプリケーション１１６は、ゲストオペレーティングシステム１１４および／または製品アプリケーションにより使用されるユーティリティ、ライブラリ、データベース、および／または機能を提供することができる。例えば必須アプリケーション１１６は製品アプリケーション１１８によりアクセスされ得るデータベースまたはデータベース製品アプリケーションであってよく、従って正しく機能するために必須アプリケーション１１６は製品アプリケーション１１８にインストールされなければならない。別の例では、必須アプリケーション１１６は、例えばコンパイラ、ソフトウェアライブラリ、ドキュメントジェネレータ、デバッガを含むと考えられる今述べたＪａｖａ（商標）開発キット例のようなツール一式を含んでよい。
【００２２】
ソフトウェア提供者がオペレーティング環境１１２および関連するコンポーネントを直接インストール／構成することができるようにすることにより、通常の多くのインストール問題を回避することができる。例えば顧客が製品アプリケーション１１８をインストールする責任がある場合、顧客によっては関連する必須アプリケーション１１６をインストールしないかもしれない。従って製品アプリケーション１１８は機能しない場合があり顧客に対しフラストレーションまたは他の問題をもたらす。さらに、ソフトウェア提供者がインストール問題の原因として顧客側における必須アプリケーション１１６の欠如を特定することは難しい場合があり、従ってソフトウェア提供者がその問題を解決することは難しい。
【００２３】
しかしながら、システム１００では、顧客１３４は利用可能な可視化ソフトウェア１２４のローカルバージョンを単に持つだけでよく、受信イメージ１２０を使用することにより仮想マシン１２２（そして、従って製品アプリケーション１１８）にアクセスしそれを動作させることができる。従って、顧客１３４は製品アプリケーション１１８をローカル環境上にインストールする責任と必要性を免れ、より迅速に簡単に直接製品アプリケーション１１８にアクセスし使用することができる。
【００２４】
オペレーティング環境１１２を構成する（ゲストオペレーティングシステム１１４と必要な必須アプリケーション１１６すべてをインストールすることを含む）ために環境設定ロジック１０４が使用された後、製品アプリケーション配布システム１０２のインストールロジック１０６を使用してゲストオペレーティングシステム１１４上に製品アプリケーション１１８をインストールすることができる。インストールロジック１０６は、ゲストオペレーティングシステム１１４上に製品アプリケーション１１８をインストールし構成しインスタンス化するために使用可能な製品アプリケーション配布システム１０２のコンポーネントであってよい。
【００２５】
例えば、ゲストオペレーティングシステム１１４と必須アプリケーション１１６を特定し取得しインストールすることに対する上述の問題に加え、少なくとも一部の顧客または他の受取人の能力または願望を越えるであろうネットワーク環境設定または他の技術知識を必要とする一連の工程を伴う複雑なインストール手順に、製品アプリケーション１１８自体が関係するということが発生し得る。従って、ソフトウェア提供者は、ゲストオペレーティングシステム１１４上に製品アプリケーション１１８をインストールする（必要とされるいかなる環境設定、例えばネットワーク環境設定も実行することを含む）ためにインストールロジック１０６を使用することができる。また、こうして、顧客１３４がこれらの工程を実行する必要性を低減またはなくすことができる。
【００２６】
インストールロジック１０６は、また例えば製品アプリケーション１１８がインストールされた後、製品アプリケーション１１８をインスタンス化することができる。製品アプリケーション１１８のインスタンス化は、例えば製品アプリケーション１１８を開始することと、製品アプリケーション１１８が起動、ドライバのロード、ライブラリとの関連付け、データベースへのデータ投入、および他の開始手順を実行できるようにすることとを含んでよい。インストールロジック１０６は例えば顧客１３４にイメージ１２０を配信するに先立って製品アプリケーション１１８をインスタンス化することができ、従って顧客１３４はイメージ１２０を受信し仮想マシン１２２にアクセスした後に再度製品アプリケーション１１８を起動する必要がない。
【００２７】
インストールロジック１０６がオペレーティング環境１１２のゲストオペレーティングシステム１１４上に製品アプリケーション１１８をインストールした後、捕捉ロジック１０８は仮想マシン１２２のイメージ１２０を捕捉することができる。捕捉ロジック１０８は、顧客１３４への配備のための仮想マシン１２２のイメージ１２０を捕捉するために使用可能な製品アプリケーション配布システム１０２のコンポーネントであってよい。捕捉ロジック１０８は例えばイメージ１２０内に仮想マシン１２２全体を格納することができる。すなわち、仮想マシン１２２の格納にともなって、捕捉ロジックは、またオペレーティング環境１１２、ゲストオペレーティングシステム１１４、一つまたは複数の必須アプリケーション１１６、およびイメージ１２０上にインストールされ、構成され、インスタンス化される製品アプリケーション１１８を格納することができる。
【００２８】
イメージ１２０は、ファイル、複数のファイル、フォルダ、コード、あるいは仮想マシン１２２（すべてのコンポーネントを含む）を現状のまま保存するために使用可能な他の任意の格納方法を含んでよい。次に、以前に保存された状態から仮想マシン１２２の動作を再開するためにイメージ１２０を使用することができる。
【００２９】
従って、イメージ１２０は、また例えば部分的に実行またはインスタンス化された状態で製品アプリケーション１１８を含むことができる。例えば環境設定ロジック１０４は製品アプリケーション１１８をインスタンス化することができ、捕捉ロジック１０８はインスタンス化された製品アプリケーション１１８を含むイメージ１２０を捕捉することができる。次に、顧客は、該インスタンス化された状態からオペレーティング環境１１２において製品アプリケーション１１８を動作させるためにイメージ１２０を使用することができる。
【００３０】
別の例示的実施形態では、顧客１３４は製品アプリケーション１１８の動作を開始することができ、次にイメージ１２０内において仮想マシン１２２のスナップショット（現状で部分的に実行された製品アプリケーション１１８を含む）を捕捉することができる。次に、顧客は、この以前に実行された状態から仮想マシン１２２上で製品アプリケーション１１８の動作を再開するために、イメージ１２０を使用することができる。
【００３１】
次に、オペレーティング環境１１２においてインストールされインスタンス化された製品アプリケーション１１８を含む仮想マシン１２２のイメージ１２０を捕捉した後、捕捉ロジック１０８は、イメージ１２０の少なくとも一部に有効期限１２８および／またはシール１３０を適用することができる。有効期限１２８はイメージ１２０が期限切れになる日付であってよい。有効期限１２８に達すると製品アプリケーション１１８の動作を変更することができる。例えば有効期限１２８は２００７年５月５日であり得る。２００７年５月５日の有効期限１２８がイメージ１２０に適用されると、２００７年５月５日当日または２００７年５月５日の後、製品アプリケーション１１８（または全仮想マシン１２２）はもはや動作できない。別の例示的実施形態では、有効期限１２８は製品アプリケーション１１８の最初の実行から３０日後となるように構成することができる。このとき例えば３０日経過後、製品アプリケーション１１８の規定されたいくつかの特徴はもはや働かなくなり、一方製品アプリケーション１１８は（該規定された特徴を除いて）依然として動作可能である。
【００３２】
次に、捕捉ロジック１０８は、イメージ１２０の少なくとも一部にシール１３０を適用すべきかどうかを判断することができる。シール１３０は、顧客またはユーザがイメージ１２０の一つまたは複数の特徴にアクセスする、および／またはそれを修正するのを防止するように動作可能なセキュリティ装置であってよい。例えば、イメージ１２０に適用されると、シール１３０は、ユーザ（例えば顧客１３４）がイメージ１２０内に含まれる仮想マシン１２２の任意の部分を手動で修正するのを防止するように構成されてよく、例えば顧客１３４がゲストオペレーティングシステム１１４上に新しいアプリケーションをインストールするかまたは製品アプリケーション１１８を除去するのを防止してもよい。別の例示的実施形態では、イメージ１２０に適用されると、シール１３０は、顧客が必須アプリケーション１１６と製品アプリケーション１１８を除去することのみ防止することができるが、ユーザがゲストオペレーティングシステム１１４上に他のプログラムをインストールすることは許容してもよい。
【００３３】
次に、捕捉ロジック１０８がイメージ１２０を捕捉した後、例えば顧客１３４にイメージ１２０と指示を配布することにより製品アプリケーション１１８を配備するために、配備ロジック１１０を使用することができる。配備ロジック１１０は、顧客１３４の複数のエンドユーザ装置１３６にイメージ１２０と指示１３２を提供することができる製品アプリケーション配布システム１０２のコンポーネントであってよい。
【００３４】
例えば、エンドユーザ装置１３６Ａまたは１３６Ｂがイメージ１２０を検索し装置にダウンロードできるように、配備ロジック１１０はイメージ１２０をホスト装置１２６上に設けてもよい。別の例示的実施形態では、配備ロジック１１０は、顧客１３４のエンドユーザ装置１３６Ａ、１３６Ｂにイメージ１２０を直接送信することができる。別の実施形態では（以下、図３に関し詳細に検討される）、配備ロジック１１０は、顧客１３４のエンドユーザ装置がホストサーバー上でアプリケーション１１８を動作させることができる（例えばイメージ１２０から）サービスを提供することができる。
【００３５】
顧客１３４としては、製品アプリケーション１１８を動作させようとする任意の当事者が挙げられる。例えば顧客１３４としては、製品アプリケーション１１８の代金を支払った消費者が挙げられる。但し、顧客１３４は、製品アプリケーション１１８に対し金銭補償を与えたものに限定されると解釈すべきでない。例えば製品アプリケーション１１８は無料の販売促進キャンペーンの一部として配備されてもよいし、あるいは大学または他の学術的な設定において配備されてもよい。顧客１３４は、また企業または今述べたように大学などの大きな団体を表してよく、従って製品アプリケーション１１８は数十または何百以上の個々のユーザ（例えば、企業の個々の従業員）に提供される必要があると考えられる。
【００３６】
例示的実施形態では、顧客１３４は注文１３８を出してもよいし、あるいは製品アプリケーション１１８を要求してもよい。例えば、ソフトウェア提供者は製品アプリケーション１１８を新しいアプリケーションとして開発することができる。次に、例えば顧客１３４は、製品アプリケーション１１８に対する注文１３８を出すことができる。次に、ソフトウェア提供者はイメージ１２０を取得して顧客１３４に提供することができる。
【００３７】
さらに、あるいはその代わり、顧客１３４は、また製品アプリケーション１１８に対しいかなるタイプの明示的な要求も出すことなくイメージ１２０を一方的に提供されてもよい。例えば、顧客は、既に製品アプリケーション１１８の最初のバージョンを動作させることができる。次に、例えばソフトウェア提供者は、最初のバージョンを置換するために製品アプリケーション１１８の第２バージョン（例えばアップグレード）を開発することができる。次に、ソフトウェア提供者は製品アプリケーション１１８の第２のバージョンを含むイメージ１２０を顧客１３４に提供することができる。
【００３８】
注文１３８は、製品アプリケーション１１８を受信し動作させるための顧客１３４からの要求を含んでよい。注文１３８は、契約、ライセンス、販売、購入、または製品アプリケーション１１８が顧客１３４に提供されてよいという他の合意を含んでよい。例えば、複数の顧客１３４のエンドユーザ装置１３６Ａ、１３６Ｂ上で製品アプリケーション１１８を受信するために、顧客１３４は製品ベンダーに注文１３８を出すことができる。次に、注文１３８に基づいてイメージ１２０が顧客１３４に提供される。別の例示的実施形態では、顧客１３４は、既にそのエンドユーザ装置上で製品アプリケーション１１８のあるバージョンを動作させることができるが、注文１３８は、製品アプリケーション１１８に対するすべての更新および／またはパッチが利用可能になったとき、それらを顧客１３４に提供してよいという条項を含むことができる。次に、注文１３８に基づいてイメージ１２０を顧客１３４に提供することができる。
【００３９】
別の例示的実施形態では、注文１３８は、顧客１３４が何を必要とするかまたは好むかに関する情報をアプリケーション配布システム１０２に与えることができる。例えば、注文１３８は、顧客１３４がどのゲストオペレーティングシステム１１４と必須アプリケーション１１６を必要とするかを規定することができる。注文１３８は、また例えば製品アプリケーション１１８を含むイメージ１２０が提供される複数のエンドユーザ装置１３６Ａ、Ｂを規定することができる。
【００４０】
エンドユーザ装置１３６Ａ、Ｂは、ワークステーション可視化ソフトウェア１２４と同じか類似したまたは互換性を有する可視化ソフトウェアを動作させるように構成された実質的に任意の装置を含んでよいし表してもよい。例えば、エンドユーザ装置１３６Ａ、Ｂは、プレーヤ可視化ソフトウェア（ｐｌａｙｅｒ  ｖｉｓｕａｌｉｚａｔｉｏｎ  ｓｏｆｔｗａｒｅ：ＰＶＳ）１４０を含む可視化ソフトウェアを実装することができる。このようなＰＶＳ１４０は、例えば顧客に他のいくつかの機能を実行させる（例えば、他のソフトウェアをインストールする）ことなく、顧客が仮想マシン１２２を使用する／動作させることを可能にする可視化ソフトウェアを表すことができる。
【００４１】
例えば、移動体エンドユーザ装置１３６Ｂは、ＰＶＳ１４０と、そしてまた携帯情報端末（ＰＤＡ）または携帯電話のような移動体との両方を動作させるように構成された任意の装置であってよい。次に、例えばローカルエンドユーザ装置１３６Ａは、パーソナルコンピュータ、ラップトップ、携帯情報端末（ＰＤＡ）、イメージ再生装置、オーディオ／ビデオ再生装置またはネットワーク装置のようにＰＶＳ１４０を動作させるように構成された任意の装置（任意の移動体エンドユーザ装置１３６Ｂを含む）であってよい。エンドユーザ装置１３６Ａ、Ｂは、ＰＶＳ１４０と仮想マシン１２２とを支援することができるｘ８６などの業界標準ハードウェアプラットフォームを含んでよい。この意味で、上記説明から、顧客１３４の製品アプリケーション１１８に必要な唯一のプラットフォームは一つまたは複数のこのような標準的なプラットフォームであること、すなわち様々なエンドユーザ装置のそれぞれがこれら業界標準の少なくとも一つを支援する（そして可視化ソフトウェアをインストールすることができる）限り、製品アプリケーション１１８はインストールされ実行され得るということとを理解されたい。
【００４２】
ローカルエンドユーザ装置１３６Ａそれ自体がホストオペレーティングシステム１３７を含んでもよい。ホストオペレーティングシステム１３７は、例えばローカルエンドユーザ装置１３６Ａのハードウェアとソフトウェア資源を管理することと、可視化ソフトウェア（ＰＶＳ）１４０を実行することとを含みオペレーティングシステムの通常の任務を実行することができる。より具体的には、例えばホストオペレーティングシステム１３７は、メモリを制御し割り当て、命令の処理を優先付け、入出力デバイスを制御し、ネットワーク接続を手助けし、ファイルを管理することができる。
【００４３】
ホストオペレーティングシステム１３７は、仮想マシン１２２上に構成されたゲストオペレーティングシステム１１４と同じまたは類似した、あるいは異なるオペレーティングシステムであってよい。例えば、仮想マシン１２２がＬｉｎｕｘ（商標）で構成され得る一方で、ローカルエンドユーザ装置１３６Ａがホストオペレーティングシステム１３７としてＷｉｎｄｏｗｓ（商標）を実行してもよく、あるいはその逆でもよい。追加の実施形態では、移動体エンドユーザ装置１３６Ｂは、またホストオペレーティングシステム１３７とゲストオペレーティングシステム１１４の両方と異なるそれ自身のホストオペレーティングシステム（図示せず）を有してもよい。
【００４４】
プレーヤ仮想化ソフトウェア（ＰＶＳ）１４０は、イメージ１２０から、製品アプリケーション１１８を含む仮想マシン１２２を実行し、共有し、評価するように動作可能なアプリケーションであってよい。ＰＶＳ１４０もまた、イメージ１２０を受信および／または検索し実装し、そして仮想マシン１２２を実行するように構成されてよい。例えば、移動体エンドユーザ装置１３６Ｂ上の仮想化ソフトウェア１４０は、イメージ１２０を受信し、イメージ１２０を処理し、イメージ１２０により提供される仮想マシン１２２を実行することができる。例示的実施形態では、ＰＶＳ１４０は、ＶＭｗａｒｃ  Ｐｌａｙｅｒ（商標）、あるいは上記機能の少なくとも一部を実行するように操作可能な他の任意の仮想化ソフトウェアであってよい。
【００４５】
別の例示的実施形態では、ローカルエンドユーザ装置１３６ＡはＰＶＳ１４０を既にインストールしていなくてもよい。このような場合、配備ロジック１１０は、顧客１３４および／またはローカルエンドユーザ装置１３６ＡにＰＶＳ１４０をインストールし、および／またはイメージ１２０を実装する方法についての指示１３２を与えることができる。例えば、指示１３２は顧客１３４に命令して、特定のインターネットサイトからＰＶＳ１４０をダウンロードさせ、そしてローカルエンドユーザ装置１３６Ａ上にＰＶＳ１４０をインストールすることについての指示を与えることができる。別の例示的実施形態では、ローカルエンドユーザ装置１３６Ａは既にＰＶＳ１４０をインストールしていてもよく、従って配備ロジック１１０は、ＰＶＳ１４０によりイメージ１２０を実装するとともにこれにより製品アプリケーション１１８を動作させる方法についての指示１３２を与えることができる。
【００４６】
他に多くの実施形態が存在するが、そのいくつかについて、本明細書でさらに詳細に説明する。例えば、エンドユーザ装置１３６Ａ、Ｂにイメージ１２０を提供するホスト装置１２６よりむしろ、製品アプリケーション配布システム１０２がサービスとして動作してもよく、ここではエンドユーザ装置１３６Ａ、Ｂが製品アプリケーション１１８をホスト装置１２６上でローカルに動作させることができる（以下、図３の例で説明する）。また、システム１００は、製品アプリケーション配布システム１０２のコンポーネントが仮想マシン１２２上に共存するものとして表すが、別の実施形態では、製品アプリケーション配布システム１０２のコンポーネントまたは特徴はいくつかの装置にわたって配布され、および／または様々な階層上（すなわち、ホスト装置１２６上、仮想化ソフトウェア１２４上、および／または仮想マシン１２２上）に存在することができる。
【００４７】
上述のいくつかの実施形態では、ソフトウェア提供者は新製品アプリケーション１１８を上市することができ、そして該製品アプリケーション１１８を顧客に初めて提供する必要があると仮定した。しかしながら、他の例では、ソフトウェア提供者は、製品アプリケーション１１８の前バージョンをリリースしているかもしれず、製品アプリケーション１１８の前バージョンを使用する多くの顧客を有するかもしれない。この場合、ソフトウェア提供者は、製品アプリケーション１１８に前バージョンからのアップグレードをインストールするためにシステム１００を使用することができる。
【００４８】
従って、例えばソフトウェア提供者が、プリインストールされインスタンス化された製品アプリケーション１１８を仮想マシン１２２のオペレーティング環境１１２に配備し（あるいはそれを更新し）、仮想マシン１２２のイメージ１２０を保存し、そしてそれぞれのローカルマシン上に実装するようにイメージ１２０を当該の顧客に配布することができるように、システム１００を使用することができる。さらに、例えば仮想マシン１２２のオペレーティング環境１１２において、プリインストールされインスタンス化された製品アプリケーション１１８のイメージ１２０を含むサーバーへの顧客アクセスを与えることにより（図３の例においてさらに詳細に説明する）、ソフトウェア提供者が、製品アプリケーション１１８を配備する（あるいはそれを更新する）サービスを提供することができるように、システム１００を使用することができる。
【００４９】
図２は、図１のシステムの例示的動作を説明するフローチャート２００である。より具体的には、図２は、ソフトウェア製品の出荷用仮想化ソフトウェアの使用方法と関連する例示的動作を表す動作フロー２００を図示する。
【００５０】
スタート動作後、ホスト装置の仮想化ソフトウェア上で実行する仮想マシンのオペレーティング環境を構成することができる（２１０）。例えば、図１に示すように、製品アプリケーション配布システム１０２の環境設定ロジック１０４は、ホスト装置１２６のワークステーション仮想化ソフトウェア１２４上で実行する仮想マシン１２２のオペレーティング環境１１２を構成するように動作可能であってよい。上述したように、ホスト装置１２６は、ワークステーション仮想化ソフトウェア１２４（そして、従って仮想マシン１２２）の動作を支持する業界標準に準拠する任意の装置であってよい。
【００５１】
次に、オペレーティング環境上にゲストオペレーティングシステムを構成することができる（２２０）。例えば環境設定ロジック１０４は、オペレーティング環境１１２上にどのゲストオペレーティングシステム１１４をインストールすべきかを決定することができ、次に、ゲストオペレーティングシステム１１４をオペレーティング環境１１２上にインストールすることができる。ゲストオペレーティングシステム１１４は、仮想マシンを含むコンピュータのハードウェアとソフトウェア資源を管理するソフトウェアシステムであってよく、一方、オペレーティング環境１１２は、ゲストオペレーティングシステム１１４を含む仮想マシン上でプログラムが実行される環境であってよい。より具体的な例では、環境設定ロジックはオペレーティング環境１１２上にＬｉｎｕｘオペレーティングシステムをインストールすることができる。
【００５２】
次に、ゲストオペレーティングシステム上の製品アプリケーションに関連した必須アプリケーションを構成することができる（２２２）。例えば、製品アプリケーション１１８が意図どおりに機能する、あるいは最適に機能するために、必須アプリケーション１１６がゲストオペレーティングシステム１１４上にインストールされることを製品アプリケーション１１８が要求しているということを環境設定ロジック１０４は判断することができる。次に、例えば、ゲストオペレーティングシステム１１４上に必須アプリケーション１１６をインストールするために環境設定ロジック１０４を使用することができる。これにより、共存する必須アプリケーション１１６の異なるバージョンはローカルエンドユーザ装置１３６Ａとイメージ１２０上で動作できるようになる。より具体的な例では、環境設定ロジック１０４は、ホストオペレーティングシステムがＪＤＫ  １．３のみを実行する一方で、製品アプリケーション１１８がＪａｖａ（商標）開発キット（ＪＤＫ）１．５のインストールを要求していると判断することができる。次に、例えばホストオペレーティングシステムがＪＤＫ  １．３を継続的に動作させることができる一方で、製品アプリケーション１１８を支援するゲストオペレーティングシステム１１４上にＪＤＫ  １．５をインストールするために、環境設定ロジック１０４を使用することができる。
【００５３】
次に、ゲストオペレーティングシステム上に製品アプリケーションをインストールすることができる（２３０）。例えば、図１に示すように製品アプリケーション配布システム１０２のインストールロジック１０６は、ゲストオペレーティングシステム１１４上に製品アプリケーション１１８をインストールするために使用されてよい。製品アプリケーション１１８は、仮想マシン１２２上で動作するように構成されたオペレーティング環境１１２内の任意のアプリケーション、ソフトウェア、またはコードであってよい。製品アプリケーション１１８は、また以前の製品アプリケーション１１８の最新版であってよい。
【００５４】
インストールされた後、製品アプリケーションを初期化することができる（２３２）。例えば、製品アプリケーション１１８をインストールした後、インストールロジック１０６は製品アプリケーション１１８を初期化することができる。製品アプリケーション１１８を初期化する際、インストールロジック１０６は製品アプリケーション１１８のインスタンスが実行されるときに必要な起動と設定手順をすべて実行することができる。
【００５５】
次に、仮想マシンのイメージを捕捉することができる（２４０）。例えば、図１に示すように、製品アプリケーション配布システム１０２の捕捉ロジック１０８は、仮想マシン１２２のイメージ１２０を捕捉するように動作可能である。イメージ１２０は、仮想マシン１２２のオペレーティング環境１１２のゲストオペレーティングシステム１１４（必須アプリケーション１１６を含む）上にインストールされる（そして、恐らくインスタンス化される）製品アプリケーション１１８を含んでよい。例えば、インスタンス化された状態から製品アプリケーション１１８を動作させるためにイメージ１２０を後で使用することができる。
【００５６】
次に、有効期限をイメージに適用することができる（２４２）。例えば、仮想マシン１２２のイメージ１２０を捕捉した後、捕捉ロジック１０８は有効期限１２８をイメージ１２０に適用してよい。有効期限に達すると、有効期限１２８はイメージ１２０の少なくとも一部の機能を変更することができる。例えば、２００８年４月１日の有効期限１２８がイメージ１２０に適用され、該有効期限１２８に達すると、これにより、製品アプリケーション１１８が動作することを停止させるか、あるいはその代わりに製品アプリケーション１１８のいくつかの特徴が動作することを停止させることができる。
【００５７】
シールをイメージに適用することができる（２４４）。例えば、仮想マシン１２２のイメージ１２０を捕捉した後、捕捉ロジック１０８はシール１３０をイメージ１２０に適用してよい。シール１３０は、エンドユーザ装置１３６Ａ、Ｂ、および／または顧客１３４、または他のユーザがイメージ１２０の少なくとも一部にアクセスする、および／またはそれを修正するのを防止することができる。例えばシール１３０がイメージ１２０に適用されると、シール１３０は、ユーザが製品アプリケーション１１８と関連した任意のファイルを除去および／または修正するのを防止することができる。
【００５８】
次に、複数のエンドユーザ装置にイメージを配布することにより製品アプリケーションを配備することができる（２５０）。例えば、図１に示すように製品アプリケーション配布システム１０２の配備ロジック１１０は、複数のエンドユーザ装置１３６Ａ、Ｂにイメージ１２０を配布することにより製品アプリケーション１１８を配備するように動作可能である。より具体的な例では、配備ロジック１１０は通信媒体上でイメージ１２０をエンドユーザ装置１３６Ａ、Ｂに送信することができる。別の実施形態では、配備ロジック１１０は、エンドユーザ装置１３６Ａ、Ｂがイメージ１２０を検索しに行ける特定の場所にイメージ１２０を提供してよい。
【００５９】
図３は、図１のシステムの追加または代替の特徴を使用したソフトウェア製品の出荷用仮想化ソフトウェアを使用するための例示的システム３００のブロック図である。より具体的には、図３の例では、配備ロジック１１０はサービスとしてイメージ１２０を配布するように構成される。図３の例では上述した様々な例と同様に、ホスト装置１２６上の仮想マシン１２２とそのすべてのコンポーネントを含むイメージ１２０を提供する（アクセスできるようにする）ことにより、製品アプリケーション１１８を配備することができる。
【００６０】
図３のホスト装置１２６は、実質的に図１（上述の）のホスト装置１２６に類似している。図３に示すホスト装置は、ワークステーション仮想化ソフトウェア１２４よりむしろサーバー仮想化ソフトウェア３０２を動作させることができるように構成される。
【００６１】
サーバー仮想化ソフトウェア３０２は、仮想マシンを生成し、編集し、使用するように動作可能なソフトウェアパッケージまたはアプリケーションを含んでよい。サーバー仮想化ソフトウェア３０２は、一つまたは複数のイメージ１２０に基づいて複数の仮想マシンインスタンス１２２、３０４をホストするように動作可能である。更に、サーバー仮想化ソフトウェア３０２は、複数の装置がサーバー仮想化ソフトウェア３０２に接続するとともに仮想マシン１２２、３０４上で製品アプリケーション１１８を動作させることができる接続を行うことができる。例えば、第１の装置はネットワーク上でサーバー仮想化ソフトウェア３０２に接続することができ、仮想マシン１２２上で製品アプリケーション１１８を動作させることができる。次に、第２の装置はネットワーク上でサーバー仮想化ソフトウェア３０２に接続し、仮想マシン３０４上で製品アプリケーション１１８を動作させることができる。例示的なサーバー仮想化ソフトウェア３０２は、ＶＭｗａｒｅ  Ｓｅｒｖｅｒ（商標）であってもよいし、あるいは上記機能の少なくともいくつかを実行するように動作可能な他の任意の仮想化ソフトウェアであってもよい。
【００６２】
上述したように、サーバー仮想化ソフトウェア３０２は、イメージ１２０に基づいて複数の仮想マシン１２２、３０４を同時に動作させるように構成されてよい。仮想マシン１２２は仮想マシン３０４に類似しているかあるいはそれと同一であってよい。単純化のため、オペレーティング環境１１２、ゲストオペレーティングシステム１１４、必須アプリケーション１１６、製品アプリケーション１１８、捕捉ロジック１０８を含む仮想マシン３０４のコンポーネントは、図３に図示されないが必要に応じ含まれてよい。
【００６３】
また、図３には、仮想マシン１２２、３０４双方のベースとして使用される単一イメージ１２０のみを示す。しかしながら、別の実施形態では、各仮想マシン１２２、３０４に対し個別のイメージ１２０が存在してよい。他の実施形態では、いくつかのイメージ１２０が同様に、一つまたはいくつかの仮想マシン１２２、３０４に関連付けられてよい。
【００６４】
上述したように、仮想マシン１２２、３０４は、オペレーティング環境１１２を与えるとともにゲストオペレーティングシステム１１４を実行するあるいはそれをホストするソフトウェアを使用する実際の物理的マシンの表現であってよく、それ自体が製品アプリケーション１１８を含んでもよい。従って、図１のシステム１００と同様に、仮想マシン１２２、３０４は、また捕捉ロジック１０８を含んでよい。捕捉ロジック１０８は以後の使用のために仮想マシン１２２、３０４のイメージを捕捉するように動作可能である。例えば、製品アプリケーション１１８は仮想マシン１２２上でインスタンス化され、イメージ１２０に格納されてもよい。次に、例えば、仮想マシン３０４はイメージ１２０に基づいて、インスタンス化された状態から製品アプリケーション１１８を動作させることができる。各仮想マシン１２２、３０４は、別のエンドユーザ装置３０６Ａ、Ｂに割当てられ、そして別のエンドユーザ装置３０６Ａ、Ｂによりアクセスされ／使用されてよい。
【００６５】
エンドユーザ装置３０６Ａ、Ｂは、ブラウザおよび／またはリモートデスクトップ接続を支援するように動作可能な業界標準ハードウェアプラットフォームを含んでよい。例えば、エンドユーザ装置３０６Ａ、Ｂはｘ８６互換装置であってよい。エンドユーザ装置３０６Ａ、Ｂはパーソナルコンピュータ、ラップトップ、携帯情報端末（ＰＤＡ）、画像再生装置、オーディオ／ビデオ再生装置、またはネットワーク装置を含んでよい。エンドユーザ装置３０６Ａは、またブラウザ３０８および／またはリモートデスクトップ接続３１０を含んでよい。簡潔性と明確性のために、エンドユーザ装置３０６Ｂ（ブラウザ３０８とリモートデスクトップ接続３１０を含む）のコンポーネントは図３に図示されないが、これらまたは追加／代替のコンポーネントが存在してよい。
【００６６】
ブラウザ３０８は、ユーザが、例えばサーバーからウェブページ上でテキスト、イメージおよび他の情報とやりとりできるようにする従来のソフトウェアアプリケーションであってよい。ブラウザ３０８は、また別のサーバーまたは他のコンピュータに直接接続するように動作可能であってもよい。例えば、ユーザはインターネットプロトコル（ＩＰ）アドレスをブラウザ３０８に入力することができ、ブラウザ３０８は次にＩＰアドレスに関連したホスト装置１２６に接続することができる。次に、ブラウザ３０８により、例えばエンドユーザ装置３０６Ａはイメージ１２０に基づいてサーバー仮想化ソフトウェア３０２とやりとりして仮想マシン１２２から製品アプリケーション１１８を動作させることができる。例示的実施形態では、ブラウザ３０８は、例えばＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（商標）、Ｍｏｚｉｌｌａ（商標）、Ｏｐｅｒａ（商標）、Ａｐｐｌｅ  Ｓａｆｅｒｉ（商標）、またはホスト装置１２６上に配置された情報とやりとりするように構成された他の任意のブラウザであってよい。
【００６７】
リモートデスクトップ接続３１０は、エンドユーザ装置３０６Ａが製品アプリケーション、および／またはネットワーク接続上のリモートコンピュータ上に保存されたデータにアクセスできるように構成されたソフトウエアコンポーネントであってよい。例えばリモートデスクトップ接続３１０は、エンドユーザ装置３０６Ａが、ホスト装置１２６の仮想マシン１２２のオペレーティング環境１１２のゲストオペレーティングシステム１１４上で実行する製品アプリケーション１１８を動作させることができるようにしてよい。
【００６８】
図３のシステム３００の環境において製品アプリケーション１１８を提供することにより、顧客１３４はエンドユーザ装置３０６Ａ、Ｂ上に仮想化ソフトウェアをインストールする必要がないが製品アプリケーション１１８にアクセスしそれを使用するという利点を得ることができる。例えば、顧客１３４は、製品アプリケーション１１８をインストールすることの複雑性と困難性を経験し、理解し、あるいはそれに関心を持つ必要がない。さらに、顧客１３４に対する不便性なく、ソフトウェア提供者が製品アプリケーションをインストールし、アップグレードし、修復し、あるいは修正することは簡単であろう。
【００６９】
図４は、図１および／または図３のシステムの例示的動作を説明するフローチャート４００である。より具体的には、図４は、図１および／または図３のシステムの例示的動作を説明する、ソフトウェア製品の出荷用仮想化ソフトウェアの使用方法に関する例示的動作を表す動作フロー４００を図示する。
【００７０】
図４の例では、製品アプリケーションに対する顧客からの注文を受信することができる（４０２）。例えば、図１に示すように、顧客１３４はホスト装置１２６で受信され得る注文１３８を出すことができる。注文１３８は、例えば一つまたは複数のゲストオペレーティングシステム１１４と必須アプリケーションを規定する情報、および／またはエンドユーザ装置１３６Ａ、Ｂに製品アプリケーション１１８を提供するために必要と考えられる情報を含んでよい。あるいは、注文１３８は、単に製品アプリケーション１１８に対する要求を含んでもよく、ソフトウェア提供者はこれらおよび他のパラメーターを判断することができる。
【００７１】
ホスト装置の可視化ソフトウェア上で実行する仮想マシンのオペレーティング環境は、注文に基づいて構成することができる（４０４）。例えば、環境設定ロジック１０４は、注文１３８に基づいて、ワークステーション仮想化ソフトウェア１２４上で実行する仮想マシン１２２のオペレーティング環境１１２またはホスト装置１２６のサーバー仮想化ソフトウェアを構成することができる。
【００７２】
オペレーティング環境上に含むべきゲストオペレーティングシステムは、製品アプリケーションおよび／あるいは注文に基づいて決定される（４０６）。例えば、環境設定ロジック１０４は、ゲストオペレーティングシステム１１４として、オペレーティング環境１１２上にどのオペレーティングシステムをインストールするかを判断することができる。例示的実施形態では、注文１３８は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（商標）など顧客１３４に必要とされるオペレーティングシステムを含んでよい。別の実施形態では、製品アプリケーション１１８との互換性に基づいてゲストオペレーティングシステム１１４を決定することができる。
【００７３】
次に、オペレーティング環境上にゲストオペレーティングシステムを構成することができる（４０８）。例えば、環境設定ロジック１０４がゲストオペレーティングシステム１１４としてどのオペレーティングシステムを使用するかを判断した後、仮想マシン１２２のオペレーティング環境１１２上にゲストオペレーティングシステム１１４をインストールするために、環境設定ロジック１０４を使用することができる。
【００７４】
ゲストオペレーティングシステムがオペレーティング環境上に構成された後、製品アプリケーションが必須アプリケーションを必要とするかどうかが判断される（４１０）。必須アプリケーションが必要とされる場合は必須アプリケーションを構成することができる（４１２）。例えば、環境設定ロジック１０４は、正しく機能するために、製品アプリケーション１１８が必須アプリケーション１１６（データベースなど）を必要としていることを判断することができる。次に、例えば環境設定ロジック１０４はゲストオペレーティングシステム１１４上に必須アプリケーション１１６をインストールすることができる。別の例では、顧客１３４は、ゲストオペレーティングシステム１１４上に構成される必須アプリケーション１１６を規定することができる。
【００７５】
必須アプリケーションを必要としない場合あるいは必要とされる必須アプリケーションがすべて構成された後、製品アプリケーションをインストールすることができる（４１４）。例えばインストールロジック１０６はゲストオペレーティングシステム１１４上に製品アプリケーション１１８をインストールすることができる。
【００７６】
製品アプリケーションがインストールされた後、製品アプリケーションをインスタンス化する必要があるかどうかを判断することができる（４１６）。必要であると判断された場合、製品アプリケーションをインスタンス化してよい。例えば製品アプリケーション１１８は、実行の際、長い起動および設定時間を必要とするかもしれない。このような場合、インストールロジック１０６は、顧客１３４が各実行に際し製品アプリケーション１１８を再度インスタンス化する必要がないように製品アプリケーション１１８をインスタンス化することができる。
【００７７】
製品アプリケーションがインスタンス化された後、あるいはインスタンス化が必要でないと判断された後、製品アプリケーションを含み仮想マシンのイメージを捕捉することができる（４２０）。例えば、アプリケーション配布システム１０２の捕捉ロジック１０８は、製品アプリケーション１１８を含み仮想マシン１２２のイメージ１２０を捕捉することができる。イメージ１２０は、オペレーティング環境１１２、ゲストオペレーティングシステム１１４、必須アプリケーション１１６、製品アプリケーション１１８を含み各仮想マシン１２２コンポーネントのスナップショットを含むことができる。図３に示すように、イメージ１２０は、また追加のイメージ１２０を捕捉することができるいくつかの捕捉ロジック１０８機能を含んでよい。捕捉されたイメージ１２０により、仮想マシン１２２は、イメージ１２０が捕捉された際のそれが存在していた状態に戻って回復され得る。
【００７８】
イメージが捕捉された後、有効期限をイメージに適用してよい（４２２、４２４）。例えば捕捉ロジック１０８は、有効期限１２８がイメージ１２０に適用されなければならないということを判断することができ、次に捕捉ロジック１０８は有効期限１２８を適用することができる。有効期限１２８は、達したときの日付または時限であってよく、イメージ１２０の少なくとも一部の動作を変更することができる。
【００７９】
イメージが捕捉された後、顧客がイメージの一部へアクセスするのを防止する必要があると判断された場合、シールをイメージに適用してよい（４２６、４２８）。例えば、捕捉ロジック１０８は、顧客１３４（または他のユーザ）がゲストオペレーティングシステム１１４から製品アプリケーション１１８を除去してはならないと判断することができ、従って製品アプリケーション１１８の除去を防止するシール１３０をイメージ１２０に適用することができる。
【００８０】
イメージに基づいて顧客が製品アプリケーションを動作させるための指示を与えることができる（４３０）。例えば、配備ロジック１１０は、プレーヤ可視化ソフトウェア（ＰＶＳ）１２４Ｂをインストールし、イメージ１２０にＰＶＳ１２４Ｂを実装し、および／または製品アプリケーション１１８を動作させる方法を詳述する指示１３２をローカルエンドユーザ装置１３６Ａに与えることができる。
【００８１】
最後に、顧客がブラウザまたはリモートデスクトップ接続を介してホスト装置にアクセスしアプリケーションを動作させることができるイメージを提供することができる（４３２、４３４）。例えば、図３ではイメージ１２０は既に捕捉されている。次に、例えばエンドユーザ装置３０６Ａは、ネットワーク上でサーバー仮想化ソフトウェア３０２を実行するホスト装置１２６と通信するために、ブラウザ３０８またはリモートデスクトップ接続３１０のいずれかを使用することができる。エンドユーザ装置３０６Ａからの接続を受信すると、サーバー仮想化ソフトウェア３０２は、イメージ１２０に基づいて仮想マシンインスタンス１２２をインスタンス化することができる。次に、例えばエンドユーザ装置３０６Ａは、ホスト装置１２６のサーバー仮想化ソフトウェア３０２上で実行する仮想マシン１２２のオペレーティング環境１１２のゲストオペレーティングシステム１１４において製品アプリケーション１１８を動作させることができる。次に、例えばエンドユーザ装置３０６Ｂは、またホスト装置１２６に接続することができ、第２の仮想マシンインスタンス３０４におけるイメージ１２０（または別のイメージ、図示せず）に基づいて製品アプリケーション１１８を動作させることができる。
【００８２】
上記の例は説明のために提供されたが、他の多くの実施形態が実施され得ることを理解されたい。例えば、イメージ１２０は上に提示されたもの以外に他の多くのやり方で提供され得る。
【００８３】
本明細書で説明された様々な技術の実施形態は、ディジタル電子回路において、あるいはコンピュータハードウェア、ファームウェア、ソフトウェア、あるいはそれらの組合せにおいて実施され得る。上記実施形態は、データ処理装置（例えば、プログラム可能プロセッサ、コンピュータ、複数のコンピュータ）による実行のためにあるいは該データ処理装置の動作を制御するためにコンピュータプログラム製品として、すなわち明確に情報担体において（例えば、機械読取り可能記憶装置または伝播される信号において）具現化されたコンピュータプログラムとして実施することができる。上記コンピュータプログラムなどのコンピュータプログラムは、コンパイル型言語またはインタープリタ型言語を含み任意の様式のプログラミング言語で書くことができ、そしてスタンドアローンプログラムとして、またはモジュール、コンポーネント、サブルーチン、またはコンピュータ環境の使用に好適な他のユニットとしてなど、任意の様式で配備することができる。コンピュータプログラムは、一つのサイトにおいて一つのコンピュータまたは複数のコンピュータ上で実行されるかあるいは複数のサイトにわたって配布され通信ネットワークにより相互に接続さるように配備されてよい。
【００８４】
本方法の各工程は、入力データに作用し出力を生成することにより機能を実行するコンピュータプログラムを実行する一つまたは複数のプログラム可能なプロセッサにより実行されてよい。本方法の各工程は、また、専用ロジック回路、例えばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）により実行することができ、該装置は、専用ロジック回路、例えばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）として実施することができる。
【００８５】
コンピュータプログラムの実行に好適なプロセッサは、一例として汎用および専用マイクロプロセッサと、任意のタイプのデジタルコンピュータからなる一つまたは複数のプロセッサとの両方を含む。通常、プロセッサは読み取り専用メモリまたはランダムアクセスメモリーからまたはその両方から命令とデータを受信する。コンピュータの要素としては、命令を実行するための少なくとも一つのプロセッサと、命令とデータを格納するための一つまたは複数の記憶装置とが挙げられる。通常、コンピュータは、またデータを格納するための一つまたは複数の大容量記憶装置、例えば磁気、光磁気ディスクまたは光ディスクを含んでもよいし、あるいは上記装置からデータを受信するかまたはそれらにデータを転送する、あるいは上記受信と送信の両方を行うように動作可能に接続されてもよい。コンピュータプログラム命令とデータの具現化に好適な情報担体は、一例として半導体記憶装置、例えばＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ装置；磁気ディスク、例えば内蔵ハードディスク、取外し可能ディスク；光磁気ディスク；ＣＤ−ＲＯＭとＤＶＤ−ＲＯＭディスクを含むすべての様式の不揮発性メモリを含む。プロセッサとメモリは、専用ロジック回路により補完されてもよいし、あるいは専用ロジック回路に組込まれてもよい。
【００８６】
ユーザとの対話処理を提供するために、本実施形態は、ユーザに対し情報を表示するための表示装置（例えば、陰極線管（ＣＲＴ）または液晶表示（ＬＣＤ）モニタ）と、ユーザがコンピュータに入力を与えることができるキーボードとポインティング装置（例えば、マウスまたはトラックボール）とを有するコンピュータ上で実施することができる。同様にユーザとの対話処理を提供するために他の種類の装置を使用してもよく、例えばユーザに提供されるフィードバックは、任意の様式の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、触覚フィードバックであってよく、そしてユーザからの入力は、音響、言葉、または触覚入力を含む任意の様式で受信されてよい。
【００８７】
本実施形態は、バックエンドコンポーネントを含むコンピュータシステムにおいて（例えばデータサーバとして）、またはミドルウェアコンポーネントを含むコンピュータシステム（例えばアプリケーションサーバ）において、またはフロントエンドのコンポーネント（例えば、ユーザが実施形態とやりとりすることができるグラフィクユーザーインターフェースまたはウエブブラウザーを有するクライアントコンピュータ）を含むコンピュータシステムにおいて、またはこのようなバックエンド、ミドルウェア、またはフロントエンドのコンポーネントの任意の組合せを含むコンピュータシステムにおいて実施され得る。コンポーネントは、任意の様式または媒体のディジタルデータ通信、例えば通信ネットワークにより相互に接続されてよい。通信ネットワークの例として、ローカルエリアネットワーク（ＬＡＮ）と、広域ネットワーク（ＷＡＮ）例えばインターネットが挙げられる。
【００８８】
本明細書で説明したように、説明された実施形態のいくつかの特徴が説明されたが、当業者にとっては多くの変更形態、代替形態、変形形態、等価物が想定されるであろう。従って、添付された特許請求の範囲は、実施形態の真の趣旨に含まれるこのような変更形態および変形形態をすべて包含することが意図されていることを理解されたい。
【図面の簡単な説明】
【００８９】
【図１】ソフトウェア製品の出荷用仮想化ソフトウェアを使用するための例示的システムのブロック図である。
【図２】図１のシステムの例示的動作を説明するフローチャートである。
【図３】図１のシステムの追加または代替の特徴を使用したソフトウェア製品の出荷用仮想化ソフトウェアを使用するための例示的システムのブロック図である。
【図４】図１および／または図３のシステムの例示的動作を説明するフローチャートである。
【符号の説明】
【００９０】
１００  システム
１０２  製品アプリケーション配布システム
１０４  環境設定ロジック
１０６  インストールロジック
１０８  捕捉ロジック
１１０  配備ロジック
１１２  オペレーティング環境
１１４  ゲストオペレーティングシステム
１１６  必須アプリケーション
１１８  製品アプリケーション
１２０  イメージ
１２２  仮想マシン
１２４、１２４Ａ、１２４Ｂ  ワークステーション仮想化ソフトウェア（ＷＶＳ）
１２６  ホスト装置
１２８  有効期限
１３０  シール
１３２  指示
１３４  顧客
１３６Ａ  ローカルエンドユーザ装置
１３６Ｂ  移動体エンドユーザ装置
１３７  ホストオペレーティングシステム
１３８  注文
１４０  プレーヤ可視化ソフトウェア（ＰＶＳ）
２００  フローチャート
２１０、２２０、２２２、２３０、２３２、２４０、２４２、２４４、２５０  工程
３００  システム
３０２  サーバー仮想化ソフトウェア
３０４  仮想マシン
３０６Ａ  エンドユーザ装置
３０６Ｂ  エンドユーザ装置
３０８  ブラウザ
３１０  リモートデスクトップ接続
４００  フローチャート
４０２、４０４、４０６、４０８、４１０、４１２、４１４、４１６、４１８、４２０、４２２、４２４、４２６、４２８、４３０、４３２、４３４  工程
【図１】
2008090840.tif 000003
【図２】
2008090840.tif 000004
【図３】
2008090840.tif 000005
【図４】
2008090840.tif 000006