(57)【要約】ソフトウェアアプリケーションの構成アイテムを自動的におよび／または手動操作で検出することができ、そのアプリケーションをパッケージ化してバーチャルアプリケーションパッケージを形成することができる。デプロイメント構成は構成アイテムのセッティング（設定値）を含む。このデプロイメント構成はソフトウェアをパッケージ化した後設定することができる。例えば、デプロイメント構成のうちの選択した構成アイテムはユーザ入力に応答して変更されることがある。バーチャルアプリケーションパッケージをデプロイして一回または二回以上アプリケーションをインスタンス生成することができ、デプロイメント構成をインスタンス生成したアプリケーションにおいて使用する。
2013522727.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーションの１つまたは２つ以上の構成アイテムを自動的に検出するステップと、
前記アプリケーションをパッケージ化してバーチャルアプリケーションパッケージを形成するステップと、
前記バーチャルアプリケーションパッケージをデプロイして前記アプリケーションをインスタンス生成するステップと、
デプロイメント構成を前記インスタンス生成したアプリケーションにおいて使用するステップと、
を含み、前記デプロイメント構成は１つまたは２つ以上の構成アイテムの１つまたは２つ以上のセッティングを含むことを特徴とするコンピュータ実装方法。
【請求項２】
前記１つまたは２つ以上の構成アイテムは１つまたは２つ以上の自動的に検出される構成アイテムであり、手動操作で検出される１つまたは２つ以上の構成アイテムを示すユーザ入力に応答して、前記ソフトウェアアプリケーションのために、前記手動操作で検出される１つまたは２つ以上の構成アイテムを検出するステップをさらに含み、前記デプロイメント構成は１つまたは２つ以上の手動操作で検出される構成アイテムの１つまたは２つ以上のセッティングをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記自動的に検出するステップは検出の少なくとも一部を、１つまたは２つ以上の構成アイテムの少なくとも１つに関係するサブシステムにデリゲートするステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記デプロイメント構成は第１のデプロイメント構成であり、第２のデプロイメント構成を前記インスタンス生成したアプリケーションにおいて使用して、前記１つまたは２つ以上の構成アイテムの１つまたは２つ以上に対するセッティングを変更するステップをさらに含み、前記第２のデプロイメント構成は前記第１のデプロイメント構成と異なることを特徴とする請求項１に記載の方法。
【請求項５】
前記１つまたは２つ以上の構成アイテムを、ユーザインタフェースデバイスを使用して提示するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
ユーザ入力を受信するステップと、前記ユーザ入力に応答して１つまたは２つ以上の構成アイテムの１つを編集するステップと、をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
バーチャルアプリケーションパッケージをデプロイして前記アプリケーションをインスタンス生成するステップは、バーチャルアプリケーションパッケージをデプロイして前記アプリケーションを該アプリケーションの第１のインスタンスとしてインスタンス生成するステップを含み、
前記デプロイメント構成を使用するステップは前記デプロイメント構成をアプリケーションの前記第１のインスタンスにおいて使用するステップを含み、
前記バーチャルアプリケーションパッケージをデプロイして前記アプリケーションを該アプリケーションの第２のインスタンスとしてインスタンス生成するステップと、
前記デプロイメント構成を前記アプリケーションの前記第２のインスタンスにおいて使用するステップとをさらに含むこと、を特徴とする請求項１に記載の方法。
【請求項８】
前記デプロイメント構成をアプリケーションの第１のインスタンスにおいて使用するステップとデプロイメント構成をアプリケーションの第２のインスタンスにおいて使用するステップは、１つまたは２つ以上の構成アイテムの少なくとも１つに対する異なるセッティングを前記アプリケーションの第１と第２のインスタンスにおいて使用するステップを含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記アプリケーションをパッケージ化した後、
ユーザインタフェースデバイスを使用して構成アイテムを提示するステップ、
ユーザ入力を受信するステップ、および
１つまたは２つ以上の構成アイテムの少なくとも１つに対するセッティングを前記ユーザ入力に応答して編集するステップをさらに含み、
前記バーチャルアプリケーションパッケージをデプロイしてアプリケーションをインスタンス生成するステップは、該バーチャルアプリケーションパッケージをデプロイして前記アプリケーションを該アプリケーションの第１のインスタンスとしてインスタンス生成するステップを含み、
前記デプロイメント構成を使用するステップは該デプロイメント構成を前記アプリケーションの第１のインスタンスとして使用するステップを含み、
前記バーチャルアプリケーションパッケージをデプロイして前記アプリケーションの第２のインスタンスとしてインスタンス生成するステップと、
前記デプロイメント構成をアプリケーションの第２のインスタンスにおいて使用するステップとをさらに含み、
前記アプリケーションの第１のインスタンスと第２のインスタンスにおける１つまたは２つ以上の構成の少なくとも１つに対して異なるセッティングが使用されることを特徴とする請求項１に記載の方法。
【請求項１０】
コンピュータ実行可能命令を有する１つまたは２つ以上のコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令が少なくとも１つのプロセッサによって実行されるとき、
ソフトウェアアプリケーションをパッケージ化してバーチャルアプリケーションパッケージを形成するステップと、
前記ソフトウェアアプリケーションをパッケージ化した後前記バーチャルアプリケーションパッケージのデプロイメント構成を設定するステップと、
前記バーチャルアプリケーションパッケージをデプロイしてそのアプリケーションをインスタンス生成するステップと、
前記デプロイメント構成をインスタンス生成したアプリケーションにおいて使用するステップと、
前記少なくとも１つのプロセッサに実行させることを特徴とする１つまたは２つ以上のコンピュータ可読記憶媒体。
【請求項１１】
前記デプロイメント構成を設定するステップは該デプロイメント構成における１つまたは２つ以上の構成アイテムを編集するステップを含むことを特徴とする請求項１０に記載の１つまたは２つ以上のコンピュータ可読記憶媒体。
【請求項１２】
前記デプロイメント構成を設定するステップはユーザ入力を受信したことに応答して実行されることを特徴とする請求項１０に記載の１つまたは２つ以上のコンピュータ可読記憶媒体。
【請求項１３】
パッケージ化を完了する前に前記デプロイメント構成の１つまたは２つ以上の構成アイテムを検出することをさらに含むことを特徴とする請求項１０に記載の１つまたは２つ以上のコンピュータ可読記憶媒体。
【請求項１４】
前記１つまたは２つ以上の構成アイテムの少なくとも１つは任意または必須とマーキングするステップをさらに含み、前記デプロイメント構成を設定するステップは、当該１つまたは２つ以上の構成アイテムの各々についてそのアイテムが必須としてマークされているかどうかを判断し、そのアイテムが必須としてマークされていれば、バーチャルアプリケーションパッケージをデプロイする前にそのアイテムのユーザ入力を要求するステップを含むことを特徴とする請求項１３に記載の１つまたは２つ以上のコンピュータ可読記憶媒体。
【請求項１５】
前記デプロイメント構成は第１のデプロイメント構成であり、
前記バーチャルアプリケーションパッケージをデプロイしてアプリケーションをインスタンス生成するステップは、該バーチャルアプリケーションパッケージをデプロイしてアプリケーションを該アプリケーションの第１のインスタンスにおいてインスタンス生成するステップを含み、
前記デプロイメント構成をインスタンス生成したアプリケーションにおいて使用するステップは第１のデプロイメント構成を前記アプリケーションの第１のインスタンスにおいて使用するステップを含み、
前記ソフトウェアアプリケーションをパッケージ化した後前記バーチャルアプリケーションパッケージの第２のデプロイメント構成を設定するステップと、
前記バーチャルアプリケーションパッケージをデプロイしてアプリケーションをそのアプリケーションの第２のインスタンスにおいてインスタンス生成するステップと、
前記第２のデプロイメント構成を前記アプリケーションの第２のインスタンスにおいて使用するステップと
をさらに含むことを特徴とする請求項１０に記載の１つまたは２つ以上のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーチャルソフトウェアアプリケーションデプロイメント構成に関する。
【背景技術】
【０００２】
バーチャルアプリケーションは一連のオペレーションで実現することができる。初期には、アプリケーションがパッケージ化環境でパッケージ化されてバーチャルアプリケーションパッケージが生成される。パッケージ化はアプリケーションを受け取り、そのデータ（ファイルやレジストリエントリなど）およびメタデータ（*.iniファイル内のアイテムやレジストリセッティング（設定値）などの構成アイテム）を定義するプロセスである。その結果としてパッケージはアプリケーションのデータとメタデータを含み、実際にはネイティブアプリケーションとしてインストールされることなくターゲット環境で動作（ｒｕｎ）する。従って、そのパッケージをターゲット環境にデプロイ(deploy、配備すること)してバーチャルアプリケーションインスタンスを生成(instantiate)することができる。このバーチャルアプリケーションインスタンスはカプセルの中で実行できるが、そのカプセルには、アプリケーションだけでなくそのアプリケーションを実行するバーチャルリソースも含まれている。このようなカプセルは本明細書では「サンドボックス(sandbox)」と呼ばれている。本明細書で用いられているパッケージはアプリケーションのパッケージ化から得られる情報（ファイル、メータデータなど）を含み、そのパッケージをデプロイしてアプリケーションをインスタンス生成する（アプリケーションのインスタンスを生成すること）ことができる。パッケージは複数の部分に分割されることがあり、一部の部分は異なる方法でおよび/または異なる時点で伝送されることがある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書に説明され、請求項に記載されているツールおよび技法を使用すると、バーチャルアプリケーションパッケージとデプロイメント構成(deployment configuration)をデプロイしてアプリケーションの特定インスタンスを生成(instantiate)することができる。デプロイメント構成は、アプリケーションをパッケージ化するときに検出されるアイテムのように、１つまたは２つ以上の構成アイテムを含むことができる。デプロイメント構成は、バーチャルアプリケーションパッケージと共に含まれることもあれば、それとは切り離して含まれることもあり、デプロイメント構成はアプリケーションのパッケージ化の後編集されることもある。デプロイメント構成はインスタンス生成したバーチャルアプリケーションにおいて使用することができる。例えば、デプロイメント構成は、アプリケーションをデプロイしている間および/またはアプリケーションがデプロイされた後アプリケーションを構成するために使用（ａｐｐｌｙ）される。
【０００４】
ある実施形態では、ツールおよび技法は、ソフトウェアアプリケーションの構成アイテムを自動的に検出し、そのアプリケーションをパッケージ化してバーチャルアプリケーションパッケージを形成することを含む。このバーチャルアプリケーションパッケージをデプロイしてアプリケーションのインスタンスを生成する。デプロイメント構成はインスタンス生成したアプリケーションにおいて使用される。その場合、そのデプロイメント構成は構成アイテムのセッティングを含んでいる。
【０００５】
ツールおよび技法の別の実施形態では、ソフトウェアアプリケーションをパッケージ化してバーチャルアプリケーションパッケージを形成する。アプリケーションのデプロイメント構成はそのアプリケーションをパッケージ化した後設定することができる。デプロイメント構成を設定することには、その構成を確認しおよび/または変更することが含まれる。例えば、デプロイメント構成における構成アイテムの１つまたは２つ以上のデフォルトセッティング(default setting)は、自動的に確認することも、特定のユーザ入力に応答し確認することもできる。別の例として、構成アイテムの１つまたは２つ以上のセッティングは、自動的にまたは特定のユーザ入力に応答して追加または変更するといったように、追加または変更することができる。バーチャルアプリケーションパッケージをデプロイしてアプリケーションのインスタンスを生成することもでき、そのデプロイメント構成をインスタンス生成したアプリケーションにおいて使用することができる。例えば、デプロイメント構成における構成アイテムのセッティングは、アプリケーションがデプロイされている間に（例えば、デプロイメントと構成オペレーションをインタリーブすることにより）および/またはアプリケーションパッケージがデプロイされた後にアプリケーションにおいて使用される。
【０００６】
ツールおよび技法のさらに別の実施形態では、ソフトウェアアプリケーションの構成アイテムを検出することができる。アプリケーションをパッケージ化してバーチャルアプリケーションパッケージを形成することができる。アプリケーションをパッケージ化した後、構成アイテムはユーザインタフェースデバイスを使用して提示することができる。選択した構成アイテムはその変更を指示するユーザ入力を応答して変更することができる。さらに、バーチャルアプリケーションパッケージをデプロイしてアプリケーションをインスタンス生成することができ、構成アイテムをインスタンス生成したアプリケーションに使用することができる。
【０００７】
この概要説明はコンセプト（概念）をいくつかを選んで単純化した形で紹介するためのものである。これらのコンセプトは、以下の「詳細説明」の個所で詳しく説明されている。この概要説明は請求項に記載の主題のキーとなる特徴または基本的機能を特定するものでもなく、請求項に記載の主題の範囲を限定するために使用されるものでもない。同様に、本発明は「背景技術」、「詳細説明」または添付図面に説明された特定の技法、ツール、環境、欠点または利点を取り扱う実装形態に限定されない。
【図面の簡単な説明】
【０００８】
【図１】本明細書に記載の実施形態の１つまたは２つ以上が実現可能である適当なコンピューティング環境を示すブロック図である。
【図２】バーチャルアプリケーションデプロイメント構成コンピューティング環境を示すブロック図である。
【図３】バーチャルアプリケーションデプロイメント構成技法のフローチャートを示す図である。
【図４】別のバーチャルアプリケーションデプロイメント構成技法のフローチャートを示す図である。
【図５】さらに別のバーチャルアプリケーションデプロイメント構成技法のフローチャートを示す図である。
【発明を実施するための形態】
【０００９】
本明細書に記載の実施形態は、バーチャルアプリケーションのパッケージ化、デプロイメントおよび/またはインスタンス生成の改良のための技法およびツールを目的としている。このような改良は、種々の技法およびツールを単独にまたは組み合わせて使用するから得られることがある。
【００１０】
このような技法およびツールは、バーチャルアプリケーションパッケージおよびデプロイメント構成をデプロイしてターゲット環境においてアプリケーションの特定インスタンスを生成可能にすることを含むことがある。例えば、ソフトウェアアプリケーションの１つまたは２つ以上の構成アイテムは自動的に検出される。これらのアイテムを含むデプロイメント構成は、アプリケーションがバーチャルアプリケーションパッケージとしてパッケージ化された後設定する。例えば、構成アイテム（１つまたは２つ以上）は、アプリケーションをパッケージ化した後ユーザインタフェースデバイスを使用してユーザに（例えば、構成アイテム（１つまたは２つ以上）の表現をコンピュータディスプレイで表示することにより）提示される。また、パッケージ化の後、行なうべき変更を指示するユーザ入力に応答して構成アイテム（１つまたは２つ以上）の１つが変更される。パッケージをデプロイしてアプリケーションのインスタンスを生成し、デプロイメント構成をそのアプリケーションインスタンスにおいて使用する。
【００１１】
パッケージ化時に、パッケージ化エンジニア（パッケージ化を実施するユーザ）および/またはパッケージャ(packager)（パッケージ化を実行するコンピューティングコンポーネント）は一部の構成アイテムがなんであるかを知っていても、これらの構成アイテムのセッティングが特定のアプリケーションインスタンスにおいてどのようになるかを知っていないかもしれない。例えば、一部の構成アイテムは特定のマシン、ユーザまたはアプリケーションインスタンスに関係していることがある。１つの具体例として、ユーザ承認テスト組織(user acceptance testing organization)では、アプリケーションが“sql_qa”と名付けたデータベースに結び付いていることがある。しかし、アプリケーションが意図するプロダクションターゲット環境で実行されるときは、そのアプリケーションが“sql_production”と名付けたデータベースに結び付いていることがある。パッケージ化時に構成アイテムを識別することにより、しかしそのパッケージをデプロイしてアプリケーションの特定インスタンスを生成するときにこれらの構成アイテムを設定し、使用することにより、そのデプロイメントを実施するアドミニストレータ（デプロイメントを実施するユーザ）は構成アイテムを識別する必要性から解放されることになる。しかし、その場合でも、アドミニストレータは構成アイテムの適切なセッティングを入力することできる。また、シングルパッケージをデプロイして、異なるマシンおよび/またはユーザを使用して異なるインスタンスをインスタンス生成することができる。これは、パッケージ自体を変更することなく（ただし、構成アイテムがそのパッケージに含まれる場合はその構成アイテムを変更する可能性があるが、それを除く）およびアプリケーションを再パッケージ化することなく行なわれる。例えば、これに利点があるのは、１つの一般的パッケージをパッケージ化し、テストすることができるが、そのテストした一般的パッケージを異なるデプロイメント構成セッティングと共に異なるインスタンスにデプロイできるからである。デプロイメント構成以外のパッケージ内のアイテムが各デプロイメントについて変更された場合やアプリケーションが全体的に再パッケージ化された場合は、元のテストが有効でないことがある。
【００１２】
従って、１つまたは２つ以上の実質的利点は、本明細書に記載のツールおよび技法から実現することができる。請求項に定義した主題は、必ずしも本明細書に記載した利点に限定されない。本発明の特定の実施形態からは、本明細書に記載の利点の全部まあは一部が得られることもあれば、全く得られないこともある。種々の技法のオペレーションは、説明の便宜上、特定の連続した順序で本明細書に記載されているが、当然に理解されるように、この記載方法には、特定の順序付けが要求される場合を除き、オペレーションの順序が並べ替えられることが含まれている。例えば、連続的に記載されたオペレーションは、ケースによっては、並べ替えられることも、同時に実行されることもある。フローチャートを参照して本明細書に記載された技法は、本明細書に記載のシステムの１つまたは２つ以上と共に使用されることも、および/または１つまたは２つ以上の他のシステムと共に使用されることもある。例えば、本明細書に記載の種々のプロシージャはハードウェアまたはソフトウェアまたはこれらの組み合わせで実現されることがある。さらに、説明の便宜上、フローチャートは、特定の技法が他の技法と併用さるときの種々の方法を示していないことがある。
【００１３】
Ｉ．例示コンピューティング環境
図１は、上述の実施形態の１つまたは２つ以上を実施するのに適切なコンピューティング環境（１００）の概念化した例を示す図である。例えば、このような１つまたは２つ以上のコンピューティング環境をパッケージ化環境、デプロイメント環境および/またはターゲット環境として使用することができる。一般的に、種々の異なる汎用または特殊目的コンピューティングシステム構成が使用可能である。本明細書に記載したツールおよび技法と共に使用するのに適している周知コンピューティングシステム構成の例としては、サーバファーム(server farm)とサーバクラスタ、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記に挙げたシステムまたはデバイスのいずれかを含む分散コンピューティング環境などがあるが、これらに限定されない。
【００１４】
コンピューティング環境（１００）は、本発明が種々の汎用または特殊目的コンピューティング環境で実現されるように、本発明の使用または機能性の範囲に関して何らかの制限があることを示唆するものではない。
【００１５】
図１に関して説明すると、コンピューティング環境（１００）は少なくとも１つの処理ユニット（１１０）およびメモリ（１２０）を含む。図１において、この最も基本的な構成（１３０）は破線内に示される。処理ユニット（１１０）はコンピュータ実行可能命令を実行し、リアルまたはバーチャルプロセッサとすることができる。マルチ処理システムは、複数の処理ユニットがコンピュータ実行可能命令を実行して処理能力を向上させる。メモリ（１２０）は揮発性メモリ（例：レジスタ、キャッシュ、ＲＡＭ）、不揮発性メモリ（例：ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ）またはこれら２メモリのなんらかの組み合わせとすることができる。メモリ（１２０）はバーチャルソフトウェアアプリケーションのデプロイメント構成を実装するソフトウェア（１８０）を格納する。
【００１６】
図１の種々のブロックが、明確性の便宜上、ラインで囲んで示されているが、実際には、種々のコンポーネントをラインで明確に区別することはなく、比喩的には、図１および下述する他の図のラインは、もっと正確には、グレイでぼかされることになる。例えば、ディスプレイデバイスのようなプレゼンテーションコンポーネントはＩ／Ｏコンポーテントと考えることができる。また、プロセッサはメモリを備えていることがある。本明細書の発明者はこのようなことは技術の本質(nature of the art)であると認識しており、および図１の図が本発明の１つまたは２つ以上の実施形態に関連して使用できる例示コンピューティングデバイスを単に例示したものであると繰り返しになるが主張する。「ワークステーション」、「サーバ」、ラップトップ」「ハンドヘルドデバイス」などのカテゴリ間で区別がなれていないのは、これらのすべてが図１の範囲内と考えられ、および「コンピュータ」、「コンピューティング環境」または「コンピューティングデバイス」と呼ばれるからである。
【００１７】
コンピューティング環境（１００）は付加的な特徴を備えることができる。図１において、コンピューティング環境（１００）はストレージ（注：記憶デバイス）（１４０）、１つまたは２つ以上の入力デバイス（１５０）、１つまたは２つ以上の出力デバイス（１６０）および１つまたは２つ以上の通信コネクション（１７０）を含んでいる。バス、コントローラまたはネットワーク相互接続のような相互接続メカニズム（図示せず）はコンピューティング環境（１００）のコンポーネントを相互接続している。代表例として、オペレーティングシステムソフトウェア（図示せず）はコンピューティング環境（１００）で実行される他のソフトウェアのために動作環境を提供し、コンピューティング環境（１００）のコンポーネントのアクティビティを調整する。
【００１８】
ストレージ（１４０）は取り外し可能または取り外し不能であってもよく、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、ＤＶＤ、または情報をストアするために使用可能で、コンピューティング環境（１００）内でアクセス可能なその他の媒体のように、非一時的(non-transitory)コンピュータ可読媒体を含むことができる。ストレージ（１４０）はソフトウェア（１８０）のための命令を格納する。
【００１９】
入力デバイス（１つまたは２つ以上）（１５０）は、キーボード、マウス、ペンまたはトラックボールなどのタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、ネットワークアダプタ、ＣＤ／ＤＶＤリーダ、またはコンピューティング環境（１００）に入力を提供するその他のデバイスとすることができる。出力デバイス（１つまたは２つ以上）（１６０）はディスプレイ、プリンタ、スピーカ、ＣＤ／ＤＶＤライタ、ネットワークアダプタ、またはコンピューティング環境（１００）からの出力を提供するその他のデバイスである。
【００２０】
通信ネットワーク（１つまたは２つ以上）（１７０）は通信媒体を利用して別のコンピューティングエンティティと通信可能にする。従って、コンピューティング環境（１００）は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは別の共通ノードなどのリモートコンピューティングデバイスとの論理的コネクションを使用したネットワーク化環境で動作する。通信媒体は、データやコンピュータ実行可能命令またはリクエストなどの情報を変調データ信号で搬送する。変調データ信号(modulated data signal)は、その特性の１つまたは２つ以上が信号のデータを符号化するような形で設定または変更されている信号である。例を挙げると、通信媒体は、電気的、光学的、ＲＦ、赤外線、音響的またはその他の搬送波で実現されたワイヤードまたはワイヤレス技法を含むが、これらに限定されない。
【００２１】
ツールおよび技法は、コンピュータ可読媒体という一般的な文脈の中で記載される。コンピュータ可読媒体は、コンピューティング環境内でアクセス可能であれば、どのような利用可能な媒体であってもよい。例を挙げると、コンピューティング環境（１００）では、コンピュータ可読媒体はメモリ（１２０）、ストレージ（１４０）およびこれらを組み合わせたものを含むが、これらに限定されない。
【００２２】
上記ツールおよび技法は、コンピュータ可読命令という一般的な文脈の中でも記載される。コンピュータ可読命令はプログラムモジュールに含まれるものであり、ターゲットのリアルまたはバーチャルプロセッサ上でコンピューティング環境において実行される。一般的に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実現するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などを含んでいる。プログラムモジュールの機能は、種々の実施形態で望まれるように結合されることも、プログラムモジュール間で分割されることもある。プログラムモジュールに対するコンピュータ実行可能命令は、ローカルまたは分散コンピューティング環境内で実行されることがある。分散コンピューティング環境では、プログラムモジュールはローカルとリモートの両方のコンピュータ記憶媒体に置かれる。
【００２３】
説明の便宜上、詳細説明では「判断する(determine)」、「選択する(choose)」、「調整する(adjust)」および「動作する(operate)」のような用語を用いてコンピューティング環境におけるコンピュータオペレーションを記載している。これらの用語およびその他の類似用語はコンピュータによって実行されるオペレーションをハイレベルに抽象化したものであり、人間（「ユーザ」など）による行為の実行が明示的に注記されている場合を除き、人間によって実行される行為と混同されるべきでない。これらの用語に対応する実際のコンピュータオペレーションは実装形態に応じて変化する。
【００２４】
ＩＩ．バーチャルソフトウェアアプリケーションデプロイメント構成システムと環境
図２は、バーチャルソフトウェアアプリケーションデプロイメント構成コンピューティング環境（２００）を示すブロック図である。バーチャルソフトウェアアプリケーションデプロイメント構成コンピューティング環境（２００）は本明細書に記載の実施可能な実施形態の１つまたは２つ以上に関連する。コンピューティング環境（２００）はパッケージ化環境（２１０）を含む。パッケージ化環境（２１０）では、非バーチャルアプリケーション（２１２）をパッケージャ(packager)（２１４）によってバーチャルパッケージ（２２０）にパッケージ化する。例えば、パッケージャ（２１４）は、Ｍｉｃｒｏｓｏｆｔ社のＡｐｐ−Ｖ(Application Virtualization)ソフトウェアのようなアプリケーションバーチャル化ソフトウェアからのパッケージャとすることができる。アプリケーション（２１２）をパッケージ化するとき、パッケージャ（２１４）は、構成アイテム（２３２）としてデプロイメント構成に組み込まれるべき１つまたは２つ以上の構成を、非バーチャルアプリケーション（２１２）中で識別する。この識別は自動的に行なわれる（すなわち、構成アイテムを自動的に識別することを要求するユーザ入力によるプロンプトでこの自動的な識別が指示されることがあるとしても、サーチと識別は自動的になっている）。さらに、パッケージャ（２１４）は、構成アイテム（２３２）の１つまたは２つ以上を、デプロイメント時にユーザ入力に応答して設定される必要のある必須(mandatory)の構成アイテムにするべきか、またはデプロイメント時にユーザ入力に応答して設定されることも設定されないこともある任意(optional)の構成アイテムにするべきかどうかを提案する。構成アイテム（２３２）の識別は、構成アイテムを任意にするか、必須にするかどうかの提案の判断と共に、パッケージャ（２１４）のサブシステムにデリゲート(delegate、委譲)されることがある。デプロイメント構成（２３０）は、構成アイテムがロケーション（例：ファイルまたはレジストリのロケーション）別にインデックスされているＸＭＬファイルのように、別ファイルの形体になっていることがある。これと別に、デプロイメント構成（２３０）は、複数のファイル内のように他のなんらかの形体になっていることもあれば、および／または他のアプリケーションデータおよび／またはメタデータも収めた１つまたは２つ以上のファイル内のアトリビュート（属性）であることもある。
【００２５】
構成アイテム（２３２）は、図１に関連して上述した出力デバイス（１つまたは２つ以上）（１６０）のように、ユーザインタフェースデバイスからユーザに提示されることもある。ユーザは、デプロイメント構成（２３０）内の構成アイテムの１つまたは２つ以上を編集するためにユーザ入力を与え、構成アイテム（２３２）はユーザ入力に応答して編集する。例えば、ユーザはこれらのアイテム（２３２）の１つをデプロイメント構成（２３０）から削除すること、これらのアイテム（２３２）の名前またはラベルを変更すること、必須アイテム（２３２）を任意アイテム（２３２）に変更すること、任意アイテム（２３２）を必須アイテム（２３２）に変更すること、あるアイテム（２３２）のデフォルトセッティングを追加、変更または削除すること、またはこれらのアイテム（２３２）の１つまたは２つ以上に対してなんらかの他の変更を行なうこと、を要求するユーザ入力を与える。
【００２６】
以下では、いくつかの特定のタイプの構成アイテム（２３２）について説明する。なお、これらの特定のタイプは単なる例示であり、他のタイプの構成アイテム（３２）が識別されて、これらのタイプのアイテムに加えられるかまたはこれらの代わりにデプロイメント構成（２３０）に含まれることがある。１つの例として、ある構成アイテムはデータベース接続ストリング(database connection string)とすることができる。例えば、パッケージャ（２１４）はデータベース関連アイテムの自動的識別をパッケージャ（２１４）のデータベースサブシステムにデリゲートすることがある。データベースサブシステムはデータベース関連アイテムを探すためにサーチすることがある。例えば、データベースサブシステムは非バーチャルアプリケーション（２１２）がインストールされるときＡＰＩ(application programming interface)コールをモニタして、これらのコールから特定のストリングを抽出する。その後、データベースサブシステムは、構成アイテムを作り出すか、あるいは複数のアプリケーションファイル（例：＊.ｉｎｉおよびｘｍｌファイル）および複数のレジストリエントリのような複数のアプリケーション状態内で、抽出のこれらストリングに関係するアイテムを探す。ストリングが見つかったとき、データベースサブシステムはそのストリングを構成アイテム（２３２）として識別する。また、このサブシステムは、アイテム（２３２）が必須であるか任意であるかどうか、そのアイテムの名前がなんであるか、および、もしあれば、構成アイテム（２３２）に対してどのようなデフォルトセッティングを含めるべきか、といったように構成アイテム（２３２）に関係する他の判断を行なうこともある。パッケージ（２１４）は構成アイテム（２３２）をデプロイメント構成（２３０）に組み込むことができる。この組み込みをデータベースサブシステムによって実行してもよいし、構成アイテム（２３２）をデプロイメント構成（２３０）に組み込むように構成された、なんらかの他のより一般的なコンポーネントによって実行してもよい。例えば、データベース接続ストリング“ｍｙｄｂ”がレジストリエントリ“‘HKLM\foo\app’odbcdatabase=mydb”内で見つかった場合は、パッケージャ（２１４）はエントリ“HKL\foo\app,value odbcdatababs=mydb”をデプロイメント構成（２３０）に格納する。ｘｍｌおよび＊.ｉｎｉエレメントのように他のアイテムに類似のエントリを使用することもできる。例えば、構成アイテム（２３２）がｘｍｌエレメントであるときは、パッケージャ（２１４）はファイルパス(file path)とＸＰａｔｈの式をしてロケーションを識別する。これにより、同じ名前のエレメント間の区別が可能にとなる。別の例として、パッケージャ（２１４）は“approot\config\db.xml element‘db’=mydb”のようなエントリをデプロイメント構成（２３０）に格納してもよい。
【００２７】
別の例として、構成アイテム（２３２）をＮＴサービスのアカウント名とすることができ、そのＮＴサービスを取り扱うパッケージャ（２１４）のサブシステムがそのアカウント名を識別する。アカウント名はデプロイメント構成（２３０）内にＩＤ別にリストされ、そのＩＤはアプリケーションのインスタンス生成時にＮＴサービスコンポーネントによって認識される。例えば、アカウント名はＡＰＩコールによって設定される。その他のタイプの構成アイテムの例として、構成アイテム（２３２）は、Ｍｉｃｒｏｓｏｆｔ社のＩＩＳ(Internet Information Services)によって管理されるユーザアカウントとパスワードを含んでもよい。パッケージャ（２１４）のＩＩＳサブシステムはＩＩＳによって管理されるユーザアカウントとパスワードを認識し、パッケージャ（２１４）はアカウントとパスワードの構成アイテムをデプロイメント構成８２３０）内に組み込む。その構成アイテムは該当ＩＤ（識別子）別にリストアップされる。
【００２８】
パッケージ（２２０）はデプロイメント構成（２３０）を含むことができるので、デプロイメント環境（２４０）に送ることができる。デプロイメント環境（２４０）では、デプロイメント構成（２３０）をユーザに提示することができ、（デフォルトセッティングを確認する、これらのセッティングを編集するといった方法で）デプロイメント構成を設定することができる。必須の構成アイテム（２３２）の場合は、これらのセッティングをユーザ入力に応答して確認および／または編集してからパッケージ（２２０）のデプロイメントに進むことを許可する必要がある。１つの例として、デプロイメント構成（２３０）はファイル（例：ｘｍｌファイル）に含まれることがあるので、そのファイルを編集すべきドキュメントとしてオープンし、表示する。別の方法として、デプロイメント構成のグラフィカル表現を提示してもよい（例：構成アイテム（２３２）を１つまたは２つ以上のダイアログで提示することができる）。ユーザ入力を（例えば、パッケージ（２２０）のデプロイメントを実施するアドミニストレータから）受信し、そのユーザ入力に応答して、編集コンポーネント（２４２）は、ユーザ入力の指示に従ってデプロイメント構成（２３０）内の構成アイテム（２３２）を編集する。デプロイメントコンポーネント（２４４）はパッケージを受け取り、そのパッケージをターゲット環境にデプロイする。デプロイメントコンポーネント（２４４）と編集コンポーネント（２４２）はどちらも同じソフトウェアプロダクトの一部であってもよいし、異なるソフトウェアプロダクトの一部であってもよい。例えば、編集コンポーネント（２４２）およびデプロイメント構成をユーザインタフェースデバイスから提示するコンポーネントはデータセンタマネージャソフトウェアプロダクトの一部とし、他方デプロイメントコンポーネント（２４４）はアプリケーションバーチャル化ソフトウェアプロダクトの一部とすることができる。ＸＭＬベースのデプロイメント構成ファイルを使用する別の例として、編集コンポーネント（２４２）は汎用ＸＭＬエディタのような単純なエディタにすることができ。そのエディタはデプロイメント構成ファイルを直接に表示し、編集するために使用できる。
【００２９】
上述したように、パッケージ（２２０）をターゲット環境（２６０）にデプロイしてインスタンス生成することができる。例えば、ターゲット環境（２６０）におけるインスタンス生成はバーチャルアプリケーションホスト（２６２）によって行なうことできるが、これは編集コンポーネント（２４２）とパッケージ（２４４）も含んだアプリケーションバーチャル化ソフトウェアのクライアントコンポーネントにすることができる。具体的には、アプリケーションは、ターゲット環境（２６０）においてサンドボックス（２６６）内にバーチャルアプリケーションインスタンス（２６４）としてインスタンス生成することができる。デプロイメント構成（２３０）内の構成アイテムはバーチャルアプリケーションインスタンス（２６４）（つまり、インスタンス生成したアプリケーション）において使用することができる。例えば、アプリケーション全体がデプロイされ、その後バーチャルアプリケーションインスタンス（２６４）として構成される。代替の方法として、パッケージ（２２０）のデプロイメントとバーチャルアプリケーションインスタンス（２６４）の構成はインタリーブすることができる。つまり、パッケージ（２２０）の一部をデプロイして構成し、以下同様に、パッケージ（２２０）の他の部分をデプロイし構成することができる。このインタリーブしたデプロイメントと構成は、アプリケーション全体がバーチャルアプリケーションインスタンス（２６４）としてインスタンス生成されるまで続ける。
【００３０】
デプロイメント構成（２３０）を使用することは、種々の方法、すなわち、メタデータを上書きする、および／またはＡＰＩコールを行なってアプリケーションインスタンスを構成するというような種々の方法で行なわれる。この構成は、デプロイメント環境（２４０）で行なわれることもあれば、および／またはターゲット環境（２６０）で行なわれることもある。別の例として、バーチャルアプリケーションはストレージ内に未構成ステートで残しておくことができる。デプロイメント構成情報はランタイムにアプリケーション情報とマージする。例えば、アプリケーションが＊.ｉｎｉファイルをオープンするとき、その＊.ｉｎｉファイルをストレージから読んで、デプロイメント構成アイテム（１つまたは２つ以上）とマージする。マージした結果は消費のためにアプリケーションに渡すことができる。別の例として、ＡＰＩコールをフック(hook)することができ、ランタイムにデプロイメント構成（２３０）から値を戻すようにそのＡＰＩコールの挙動を変更することができる。例えば、レジストリＡＰＩは、デプロイメント構成アイテム（２３２）によってオーバライドされたレジストリ値をバーチャルアプリケーションインスタンス（２６４）のバーチャルプロセスがいつ読み取るかを検出するようにフックすることができる。この様な場合、デプロイメント構成アイテム（２３２）からの値がレジストリ内の値の代わりに戻される。
【００３１】
デプロイメント構成（２３０）の識別、編集および／または使用は、上述したコンピューティング環境（２００）とは異なる環境で行うこともできる。例えば、バーチャルアプリケーションパッケージ（２２０）はパッケージ化環境（２１０）からターゲット環境（２６０）に直接にデプロイされる。当然、バーチャルアプリケーションのパッケージ化、デプロイメント、インスタンス生成および実行はすべて同じ環境で行なわれる。
【００３２】
ＩＩＩ．バーチャルソフトウェアアプリケーションデプロイメント構成技法
次に、いくつかのバーチャルソフトウェアアプリケーションデプロイメント構成の技法について説明する。これらの複数の技法の各々をコンピューティング環境で実行することができる。例えば、各技法は１つのコンピュータシステムにおいて実行される。このコンピュータシステムは少なくとも１つのプロセッサと１つのメモリとを含む。上記メモリは、命令、すなわち、少なくとも１つのプロセッサによって実行されるときに、少なくとも１つのプロセッサに上記技法を実行させる命令をそこに格納している（メモリは命令（例：オブジェクトコード）を格納しており、プロセッサ（１つまたは２つ以上）がこれらの命令を実行するときプロセッサ（１つまたは２つ以上は前記技法を実行している）。同様に、１つまたは２つ以上のコンピュータ可読記憶媒体は、少なくとも１つのプロセッサによって実行されるとき少なくとも１つのプロセッサに上記技法を実行させるコンピュータ実行可能命令を有する。
【００３３】
以下では、図３を参照してバーチャルソフトウェアアプリケーションデプロイメント構成技法について説明する。この技法は、ソフトウェアアプリケーションの１つまたは２つ以上の構成アイテムを自動的に検出（３１０）することを含む。構成アイテム（１つまたは２つ以上）はユーザインタフェースデバイスを使用して提示（３１２）される。ユーザ入力が受信（３１４）され、そのユーザ入力を受信（３１４）したことに応答して、構成アイテム（１つまたは２つ以上）の１つを編集（３１６）する。例えば、構成の変更または編集（３１６）には、構成アイテムを削除し、その構成アイテムに関連する名前またはラベルを変更し、またはその構成アイテムのセッティングを削除、編集または変更することが含まれる。アプリケーションをパッケージ化（３２０）してバーチャルアプリケーションパッケージを形成する。
【００３４】
アプリケーションをパッケージ化（３２０）した後、構成アイテム（１つまたは２つ以上）はユーザインタフェースデバイスを使用して再び提示（３２２）してもよい。また、パッケージ化（３２０）の後、ユーザ入力を受信（３２４）し、１つまたは２つ以上の構成アイテムのセッティングを編集（３２６）することもできる。構成アイテム（１つまたは２つ以上）のその他の特徴もその時点で編集することがある。従って、構成アイテム（１つまたは２つ以上）の提示、ユーザ入力の受信およびそれに応答する編集はパッケージ化（３２０）が完了する前（例：パッケージ化の時点に）に行なわれることもあれば、および／またはパッケージ化（３２０）の完了の後（例：デプロイメントの時点に）に行なわれることもある。さらに、パッケージをデプロイしてアプリケーションをインスタンス生成することがある。構成アイテム（１つまたは２つ以上）の１つまたは２つ以上のセッティングを含むことのあるデプロイメント構成はインスタンス生成したアプリケーションにおいて使用（３４０）することができる。パッケージを再びデプロイすると判断（３５０）された場合は、構成アイテム（１つまたは２つ以上）の提示（３２２）、ユーザ入力の受信（３２４）、構成アイテムのセッティング（１つまたは２つ以上）の編集（３２６）、パッケージのデプロイ（３３０）、およびデプロイメント構成の使用（３４０）を再び行なう。
【００３５】
この方法は、第２のデプロイメント構成をインスタンス生成したアプリケーションにおいて使用して構成アイテム（１つまたは２つ以上）のセッティング（１つまたは２つ以上）を変更することを含むこともできる。この第２のデプロイメント構成を使用することは、インスタンス生成したアプリケーションが当初のデプロイメント構成と共に構成された後で行なうことができる。この第２のデプロイメント構成は第１のデプロイメント構成と異なることができるので、インスタンス生成したアプリケーションは第２のデプロイメント構成を使用することで再構成することができる。さらに、この方法は、アイテム（１つまたは２つ以上）を識別するユーザ入力に応答してソフトウェアアプリケーションの１つまたは２つ以上の構成アイテムを検出することを含むこともできる。デプロイメント構成はこれらの手操作で検出された構成アイテム（１つまたは２つ以上）の１つまたは２つ以上に対するセッティングをさらに含んでもよい。
【００３６】
従って、同じパッケージをデプロイしてアプリケーションを何度もインスタンス生成し、異なるデプロイメント構成セッティングがそのアプリケーションの異なるインスタンスにおいて使用されることがある。例えば、アプリケーションは、異なった構成のターゲット環境の異なるデプロイメント構成セッティングをもつ複数のターゲット環境でインスタンス生成されるようにデプロイされることがある。従って、バーチャルアプリケーションパッケージをデプロイ（３３０）してアプリケーションをインスタンス生成することは、バーチャルアプリケーションパッケージをデプロイしてアプリケーションをそのアプリケーションの第１のインスタンスをインスタンス生成することを含むことができ、およびデプロイメント構成を使用（３４０）することは、デプロイメント構成をアプリケーションの第１のインスタンスにおいて使用することを含むことができる。この方法は、バーチャルアプリケーションソフトウェアをデプロイ（３３０）してアプリケーションをそのアプリケーションの第２のインスタンスとしてインスタンス生成し、デプロイメント構成をアプリケーションの第２のインスタンスにおいて使用（３４０）することをさらに含むことができる。また、デプロイメント構成をアプリケーションの第１のインスタンスにおいて使用（３４０）すること、およびデプロイメント構成をアプリケーションの第２のインスタンスにおいて使用（３４０）することは、構成アイテム（１つまたは２つ以上）の少なくとも１つの異なるセッティングをアプリケーションの第１と第２のインスタンスにおいて使用することを含むことができる。
【００３７】
次に図４を参照して、別のバーチャルソフトウェアアプリケーションデプロイメント構成技法について説明する。この技法は、デプロイメント構成の１つまたは２つ以上の構成アイテムを検出（４１０）し、ソフトウェアアプリケーションをパッケージ化（４２０）してソフトウェアパッケージを形成することを含む。この検出（４１０）はパッケージ化（４２０）の完了前に行なう。例えば、この検出（４１０）はパッケージ化（４２０）の期間に実行されることも、および／またはパッケージ化（４２０）以前に実行されることもある。なお、この検出（４１０）は、パッケージをスキャンしてデプロイメント構成ドキュメントを識別するおよび／または作成するツールを使用するといった方法によって、パッケージ化４２０）が完了した後実行される。この技法は、バーチャルアプリケーションパッケージのデプロイメント構成をパッケージ化（４２０）した後で設定（４３０）することを含む。デプロイメント構成を設定（４３０）することは、デプロイメント構成内の１つまたは２つ以上を編集し（例えば、構成アイテム（１つまたは２つ以上）のセッティング（１つまたは２つ以上）を編集することにより）および／またはデプロイメント構成内の既存構成アイテム（１つまたは２つ以上）を確認することを含むことができる。例えば、デプロイメント構成を設定（４３０）することは、ユーザ入力を受信したことに応答して行なうことができる。構成アイテム（１つまたは２つ以上）の少なくとも１つは任意または必須としてマークされていることがある。デプロイメント構成を設定（４３０）することは、構成アイテム（１つまたは２つ以上）の各々についてそのアイテムが必須としてマークされているかどうかを判断し、もしそうであれば、そのアイテムのユーザ入力を要求してからバーチャルアプリケーションパッケージをデプロイすることを含むことができる。例えば、このようなユーザ入力は既存のデフォルトセッティングを確認し、既存のデフォルトセッティングを変更し、またはデフォルトセッティングが存在したい場合にはセッティングを入力することがある。さらに、バーチャルアプリケーションパッケージをデプロイ（４４０）してアプリケーションをインスタンス生成することができ、デプロイメント構成をインスタンス生成したアプリケーションにおいて使用（４５０）することができる。
【００３８】
パッケージは、可能ならば異なるデプロイメントに対して異なるデプロイメント構成を使用してなんどもデプロイされることがある。従って、デプロイメント構成は第１のデプロイメント構成にすることができる。バーチャルアプリケーションパッケージをデプロイ（４４０）してアプリケーションをインスタンス生成することは、バーチャルアプリケーションパッケージをデプロイしてアプリケーションの第１のインスタンスにおいてそのアプリケーションをインスタンス生成することを含むことができる。さらに、デプロイメント構成をインスタンス生成したアプリケーションにおいて使用（４５０）することは、第１のデプロイメント構成をアプリケーションの第１のインスタンスにおいて使用することを含むことができる。さらに、この技法は、ソフトウェアアプリケーションをパッケージ化した後バーチャルアプリケーションパッケージの第２のデプロイメント構成を設定し、バーチャルアプリケーションパッケージをデプロイしてアプリケーションをそのアプリケーションの第２のインスタンスにおいてインスタンス生成し、その第２のデプロイメント構成をアプリケーションの第２のインスタンスにおいて使用することを含むことができる。アプリケーションの第１のインスタンスは第１のマシン構成をもつ第１のマシン上に置くことができ、アプリケーションの第２のインスタンスは第２のマシン構成をもつ第２のマシン上に置くことができる。別の方法として、アプリケーションの第１と第２のインスタンスは同じマシン上に置かれることも、共に同じ構成をもつ異なるマシン上に置かれることもあり得る。
【００３９】
次に図５を参照して、さらに別のバーチャルソフトウェアアプリケーションデプロイメント構成技法について説明する。この技法はソフトウェアアプリケーションの１つまたは２つ以上の構成アイテムを自動的に検出（５１０）することを含む。この検出（５１０）の一部または全部を自動的に行なうことができる。構成アイテム（１つまたは２つ以上）をユーザインタフェースデバイスから提示（５２０）し、構成アイテム（１つまたは２つ以上）の少なくとも１つを変更（５３０）する。この変更（５３０）は変更を指示するユーザ入力を受信したことに応答して行なう。
【００４０】
アプリケーションをパッケージ化（５４０）してバーチャルアプリケーションパッケージを形成することができるが、この提示（５２０）と変更（５４０）はパッケージ化（５４０）が完了する前に行なう。さらに、構成アイテム（１つまたは２つ以上）は、アプリケーションをパッケージ化（５４０）した後ユーザインタフェースデバイスを使用して提示することができる。構成アイテム（１つまたは２つ以上）のうちの選択した構成アイテムに対する変更を指示するユーザ入力に応答して、その選択した構成アイテムを変更（５６０）する。バーチャルアプリケーションパッケージをデプロイ（５７０）してアプリケーションをインスタンス生成し、構成アイテム（１つまたは２つ以上）をそのインスタンス生成したアプリケーションにおいて使用（５８０）する。
【００４１】
構造上の特徴および／または方法上のアクトに特有の表現で主題を説明してきたが、当然に理解されるように請求項に記載の主題は上述した特定の特徴またはアクトに必ずしも限定されない。むしろ、上述した特定の特徴およびアクトは請求項を実現する例示形態として記載されている。
【図１】
2013522727.tif 000003
【図２】
2013522727.tif 000004
【図３】
2013522727.tif 000005
【図４】
2013522727.tif 000006
【図５】
2013522727.tif 000007
【国際調査報告】
2013522727.tif 000008
2013522727.tif 000009