(57)【要約】【課題】  カスタマイズ可能で構成可能な再使用可能アプリケーションを構築し、展開し、保守し、管理する。【解決手段】  本発明のフレームワークは厳密なＩＤを有するマニフェストとして宣言的に定義される。アプリケーションマニフェストは、アプリケーションをセキュリティで保護された形で構成し、カスタマイズする適切な方法を宣言でき、そのような権利を許可された関係者だけに与える能力を提供する。本発明のさらなる態様は、カスタマイズ済みのアプリケーションのＩＤを有するマニフェストを使用してアプリケーション展開を宣言的に定義するフレームワークを提供する。そのようなフレームワークは、システム、状態インフラストラクチャ、セットアッププログラム、作成ツール、管理ツールが、確固とした合成アプリケーションＩＤを使用してカスタマイズ済みのアプリケーションを展開し、インストールし、保守し、管理する方法を提供する。【選択図】  図３
2005129047.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションに関連するアプリケーションマニフェストスキーマデータ構造を格納しているコンピュータ可読メディアであって、該データ構造が、
アプリケーションマニフェスト情報を含むスキーマを示す要素を表すデータを含む第１のデータフィールド、および、
アプリケーション識別子を表すデータを含む第２のデータフィールドを有することを特徴とするコンピュータ可読メディア。
【請求項２】
カスタマイズ済みのアプリケーションに関連する展開マニフェストスキーマデータ構造を格納しているコンピュータ可読メディアであって、該データ構造が、
展開マニフェスト情報を含むスキーマを示す要素を表すデータを含む第１のデータフィールド、および、
前記カスタマイズ済みのアプリケーションを表すデータを含む第２のデータフィールドを有することを特徴とするコンピュータ可読メディア。
【請求項３】
カスタマイズ済みのアプリケーションに関連するアプリケーション識別子データ構造を格納しているコンピュータ可読メディアであって、該データ構造が、
１つ以上の展開マニフェストデータ構造を表すデータを含む第１のデータフィールド、および、
アプリケーションマニフェストデータ構造を表すデータを含む第２のデータフィールドを有することを特徴とするコンピュータ可読メディア。
【請求項４】
コンピュータ可読メディアに含まれる命令により実行される、アプリケーションをセキュリティで保護された形でカスタマイズするための方法であって、
展開マニフェストファイルを獲得するステップ、
前記展開マニフェストファイルから選択可能な展開オプションを特定するステップ、および、
許されたアプリケーションカスタマイズ活動を実行するステップを含むことを特徴とする方法。
【請求項５】
請求項４に記載の方法において、
前記特定するステップは、許されたカスタマイズ活動を特定することを含むことを特徴とする方法。
【請求項６】
請求項４に記載の方法において、
前記特定するステップは、アプリケーションカスタマイズを実行することを許可された関係者を特定することを含むことを特徴とする方法。
【請求項７】
コンピュータ可読メディアに含まれる命令により実行される、カスタマイズ済みのアプリケーションを起動するための方法であって、
アプリケーションＩＤを獲得するステップ、
前記アプリケーションＩＤを解決するステップ、
前記アプリケーションＩＤに対応するコンポーネントを探し出すステップ、および、
前記コンポーネントを呼び出して前記カスタマイズ済みのアプリケーションを起動するステップを含むことを特徴とする方法。
【請求項８】
コンピュータ可読メディアに含まれる命令により実行される、カスタマイズ済みのアプリケーションに関するポリシーステートメントを実施するための方法であって、
前記カスタマイズ済みのアプリケーションのアプリケーションＩＤを定義するステップ、および、
前記アプリケーションＩＤを使用して１つ以上のアプリケーションをポリシーステートメントの対象範囲とするステップを含むことを特徴とする方法。
【請求項９】
コンピュータ可読メディアに含まれる命令により実行される、カスタマイズ済みのアプリケーションを特定するための方法であって、
前記カスタマイズ済みのアプリケーションが実行されているコンテキストを特定するステップ、および、
実行されている前記カスタマイズ済みのアプリケーションの前記コンテキスト内からアプリケーションＩＤを獲得するステップを含むことを特徴とする方法。
【請求項１０】
コンピュータ可読メディアに含まれる命令により実行される、システムにインストール済みのアプリケーションを特定するための方法であって、
アプリケーション管理アプリケーションプログラミングインタフェース（ＡＰＩ）を呼び出すステップ、および、
該ＡＰＩから前記インストール済みのアプリケーションのアプリケーションＩＤを獲得するステップを含むことを特徴とする方法。
【請求項１１】
コンピュータ可読メディアに含まれる命令により実行される、システムにインストールされたアプリケーションをカスタマイズするための方法であって、
展開マニフェストデータ構造を定義するステップ、
該展開マニフェストを前記アプリケーションに関連付けるステップ、および、
前記展開マニフェスト内のカスタマイズデータを指定するステップを含むことを特徴とする方法。
【請求項１２】
請求項１１に記載の方法において、
前記アプリケーションのビットは不変に保たれることを特徴とする方法。
【請求項１３】
請求項１１に記載の方法において、
前記アプリケーションはカスタマイズ済みのアプリケーションであることを特徴とする方法。
【請求項１４】
請求項１３に記載の方法において、
前記アプリケーションのビットは不変に保たれることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステムソフトウェアアプリケーションに関し、より詳細には、カスタマイズ可能で構成可能な再使用可能アプリケーションに関する。
【背景技術】
【０００２】
今日のソフトウェアアプリケーションは、通常、ある程度のカスタマイズおよび／または構成が可能である。カスタマイズは、製造業者からのアプリケーションの出荷前に行うことが可能である。例えば、アプリケーションのローカライズバージョン（すなわち、英語版、ドイツ語版、日本語版など）を、発行および頒布前にソフトウェア開発者が作成することができる。カスタマイズは、サービスパックまたは他のソフトウェア更新に関してそうであるように、ユーザが製品をインストールした後でも可能である。また、ユーザが、一般に、色スキームまたはサウンドスキーム、アイコン、スタートアップスクリーンなどのセッティングおよびオプションをインストール済みのソフトウェア内部で構成することもできる。
【０００３】
しばしば、アプリケーションの開発者は、自分が展開するアプリケーションをカスタマイズし、構成する必要がある。例えば、情報技術管理者は、自分のネットワークドメイン内で使用されているアプリケーションの外観および／または特徴のセットを標準化する必要がある可能性がある。別の例では、インターネットサービスプロバイダが、加入者向けのアプリケーションのブランドバージョン（branded version）を展開することを所望する可能性がある。通常、このカスタマイズは、アプリケーションのセットアップを変更すること、またはセットアップ実行（setup run）後に展開済みのアプリケーションの状態を別のカスタムプログラムを使用して変更することにより、行うことができる。結果として得られたマシンの状態は、実際、その時点で、アプリケーションがカスタマイズ済みの形態になることであり得るが、そのカスタマイズ済みのアプリケーションを操作する確固とした定義またはハンドルは存在しない。
【０００４】
前述の状況には問題がある可能性がある。というのは、アプリケーションがカスタマイズされ、元のアプリケーションＩＤを失って無関係の新しいＩＤを有するようになるか、あるいはカスタマイズ済みのＩＤではなく、元のＩＤを依然として有していると、カスタマイズ済みのアプリケーションを元のアプリケーションのカスタマイズされた変種であることを明らかにする方法がない。このため、アプリケーションのライフサイクル全体（すなわち、アプリケーションをインストールすること、カスタマイズすること、更新すること、実行すること、および廃棄（retire）すること）を通じて、アプリケーションを維持し、必要な通りに、つまり、元のアプリケーションに従って機能させることができることを確実にすることが、特に困難になる。
【０００５】
【特許文献１】米国特許出願第０９／６０５，６０２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上に鑑みて、本発明は、カスタマイズ可能で構成可能な再使用可能アプリケーションを構築し、展開し（deply）、保守し（service）、管理するフレームワークを提供する。具体的には、本発明は、厳密なＩＤ（strong identity）（説明するすべてに関して全体が本明細書に組み込まれている２０００年６月２８日に出願した「共有名」という名称の（特許文献１）を参照されたい）を必須としてではなく含むＩＤを有するマニフェストとして、アプリケーション（すなわち、実行コンテキストをコントロールし、アクチベートされることが可能なコンポーネント）が宣言的に定義されるフレームワークを提供する。アプリケーションマニフェストは、アプリケーションをセキュリティで保護された形で構成する、またはカスタマイズする適切な方法を宣言することができ、そのような権利を許可された関係者（parties）だけに与える能力を提供する。
【課題を解決するための手段】
【０００７】
本発明の別の態様は、宣言的に定義されるアプリケーション展開のフレームワークも、カスタマイズ済みのアプリケーションのＩＤを有するマニフェストとして提供する。そのようなフレームワークは、システム、状態インフラストラクチャ、セットアッププログラム、許可ツール、管理ツール、およびその他の関係者が、確固とした合成アプリケーションＩＤを使用してカスタマイズ済みのアプリケーションを展開し、インストールし、保守（service）し、管理する方法を提供する。カスタマイズ済みのアプリケーションは、さらにカスタマイズすることもできる。
【０００８】
アプリケーションマニフェストおよび展開マニフェスト（deployment manifest）は、ランタイムを含め、展開済みのアプリケーションのライフサイクル全体を通じて利用可能にすることができる。複数のそのようなカスタマイズ済みのアプリケーションが同一範囲（すなわち、ユーザ、マシン、ネットワークなど）内で利用可能であることを可能にするためのサポートにより、サイドバイサイドコンポーネント（side by side components）とほぼ同様に真の再使用可能アプリケーションを有することが可能になる。
【発明を実施するための最良の形態】
【０００９】
添付の特許請求の範囲は、本発明の特徴を詳細に記載しているが、本発明、並びに本発明の目的および利点は、添付の図面と併せて理解される以下の詳細な説明からよく理解することができる。
【００１０】
以下の説明では、本発明は、特に明記しない限り、１つ以上のコンピュータによって実行される操作の作用および記号表現に関して説明する。このため、ときとして、コンピュータが実行するものとして述べるそのような作用および操作には、コンピュータの処理装置による構造化された形態のデータを表す電気信号の操作が含まれることを理解されたい。この操作は、データを変形するか、またはコンピュータのメモリシステムの中の場所にデータを保持し、この変形または保持により、当業者がよく理解している形でコンピュータの動作が再構成されるか、またはそれ以外の形で変更される。データが保持されるデータ構造は、データのフォーマットによって定義された特定のプロパティを有するメモリの物理的場所である。しかし、本発明を以上の文脈で説明しているが、限定することを意図するものではない。というのは、本明細書で説明する作用および操作の多くは、ハードウェアで実施することもできることが当業者には認められるからである。
【００１１】
同様の符号が同様の要素を指している図面を参照すると、本発明が、適切なコンピューティング環境において実施されているのが示されている。以下の説明は、本発明の図示した実施形態に基づいており、本明細書で明示的に説明しない代替の実施形態に関して本発明を制限するものと受けとめられるべきではない。
【００１２】
Ｉ．典型的な環境
図１を参照すると、本発明は、接続されたコンピュータネットワーク上のネットワークノード間における通信に関する。ネットワークノードのそれぞれは、多くの異なるコンピュータアーキテクチャの１つを有することが可能なコンピュータ内部に存在する。説明の目的で、図１は、それらのデバイスに関して使用可能な典型的なコンピュータアーキテクチャの概略図を示している。図示のアーキテクチャは適切な環境の一例に過ぎず、本発明の用途または機能の範囲に関して何ら限定を示唆するものではない。また、コンピューティングデバイスが、図１に例示したコンポーネントのいずれか１つ、またはいずれかの組み合わせに関連する依存関係または要件を有するものと解釈してはならない。本発明は、他の多数の汎用または専用のコンピューティングまたは通信の環境または構成で機能する。本発明で使用するのに適した周知のコンピューティングシステム、コンピューティング環境、およびコンピューティング構成の例には、モバイル電話機、ポケットコンピュータ、パーソナルコンピュータ、サーバ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ミニコンピュータ、メインフレームコンピュータ、並びに以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境が含まれるが、以上には限定されない。
【００１３】
最も基本的な構成では、コンピューティングデバイス１００は、通常、少なくとも１つの処理装置１０２、およびメモリ１０４を含む。メモリ１０４は、揮発性（ＲＡＭなどの）、不揮発性（ＲＯＭおよびフラッシュメモリなどの）、またはこの２つの何らかの組み合わせとすることができる。この最も基本的な構成は、図１に破線１０６で示している。
【００１４】
コンピューティングデバイス１００は、追加の特徴および機能を有することが可能な記憶メディアデバイス１０８および１１０も含むことが可能である。例えば、記憶メディアデバイスには、ＰＣＭＣＩＡカード、磁気ディスクおよび光ディスク、磁気テープを含むが、以上には限定されない追加のストレージ（リムーバブル、およびリムーバブルでない）が含まれることが可能である。そのような追加のストレージを図１にリムーバブルなストレージ１０８およびリムーバブルでないストレージ１１０で示している。コンピュータ記憶メディアには、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性メディアおよび不揮発性メディア、リムーバブルなメディアおよびリムーバブルでないメディアが含まれる。メモリ１０４、リムーバブルなストレージ１０８、およびリムーバブルでないストレージ１１０はすべて、コンピュータ記憶メディアの例である。コンピュータ記憶メディアには、ＲＡＭ，ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、その他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク、その他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、その他の磁気記憶装置、並びに所望の情報を格納するのに使用することができ、コンピューティングデバイスがアクセスすることができる他のあらゆるメディアが含まれるが、以上には限定されない。
【００１５】
コンピューティングデバイス１００は、デバイス１００が他のデバイス群と通信することを可能にする通信チャネル１１２も含むことができる。通信チャネル１１２は通信メディアの例である。通信メディアは、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構でコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを実体化し、あらゆる情報配信メディアを含む。「変調されたデータ信号」という用語は、信号内に情報を符号化するような形で特性の１つ以上がセットされまたは変更されている信号を意味する。例として、限定としてではなく、通信メディアには、有線ネットワークおよび直接有線接続などの有線メディア、並びに音響メディア、無線メディア、赤外線メディア、および他の無線メディアなどの無線メディアが含まれる。本明細書で使用するコンピュータ可読メディアという用語は、記憶メディアと通信メディアをともに含む。コンピューティングデバイス１００は、キーボード、マウス、ペン、音声入力コンポーネント、およびタッチ入力デバイスなどの入力コンポーネント１１４も有する。出力コンポーネント１１６には、スクリーンディスプレイ、スピーカ、プリンタ、並びにこれらを駆動するレンダリングモジュール（しばしば「アダプタ」と呼ばれる）が含まれる。コンピューティングデバイス１００は、電源１１８を有する。以上すべてのコンポーネントは、当技術分野で周知であり、本明細書で詳細に説明することはしない。
【００１６】
ＩＩ．カスタマイズ可能で構成可能な再使用可能アプリケーションを構築し、展開し、保守し、管理するフレームワーク
本発明は、カスタマイズ可能で構成可能な再使用可能アプリケーションを構築し、展開し、保守し、管理するフレームワークを対象とする。簡単に述べると、アプリケーションは、ホストが許す通り、実行コンテキストをコントロールし、アクチベートされることが可能な１つ以上のコンポーネントのセットである。コンポーネントは、アトミックな不変のファイルのセットとして説明することができる。本明細書で使用する「コントロール（control）」は相対的であることに留意されたい。つまり、アプリケーションでさえコントロールすることができないいくつかのファクタ（例えば、マシン全体のコンポーネントの保守／セッティングなど）が存在する。また、アプリケーションに異なる保証とレベルのコントロールおよび分離をもたらす、異なるレベルのコンテキスト（例えば、マシン、プロセス、ａｐｐｄｏｍａｉｎ）が存在する。さらに、アプリケーションは、必ずしも実行可能ファイルである必要はなく、独自のプロセスを実行しない可能性があり、むしろ、アプリケーションドメイン内で実行されることが可能である。図２を参照すると、典型的なアプリケーションアーキテクチャが示されている。ＣｈａｔＡｐｐｌｉｃａｔｉｏｎは、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎ．ＥＸＥ２００およびＣＡＰＩＣＯＭＭ．ＤＬＬ２０２から成る。
【００１７】
共有名スキーム（説明するすべてに関して全体が本明細書に組み込まれている２０００年６月２８日に出願した「共有名（Shared Names）」という名称の出願第０９／６０５６０２号明細書を参照されたい）を使用することにより、コンピュータの固有識別子、つまりコンポーネントＩＤを導出することができる。コンポーネントＩＤは、コンポーネント名、バージョン、および公開キートークンを含む。アプリケーションＩＤも同様に導出することができる。アプリケーションＩＤは、パス上のコンポーネント群のコンポーネントＩＤの順序付けされたリストとして表わされたアプリケーションまたは展開の依存関係グラフの中のパスである（すなわち、１つ以上のアプリケーションをカスタマイズするコンポーネントが、自らと自らのアプリケーション群が含むアプリケーションおよびその他のコンポーネントの周囲の名前解決範囲を確立する）。そのパス上の最後のコンポーネントは、普通、アプリケーションである。
【００１８】
ＣｈａｔＡｐｐｌｉｃａｔｉｏｎの例に関するマニフェストを定義することが可能である。マニフェストは、コンポーネントに関するメタデータを含む作成済みのドキュメントである。有効マニフェストは、コンポーネントのいずれかに関して所与のシステム上で有効である可能性がある（コンポーネント束縛）ポリシーステートメントを考慮した、すべての構成コンポーネントおよび依存コンポーネントのマニフェストの内容を含む、アプリケーションまたは展開のマニフェスト内容の集約（compilation）である。他方、マージされた(merged)アプリケーションマニフェストは、いずれのコンポーネント束縛ポリシーも考慮せず、いずれの外部／前提条件の依存関係（すなわち、ＯＳコンポーネントに対する）も考慮しない、すべての構成コンポーネントのマニフェストの内容を含むアプリケーションまたは展開のマニフェスト内容の集約である。
【００１９】
図２の典型的なアプリケーションアーキテクチャを再び参照すると、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎは、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎ．ＥＸＥを構成ファイル（constituent  file）としてリストアップし、そのファイルのハッシュを含むマニフェストを有している。このマニフェストは、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎ．ＥＸＥが実行されるのにインストール済み／利用可能でなければならない依存関係として、ＣＡＰＩＣＯＭＭ．ＤＬＬもリストアップしている。有効マニフェストは、とりわけ、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎ．ＥＸＥおよびＣＡＰＩＣＯＭＭ．ＤＬＬのＩＤ、並びにそれらのファイルハッシュを含む。マージされたアプリケーションマニフェストは、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎのマニフェストの内容だけから成る。このため、ＣＡＰＩＣＯＭＭ．ＤＬＬが保守される場合、有効マニフェストは変わるが、マージされたアプリケーションマニフェストは変わらない。アプリケーションＩＤは、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎ．ＥＸＥコンポーネントのＩＤ（ＣｈａｔＡｐｐｌｉｃａｔｉｏｎ．ＥＸＥの依存関係グラフの中の単純な（trivial）単一ノードパス）であり、マージされたアプリケーションマニフェストと同様に、ＣＡＰＩＣＯＭＭ．ＤＬＬが保守（service）された場合でも、変わらない。
【００２０】
１つの好ましい実施形態では、宣言型の拡張マークアップ言語（ＸＭＬ）ベースのスキームを使用して、アプリケーションマニフェストを実装することができる。典型的な実装は、以下の通りである。
【００２１】
【表１−１】
2005129047.tif 000003
【００２２】
【表１−２】
2005129047.tif 000004
【００２３】
【表１−３】
2005129047.tif 000005
【００２４】
前述の通り、多くのアプリケーションは、アプリケーションを実質的にカスタマイズすること、またはブランド化することさえ可能にするセッティングを公開している。多くのシナリオでは、同一マシン上に同一のアプリケーションの複数のカスタマイズをインストールできるようにすることさえ必要である可能性がある。本発明は、従来の技術を使用してそのような結果を実現することに関連する困難を克服するのに特に役立つ可能性がある。図３には典型的な展開シナリオ（deployment scenario）が示されている。このシナリオでは、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎが、現時点で２つのサイト／ディプロイヤ（deployer）ＭＳＮＢＣ３０２とＭＳＮ３００でカスタマイズされている。それらのシナリオを可能にするため、アプリケーションＩＤは、コードＩＤ以上の追加情報を担持する。つまり、カスタマイズ（「展開（deployment）」）には、別個のマニフェスト（「展開マニフェスト（deployment manifest）」）を介して独自のＩＤ（展開ＩＤ）が割り当てられる。以上の図式を拡張して、次々の展開マニフェストを使用してグラフにさらなるカスタマイズを追加することができる。
【００２５】
１つの好ましい実施形態では、宣言型のＸＭＬベースのスキームを使用して展開マニフェストを実装することができる。典型的な実装は、以下の通りである。
【００２６】
【表２−１】
2005129047.tif 000006
【００２７】
【表２−２】
2005129047.tif 000007
【００２８】
上記の例は、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎをブランド化し、ＭＳＮらしく見えるようにするように、ＣｈａｔＡｐｐｌｉｃａｔｉｏｎのインストールおよびＵＩ体験をＭＳＮＣｈａｔ３００がどれだけカスタマイズすることができるかを示している。またこの例は、ＭＳＮＣｈａｔ３００が、優先する設定ファイル（overriding configuration file）を介してアプリケーションをどのように構成できるかも示唆している。例えば、設定ファイルが、ＢａｃｋｇｒｏｕｎｄＣｏｌｏｒ＝青というセッティングを有する場合、展開によって与えられた設定ファイルが、これに優先してＢａｃｋｇｒｏｕｎｄＣｏｌｏｒ＝白と指示することができる。さらに、この例は、以上に示したＣａｐｉＣｏｍｍ用の仏語サテライトなどの言語サテライトをどのように追加することができるかも示している。
【００２９】
最後に、システムは、証明書およびその他の権利管理技術を使用して、ディプロイヤが、容認できる／アプリケーション作成者が許可した形でだけアプリケーションをカスタマイズすることを確実にすることができる。前述の例では、これを例示するありふれた形は、アプリケーションと展開がともに、アセンブリＩＤの中の公開キートークン属性で証明される同一の「公開キー（public key）」を有することである。これにより、アプリケーションと展開が信頼関係を有することが確実になる。
【００３０】
ユーザがショートカットを起動した場合、ショートカットは完全なアプリケーションＩＤ（ＡｐｐＩＤ）を含む。これは、アプリケーションがカスタマイズされた場合、アプリケーションＩＤが、アプリケーションはもちろん展開の完全なＩＤを含むことを意味する。例えば、以下の通りである。
【００３１】
【表３】
2005129047.tif 000008
【００３２】
そのようなＩＤを名前解決するため、バインダは、ＩＤの各セグメントを調べ、コンポーネントが同期しているかどうか（すなわち、コンポーネントがサーバセマンティクスと同期しているかどうか）を判定し、中央サービス提供（servicing）ポリシーが存在する場合、コンポーネントの適切なバージョンに名前解決する。このプロセスは、それぞれの個々のコンポーネントに関するサービスを確実にする。次に、そのＩＤを使用して、アプリケーションが、完全なＩＤを表すアプリケーションのランタイムインスタンスで起動される。そのＩＤをＡｐｐＩＤと呼ぶことができる。ＡｐｐＩＤは、カスタマイズされたアプリケーションを構成しやすくし、管理しやすくすることができるように、状態インフラストラクチャ、信頼マネージャなどのエンティティがランタイムに使用することができる。ＡｐｐＩＤを使用する可能性がある操作には、以下が含まれる。
・アクチベート：アプリケーションＩＤを所与としてアプリケーションを起動すること
・セキュリティ：アプリケーションに関するポリシーステートメントがアプリケーションＩＤ（参照）を使用して１つ以上のアプリケーションをポリシーステートメントの対象範囲とする
・識別：実行中のアプリケーションのコンテキスト内からアプリケーションＩＤを特定すること、および
・管理：システムにインストール済みのアプリケーションを特定する−アプリケーション管理ＡＰＩが、アプリケーションＩＤ（定義）を戻す：アンインストールが、アプリケーションＩＤ（定義）を要する（take）など。
【００３３】
バインダ自体も、マニフェストから、アセンブリおよび他のＤＬＬの正しいバージョンにバインドするサポート、並びに正しいバージョンの場所情報を提供するために、ＡｐｐＩＤ、並びにＩＤの各セグメントに関連するマニフェストのセット（ＡｐｐＩＤを使用して、「有効マニフェスト（effective manifest）」および「マージされたアプリケーションマニフェスト（merged application manifest）」を獲得することができ、したがって、そのような構造内部のあらゆるデータを獲得することができる）を使用することができる。バインダは、カスタマイズされたアプリケーションの正しいバインド環境を選択する際に非常に選択的である能力を有する。これにより、システムは、１つの展開（またはカスタマイズされたアプリケーション）が、同一のアプリケーションまたは完全に異なるアプリケーションの他のカスタマイズされたバージョンに干渉せずに、コンポーネントのバージョンを使用することができるようになる。このシナリオは、基礎にあるコンポーネント群が分離可能であり得ることに依拠する。
【００３４】
本発明の原理を適用することができる多くの可能な実施形態に鑑みて、図面に関連して本明細書で説明した実施形態は、単に例示することを意図しており、本発明の範囲を限定するものと理解すべきでないことを認識されたい。例えば、パフォーマンス上の理由で、本発明のフレームワークをソフトウェアではなく、ハードウェアで実施してもよい。したがって、本明細書で説明した本発明は、特許請求の範囲に含まれ得るすべてのそのような実施形態、および等価な形態を企図している。
【図面の簡単な説明】
【００３５】
【図１】本発明のフレームワークの実施ができる典型的なコンピュータアーキテクチャを示す概略図である。
【図２】本発明のフレームワークの実施ができる典型的なソフトウェアアプリケーションを示す概略図である。
【図３】本発明のフレームワークの実施ができる典型的な展開を示す概略図である。
【符号の説明】
【００３６】
１０２  処理装置
１０４  メモリ
１０８  リムーバブルなストレージ
１１０  リムーバブルでないストレージ
１１２  通信チャネル
１１４  入力コンポーネント
１１６  出力コンポーネント
１１８  電源
１２０  ネットワーク
２００  ＣｈａｔＡｐｐｌｉｃａｔｉｏｎ．ＥＸＥ
２０２  ＣＡＰＩＣＯＭＭ．ＤＬＬ
３００  ＭＳＮＣｈａｔ
【図１】
2005129047.tif 000009
【図２】
2005129047.tif 000010
【図３】
2005129047.tif 000011