(57)【要約】  仮想環境内でオペレーションされるアプリケーションは、様々なソフトウェア構成要素を含むパッケージで構成することができる。各ソフトウェア構成要素またはリソースは、構成要素を上書きするかまたは修正するための指示子を含む、特定の名前及び他のメタデータを有することができる。ポリシーは、特定のソフトウェア構成要素に対するあらゆる変更を指示子に基づいて保存し、かつ取り出すことができる方法を定義することができる。１つまたは複数の変更された構成要素のセットを、生成し、保持し、再適用して、オリジナルのパッケージに基づくアプリケーションのカスタマイズされたバージョンを作成することができる。アプリケーションは、仮想アプリケーション環境内でまたは専用の仮想マシン環境内でオペレーションすることができる。
2011529606.tif 000002
【特許請求の範囲】
【請求項１】
複数のリソースを含む第１のアプリケーションパッケージを作成するステップ（３０２）であって、前記複数のリソースの各々は、少なくともユーザ設定の指定及び一意の識別子を定義するリソースのメタデータを有し、前記第１のアプリケーションパッケージは、第１のバージョンを有する、ステップと、
仮想環境において前記第１のアプリケーションパッケージを実行するステップ（３０６）と、
前記実行するステップの間に第１のリソースに対する変更を検出するステップ（３０８）であって、前記第１のリソースは、前記複数のリソースのうちの１つである、ステップと、
前記第１のリソースに関連付けられた前記メタデータを評価して前記変更を保存すべきであると判断するステップ（３１０）と、
変更されたリソースに前記変更を保存するステップ（３１２）であって、前記変更されたリソースは、前記変更されたリソースは、前記第１のアプリケーションが実行されると前記第１のリソースの代わりに用いられるように前記第１のリソースと関連している、ステップと
を含むことを特徴とする方法。
【請求項２】
第２の複数のリソースを含む前記アプリケーションパッケージの第２のバージョンを受信するステップであって、前記リソースの各々は、上書きメタデータを含むメタデータを有する、ステップをさらに含み、
前記アプリケーションパッケージの前記第２のバージョンは、前記アプリケーションパッケージの前記第２のバージョンの前記複数のリソース内の、前記第１のリソースに対応している第２のリソースについて、
前記メタデータを評価して、前記第２のリソースが前記変更されたリソースを上書きすることになると判断し、
前記アプリケーションパッケージの前記第２のバージョンが実行されると、前記変更されたリソースの代わりに前記第２のリソースを用いることを特徴とする請求項１に記載の方法。
【請求項３】
仮想環境において前記アプリケーションパッケージの前記第２のバージョンを実行するステップと、
前記実行の間、前記第２のリソースに対する変更を検出するステップと、
前記第２のリソースに関連付けられた前記メタデータを評価して前記変更を保存すべきであると判断するステップと、
第２の変更されたリソース内に前記変更を保存するステップであって、前記第２の変更されたリソースは、前記第２の変更されたリソースは、前記アプリケーションパッケージの前記第２のバージョンが実行されると前記第２のリソースの代わりに用いられるように前記第２のリソースと関連している、ステップと
をさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記アプリケーションパッケージの前記第２のバージョンは、前記第１のアプリケーションパッケージのサブセットについての更新されたリソースを含むリソースの差分のセットを含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記アプリケーションパッケージの前記第２のバージョンは、前記アプリケーションの第２のバージョンを形成する前記リソースの完全なセットを含むことを特徴とする請求項２に記載の方法。
【請求項６】
前記対応は、リソース名を比較することによって判断されることを特徴とする請求項２に記載の方法。
【請求項７】
前記対応は、参照表を用いて判断されることを特徴とする請求項２に記載の方法。
【請求項８】
前記参照表は、グローバル一意識別子を含むことを特徴とする請求項７に記載の方法。
【請求項９】
第２の複数のリソースを含む前記アプリケーションパッケージの第２のバージョンを受信するステップであって、前記リソースの各々は、上書きメタデータを含むメタデータを有する、ステップをさらに含み、
前記アプリケーションパッケージの前記第２のバージョンは、
前記アプリケーションパッケージの前記第２のバージョンの前記複数のリソース内の前記第１のリソースに対応している第２のリソースについて、
前記メタデータを評価して前記変更されたリソースは前記第２のリソースを上書きすることになっていると判断し、
前記アプリケーションパッケージの前記第２のバージョンが実行されると、前記第２のリソースの代わりに前記変更されたリソースを使用することを特徴とする請求項１に記載の方法。
【請求項１０】
前記仮想環境は、仮想マシン環境であることを特徴とする請求項１に記載の方法。
【請求項１１】
前記仮想環境は、仮想アプリケーション環境であることを特徴とする請求項１に記載の方法。
【請求項１２】
前記アプリケーションの前記第１のバージョンのユーザが修正したバージョンを作成するステップを更に含むことを特徴とする請求項１に記載の方法。
【請求項１３】
前記ユーザが修正したバージョンは、ユーザが修正したリソースのセット及び前記アプリケーションパッケージの前記第１のバージョンを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記ユーザが修正したバージョンは、前記アプリケーションパッケージの前記第１のバージョンのユーザが修正したパッケージを含むことを特徴とする請求項１２に記載の方法。
【請求項１５】
仮想環境において第１のアプリケーションパッケージを実行するように構成された実行エンジン（２１０）であって、前記第１のアプリケーションパッケージは、前記アプリケーションの第１のバージョンと、複数のリソース上書きメタデータとを含む、実行エンジンと、
実行時変更マネージャ（２１４）とを含むシステムであって、
実行時変更マネージャ（２１４）は、
前記第1のアプリケーションパッケージの前記複数のリソースのうちの１つである第１のリソースで変更が生じたと判断し（３０８）、
前記第１のリソースに関連付けられた前記メタデータを評価して前記変更を保存すべきであると判断し（３１０）、
変更されたリソースに前記変更を保存し（３１２）、前記変更されたリソースは前記第１のアプリケーションが実行されると、前記変更されたリソースは、前記第１のリソースの代わりに用いられるように前記第１のリソースと関連していることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カスタマイズを伴うコンピュータアプリケーションパッケージに関する。
【背景技術】
【０００２】
アプリケーションは、機能またはサービスを実行するどのようなタイプのコンピュータソフトウェアとすることができる。多くの場合、アプリケーションは、ユーザが作業を実行できるようにするソフトウェアシステムとすることができる。該作業には、例えば、ワードプロセッシング、プレゼンテーションの準備及び表示、または会計の追跡及び分析などがある。かかるソフトウェアシステムは、いくつかの異なる種類のファイル及び他のリソースを有することができる。これらには、実行ファイル、スクリプト、動的にリンクされたライブラリ、メタデータ、レジストリ設定、及び該アプリケーションのサービスまたは機能を提供するために協働する他のリソースが含まれる。
【０００３】
多くのアプリケーションは、カスタマイズすることができる要素を有する。例えば、ユーザインタフェースは、特定のルックアンドフィールで構成することができ、特定の機能は、特定の方法で動作できてもよいし、特定の方法で動作できなくてもよいし、または特定の方法で動作するよう構成されていてもよい。
【発明の概要】
【課題を解決するための手段】
【０００４】
仮想環境内でオペレーションされるアプリケーションは、様々なソフトウェア構成要素を含むパッケージで構成することができる。各ソフトウェア構成要素は、リソースを上書きまたは修正するための指示子を含み、具体的な名前及び他のメタデータを有することができる。ポリシーは、具体的なソフトウェア構成要素に対するあらゆる変更を該指示子に基づいて保存し、かつ取り出すことができる方法を定義することができる。１つまたは複数の変更された構成要素のセットを、生成し、保持し、再適用して、本来のパッケージに基づいてアプリケーションのカスタマイズされたバージョンを作成することができる。アプリケーションは、仮想アプリケーション環境内でまたは専用の仮想マシン環境内でオペレーションすることができる。
【０００５】
この概要は、以下の詳細な説明で更に説明される単純化された形式の概念の選択を導くために提供されている。この概要は、請求された本発明の重要な特徴または基本的特徴を識別することを意図していないし、請求された本発明の範囲を限定するために用いられることも意図していない。
【図面の簡単な説明】
【０００６】
【図１】アプリケーションパッケージを実行するシステムを示す実施形態の図である。
【図２】アプリケーションパッケージを実行するシステムの機能要素を示す実施形態の図である。
【図３】変更を追跡する方法を示す実施形態のフローチャートである。
【図４】アプリケーションパッケージを更新する方法を示す実施形態のフローチャートである。
【発明を実施するための形態】
【０００７】
アプリケーションは、仮想環境において実行されるパッケージとして作成することができる。パッケージは、アプリケーションを形成することができる様々なファイルまたは他のリソースの全てを含むことができる。パッケージ内の各ファイルまたは各リソースは、該パッケージに対する変更を追跡するために用いることができるメタデータのセットを有することができる。該変更は、変更されたファイルの修正されたバージョンを含むことができる修正パッケージに組み込むことができる。
【０００８】
修正されたファイルは、アプリケーションパッケージの修正されたバージョンを作成するためにオリジナルのアプリケーションパッケージと関連して用いることができる。ある実施形態では、修正されたファイルがアプリケーションパッケージのオリジナルのファイルの代わりに含まれている、カスタマイズされたアプリケーションパッケージを作成することができる。
【０００９】
パッケージ内の各ファイルは、変更を加えることができるようにし、保持することができるようにし、後で用いることができるようにする上書きビットまたは他の何らかのメタデータを有することができる。パッケージ内の他のファイルは、かかるメタデータを有していない場合もあり、変更されない場合もある。いくつかのファイルは、変更が認められる場合もあるが、該変更が保持されない場合もある。
【００１０】
ポリシーのセットは、特定の変更タイプまたは特定のファイルに対する変更を保持することができる方法を決定するために用いることができる。場合によっては、ポリシーは、変更をシステム固有の変更としてシステムの他のユーザに適用させるようにすることができる。使用されているマシンに関係なくユーザがカスタマイゼーションを経験するように、ポリシーがユーザに適用されてもよい。ポリシーの他の応用の可能性としては、変更をシステムのグループまたはユーザグループに伝搬することができる場合もあり、変更を特定の状況でまたは他の定義で適用することができる場合もある。
【００１１】
アプリケーションパッケージが更新されるときに、パッケージの異なるバージョンを作成することができる。アプリケーションが仮想環境において実行されると、パッケージの最新バージョンを読み出して実行することができる。更新マネージャは、個々のファイルに関連付けられたメタデータに基づいて、更新されたアプリケーションパッケージと変更されたファイルのセットを統合することができる。例えば、アプリケーションパッケージのいくつかの更新されたファイルは、ユーザによってカスタマイズされたかまたは修正されたファイルに上書きするよう設定することができる。一方、他の更新されたファイルは、上書きするよう設定することができる。
【００１２】
本明細書を通じて、同様の参照番号は、図の説明の全体にわたって同じ要素を表す。
【００１３】
要素が「接続される」かまたは「結合される」といわれる場合、該要素は直接接続することができ、一緒に結合することができ、または、１つまたは複数の介在している要素とすることができる。一方、要素が「直接接続されている」かまたは「直接結合されている」といわれる場合、介在している要素はない。
【００１４】
本発明は、デバイス、システム、方法、及び／またはコンピュータプログラム製品として具体化することができる。従って、本発明のいくつかまたは全ては、ハードウェア及び／またはソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコード、状態機械、ゲートアレイ等を含む）で具体化することができる。更に、本発明は、コンピュータ使用可能な記憶媒体またはコンピュータ可読の記憶媒体上のコンピュータプログラム製品の形をとることができる。コンピュータ使用可能な記憶媒体またはコンピュータ可読の記憶媒体は、命令実行システムによってまたは命令実行システムに関連して使用するための、媒体において具体化されたコンピュータ使用可能なプログラムコードまたはコンピュータ可読のプログラムコードを有している。本明細書の内容において、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスが使用するための、または命令実行システム、装置、またはデバイスに関連して使用するためのプログラムを含むことができ、保存することができ、通信することができ、伝搬することができ、または搬送することができるあらゆる媒体であってもよい。
【００１５】
コンピュータ使用可能媒体またはコンピュータ可読媒体は、例えば、電子、磁気、光学、電磁、赤外線、または、半導体のシステム、装置、デバイス、または伝播媒体であってもよいが、これらに限定されない。例であって限定ではないが、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体含むことができる。
【００１６】
コンピュータ記憶媒体は、例えばコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を保存するためのいずれかの方法または技術で実施される揮発性及び不揮発性、着脱可能及び固定式の媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または所望の情報を保存するために用いることができかつ命令実行システムがアクセスすることができる他のあらゆる媒体を含むが、これらに限定されるものではない。コンピュータ使用可能媒体またはコンピュータ可読媒体は、プログラムを、例えば紙または他の媒体の光学式走査を介して、電子的にとらえて、コンパイルして、インタプリタして、そうでなければ必要に応じて適切な方法で処理し、次にコンピュータのメモリに保存することができるように、プログラムを印刷する紙または適切な別の媒体であってもよいことに留意する。
【００１７】
通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュールまたは搬送波または他の輸送メカニズムのような変調されたデータ信号の他のデータを具体化し、あらゆる情報送達媒体を含む。用語「変調されたデータ信号」手段は、信号内の情報をコード化するような方法で設定または変更されたその特徴のうちの１つまたは複数を有する信号を意味する。例であって限定ではないが、通信媒体は、有線のネットワークまたは直接配線接続のような有線の媒体並びに例えば音響、ＲＦ、赤外線及び他の無線媒体などの無線媒体を含む。上記のうちのいずれかの組合せも、コンピュータ可読媒体の範囲に含まれることになっている。
【００１８】
本発明がコンピュータ実行可能命令の一般的な内容で具体化されている場合、実施形態は、１つまたは複数のシステム、コンピュータ、または他のデバイスによって実行されるプログラムモジュールを含むことができる。通常、プログラムモジュールは、ルーチン、プログラム、オブジェクト、構成要素、リソース、データ構造等を含む。これらは、特定のタスクを実行するかまたは特定の抽象データ型を実施する。一般的に、プログラムモジュールの機能は、様々な実施形態において所望通りに組み合わせることができるかまたは分散することができる。
【００１９】
図１は、アプリケーションパッケージを実行するためのシステムを示す実施形態１００の図である。実施形態１００は、アプリケーションがアプリケーション開発者によって更新されるのと同様にユーザによってカスタマイズされるときに、アプリケーションパッケージを管理することができるシステムの例である。アプリケーションは、パッケージとして構成することができて、仮想環境内で実行することができる。変更が、アプリケーションに関連付けられたリソースに対して行われるときに、これらの変更は、リソースに関連付けられたメタデータ及び変更を処理する方法を定義しているポリシーのセットに基づいて保存するかまたは放棄することができる。
【００２０】
図１は、システムの機能的な構成要素を示す図である。場合によっては、構成要素は、ハードウェア構成要素、またはソフトウェア構成要素、またはハードウェアとソフトウェアとの組合せとすることができる。いくつかの構成要素は、アプリケーションレベルのソフトウェアであってもよい。一方、他の構成要素は、オペレーティングシステムレベルの構成要素とすることができる。場合によっては、ある構成要素から別の構成要素への接続は、２つ以上の構成要素が単一のハードウェアプラットフォームでオペレーションしている緊密な接続であってもよい。別の場合では、長距離にわたるネットワーク接続を介して接続されていてもよい。各実施形態は、異なるハードウェア、ソフトウェア、及び相互接続アーキテクチャを使用して、説明される機能を実現することができる。
【００２１】
実施形態１００は、パッケージングされたアプリケーションを管理するシステムのためのいくつかの構成要素及び一般的なアーキテクチャを示す機能図である。該アーキテクチャは、ネットワーク１０６を介してクライアント１０２に接続することができるパッケージ配布サーバ１０４から成ることができる。多くの実施形態において、パッケージ配布サーバ１０４は、コンピュータサーバとすることができ、クライアント１０２は、ローカルエリアネットワークを介して接続されるパーソナルコンピュータとすることができる。他の実施形態において、サーバ１０４及びクライアント１０２は、インターネットまたは他の広域ネットワークを含むネットワーク１０６を介して接続することができる。
【００２２】
実施形態１００に示したアーキテクチャは、典型的なクライアントサーバ構造タイプであって、ビジネス企業または他の企業で見られる。他の実施形態は、サーバ１０４について説明されている機能をクライアント１０２が実行することができまたその逆も実行することができる異なるアーキテクチャのタイプを使用することができる。
【００２３】
クライアント１０２は、いかなるタイプのコンピューティングプラットフォームとすることができる。コンピューティングプラットフォームは、パーソナルコンピュータ、携帯機器、携帯電話、携帯スキャナ、ラップトップコンピュータまたは他のポータブルコンピュータ、ネットワークアプライアンス、ネットワーク使用可能計測器、ユーザインタフェース１１２を有することができる他のデバイスを含む。
【００２４】
実施形態１００は、パッケージ配布サーバ１０４がアプリケーションパッケージ１０８をクライアント１０２に供給することができるシステムを示す。その結果、アプリケーションパッケージ１０８を、仮想環境１１０内で実行することができる。多くの実施形態において、該パッケージを、クライアント１０２のための仮想環境１１０において実行することができる。
【００２５】
例えば、ワードプロセッサアプリケーションは、アプリケーションパッケージ１０８として構成することができて、クライアント１０２に送信され、クライアント１０２はワードプロセッサアプリケーションを実行させることができる。ユーザインタフェース１１２は、ワードプロセッサの動作を示すことができ、アプリケーションを使用するユーザのためのメカニズムとすることができる。
【００２６】
ある実施形態では、アプリケーションパッケージ１０８は、別のコンピュータとインタフェースすることができるサービスまたは他のアプリケーションのためであってもよい。かかるアプリケーションは、ユーザインタフェース１１２を使用してもよいしまたは使用しなくてもよい。
【００２７】
クライアント１０２は、アプリケーションパッケージ１０８を仮想環境１１０内で実行させることができる。仮想環境１１０は、仮想マシン環境または仮想アプリケーション環境とすることができる。仮想マシン環境は、アプリケーションパッケージを実行することができるオペレーティングシステム環境をシミュレーションするソフトウェア構成とすることができるい。
【００２８】
仮想アプリケーション環境は、他のアプリケーションを妨げずにアプリケーションを実行することができるメカニズムである。アプリケーションの仮想化は、共有リソースのアプリケーション固有のコピーを作成することができる。各アプリケーションは、例えばレジストリエントリ、動的にリンクされたライブラリ、及びアプリケーションとともにパッケージングすることができる他のオブジェクトなどの潜在的に共有されたリソースの別個の構成を有することができる。パッケージは、キャッシュにおいて実行することができ、仮想アプリケーションを作成する。仮想アプリケーションが配備されると、該仮想アプリケーションはこれらの共有リソースについての自身のコピーを使用する。
【００２９】
アプリケーションは仮想環境内で実行することができるので、アプリケーションは、共有リソースを使用することができる他のアプリケーションを妨げずに変更し、修正し、かつ更新することができる。仮想環境によって、他のアプリケーション同士の間の分離が可能になり、各アプリケーションを別個に構成できるようになる。
【００３０】
アプリケーションパッケージ１０８は、アプリケーションを実行するために使用される全てのファイル及びリソースを含むことができる。かかるリソースまたは構成要素は、実行可能ファイル、スクリプト、構成ファイル、動的にリンクされたライブラリ、データファイル、テンプレート、レジストリ設定、メタデータ、及び、他のファイルタイプ、データまたは他の要素を含むことができる。
【００３１】
各アプリケーションパッケージ１０８は、各リソースについてのメタデータを含むことができ、メタデータは、特に、リソースを更新することができるかどうかとこれらの更新が処理される方法とを記述することができる。例えば、メタデータは、ユーザがリソースを変更することができるかどうかかつ当該変更を保持することができるかどうかを定義することができる。別の例において、メタデータはまた、アプリケーションの新バージョンが利用可能な場合に、リソースを更新することができる方法を定義することができる。また別の例において、メタデータは、変更が保持されるメカニズム及び変更が他のユーザまたは他のデバイスに伝搬される方法を定義することができる。メタデータはアプリケーションパッケージの新バージョンの最初の構築の間使用される情報及びパッケージが完了して実行されている後に使用することができる異なった情報を含むことができる。
【００３２】
アプリケーションパッケージ１０８内のリソースが更新、修正または構成される場合、変更を保持して、アプリケーションパッケージが類似した内容で再開される時に再び使用することができる。変更は、いくつかの異なるメカニズムを介して保持されかつ再利用することができる。
【００３３】
アプリケーションパッケージ１０８は、変更を追跡して保存することができるファイル及び他のリソースを含むことができる。本明細書を通じて、用語リソースは、実行可能ファイル、データファイル、構成ファイル、レジストリエントリ、ＣＯＭリソース、ＩＰアドレス、メタデータ、構成要素、設定、及び他のリソースを含むことができ、これらのリソースを例示するために用いられる。リソースについてのあらゆる記述は、いずれかのタイプのリソースを含むことができ、上記したリソースを含む。
【００３４】
第１のメカニズムにおいて、行われた変更は、カスタマイズされたリソース１１４の別個のセットに保存される。アプリケーションパッケージ１０８が起動されると、カスタマイズされたリソース１１４のセットは、アプリケーションパッケージ１０８内の対応するリソースをカスタマイズされたリソース１１４と置き換えることによって実行時にアプリケーションパッケージ１０８に組み込むことができる。
【００３５】
かかる実施形態は、顕著ないくつかの特徴を有している。アプリケーションパッケージ１０８は、アプリケーション内のリソースの不変のバージョンの全てを含んでいる初期のパッケージとすることができる。アプリケーションの構成に行われるあらゆる変更は、カスタマイズされたリソース１１４のグループに別個に保存することができる。カスタマイズされたリソース１１４をアプリケーションパッケージ１０８に組み入れることができるように、かかる実施形態は、より複雑なスタートアップルーチンを有する。
【００３６】
第２のメカニズムにおいて、変更は、アプリケーションパッケージのカスタマイズされたバージョン１１６を作成するために用いることができる。アプリケーションパッケージ１１６のいくつかの異なるカスタマイズされたバージョンは、各々、異なるユーザまたは異なる状況のため作成することができる。アプリケーションパッケージのカスタマイズされたバージョン１１６は、アプリケーションを形成する様々なリソースの全てを含む完全なアプリケーションパッケージとすることができる。
【００３７】
かかる実施形態は、顕著ないくつかの特徴を有している。アプリケーションパッケージ１１６は、各々非常に大きくてもよく、多くの異なる構成が存在する場合、アプリケーションパッケージ１１６によって使用される記憶容量は大きくてもよい。しかしながら、アプリケーションパッケージ１１６は、実行のために使用されるリソースの全てを含む完全な独立型アプリケーションであってもよい。完全なアプリケーションパッケージであるとして、該完全なアプリケーションパッケージは、第１のメカニズムを使用するより素早く起動して実行開始することができる。
【００３８】
他の実施形態は、カスタマイズされたリソースまたは修正されたリソースを管理し、保存し、取り出す異なるメカニズムを有することができる。ある実施形態では、パッケージに対するいくつかの変更タイプが、カスタマイズされたリソース１１４に保存することができかつ他の変更はアプリケーションパッケージ１１６のカスタマイズされたバージョンを作成するために用いられたと判断するためにメタデータまたはポリシーを用いることができる。いくつかの変更は、本質的に局所的であってもよくて、特定のクライアント１０２のユーザだけに影響を及ぼしてもよい。他の変更は、より広く配備されてもよく、パッケージ配布サーバ１０４によって、アプリケーションパッケージ１１６のカスタマイズされたバージョンを介して他のクライアントデバイスと共有することができる。
【００３９】
時々、更新サーバ１１８は、更新情報パッケージ１２０をパッケージ配布サーバ１０４に配布することができる。更新情報パッケージ１２０は、アプリケーションパッケージ１０８に対するバグ修正、更新、新機能、または他の変更を含むことができる。パッケージ配布サーバ１０４は、更新マネージャを有し、更新マネージャは、パッケージ更新情報１２０を使用して新しいアプリケーションパッケージ１０８を作成することができることができる。
【００４０】
パッケージ更新情報１２０は、完全なパッケージの形とすることができ、または、リソースの差分のセットなどの修正されたリソースまたは更新されたリソースのグループの形とすることができる。いずれにせよ、カスタマイズされたリソース１１４を更新されたパッケージに組み入れる方法に関して決定することができる。場合によっては、更新サーバ１１８からのリソースは、該リソースにあらゆる既存のリソースに上書きさせるメタデータを有し、既存のリソースは、ユーザが生成することができるかまたは修正することができるアプリケーションパッケージ１０８の前のバージョンまたはカスタマイズされたリソース１１４のオリジナルのリソースとすることができる。
【００４１】
パッケージ更新情報１２０のメタデータは、更新されたリソースが、いずれかの既存のリソースの代わりに使用すべきであるかどうかを判断することができる。かかるメタデータは、更新されたリソースをいずれかの前のバージョンの代わりに使用することになっていると示すことができるかまたは、更新されたリソースを前のバージョンの代わりに使用することができるがユーザによってカスタマイズされたバージョンでないことを示すことができる。メタデータは、リソースに対する修正がユーザによって行われたかどうかかつこれらの修正を保持することができる方法を別個に定義することができる。
【００４２】
図２は、アプリケーションパッケージを実行することのためのシステムを示す実施形態２００の図である。実施形態２００は、アプリケーションがアプリケーション開発者によって更新されるのと同様にユーザによってカスタマイズされるアプリケーションパッケージを管理することができるシステムの機能構成要素の例である。
【００４３】
図２は、システムの機能構成要素を示す。場合によっては、構成要素は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェアとソフトウェアとの組合せであってもよい。構成要素のいくつかはアプリケーションレベルのソフトウェアであってもよい。一方、他の構成要素はオペレーティングシステムレベルの構成要素であってもよい。場合によっては、ある構成要素から別の構成要素への接続は、２つ以上の構成要素が単一のハードウェアプラットフォームで動作している緊密な接続であってもよい。別の場合では、長距離にわたるネットワーク接続を介して接続されていてもよい。各実施形態は、異なるハードウェア、ソフトウェア、及び相互接続アーキテクチャを使用して説明される機能を実現することができる。
【００４４】
実施形態２００は、実行可能なアプリケーションパッケージに対する更新情報を管理するために用いることができる機能構成要素の例である。機能構成要素は、１つまたは複数のデバイス上でかつ多くの異なる構成において実行することができる様々な機能であってもよい。場合によっては、様々な機能は、ローカルエリアネットワークまたはインターネットなどの広域ネットワークを介して接続される異なる物理的なデバイスによって実行されてもよい。他の場合では、様々な機能のうちの２つ以上またはおそらく全てを、単一のデバイスで実行することができる。
【００４５】
実施形態２００において説明される機能は、アプリケーションパッケージを様々な更新周期で管理することができる１つのメカニズムを示す。場合によっては、パッケージの更新されたバージョンは、アプリケーション開発者またはソフトウェア製造会社によって作成されてもよい。更新されたバージョンは、アプリケーションパッケージの現在のバージョンを作成するために用いることができる。他の場合では、修正またはカスタマイゼーションは、ユーザ、システム管理者、または他のエンティティによって行われてもよく、これらのカスタマイゼーションは、保持されて、アプリケーションパッケージに組み入れられてもよい。
【００４６】
修正されたリソースまたはカスタマイズされたリソースは、追跡することができて、ソフトウェア製造会社によって作成される更新情報と別個に処理することができる。アプリケーションパッケージ内のメタデータは、更新情報が処理されるべき方法を定義することができる。メタデータは、更新情報を利用可能してもよいしまたは無効にしてもよく、更にいくつかの更新情報が保持されてもよいし、いくつかの更新情報が他の更新情報を上書きしてもよいし、多くの他のオプションを与えられてもよい。
【００４７】
ポリシーのセットは、カスタマイズされたリソースを保持して適用する方法を定義するために用いることができる。ポリシーは、デバイスの全てのユーザに対して、様々なユーザグループに対して、または個々のユーザに対して、保持または適用することになっているいくつかの更新情報またはカスタマイゼーションを定義することができる。ポリシーは、特定のタイプの更新情報を分類することができて、異なる方法でこれらの更新情報を適用することができる。
【００４８】
更新マネージャ２０４は、実行エンジン２１０に実行のためのアプリケーションパッケージを与えることができる。アプリケーションパッケージは、いくつかのカスタマイズされたリソースのセット２０６とともにパッケージ２０２の現在のバージョンからのリソースを含むことができる。更新マネージャ２０４は、パッケージの現在のバージョン２０２及びカスタマイズされたリソースのセット２０６のグループを統合することによってカスタマイズされたアプリケーションパッケージを作成することができる。
【００４９】
場合によっては、更新マネージャは、ポリシー２１６に基づいて２つ以上のカスタマイズされたリソースのセット２０６を適用することができる。カスタマイズされたリソースのセット２０６は、様々なタイプの変更についてのポリシー２１６に基づいて作成することができる。いくつかの変更は、会社全体または企業全体に適用することができる。一方、他の変更は、企業内の部門、部門内のグループ、または特定のユーザもしくはデバイスに適用することができる。いくつかの変更は、ユーザに関係なく、異なるタイプのデバイスに適用することができる。一方、他の変更は、使用されているデバイスに関係なく、異なるタイプのユーザに適用することができる。
【００５０】
場合によっては、カスタマイズされたリソースの特定のセットは、ある特定の環境向けに作成することができる。例えば、建物をモニタするために警備員によって使用されるアプリケーションは、建物の夜間監視のために定義されたカスタマイゼーションを有することができ、昼間の建物オペレーションについて定義されたカスタマイゼーションのセットを切り離すことができる。別の例において、会計アプリケーションは、年度末会計について定義された特定の特徴またはカスタマイゼーションのセット及び法廷会計のために定義された別個のカスタマイゼーションのセットを有することができる。
【００５１】
２つ以上のカスタマイズされたリソースのセット２０６が使用される場合では、カスタマイズされたリソースは、適用された最後のセットが優先権を持っているといった特定の順番で適用することができる。例えば、会社全体のカスタマイゼーションのセットが最初に適用され、次に、部門全体のカスタマイゼーションのセットが適用され、最後にユーザ特定のカスタマイゼーションのセットが適用されてもよい。他の実施形態は、複数のカスタマイゼーションのセットを取り入れるための異なる技術またはメカニズムを有することができる。
【００５２】
カスタマイズされたリソースのセット２０６は、構成リソースのセット、データファイルのセット、またはアプリケーションのいずれかの部分を修正することができる他のタイプのリソースを含むことができる。場合によっては、カスタマイズされたリソースは、アプリケーションのルックアンドフィールまたはユーザインタフェースを変更する項目を含むことができる。例えば、会社全体のカスタマイズされたリソースのセットは、会社ロゴ及び、会社内部のヘルプデスクについての電話番号または電子メールアドレスを含むことができる。ユーザが作成したカスタマイズされたリソースのセットは、フォントサイズ及びカラースキームについて設定を含むことができる。別の例において、構成リソースのセットは、ネットワーク設定及びアドレスを含むことができ、ネットワーク設定及びアドレスは、アプリケーションが、ローカルエリアネットワーク内に設けられたかまたはインターネットを介して利用可能なサーバにホストされる遠隔サービスに接続できるようにしてもよい。アプリケーションが起動される時、装置の物理的な位置またはネットワークの位置によって決まる異なる構成リソースが用いられてもよい。
【００５３】
他の場合には、カスタマイズされたリソースは、アプリケーションの機能または性能を変更する項目を含むことができる。例えば、カスタマイズされたリソースのセット２０６は、特定のタスクを実行することができるスクリプト、マクロ、もしくは実行可能ファイル、アプリケーションプラグインモジュール、特定の機能を使用可能または無効にする構成リソース、またはアプリケーションに対する他の機能的な変更を含むことができる。別の例において、カスタマイズされたリソースのセット２０６は、アプリケーションが特定のネットワークアドレスで提供される特定のサービスに接続できるようにするネットワークアドレス及び接続パラメータを含むことができる。一方、異なるカスタマイズされたリソースのセット２０６は、異なるサーバ上の類似したサービスに接続するために用いられもよい。
【００５４】
また他の場合において、カスタマイズされたリソースは、アプリケーションが使用することができるデータを含むことができる。例えば、ワードプロセッシングプログラムは、社用箋または名前入りのステーショナリを含むカスタマイズされたリソースのセットを有することができる。いくつかのかかるカスタマイズされたリソースは、様々な機能またはオペレーションにおいて使用されるデータのテンプレート、フォーマットまたはデフォルトのセットを含むことができる。
【００５５】
カスタマイズされたリソースのセット２０６は、異なるタイプのユーザによって作成されてもよいしまたは異なるやり方で分類されてもよい。カスタマイゼーションのタイプ及び特定のリソースを修正する特定のタイプのユーザの能力は、リソース及びポリシー２１６に関連付けられたメタデータにおいて定義することができる。例えば、いくつかのタイプの企業規模のカスタマイゼーションは、管理上の特権をもつユーザが実行することができる。例えば、アプリケーションパッケージは、ライセンシングに関する制限または一般的な会社ポリシーに基づいて使用可能にされてもよいしまたは無効にされてもよい特定の特徴を有することができる。かかる変更は、管理者に認められてもよいが、一般ユーザに認められない。
【００５６】
グループ管理者として定義されるユーザがいて、会社内の部門などのユーザグループによって使用されるカスタマイゼーションを追加するかまたは修正することができてもよいが、他の部門またはグループにおいて使用されている変更を開始することはできない。
【００５７】
ある実施形態では、ユーザがカスタマイズされたリソースを作成するのを認めるかかまたは既存のリソースを変更して当該変更が伝播される方法を定義するのを認める。例えば、ユーザは、アプリケーションパッケージ内で既存のリソースに変更を加えることができる。ユーザは、アプリケーションの他のインスタンスにわたって該変更を適用することができる方法についてのオプションのセットを示されてもよい。ユーザは、例えば、変更を他の個人またはユーザグループが使用できるようにすることができる。変更を適用することができる方法を選択することによって、変更をカスタマイズされたリソース２０６の異なるセットに保存することができる。
【００５８】
ポリシー２１６は、異なるメカニズムを用いて変更が保持されるのを認めることができる。例えば、いくつかの変更は、ローカルの記憶装置に保持されてもよく、アプリケーションがローカルデバイスで実行されると使用される。他の変更は、ネットワークサーバで保持されてもよく、他のユーザ及び他のデバイスにわたって共有されてもよい。
【００５９】
いくつかのポリシーは、カスタマイズされたリソースのセット２０６をユーザベースでかつデバイスベースまたは機能ベースで適用できるようにしてもよい。ユーザベースとは、特定のユーザまたはユーザグループなどのユーザ識別に基づいて、カスタマイズされたリソースのセットを適用することを言うことができる。ユーザグループは、例えば管理者、パワーユーザ、一般的なユーザ、またはゲストユーザなどのユーザのタイプによって定義することができる。他のユーザグループは、プログラムマネージャまたは管理スタッフなどの機能によって定義することができる。更に、他のユーザグループは、マーケティング部のメンバまたは自転車クラブのメンバなどの所属で定義することができる。
【００６０】
カスタマイズされたリソースのセットを適用するためのデバイスベースは、特定のデバイスの識別またはデバイスグループに基づいてもよい。いくつかのデバイスグループは、デバイスが例えば特定の能力または取り付けられた周辺デバイスを有しているかどうかといった様々な機能的特徴によって識別することができる。いくつかのデバイスグループは、特定のサブネット内のデバイスなどのネットワークアドレスを用いて識別することができる。デバイスグループはまた、経理部などの会社部門に関連付けられたデバイスを含むことができる。いくつかのデバイスは、例えばラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータ、携帯スキャナ、携帯電話、または他のタイプのデバイスなどのタイプで分類されてもよい。
【００６１】
カスタマイズされたリソースのセットを適用するための機能ベースは、アプリケーションを用いて実行することができる特定の機能に基づくことができる。例えば、インベントリ管理アプリケーションは、出荷機能及び受け入れ機能が実行されることになっているときに選択されるカスタマイズされたリソースのセットを有することができる。実地インベントリ機能が実行されることになっている場合に、異なるカスタマイズされたリソースのセットを選択することができる。
【００６２】
ある実施形態では、ポリシー２１６は、カスタマイズされたリソースのセット２０６を選択してアプリケーションパッケージ２０２の現在のバージョンに適用するための複合的な基準のセットを認めることができる。例えば、特定のデバイス上の特定の機能を実行しているユーザは、会社全体のカスタマイゼーション、部門に特有のカスタマイゼーション、機能に特有のカスタマイゼーション、デバイスに特有のカスタマイゼーション、及びユーザに特有のカスタマイゼーションを含むカスタマイゼーションのセットを使用することができる。アプリケーションパッケージがすっかりカスタマイズされて見えるが多くのユーザ、デバイス、及び機能にわたって使用されるアプリケーションパッケージ２０２の単一の現在のバージョンから生じることができるように、各カスタマイゼーションのセットは、アプリケーションパッケージに様々な要素を加えることができるかまたはアプリケーションパッケージから様々な要素を取り除くことができる。
【００６３】
カスタマイズされたリソースのセット２０６内のカスタマイズされたリソースのいくつかは、既存のリソースの修正態様であってもよいしまたは他のリソースに無関係な別個のリソースであってもよい。既存のリソースの修正態様は、アプリケーションパッケージ内の標準のリソースの更新バージョンであってもよい。
【００６４】
例えば、構成リソースは、アプリケーションパッケージにおいて定義されてもよいし、該構成リソースに関連付けられたメタデータは、ユーザに構成リソースを変更するのを認めてもよい。場合によっては、メタデータは、ユーザが構成リソースの特定の部分を変更するのを制限することができる。一方、他の場合では、メタデータは、構成リソースに対するいずれかのタイプの変更を認めることができる。更新された構成リソースは、カスタマイズされたリソースのセット２０６のカスタマイズされたリソースとして保存することができる。
【００６５】
アプリケーションパッケージから取られた更新されたリソースは、アプリケーションパッケージ内の更新されたリソースとびオリジナルのリソースとの間に定義された関係と共に保存することができる。場合によっては、更新されたリソースは、アプリケーションパッケージ内のオリジナルのリソースと同じ名前を共有することができる。他の場合では、グローバル一意識別子（ＧＵＩＤ）は、オリジナルのリソースについて定義することができる。２つのリソースが関連しているように、更新されたリソースは、いくつかのやり方でオリジナルのリソースのＧＵＩＤを参照することができる。場合によっては、ＧＵＩＤは更新されたリソースについて定義することができ、関係表を定義してオリジナルのリソースとカスタマイズされたリソースとの間の関係を保存して追跡することができる。
【００６６】
更新マネージャ２０４は、アプリケーションパッケージ２０２の現在のバージョン及び様々なカスタマイズされたリソースのセット２０６を統合することができる。ある実施形態では、更新マネージャ２０４は、実行エンジン２１０が仮想環境２１２内で実行することができる完全なリソースのセットを含むカスタマイズされたアプリケーションパッケージを作成することができる。他の場合では、更新マネージャ２０４は、特定の状況に適用できるカスタマイズされたリソースのセット２０６とともに、アプリケーションパッケージ２０２を送信することができる。
【００６７】
アプリケーションパッケージ２０２の現在のバージョンは、アプリケーションの不変のバージョン、即ち「ゴールデン」バージョンであってもよい。アプリケーションパッケージ２０２は、他のカスタマイゼーションを適用することができる標準コピーまたは基本バージョンであってもよい。アプリケーションの企業配備において、アプリケーションの単一のゴールデンバージョンは、企業全体にわたって全て使用することができるが、各部門、各ユーザ、または各グループは、異なるバージョンを経験することができる。各ユーザはアプリケーションの特定の部分をカスタマイズすることが可能であってもよく、ユーザがアプリケーションを起動するたびにこれらのカスタマイゼーションを出現させてもよい。
【００６８】
しかしながら、ユーザ見地から、各ユーザは、ソフトウェア管理見地と異なった異なるアプリケーションを経験することができ、単一のアプリケーションパッケージは多くの異なるユーザにわたって管理されかつ配備されてもよい。
【００６９】
実行エンジン２１０は、アプリケーションパッケージを受信することができて、アプリケーションパッケージを仮想環境内で実行させることができる。いくつかの例では、仮想環境２１２は、アプリケーションのために特に実行エンジン２１０が作成しかつ構成することができる。
【００７０】
仮想環境２１２は、いずれかのタイプの構成のいずれかのタイプの仮想環境であってもよい。多くの場合、仮想環境は、仮想アプリケーション環境であってもよい。他の場合では、仮想環境は、仮想マシン環境であってもよい。場合によっては、仮想環境は、実行エンジン２１０と同じ物理的なデバイス上に作成することができる。一方、他の場合では、実行エンジン２１０は、例えばサーバなどの、異なる物理的デバイスでオペレーション可能な仮想環境２１２を使用することができる。
【００７１】
ユーザインタフェース２０８は、カスタマイゼーションとともにアプリケーションを選択して起動するために用いることができる。デスクトップコンピュータのシナリオでは、ユーザはアイコンをクリックしてアプリケーションを起動することができる。デスクトップコンピュータは、アプリケーションパッケージの現在のバージョン２０２及びカスタマイズされたリソースのセット２０６を得ることができるサーバデバイスに接続することができる。デスクトップコンピュータ内で、実行エンジン２１０は、仮想環境２１２を構成することができて、アプリケーションに実行を開始させることができる。ある実施形態では、アプリケーションがデスクトップコンピュータのオペレーティングシステムで自然に実行されていたかのように、アプリケーションをユーザインタフェース２０８に示すことができる。
【００７２】
いくつかのかかる実施形態において、ユーザは、アプリケーションを起動するときに様々な選択オプションを有することができる。かかるオプションは、更新マネージャ２０４が適当なカスタマイゼーションリソースのセット２０６を選択して特定の例にあてはめることができるようにする。場合によっては、ユーザはメニューまたはオプションのセットから適当なカスタマイゼーションリソースのセット２０６のために選択することが可能であり、他の場合では、かかる選択は自動的に行うことができる。例えば、ラップトップコンピュータが更新マネージャ２０４を備えたサーバを有するローカルエリアネットワークに接続されると、ラップトップコンピュータは１つのカスタマイゼーションリソースのセットを用いてアプリケーションを実行することができる。ラップトップコンピュータがインターネットを介して同じサーバに接続されている場合、ラップトップコンピュータは、異なるカスタマイゼーションリソースのセットを用いて同じアプリケーションを実行することができる。
【００７３】
実行時変更マネージャ２１４は、いつアプリケーションパッケージ内のリソースに変更が行われたかを検出することができて、ポリシー２１６を用いてカスタマイズされたリソースのセット２０６に対する変更を類別し、分類し、構成することができる。場合によっては、実行時変更マネージャ２１４は、バックグラウンドでオペレーションすることができて、ユーザインタフェースなしに当該機能を実行することができる。他の場合では、実行時変更マネージャ２１４は、変更を管理すべき方法について決定するためにユーザとインタラクションすることができる。
【００７４】
更新マネージャ２０４はまた、アプリケーションパッケージの新バージョン２１８を管理することができる。アプリケーションパッケージの新バージョン２１８を受信すると、更新マネージャ２０４は、更新された「ゴールデン」アプリケーションパッケージを作成することができ、これは次にアプリケーションパッケージの現在のバージョン２０２として設定される。
【００７５】
更新マネージャ２０４は、更新されたパッケージ２１８の個々のリソースに関連付けられたメタデータに基づいて、アプリケーションパッケージの現在のバージョン２０２内で、様々なリソースを更新することができる。場合によっては、メタデータは、パッケージの新バージョン２１８のリソースにパッケージの現在のバージョン２０２の対応するリソースを上書きさせることができる。場合によっては、メタデータは、カスタマイズされたリソースのセット２０６の対応するリソースを削除させかつ、場合によっては、パッケージの新バージョン２１８のリソースに置き換えさせる。メタデータは、ユーザによる新しいリソースに対する次の変更を可能にしてもよいしまたは止めてもよい。
【００７６】
図３は、アプリケーションパッケージのリソースに対する変更を追跡する方法を示す実施形態３００のフローチャートである。実施形態３００は、更新マネージャ２０４及び実行エンジン２１０が実行するいくつかのオペレーションに加えて、実行時変更マネージャ２１４が主に実行することができる様々なオペレーションの例である。
【００７７】
他の実施形態は、異なる優先順位付け、追加のステップまたは少ないステップ、及び同様の機能を実現する異なる技術用語または技術を使用することができる。ある実施形態では、様々なオペレーションまたはオペレーションのセットは、他のオペレーションと並行して、同期したやり方または非同期のやり方のどちらででも実施することができる。本明細書で選択されたステップは、単純化された形式のオペレーションのいくつかの原理を示すように選択された。
【００７８】
実施形態３００は、アプリケーションパッケージに行われたリソースに対する変更を検出して処理する方法を示す。変更はリソース及びポリシーに関連付けられたメタデータに基づいて処理することができる。
【００７９】
ブロック３０２においてアプリケーションパッケージを作成することができ、ブロック３０６において仮想環境で実行することができる。
【００８０】
アプリケーションパッケージは、様々なメカニズムを用いてブロック３０２において作成することができる。場合によっては、アプリケーションパッケージは、現在のアプリケーションパッケージをカスタマイズされたリソースのセットと統合することで更新マネージャが作成することができる。場合によっては、アプリケーションパッケージは、追加のカスタマイズされたリソースなしで実行することができる。
【００８１】
アプリケーションパッケージは、例えば仮想マシン環境または仮想アプリケーション環境などのいずれかのタイプの仮想環境を用いてブロック３０４において実行することができる。
【００８２】
ブロック３０８においてリソースの変更が検出されると、リソースに関連付けられたメタデータは、ブロック３１０において変更を認め、変更はブロック３１２においてポリシー毎に保存することができる。メタデータがブロック３１０において変更を認めない場合、変更は保存されず、プロセスはブロック３０６に戻る。
【００８３】
実行時変更マネージャ２１４は、アプリケーションの実行を監視することができて、アプリケーションパッケージ内のリソースに行われるあらゆる変更を検出することができる。実行時変更マネージャは、実行アプリケーションと同じ仮想環境内部でオペレーションする機能であってもよいし、または仮想環境外部でオペレーションする機能であってもよい。場合によっては、実行時変更マネージャは、アプリケーションパッケージとともに実行エンジンによって起動される機能であってもよい。異なる実施形態は、各々異なる機能のアーキテクチャを有することができる。
【００８４】
ブロック３１０において使用されるメタデータは、個々のリソースに関連付けられたメタデータであってもよいし、アプリケーションパッケージの一部であるメタデータであってもよい。場合によっては、各リソースは、メタデータの別個の異なったセットを有することができる。他の場合には、メタデータのセットは、リソースのグループに適用することができる。
【００８５】
ブロック３１０のメタデータは、特定のリソースまたはリソースのグループに対する変更を認めることができるかまたは拒否することができる。メタデータは、変更することができないアプリケーションパッケージ内の特定のリソースを定義することができる。かかるリソースは、変更された場合、アプリケーションが適切に機能することができないリソースを含むことができる。該リソースは、実行可能ファイル、動的にリンクされたライブラリ、レジストリ設定、ＣＯＭオブジェクト、ＩＰアドレス、及び他のリソースなどである。
【００８６】
アプリケーションパッケージ内のいくつかのリソースは、修正可能であってもよい。かかるリソースは、ユーザが構成可能な設定、デフォルトのテンプレート、または他のリソースを含むことができる構成ファイルであってもよい。ブロック３１０のメタデータは、ソフトウェア製造会社が定義することができて、アプリケーション設計の基本的な構造の一部であってもよい。
【００８７】
ブロック３１２のポリシーは、変更を企業環境内で保存して管理することができる方法を定義することができる。ポリシーは、会社または企業の内部手順及びビジネスモデルに合わせて調整することができる局所的に定義されかつ局所的に管理された規則のセットであってもよい。
【００８８】
ポリシーは、アプリケーションに対する変更についての異なる分類を定義することができ、変更を保存するための状況及びメカニズムを定義することができる。例えば、いくつかの変更は局所的なユーザ固有の変更と特定することができ、デスクトップコンピュータに保存することができる。他の変更は、異なるコンピュータにわたって共有することができる変更と特定することができ、かかる変更をサーバデバイスに保存することができる。
【００８９】
場合によっては、メタデータが変更を認めることができる場合でも、ポリシーは、特定の状況において変更の保存を拒否することができる。例えば、ユーザはリソースの変更されたバージョンを作成することができるが、変更を保存するためのポリシーにおいて定義されているような権限を有することができない。
【００９０】
図４は、アプリケーションパッケージを更新する方法を示す実施形態４００のフローチャートである。実施形態４００は、アプリケーションパッケージ２１８の新バージョンが受信される場合に、更新マネージャ２０４が実行することができる様々なオペレーションの例である。
【００９１】
他の実施形態は、異なる優先順位付け、追加のステップまたは少ないステップ、及び同様の機能を実現する異なる技術用語または技術を使用することができる。ある実施形態では、様々なオペレーションまたはオペレーションのセットは、他のオペレーションと並行して、同期したやり方または非同期のやり方のどちらででも実施することができる。本明細書で選択されたステップは、単純化された形式のオペレーションのいくつかの原理を示すように選択された。
【００９２】
実施形態４００は、更新されたアプリケーションパッケージのリソースに関連付けられたメタデータを用いてアプリケーションパッケージの新バージョンを作成する方法の例である。実施形態４００は、アプリケーションパッケージの旧バージョンの各リソースの分析を実行する。他の実施形態は、アプリケーションパッケージの新バージョンの各リソースを分析して類似する結果をもたらすことができる。実施形態４００は、アプリケーションパッケージ内の個々のリソースを更新して、カスタマイズされたリソースが更新情報を阻害する場合、これらのカスタマイズされたリソースを削除するといった一般的なプロセスの例にすぎない。
【００９３】
実施形態４００は、アプリケーションパッケージの各リソースを介してステップを行い、新バージョンが存在する場合、リソースの旧バージョンを新バージョンで置き換える。古いリソースの修正されたバージョンが存在する場合、新しいリソースに関連付けられたメタデータは、修正されたバージョンが更新されたアプリケーションパッケージと互換性を持たないことを示すことができ、修正されたリソースまたはカスタマイズされたリソーを取り除くことができる。リソースの修正されたバージョンが互換性を持つ場合、修正されたバージョンを保持することができる。
【００９４】
ブロック４０２において、アプリケーションパッケージの旧バージョンを受信することができ、同様に、ブロック４０４においてアプリケーションパッケージの新バージョンをかつブロック４０６においてパッケージについてのあらゆる修正されたリソースを受信することができる。
【００９５】
ブロック４０４においてアプリケーションパッケージの新バージョンは、完全なアプリケーションパッケージの形であってもよいしまたはアプリケーションパッケージについての変更されたリソースまたは更新されたリソースの形であってもよい。多くの場合、アプリケーションパッケージの更新されたバージョンは、ソフトウェア製造会社が作成して、例えば、更新サービスの加入者に配布することができる。
【００９６】
ブロック４０８において、アプリケーションパッケージの旧バージョンの各リソースについて、リソースの分析を行い、リソースを更新し、対応するカスタマイズされたリソースを処分することができる。
【００９７】
アプリケーションパッケージの新バージョンの対応するリソースは、ブロック４１０において特定することができる。異なる実施形態は、どのリソースが互いに関連しているかについて判断する異なるメカニズムを有することができる。場合によっては、各リソースは、グローバル一意識別子（ＧＵＩＤ）またはいくつかの他の一意の名前を割り当てられてもよい。パッケージの旧バージョンのリソースが新バージョンのリソースと同じＧＵＩＤを有する場合、ブロック４１２においてリソースは同一である。ＧＵＩＤが異なる場合、リソースはブロック４１２において異なっていてもよく、古いリソースはブロック４１４において新しいリソースに置き換えることができる。
【００９８】
ある実施形態では、参照表または他のいくつかの参照を使用して、アプリケーションパッケージの新バージョンのどのリソースがアプリケーションパッケージの旧バージョンのリソースを置き換えるかについて判断することができる。
【００９９】
新しいアプリケーションパッケージが完全なリソースのセットとして配備される実施形態において、ブロック４１２及び４１４のオペレーションは省略されてもよい。
【０１００】
ブロック４１６において現在のリソースの修正されたバージョンがない場合、プロセスは次のリソースを処理するためにブロック４０８に戻ることができる。
【０１０１】
ブロック４１６においてリソースの修正されたバージョンがある場合、リソースの新バージョンに関連付けられたメタデータは、ブロック４１８において分析される。リソースの新バージョンに関連付けられたメタデータは、修正されたリソースの旧バージョンが更新されたアプリケーションパッケージと互換性を持つかどうかを示すフラグまたは定義を有することができる。
【０１０２】
メタデータによって、修正されたリソースをブロック４２０において使用できると示されている場合、修正されたバージョンはブロック４２４において保持することができる。メタデータによって、修正されたリソースをブロック４２０において使用することになっていないと示されている場合、リソースの修正されたバージョンはブロック４２２において削除することができる。
【０１０３】
ある実施形態では、リソースの修正されたバージョンは、いくつかの異なるカスタマイズされたリソースのセットにおいて見出すことができる。かかる実施形態において、修正されたリソースの各インスタンスは、削除することができる。ある実施形態では、修正されたリソースは非アクティブとしてフラグを立てて異なる位置へ移動することができるかまたは、そうでなければリソースを削除することの代わりに使用不可にされてもよい。
【０１０４】
本発明の前述の説明は、説明のために提示されてきた。該説明は、網羅的であることまたは開示された正確な形に本発明を限定することを意図しておらず、他の変更態様及び変化形が上記の示唆を考慮して可能であるかもしれない。本発明の原理及びその実際のアプリケーションを最もよく説明して、意図された特定の使用に適した様々な実施形態及び様々な変更態様において本発明を当業者が最もよく利用できるようにするために、該実施形態は選択されて説明された。添付の特許請求の範囲は、従来技術によって限定される場合を除いては他の代替実施形態を含むと解釈されることを意図している。
【図１】
2011529606.tif 000003
【図２】
2011529606.tif 000004
【図３】
2011529606.tif 000005
【図４】
2011529606.tif 000006
【国際調査報告】
2011529606.tif 000007
2011529606.tif 000008