JP2004038962A - 影響のない方式でソフトウェアアプリケーションをインストールするシステムおよび方法 - Google Patents
影響のない方式でソフトウェアアプリケーションをインストールするシステムおよび方法 Download PDFInfo
- Publication number
- JP2004038962A JP2004038962A JP2003173941A JP2003173941A JP2004038962A JP 2004038962 A JP2004038962 A JP 2004038962A JP 2003173941 A JP2003173941 A JP 2003173941A JP 2003173941 A JP2003173941 A JP 2003173941A JP 2004038962 A JP2004038962 A JP 2004038962A
- Authority
- JP
- Japan
- Prior art keywords
- application
- manifest
- component
- subscription
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Abstract
【課題】既インストールのアプリケーションに影響を与えず、遠隔場所からインストールできるアプリケーションを可能にし、完全に自己記述型のコンポーネントを含むアプリケーションをインストールするメカニズムを提供する。
【解決手段】アプリケーションの各コンポーネントは、そのアプリケーションとともに格納されたアプリケーションマニフェスト112において識別される。アプリケーションマニフェストはアプリケーションの各コンポーネントの各種依存性を記述する情報も含む。アプリケーションに興味を持つ遠隔のユーザは、アプリケーションマニフェストで記述されるアプリケーションをローカルの格納場所106にダウンロードできる。共有コンポーネントの以前のバージョンに依存していた可能性がある既存のアプリケーションが引き続き以前のそのバージョンに依存し続けることを除き、アプリケーションの共有コンポーネントも共有される。
【選択図】 図1
【解決手段】アプリケーションの各コンポーネントは、そのアプリケーションとともに格納されたアプリケーションマニフェスト112において識別される。アプリケーションマニフェストはアプリケーションの各コンポーネントの各種依存性を記述する情報も含む。アプリケーションに興味を持つ遠隔のユーザは、アプリケーションマニフェストで記述されるアプリケーションをローカルの格納場所106にダウンロードできる。共有コンポーネントの以前のバージョンに依存していた可能性がある既存のアプリケーションが引き続き以前のそのバージョンに依存し続けることを除き、アプリケーションの共有コンポーネントも共有される。
【選択図】 図1
Description
【技術分野】
【0001】
本発明は、完全に自己記述型のコンポーネントを含むアプリケーションをインストールするメカニズムに関する。
【背景技術】
【0002】
ソフトウェア開発者は、常にソフトウェアの開発プロセスを単純化しようと努めている。これを行う方法の1つは、それが理にかなうときはいつでもコードを再使用することである。例えば、非常に多くのソフトウェアアプリケーションが、ファイルを開くダイアログボックスによってユーザを促す。行われるタスクは、いくつかのソフトウェアアプリケーションでほぼ同じである可能性があるが、各アプリケーションは、ユーザにダイアログボックスを提示するコードにアクセスしなければならない。ソフトウェア開発者にいくつかの固有のダイアログボックスを独立して作成させるのではなく、現在の開発者は、その代わりに使用することが可能な、ダイアログボックスなど共通のコードを備える共有ライブラリを利用することができる。共有ライブラリを使用してコードを再使用することにより、開発プロセスが大幅に単純化され、人的エラーによって生じる可能性のあるエラーの数が低減する。完全に個別製作のソフトウェアよりは好適であるが、共有ライブラリの使用には問題点がないわけではない。
【0003】
共有ライブラリを利用する複数のソフトウェアアプリケーションを書く場合、各アプリケーションは、そのソフトウェアアプリケーションが予期する状態で利用できる共有ライブラリに依存することになる。共有ライブラリを変更すると、共有ライブラリを参照するソフトウェアアプリケーションが予期できない振る舞いをする可能性があり、実際にしばしば生じている。これは、多くのソフトウェアアプリケーションで共有される可能性があるコードの開発強化にとって障害となる。アップグレードにより他のソフトウェアアプリケーションが正常に機能しなくなる可能性があるために、アップグレードがコード中のバグの修正である場合でも、共有ライブラリのアップグレードや修正を提供するのを妨げている。新しいソフトウェアアプリケーションは、それぞれ、それまでに存在しなかった状況を新たに生み出す可能性があるので、ある共有コードが遭遇しうるすべての状況でその共有コードをテストすることは不可能である。
【0004】
共有ライブラリに伴うこうした問題点により、ソフトウェアアプリケーションをインストールまたはアップグレードすることがさらに難しくなっている。嘗ては、他のソフトウェアアプリケーションへの影響を懸念することなくソフトウェアアプリケーションをインストールまたはアップグレードすることができた。しかし、共有ライブラリを使用すると、もはやそのような場合ではない。今日の環境では、共有ライブラリを含むアプリケーションをインストールすると、他のソフトウェアアプリケーションがその共有ライブラリに依存している場合には、そのソフトウェアアプリケーションを誤動作させる可能性がある。多くの場合、共有ライブラリに対するごくわずかな変更でさえも他のアプリケーションに及ぼしうる影響を正確に予測することは難しい。これは、アプリケーションのインストールまたはアップグレードを通例は自動的に行わない理由の1つである。通例、インストールおよびアップグレードはユーザが介在して行われ、また恐らくより重要なこととして、その処理によって他のアプリケーションに予期せぬ結果が生じる恐れがあることをユーザに警告した上で行われる。こうした警告は、一般に、特にそのような事象が生じる理由やその問題の修復法を知らない、コンピュータに精通していないユーザを当惑させる。
【0005】
こうした問題やその他の問題により、実行中のソフトウェアのインストールとアップグレードの実現が困難になっている。ユーザは、各自の既存のアプリケーションが(少なくとも部分的に)壊れるのではないかという不安から、ウェブページ上のハイパーリンクを1回クリックするだけでインストールされ、実行されるダウンロード可能なソフトウェアの簡易性を受け入れるのに時間がかかった。ソフトウェア開発者は、同じ不安からそのようなダウンロード可能ソフトウェアを提供することに消極的であった。ソフトウェアをダウンロードしインストールするための既存のメカニズムは、こうした不安を解消していない。
【0006】
ソフトウェアをダウンロードしインストールする代替法も当業界で広く受け入れられているとは思われない。例えば、ホストされるアプリケーションの概念は、基本的に、遠隔からアクセス可能なサーバにアプリケーションを格納し、インストールすることを意味する。クライアントコンピュータは、そのサーバに接続し、アプリケーションを実行することができるが、その際には、そのアプリケーションのユーザインターフェース面(例えばキーストローク、マウスの動きおよびクリック、画面表示)だけがクライアントコンピュータとサーバ間でやり取りされる。しかし、このモデルは、ネットワークを通じてアプリケーションを実行することから生じる相対的な性能上の影響のために広く受け入れられてはいない。ユーザ体験は、クライアントとサーバ間の接続のバンド幅に直接結びついており、ネットワークに障害が起きた場合には、ホストされるアプリケーションが完全に使用不能になる。したがって、容易にダウンロードし、インストールまたはアップグレードすることができる、遠隔から管理されるソフトウェアの利便性がソフトウェアコミュニティに存在しない。
【考案の開示】
【発明が解決しようとする課題】
【0007】
本発明は、既にインストールされたソフトウェアアプリケーションに影響を与えることなく、遠隔位置からインストール可能なソフトウェアアプリケーションを可能にすることを対象とする。本発明は、完全に自己記述型のコンポーネントを含むアプリケーションをインストールするメカニズムを提供する。
【課題を解決するための手段】
【0008】
アプリケーションの各コンポーネントは、そのアプリケーションとともに記憶されたアプリケーションマニフェスト中で識別される。アプリケーションマニフェストは、アプリケーションの各コンポーネントの各種の依存性を記述する情報も含む。そのアプリケーションに興味を持つ遠隔のユーザは、アプリケーションマニフェストに記述されたアプリケーションをローカルの格納場所にダウンロードすることができる。以前のバージョンの共有コンポーネントに依存していた可能性のある既存アプリケーションがそのバージョンに依存し続けることを除いて、アプリケーションの共有コンポーネントも共有される。あるアプリケーションの異なるバージョンは並行してローカルに記憶される。
【発明を実施するための最良の形態】
【0009】
本発明は、既存のソフトウェアに影響を与えずにインストールできるダウンロード可能なソフトウェアアプリケーションを可能にするマニフェストベースのシステムおよび方法を対象とする。
【0010】
図1は、本発明の実装を実施することが可能な分散ネットワーキング環境100の機能ブロック図による概略である。図1に示すように、サーバ102およびクライアントコンピュータ120など2つ以上のコンピュータがネットワーク105を通じて接続されている。これらのコンピュータは企業環境内で接続することができ、その場合ネットワーク105はローカルエリアネットワークであってもワイドエリアネットワークであってもよい。同様に、コンピュータは、任意でインターネットなどのワイドエリアネットワークを通じて接続してもよい。
【0011】
サーバ102は、ネットワーク105に接続された他のコンピューティングシステムがリソースを利用できるようにするように構成されたコンピューティングシステムである。サーバ102は、ハイパーテキストマークアップ言語(HTML)文書などのインターネット関連リソースをサービスするウェブサービスソフトウェアを含むことができる。サーバ102は、サーバデータストア110の形態のローカルストレージを含む。データストア110には、ネットワーク105を通じてサーバ102が利用できる状態になっているリソースの少なくとも一部がある。詳細には、アプリケーションコード115とアプリケーションマニフェスト112がデータストア110に格納されるが、これらについては下記で図2とともに詳細に説明する。サーバ102は、アプリケーションコード115を保持するため、およびアプリケーションマニフェスト112や他の関連文書およびリソースを構成し、保持するための他のアプリケーション(下記で詳細に説明する)も含む。この実装では、サーバ102は、アプリケーションコード115およびアプリケーションマニフェスト112を、ネットワーク105を通じて他のコンピューティングシステムが入手できるようにする。
【0012】
クライアントコンピュータ120は、ローカルに実行されるアプリケーションを実行し、ネットワーク105を通じて他のコンピュータに接続するように構成されたコンピューティングシステムである。クライアントコンピュータ120も、クライアントデータストア106の形態のローカルストレージを含む。クライアントデータストア106には、ローカルアプリケーションストア109およびサブスクリプション情報107が常駐する。クライアントコンピュータ120は、ネットワークを通じて他のコンピュータと対話するための図示しない他のアプリケーション(例えばインターネットブラウジングソフトウェアなど)、およびローカルアプリケーションストア109とサブスクリプション情報107を保持するための他のアプリケーションも含む。クライアントコンピュータ120とその重要な各コンポーネントについては下記で図3との関係でより詳細に説明する。
【0013】
簡単に述べたように、クライアントコンピュータ120のユーザは、任意の従来の方式でサーバ102に接続することができる。サーバ102は、サーバデータストア110に常駐するファイルを利用可能にするウェブページまたは何らかのその他のリソースを提示する。ユーザによるリンクの選択などに応答して、アプリケーションマニフェスト112がクライアントコンピュータ120に渡される。アプリケーションマニフェスト112は、名前、何らかの識別子、および可能性としてはアプリケーションに関連するハッシュ値により、アプリケーションを一意に識別する。アプリケーションマニフェスト112は、各コンポーネント、そのバージョン、および依存性を含めて、アプリケーションコード115を詳細に記述する。アプリケーションマニフェスト112を検討して、アプリケーションコード115がクライアントコンピュータ120にインストールされていない場合は、アプリケーションコード115がサーバ102からクライアントコンピュータ120に渡され、インストールされる。
【0014】
本発明によれば、既存のソフトウェアアプリケーションに影響を及ぼす恐れなしに、アプリケーションコード115をクライアントコンピュータ120にインストールすることができる。今日のコンピューティングシステムの一部では、アプリケーションの各コンポーネントに「ストロングネーム(strongname)」を使用しているが、ストロングネームは、コンポーネントについての十分な情報を含み、コンポーネントが他の同様のコンポーネントから一意に識別される。例えば、共有ダイナミックリンクライブラリなどのコンポーネントのストロングネームは、コンポーネントのバージョン番号、ビルド番号などを含むことができる。ストロングネームを使用すると、デジタル署名と公開鍵を使用して、コンポーネントにグローバルに一意の識別が与えられる。
【0015】
クライアントコンピュータ120の各アプリケーションは十分に自己記述型であり、(各自のストロングネームを含めて)各アプリケーションの各コンポーネントの依存性が分かる。また、アプリケーションコード115中の各コンポーネントは、各自の依存性を含めてアプリケーションマニフェスト112に十分に記述され、アプリケーションコード115の特定の共有コンポーネントがクライアントコンピュータ120の既存アプリケーションとコンフリクトするかどうかを判定することができる。そのために、既に各自の正確な状態でクライアントコンピュータ120に存在してないアプリケーションコード115のすべてのコンポーネントが、サーバ102から渡される。共有される既存コードまたはその他の既存コードは、クライアントコンピュータ120にそのまま残される。このように、クライアントコンピュータ120上の既存アプリケーションは、引き続き同じ共有コンポーネントと連動して動作し続け、新しくダウンロードされたアプリケーションは、そのアプリケーションが正常に動作させる必要があるすべてのコンポーネントを含む。新しいバージョンの共有コンポーネント(ストロングネームによって識別される)を参照するように既存アプリケーションの依存性が変更された場合にのみ、その既存アプリケーションは、その共有コンポーネントのダウンロードされたバージョンを使用する。
【0016】
図2は、本発明により、遠隔のクライアントコンピュータにインストールするアプリケーションコードを提供する例示的サーバ102をより詳細に表す機能ブロック図である。図に示すように、サーバ102は、あるアプリケーションの2バージョン、すなわちアプリケーションバージョンA201とアプリケーションバージョンB202を含む。このアプリケーションの各バージョンは、実行ファイル、コンフィギュレーションファイルなどいくつかのプログラムファイル(210、260)を含む。アプリケーションの各バージョンは、2つ以上のアプリケーションプログラムで共有することができるダイナミックリンクライブラリであるアセンブリ(211、261)も含むことができる。あるいは、アプリケーションのコンポーネントは、そのアプリケーションのインストールバージョンの既存コンポーネントに適用されるパッチであってもよい。記憶スペースを節減し、ダウンロードバンド幅を低減するために、アプリケーションのいくつかのコンポーネントは、アーカイブフォーマットまたは圧縮フォーマット(例えばCABファイルやZipフォーマット)で格納することができる。
【0017】
上述のように、アプリケーション内のコンポーネントは、各コンポーネントを他のコンポーネントから一意に識別するストロングネームで識別することができる。詳細には、共有されるアセンブリ211、261は、ストロングネームで識別する。この例では、アプリケーションバージョンA201は、ウェブサーバソフトウェア255によってネットワーク105を通じて他のコンピューティングシステムにサービスされている。もう一方のバージョン、アプリケーションバージョンB202は、将来の使用のため、またはアーカイブの目的でサーバ102に格納されている。アプリケーションの各バージョンは完全なものである。
【0018】
呼び出されると、マニフェストジェネレータ225は、アプリケーションバージョンA201など選択されたバージョンのアプリケーションを評価し、いくつかのコンポーネント間の依存性を識別する。次いでマニフェストジェネレータ225は、選択されたアプリケーションバージョンのアプリケーションマニフェスト212を作成する。一実装では、アプリケーションマニフェスト212は、選択されたアプリケーションの各コンポーネントをそのストロングネームで識別するXML(eXtensibleMarkupLanguage)ベースの文書であり、ハッシュ値、公開鍵トークンなど各コンポーネントを一意に識別するのに役立つ追加的な情報を含むことができる。このような性質のアプリケーションマニフェストのサンプルを「付録A−アプリケーションマニフェストサンプル」として本明細書に含めている。付録Aは連続する一つのサンプルである。別の実装では、アプリケーションマニフェスト212は、アプリケーションの実行可能コンポーネントへのエントリポイントの内側にパッケージされた情報であってもよい。本明細書では特定のファイルとして説明するが、本発明のアプリケーションマニフェスト212は、任意の形態でアプリケーションのコンポーネントを記述する情報を意味するものと解釈されたく、ここに記載する以外の場所に存在することができる。ここに記載するアプリケーションマニフェスト212は例証に過ぎない。
【0019】
また、マニフェストジェネレータ225は、数バージョンのアプリケーションのうち現在ウェブサーバソフトウェア255によってサービスされているバージョンを識別するデフォルトのサブスクリプションマニフェスト250も作成することができる。サブスクリプションマニフェスト250は、現在のバージョンのアプリケーションのアプリケーションマニフェスト212をポイントする識別情報(例えばユニバーサルリソースロケータ)を含む別のXMLベースの文書である。本発明の実施で使用することができるサブスクリプションマニフェストのサンプルを「付録B−サブスクリプションマニフェストサンプル」として本明細書に含めている。
【0020】
ウェブサーバソフトウェア255は、サブスクリプションマニフェスト250へのハイパーリンクを含むHTMLファイルまたは他のウェブによるアクセスが可能なページを利用可能な状態にすることができる。このようにしてリモートコンピュータはHTMLファイルにアクセスし、ハイパーリンクをアクチベートし、サブスクリプションマニフェスト250を入手し、そしてサブスクリプションマニフェスト250で識別される現在のバージョンのアプリケーションを取得することができる。このように、単に別のバージョンのアプリケーションを識別するようにサブスクリプションマニフェスト250を修正することにより、パブリッシャは、直ちにもう一方のバージョンのアプリケーションをサービスし始めることができる。各バージョンは完全であり自己記述型なので、新しい現在のバージョンを取得し、インストールしてしまうと、現在のバージョンを変更することによって他のソフトウェアアプリケーションに否定的な影響が及ぶ恐れがない。サブスクリプションマニフェスト250は、消費側のシステムがどの程度の頻度で更新をチェックすべきか、またはいつチェックを行うかについての命令など、他の情報も含むことができる。
【0021】
図3は、本発明により、サーバからアプリケーションを取得し、ロードすることができる例示的なクライアントコンピュータ120をより詳細に表す機能ブロック図である。クライアントコンピュータ120は、ユーザがネットワークを通じて遠隔の場所に接続することを可能にするウェブブラウジングソフトウェア302を含む。ウェブブラウジングソフトウェア302は、オペレーティングシステムなどのコンポーネントとして含めることができる。この例では、ウェブブラウジングソフトウェア302は、クライアントコンピュータ120のユーザが、サブスクリプションマニフェスト250へのハイパーリンクを含む上述のサーバ102などのサーバからウェブページなどを入手することを可能にする。ここで一時的に図4を見ると、上述のサーバ102によってサービスできるウェブページ410を含むウェブブラウジングソフトウェア302の表示例412を示している。ウェブページ410は、ソフトウェアアプリケーションを遠隔のコンピューティングシステムがダウンロードできる状態にするためのリソースである。ウェブページ410は、上述のサブスクリプションマニフェスト250をポイントするハイパーリンク460を含む。あるいは、ハイパーリンク460は、サブスクリプションマニフェスト250ではなく直接アプリケーションマニフェスト212をポイントするように構成してもよい。
【0022】
ウェブページ410は、インターネット、企業イントラネット、あるいは任意の他のネットワークアクセスが可能な場所を通じて提供できることが認識されよう。ハイパーリンク460をアクチベートすると、サブスクリプションマニフェスト250がサーバから送られる。ウェブページ410は、ユーザがサブスクリプションマニフェスト250の通知を受け取ることができる1方式に過ぎないことを理解されたい。例えば、サブスクリプションマニフェスト250へのリンクは電子メールメッセージなどに提供することができる。別の代替法では、サーバ102に格納された他のバージョンのアプリケーションをポイントする複数のハイパーリンク(例えばハイパーリンク470)を提供することも可能である。このように、現在のバージョンのアプリケーションを所望しないユーザは、そのアプリケーションのより古いバージョンまたは代替バージョンを取得し、インストールすることを選択することができる。
【0023】
図3に戻ると、サブスクリプションマニフェスト250を取得すると、処理のためにそれをアクチベートコンポーネント308に渡す。この実装では、アクチベートコンポーネント308は、サブスクリプションマニフェスト250を構文解析し、アプリケーションの名前、バージョン、および場所など対応するアプリケーションを識別するのに十分な情報を抽出するように構成される。ハイパーリンク460が直接アプリケーションマニフェスト212をポイントする場合は、その情報を直接アプリケーションマニフェスト212から取得することができる。その情報により、アクチベートコンポーネント308はローカルアプリケーションストア109に問い合わせて、識別されるアプリケーションが既にクライアントコンピュータ120にローカルに格納されているかどうかを判定することができる。ローカルアプリケーションストア109は、インストールされているアプリケーション305のローカルコピーと、アプリケーション固有のセキュリティ情報307を含む。より詳細には、各アプリケーションをダウンロードする際に、そのアプリケーションに関連するURLをアプリケーションコードとともにキャッシュする。これを行うことにより、そのアプリケーションをインストールした際に有効であったセキュリティ特権が、その後実行されるそのアプリケーションのインスタンスに引き続き適用される。例えば、あるインターネット上の場所(そのURLによって識別される)からアプリケーションをダウンロードする場合は、そのインターネットゾーンに適用されるセキュリティ特権を、そのアプリケーションが実行されるたびにアプリケーションに適用することができる。
【0024】
アクチベートコンポーネント308が、サブスクリプションマニフェスト250で識別されるアプリケーションがローカルにインストールされていないと判定した場合、アクチベートコンポーネント308は、そのアプリケーションに関する情報をダウンロードコンポーネント309に渡す。ダウンロードコンポーネント309は、そのアプリケーションに関連するダウンロードデータ315を取得し、アプリケーションをローカルにインストールするように構成される。具体的には、ダウンロードコンポーネント309は、サブスクリプションマニフェスト250で識別されるアプリケーションマニフェスト112を取得し、アプリケーションマニフェスト112を構文解析して、アプリケーションコンポーネントと依存性を識別することができる。ダウンロードコンポーネント309は次いで、まだローカルに格納されていないアプリケーションコンポーネントをサーバ102から取得することができる。ここで再度、各アプリケーションコンポーネントはストロングネームによって識別されるので、アプリケーションマニフェストにおいて識別されるコンポーネントと同一のローカルコンポーネントだけを使用し、他のコンポーネントはサーバ102から取得することに留意されたい。同様に、ダウンロードするコンポーネントは、既存バージョンのアプリケーションのインストール済みコンポーネントに適用できるパッチとして、さらにダウンロードコストを低減してもよい。サーバ102からパッチをダウンロードする場合、そのパッチは既存のアプリケーションコンポーネントのコピーに適用されるが、その後はそのアプリケーションの別の新しいバージョンとしてローカルに格納されることを理解されたい。このプロセスは各アプリケーションバージョンの並行性を維持し、同時にダウンロードの負担をさらに低減する。アプリケーションコンポーネントをダウンロードすると、ダウンロードコンポーネント309はそのコンポーネントに関連する署名を検証してそのコンポーネントを認証し、ハッシュチェックを行って正しいコンポーネントを取得したことを保証し、そのアプリケーションコンポーネントをアプリケーションストア109に入れる。あるいは、特定のコンポーネントは識別して、ただちにダウンロードするのではなく要求時にダウンロードすることもできる。
【0025】
ダウンロードコンポーネント309がクライアントコンピュータ120に関連する情報を検証するか、またはアプリケーションをダウンロードしインストールするのに十分な権限があることをユーザが保証することを要求するデジタル権利管理システムを(サーバ102またはクライアントコンピュータ120のいずれか、または両方に)実装することができる。また、インストールプロセスの一部として、アプリケーションを購入するために要求されるライセンス同意をユーザに求めることもできる。
【0026】
図3には単一のエンティティとして示しているが、アプリケーションストア109は実際にはクライアントデータストア106内の複数の場所に常駐することができる。例えば、アプリケーションストア109は、多くのアプリケーションコンポーネントが格納された場所と、共有コンポーネントが格納された別の場所(例えばグローバルアセンブリキャッシュ)とを含むことができる。
【0027】
最終的にアプリケーションコンポーネントをローカルアプリケーションストア109に入れると、アクチベートコンポーネント308はそのアプリケーションをサーバコンポーネント312に登録する。サーバコンポーネント312は、サブスクライブされるアプリケーションの変更がないか、サブスクリプションマニフェスト250など登録されたサブスクリプションマニフェストを周期的にポーリングする役割を担うローカルサービスである。サーバコンポーネント312は、サブスクライブされる各アプリケーション、そのアプリケーションのサブスクリプションマニフェストの場所、およびサブスクリプションマニフェストが変化したかどうかを判定する時間間隔を識別するサブスクリプション情報314を保持する。一実装では、クライアントコンピュータ120がアイドル状態であるときに、サーバコンポーネント312は、サブスクライブされるアプリケーションのサブスクリプションマニフェストを取得することを試み、変化しているサブスクリプションマニフェストがある場合には、変更されたサブスクリプションマニフェストがアクチベートコンポーネント308に渡されて、サブスクライブされるアプリケーションの新しいバージョンがあればそれを自動的に取り込む。
【0028】
ここでも、各アプリケーションは並行してローカルに格納されるので、各アプリケーションのコンポーネント間にコンフリクトがない。したがって、インストールされた他のアプリケーションに影響を与えることなく、あるアプリケーションの新しいバージョンをダウンロードし、インストールすることができる。これは、上述のようにストロングネームをつけたアプリケーションコンポーネントを使用することによって可能になる。さらに、アプリケーションを並行してローカルにインストールするので、各アプリケーションバージョンが一意になり、ユーザが以前に使用していたバージョンに戻りたい場合には効果的なロールバックに対する向上したサポートが得られる。簡潔に述べると、各アプリケーションが他のアプリケーションから独立しているので、既存のアプリケーションに影響を与えずにインストールできるのと同様に、別のアプリケーションに影響を与える恐れなくアプリケーションをアンインストールすることができる。
【0029】
本発明によって構想される並行型のインストールは、特定のアプリケーションコンポーネント、特に共有コンポーネントに割り当てられるストロングネームによって可能になることに留意されたい。コンポーネントがグローバルに一意でない、従来のまたは伝統的なネーミング技術を使用して並行のインストールを試みると、各種の理由により失敗する可能性がある。例えば、単にあるアプリケーションのすべてのコンポーネントを1つのディレクトリに格納することは、共有コンポーネントにパッチを当てるのが難しくなるので十分とは言えない。インストールされたアプリケーションおよびその他のアプリケーションによってあるコンポーネントが共有される場合は、そのコンポーネントにパッチを適用すると、そのパッチを適用するためにその共有コンポーネントのすべての他のインスタンスを見つけることも必要となる。コンポーネントを(ストロングネームや何らかのその他のメカニズムにより)一意に識別することができないと、(例えば)ビルド番号だけが異なる2つ以上の同一の共有コンポーネントが、1つの共有コンポーネント位置で容易に共存することができない。本発明はこれらの制限を克服する。
【0030】
サブスクリプションを登録すると、アクチベートコンポーネント308は管理されるホスティングコンポーネント330にコントロールを渡し、ホスティングコンポーネント330は、そのアプリケーションを取得した場所のURLとセキュリティ特権に基づいて、そのアプリケーションをセキュアなアプリケーションドメイン(例えば「サンドボックス」)で開始する。また、アプリケーションまたはアプリケーションのコンポーネントは、パブリッシャによってデジタル的に署名することができる。その場合にはパブリッシャのデジタル署名を使用して、実行アプリケーションにサンドボックスを超える許可を提供することができる。すなわち、サンドボックスが適用されるアプリケーションに与えられる共通の許可以外に、特定パブリッシャからのアプリケーションに権利を付与するセキュリティ情報をクライアントコンピュータ120に格納することができる。管理されるホスティングコンポーネント330は、オンデマンドコンポーネントのダウンロードと、共有コンポーネントの単一のインスタンス化のためにも提供することができる。
【0031】
図5は、ネットワークを通じて利用可能になっているアプリケーションを取得し、インストールするプロセスを概説する論理的流れ図である。このプロセスは、ユーザが、アプリケーションに関連するハイパーリンクを選択するなど、何らかの方式でアプリケーションをインストールする要求を示したところから開始する。プロセスはブロック503で開始し、アプリケーションに関連するサブスクリプションマニフェストの取得を開始する。一実施形態では、ウェブページ上のハイパーリンクがサブスクリプションマニフェストをポイントし、ユーザは、そのハイパーリンクをトリガすることによりアプリケーションをダウンロードおよびインストールする要求を表し、サブスクリプションマニフェストをクライアントコンピュータにダウンロードさせる。
【0032】
ブロック505で、アプリケーションを記述する情報を含むアプリケーションマニフェストを取得する。この実施形態では、サブスクリプションマニフェストは、そのアプリケーションマニフェストがどこに存在するかを識別する情報を含む。その情報に基づいて、アプリケーションマニフェストを取得する。
【0033】
判定ブロック507で、同一バージョンのアプリケーションが既にローカルに存在するかどうかを判定する。この判定は、アプリケーションマニフェストを構文解析してアプリケーションについての識別情報を識別し、その識別情報とローカルにインストールされたアプリケーションとを比較することによって行うことができる。同一のアプリケーションが既にインストールされている場合、プロセスはブロック517でローカルに格納されたバージョンのアプリケーションを実行する。そうでない場合、プロセスはブロック509に進む。
【0034】
ブロック509で、アプリケーションのコンポーネントをダウンロードする。次にアプリケーションマニフェストにおいて識別される各コンポーネントをダウンロードすることができる。ダウンロードプロセスの一部として、各コンポーネントの記述を、既にローカルに格納されている各コンポーネントの記述と比較することができ、既にローカルに格納されているコンポーネントはダウンロードから除外できることを理解されよう。
【0035】
ブロック511で、ダウンロードしたコンポーネントをローカルアプリケーションストアに格納する。共有コンポーネントは、グローバルキャッシュまたはシステムキャッシュに格納して複数のアプリケーションで利用できるようにすることができる。
【0036】
ブロック515で、サブスクリプションのためにアプリケーションを登録する。一実装では、サブスクライブされるアプリケーションの現在発行されているバージョンに変更がないか、サーバコンポーネントが周期的にポーリングを行う。これは、アプリケーションのパブリッシャによって保持されるサブスクリプションマニフェストを見つけ、サブスクリプションマニフェストにおいて識別されるアプリケーションのバージョンと、現在インストールされているアプリケーションとを比較することによって実現することができる。サブスクリプション中の設定に基づいて、サブスクライブされているアプリケーションのより新しいバージョンを自動的にクライアントコンピュータにダウンロードすることができる。大規模なアプリケーションなど特定の事例では、ユーザにUIを提示して、ダウンロードが行われていることを通知し、ダウンロードおよびインストールの進行状況を提供することができる。最後にブロック517で、ローカルにインストールされたアプリケーションを実行する。
【0037】
図6は、本発明の一実装により、アプリケーションを自己記述型にし、ネットワークを通じてダウンロードできる状態にするプロセスを概説する論理的流れ図である。このプロセスは、アプリケーションのパブリッシャまたは開発者がアプリケーションをダウンロード可能な状態にする要求を示した際に開始する。処理はブロック603で開始する。
【0038】
ブロック603で、アプリケーションを分析してその構成部分(コンポーネント)を判定し、各構成部分間の依存性を識別する。この情報は、アプリケーションと関連付けてアプリケーションマニフェストに格納することができる。
【0039】
ブロック606で、インストールされたアプリケーションを識別するサブスクリプションマニフェストを作成し、このサブスクリプションマニフェストは、そのアプリケーションをダウンロードしたいユーザがネットワークを介して入手できるようにする。サブスクリプションマニフェストは、アプリケーションを一意に識別し、アプリケーションの場所を識別する情報を含む。一実装では、サブスクリプションマニフェストは、そのアプリケーションに対応するアプリケーションマニフェストをポイントするURLを含む。
【0040】
ブロック611で、アプリケーションおよびサブスクリプションマニフェストを、ネットワークを通じた公開のために公衆にアクセス可能な場所にコピーする。一実装では、公衆にアクセス可能な場所は、ウェブサービスソフトウェアによって維持されるパブリックシェアに対応することができる。別の実装では、公衆にアクセス可能な場所は、企業イントラネットなどに対応することができる。
【0041】
ブロック615で、アプリケーションをダウンロードしたいユーザにサブスクリプションマニフェストへのリンクを発行する。例えば、サブスクリプションマニフェストへのリンクを含むウェブページを作成することができる。アプリケーションをクライアントコンピュータにダウンロードしたいユーザは、そのウェブページを訪れ、リンクをアクチベートすることができる。それに応答して、サブスクリプションマニフェストをユーザのクライアントコンピュータに取得することができる。クライアントコンピュータが適切に構成されている場合には、次いでサブスクリプションマニフェスト中でポイントされるアプリケーションをダウンロードし、クライアントコンピュータにインストールすることができる。
【0042】
上記の仕様、実施例およびデータは、本発明の構成の製造および使用の完全な説明を提供する。本発明の精神および範囲から逸脱することなく本発明の多くの実施形態を作成することができるため、本発明は特許請求の範囲に存る。
【0043】
付録A.アプリケーションマニフェストサンプル
【0044】
【表1】
【0045】
【表2】
【0046】
【表3】
【0047】
付録B.サブスクリプションマニフェストサンプル
【0048】
【表4】
【図面の簡単な説明】
【0049】
【図1】本発明の実装を実施することが可能な分散ネットワーキング環境の概略機能ブロック図である。
【図2】本発明により、リモートクライアントコンピュータにインストールするアプリケーションコードをサービスする例示的サーバを詳細に示す機能ブロック図である。
【図3】本発明により、サーバからアプリケーションを取得し、ロードすることができる例示的クライアントコンピュータを示す機能ブロック図である。
【図4】本発明の一実装による、ウェブブラウジングソフトウェアによって提示し、リモートアプリケーションのダウンロードを可能にすることができる例示的な画像表示を示す図である。
【図5】ネットワークを通じて利用することができるアプリケーションを取得し、インストールするプロセスを概説する論理的流れ図である。
【図6】本発明の一実装による、アプリケーションを自己記述型とし、ネットワークを通じてダウンロードできるようにするプロセスを概説する論理的流れ図である。
【符号の説明】
【0050】
102 サーバ
105 ネットワーク
106,110 データストア
107,314 サブスクリプション情報
109 ローカルアプリケーションストア
112,212 アプリケーションマニフェスト
115 アプリケーションコード
120 クライアントコンピュータ
201 アプリケーションバージョンA
202 アプリケーションバージョンB
210,260 プログラムファイル
211,261 アセンブリ
225 マニフェストジェネレータ
250 サブスクリプションマニフェスト
255 ウェブサーバソフトウェア
302 ウェブブラウジングソフトウェア
305 インストールされたアプリケーション
307 セキュリティ情報
308 アクチベートコンポーネント
309 ダウンロードコンポーネント
312 サーバコンポーネント
315 ダウンロードデータ
330 管理されるホスティングコンポーネント
410 ウェブページ
460,470 ハイパーリンク
【0001】
本発明は、完全に自己記述型のコンポーネントを含むアプリケーションをインストールするメカニズムに関する。
【背景技術】
【0002】
ソフトウェア開発者は、常にソフトウェアの開発プロセスを単純化しようと努めている。これを行う方法の1つは、それが理にかなうときはいつでもコードを再使用することである。例えば、非常に多くのソフトウェアアプリケーションが、ファイルを開くダイアログボックスによってユーザを促す。行われるタスクは、いくつかのソフトウェアアプリケーションでほぼ同じである可能性があるが、各アプリケーションは、ユーザにダイアログボックスを提示するコードにアクセスしなければならない。ソフトウェア開発者にいくつかの固有のダイアログボックスを独立して作成させるのではなく、現在の開発者は、その代わりに使用することが可能な、ダイアログボックスなど共通のコードを備える共有ライブラリを利用することができる。共有ライブラリを使用してコードを再使用することにより、開発プロセスが大幅に単純化され、人的エラーによって生じる可能性のあるエラーの数が低減する。完全に個別製作のソフトウェアよりは好適であるが、共有ライブラリの使用には問題点がないわけではない。
【0003】
共有ライブラリを利用する複数のソフトウェアアプリケーションを書く場合、各アプリケーションは、そのソフトウェアアプリケーションが予期する状態で利用できる共有ライブラリに依存することになる。共有ライブラリを変更すると、共有ライブラリを参照するソフトウェアアプリケーションが予期できない振る舞いをする可能性があり、実際にしばしば生じている。これは、多くのソフトウェアアプリケーションで共有される可能性があるコードの開発強化にとって障害となる。アップグレードにより他のソフトウェアアプリケーションが正常に機能しなくなる可能性があるために、アップグレードがコード中のバグの修正である場合でも、共有ライブラリのアップグレードや修正を提供するのを妨げている。新しいソフトウェアアプリケーションは、それぞれ、それまでに存在しなかった状況を新たに生み出す可能性があるので、ある共有コードが遭遇しうるすべての状況でその共有コードをテストすることは不可能である。
【0004】
共有ライブラリに伴うこうした問題点により、ソフトウェアアプリケーションをインストールまたはアップグレードすることがさらに難しくなっている。嘗ては、他のソフトウェアアプリケーションへの影響を懸念することなくソフトウェアアプリケーションをインストールまたはアップグレードすることができた。しかし、共有ライブラリを使用すると、もはやそのような場合ではない。今日の環境では、共有ライブラリを含むアプリケーションをインストールすると、他のソフトウェアアプリケーションがその共有ライブラリに依存している場合には、そのソフトウェアアプリケーションを誤動作させる可能性がある。多くの場合、共有ライブラリに対するごくわずかな変更でさえも他のアプリケーションに及ぼしうる影響を正確に予測することは難しい。これは、アプリケーションのインストールまたはアップグレードを通例は自動的に行わない理由の1つである。通例、インストールおよびアップグレードはユーザが介在して行われ、また恐らくより重要なこととして、その処理によって他のアプリケーションに予期せぬ結果が生じる恐れがあることをユーザに警告した上で行われる。こうした警告は、一般に、特にそのような事象が生じる理由やその問題の修復法を知らない、コンピュータに精通していないユーザを当惑させる。
【0005】
こうした問題やその他の問題により、実行中のソフトウェアのインストールとアップグレードの実現が困難になっている。ユーザは、各自の既存のアプリケーションが(少なくとも部分的に)壊れるのではないかという不安から、ウェブページ上のハイパーリンクを1回クリックするだけでインストールされ、実行されるダウンロード可能なソフトウェアの簡易性を受け入れるのに時間がかかった。ソフトウェア開発者は、同じ不安からそのようなダウンロード可能ソフトウェアを提供することに消極的であった。ソフトウェアをダウンロードしインストールするための既存のメカニズムは、こうした不安を解消していない。
【0006】
ソフトウェアをダウンロードしインストールする代替法も当業界で広く受け入れられているとは思われない。例えば、ホストされるアプリケーションの概念は、基本的に、遠隔からアクセス可能なサーバにアプリケーションを格納し、インストールすることを意味する。クライアントコンピュータは、そのサーバに接続し、アプリケーションを実行することができるが、その際には、そのアプリケーションのユーザインターフェース面(例えばキーストローク、マウスの動きおよびクリック、画面表示)だけがクライアントコンピュータとサーバ間でやり取りされる。しかし、このモデルは、ネットワークを通じてアプリケーションを実行することから生じる相対的な性能上の影響のために広く受け入れられてはいない。ユーザ体験は、クライアントとサーバ間の接続のバンド幅に直接結びついており、ネットワークに障害が起きた場合には、ホストされるアプリケーションが完全に使用不能になる。したがって、容易にダウンロードし、インストールまたはアップグレードすることができる、遠隔から管理されるソフトウェアの利便性がソフトウェアコミュニティに存在しない。
【考案の開示】
【発明が解決しようとする課題】
【0007】
本発明は、既にインストールされたソフトウェアアプリケーションに影響を与えることなく、遠隔位置からインストール可能なソフトウェアアプリケーションを可能にすることを対象とする。本発明は、完全に自己記述型のコンポーネントを含むアプリケーションをインストールするメカニズムを提供する。
【課題を解決するための手段】
【0008】
アプリケーションの各コンポーネントは、そのアプリケーションとともに記憶されたアプリケーションマニフェスト中で識別される。アプリケーションマニフェストは、アプリケーションの各コンポーネントの各種の依存性を記述する情報も含む。そのアプリケーションに興味を持つ遠隔のユーザは、アプリケーションマニフェストに記述されたアプリケーションをローカルの格納場所にダウンロードすることができる。以前のバージョンの共有コンポーネントに依存していた可能性のある既存アプリケーションがそのバージョンに依存し続けることを除いて、アプリケーションの共有コンポーネントも共有される。あるアプリケーションの異なるバージョンは並行してローカルに記憶される。
【発明を実施するための最良の形態】
【0009】
本発明は、既存のソフトウェアに影響を与えずにインストールできるダウンロード可能なソフトウェアアプリケーションを可能にするマニフェストベースのシステムおよび方法を対象とする。
【0010】
図1は、本発明の実装を実施することが可能な分散ネットワーキング環境100の機能ブロック図による概略である。図1に示すように、サーバ102およびクライアントコンピュータ120など2つ以上のコンピュータがネットワーク105を通じて接続されている。これらのコンピュータは企業環境内で接続することができ、その場合ネットワーク105はローカルエリアネットワークであってもワイドエリアネットワークであってもよい。同様に、コンピュータは、任意でインターネットなどのワイドエリアネットワークを通じて接続してもよい。
【0011】
サーバ102は、ネットワーク105に接続された他のコンピューティングシステムがリソースを利用できるようにするように構成されたコンピューティングシステムである。サーバ102は、ハイパーテキストマークアップ言語(HTML)文書などのインターネット関連リソースをサービスするウェブサービスソフトウェアを含むことができる。サーバ102は、サーバデータストア110の形態のローカルストレージを含む。データストア110には、ネットワーク105を通じてサーバ102が利用できる状態になっているリソースの少なくとも一部がある。詳細には、アプリケーションコード115とアプリケーションマニフェスト112がデータストア110に格納されるが、これらについては下記で図2とともに詳細に説明する。サーバ102は、アプリケーションコード115を保持するため、およびアプリケーションマニフェスト112や他の関連文書およびリソースを構成し、保持するための他のアプリケーション(下記で詳細に説明する)も含む。この実装では、サーバ102は、アプリケーションコード115およびアプリケーションマニフェスト112を、ネットワーク105を通じて他のコンピューティングシステムが入手できるようにする。
【0012】
クライアントコンピュータ120は、ローカルに実行されるアプリケーションを実行し、ネットワーク105を通じて他のコンピュータに接続するように構成されたコンピューティングシステムである。クライアントコンピュータ120も、クライアントデータストア106の形態のローカルストレージを含む。クライアントデータストア106には、ローカルアプリケーションストア109およびサブスクリプション情報107が常駐する。クライアントコンピュータ120は、ネットワークを通じて他のコンピュータと対話するための図示しない他のアプリケーション(例えばインターネットブラウジングソフトウェアなど)、およびローカルアプリケーションストア109とサブスクリプション情報107を保持するための他のアプリケーションも含む。クライアントコンピュータ120とその重要な各コンポーネントについては下記で図3との関係でより詳細に説明する。
【0013】
簡単に述べたように、クライアントコンピュータ120のユーザは、任意の従来の方式でサーバ102に接続することができる。サーバ102は、サーバデータストア110に常駐するファイルを利用可能にするウェブページまたは何らかのその他のリソースを提示する。ユーザによるリンクの選択などに応答して、アプリケーションマニフェスト112がクライアントコンピュータ120に渡される。アプリケーションマニフェスト112は、名前、何らかの識別子、および可能性としてはアプリケーションに関連するハッシュ値により、アプリケーションを一意に識別する。アプリケーションマニフェスト112は、各コンポーネント、そのバージョン、および依存性を含めて、アプリケーションコード115を詳細に記述する。アプリケーションマニフェスト112を検討して、アプリケーションコード115がクライアントコンピュータ120にインストールされていない場合は、アプリケーションコード115がサーバ102からクライアントコンピュータ120に渡され、インストールされる。
【0014】
本発明によれば、既存のソフトウェアアプリケーションに影響を及ぼす恐れなしに、アプリケーションコード115をクライアントコンピュータ120にインストールすることができる。今日のコンピューティングシステムの一部では、アプリケーションの各コンポーネントに「ストロングネーム(strongname)」を使用しているが、ストロングネームは、コンポーネントについての十分な情報を含み、コンポーネントが他の同様のコンポーネントから一意に識別される。例えば、共有ダイナミックリンクライブラリなどのコンポーネントのストロングネームは、コンポーネントのバージョン番号、ビルド番号などを含むことができる。ストロングネームを使用すると、デジタル署名と公開鍵を使用して、コンポーネントにグローバルに一意の識別が与えられる。
【0015】
クライアントコンピュータ120の各アプリケーションは十分に自己記述型であり、(各自のストロングネームを含めて)各アプリケーションの各コンポーネントの依存性が分かる。また、アプリケーションコード115中の各コンポーネントは、各自の依存性を含めてアプリケーションマニフェスト112に十分に記述され、アプリケーションコード115の特定の共有コンポーネントがクライアントコンピュータ120の既存アプリケーションとコンフリクトするかどうかを判定することができる。そのために、既に各自の正確な状態でクライアントコンピュータ120に存在してないアプリケーションコード115のすべてのコンポーネントが、サーバ102から渡される。共有される既存コードまたはその他の既存コードは、クライアントコンピュータ120にそのまま残される。このように、クライアントコンピュータ120上の既存アプリケーションは、引き続き同じ共有コンポーネントと連動して動作し続け、新しくダウンロードされたアプリケーションは、そのアプリケーションが正常に動作させる必要があるすべてのコンポーネントを含む。新しいバージョンの共有コンポーネント(ストロングネームによって識別される)を参照するように既存アプリケーションの依存性が変更された場合にのみ、その既存アプリケーションは、その共有コンポーネントのダウンロードされたバージョンを使用する。
【0016】
図2は、本発明により、遠隔のクライアントコンピュータにインストールするアプリケーションコードを提供する例示的サーバ102をより詳細に表す機能ブロック図である。図に示すように、サーバ102は、あるアプリケーションの2バージョン、すなわちアプリケーションバージョンA201とアプリケーションバージョンB202を含む。このアプリケーションの各バージョンは、実行ファイル、コンフィギュレーションファイルなどいくつかのプログラムファイル(210、260)を含む。アプリケーションの各バージョンは、2つ以上のアプリケーションプログラムで共有することができるダイナミックリンクライブラリであるアセンブリ(211、261)も含むことができる。あるいは、アプリケーションのコンポーネントは、そのアプリケーションのインストールバージョンの既存コンポーネントに適用されるパッチであってもよい。記憶スペースを節減し、ダウンロードバンド幅を低減するために、アプリケーションのいくつかのコンポーネントは、アーカイブフォーマットまたは圧縮フォーマット(例えばCABファイルやZipフォーマット)で格納することができる。
【0017】
上述のように、アプリケーション内のコンポーネントは、各コンポーネントを他のコンポーネントから一意に識別するストロングネームで識別することができる。詳細には、共有されるアセンブリ211、261は、ストロングネームで識別する。この例では、アプリケーションバージョンA201は、ウェブサーバソフトウェア255によってネットワーク105を通じて他のコンピューティングシステムにサービスされている。もう一方のバージョン、アプリケーションバージョンB202は、将来の使用のため、またはアーカイブの目的でサーバ102に格納されている。アプリケーションの各バージョンは完全なものである。
【0018】
呼び出されると、マニフェストジェネレータ225は、アプリケーションバージョンA201など選択されたバージョンのアプリケーションを評価し、いくつかのコンポーネント間の依存性を識別する。次いでマニフェストジェネレータ225は、選択されたアプリケーションバージョンのアプリケーションマニフェスト212を作成する。一実装では、アプリケーションマニフェスト212は、選択されたアプリケーションの各コンポーネントをそのストロングネームで識別するXML(eXtensibleMarkupLanguage)ベースの文書であり、ハッシュ値、公開鍵トークンなど各コンポーネントを一意に識別するのに役立つ追加的な情報を含むことができる。このような性質のアプリケーションマニフェストのサンプルを「付録A−アプリケーションマニフェストサンプル」として本明細書に含めている。付録Aは連続する一つのサンプルである。別の実装では、アプリケーションマニフェスト212は、アプリケーションの実行可能コンポーネントへのエントリポイントの内側にパッケージされた情報であってもよい。本明細書では特定のファイルとして説明するが、本発明のアプリケーションマニフェスト212は、任意の形態でアプリケーションのコンポーネントを記述する情報を意味するものと解釈されたく、ここに記載する以外の場所に存在することができる。ここに記載するアプリケーションマニフェスト212は例証に過ぎない。
【0019】
また、マニフェストジェネレータ225は、数バージョンのアプリケーションのうち現在ウェブサーバソフトウェア255によってサービスされているバージョンを識別するデフォルトのサブスクリプションマニフェスト250も作成することができる。サブスクリプションマニフェスト250は、現在のバージョンのアプリケーションのアプリケーションマニフェスト212をポイントする識別情報(例えばユニバーサルリソースロケータ)を含む別のXMLベースの文書である。本発明の実施で使用することができるサブスクリプションマニフェストのサンプルを「付録B−サブスクリプションマニフェストサンプル」として本明細書に含めている。
【0020】
ウェブサーバソフトウェア255は、サブスクリプションマニフェスト250へのハイパーリンクを含むHTMLファイルまたは他のウェブによるアクセスが可能なページを利用可能な状態にすることができる。このようにしてリモートコンピュータはHTMLファイルにアクセスし、ハイパーリンクをアクチベートし、サブスクリプションマニフェスト250を入手し、そしてサブスクリプションマニフェスト250で識別される現在のバージョンのアプリケーションを取得することができる。このように、単に別のバージョンのアプリケーションを識別するようにサブスクリプションマニフェスト250を修正することにより、パブリッシャは、直ちにもう一方のバージョンのアプリケーションをサービスし始めることができる。各バージョンは完全であり自己記述型なので、新しい現在のバージョンを取得し、インストールしてしまうと、現在のバージョンを変更することによって他のソフトウェアアプリケーションに否定的な影響が及ぶ恐れがない。サブスクリプションマニフェスト250は、消費側のシステムがどの程度の頻度で更新をチェックすべきか、またはいつチェックを行うかについての命令など、他の情報も含むことができる。
【0021】
図3は、本発明により、サーバからアプリケーションを取得し、ロードすることができる例示的なクライアントコンピュータ120をより詳細に表す機能ブロック図である。クライアントコンピュータ120は、ユーザがネットワークを通じて遠隔の場所に接続することを可能にするウェブブラウジングソフトウェア302を含む。ウェブブラウジングソフトウェア302は、オペレーティングシステムなどのコンポーネントとして含めることができる。この例では、ウェブブラウジングソフトウェア302は、クライアントコンピュータ120のユーザが、サブスクリプションマニフェスト250へのハイパーリンクを含む上述のサーバ102などのサーバからウェブページなどを入手することを可能にする。ここで一時的に図4を見ると、上述のサーバ102によってサービスできるウェブページ410を含むウェブブラウジングソフトウェア302の表示例412を示している。ウェブページ410は、ソフトウェアアプリケーションを遠隔のコンピューティングシステムがダウンロードできる状態にするためのリソースである。ウェブページ410は、上述のサブスクリプションマニフェスト250をポイントするハイパーリンク460を含む。あるいは、ハイパーリンク460は、サブスクリプションマニフェスト250ではなく直接アプリケーションマニフェスト212をポイントするように構成してもよい。
【0022】
ウェブページ410は、インターネット、企業イントラネット、あるいは任意の他のネットワークアクセスが可能な場所を通じて提供できることが認識されよう。ハイパーリンク460をアクチベートすると、サブスクリプションマニフェスト250がサーバから送られる。ウェブページ410は、ユーザがサブスクリプションマニフェスト250の通知を受け取ることができる1方式に過ぎないことを理解されたい。例えば、サブスクリプションマニフェスト250へのリンクは電子メールメッセージなどに提供することができる。別の代替法では、サーバ102に格納された他のバージョンのアプリケーションをポイントする複数のハイパーリンク(例えばハイパーリンク470)を提供することも可能である。このように、現在のバージョンのアプリケーションを所望しないユーザは、そのアプリケーションのより古いバージョンまたは代替バージョンを取得し、インストールすることを選択することができる。
【0023】
図3に戻ると、サブスクリプションマニフェスト250を取得すると、処理のためにそれをアクチベートコンポーネント308に渡す。この実装では、アクチベートコンポーネント308は、サブスクリプションマニフェスト250を構文解析し、アプリケーションの名前、バージョン、および場所など対応するアプリケーションを識別するのに十分な情報を抽出するように構成される。ハイパーリンク460が直接アプリケーションマニフェスト212をポイントする場合は、その情報を直接アプリケーションマニフェスト212から取得することができる。その情報により、アクチベートコンポーネント308はローカルアプリケーションストア109に問い合わせて、識別されるアプリケーションが既にクライアントコンピュータ120にローカルに格納されているかどうかを判定することができる。ローカルアプリケーションストア109は、インストールされているアプリケーション305のローカルコピーと、アプリケーション固有のセキュリティ情報307を含む。より詳細には、各アプリケーションをダウンロードする際に、そのアプリケーションに関連するURLをアプリケーションコードとともにキャッシュする。これを行うことにより、そのアプリケーションをインストールした際に有効であったセキュリティ特権が、その後実行されるそのアプリケーションのインスタンスに引き続き適用される。例えば、あるインターネット上の場所(そのURLによって識別される)からアプリケーションをダウンロードする場合は、そのインターネットゾーンに適用されるセキュリティ特権を、そのアプリケーションが実行されるたびにアプリケーションに適用することができる。
【0024】
アクチベートコンポーネント308が、サブスクリプションマニフェスト250で識別されるアプリケーションがローカルにインストールされていないと判定した場合、アクチベートコンポーネント308は、そのアプリケーションに関する情報をダウンロードコンポーネント309に渡す。ダウンロードコンポーネント309は、そのアプリケーションに関連するダウンロードデータ315を取得し、アプリケーションをローカルにインストールするように構成される。具体的には、ダウンロードコンポーネント309は、サブスクリプションマニフェスト250で識別されるアプリケーションマニフェスト112を取得し、アプリケーションマニフェスト112を構文解析して、アプリケーションコンポーネントと依存性を識別することができる。ダウンロードコンポーネント309は次いで、まだローカルに格納されていないアプリケーションコンポーネントをサーバ102から取得することができる。ここで再度、各アプリケーションコンポーネントはストロングネームによって識別されるので、アプリケーションマニフェストにおいて識別されるコンポーネントと同一のローカルコンポーネントだけを使用し、他のコンポーネントはサーバ102から取得することに留意されたい。同様に、ダウンロードするコンポーネントは、既存バージョンのアプリケーションのインストール済みコンポーネントに適用できるパッチとして、さらにダウンロードコストを低減してもよい。サーバ102からパッチをダウンロードする場合、そのパッチは既存のアプリケーションコンポーネントのコピーに適用されるが、その後はそのアプリケーションの別の新しいバージョンとしてローカルに格納されることを理解されたい。このプロセスは各アプリケーションバージョンの並行性を維持し、同時にダウンロードの負担をさらに低減する。アプリケーションコンポーネントをダウンロードすると、ダウンロードコンポーネント309はそのコンポーネントに関連する署名を検証してそのコンポーネントを認証し、ハッシュチェックを行って正しいコンポーネントを取得したことを保証し、そのアプリケーションコンポーネントをアプリケーションストア109に入れる。あるいは、特定のコンポーネントは識別して、ただちにダウンロードするのではなく要求時にダウンロードすることもできる。
【0025】
ダウンロードコンポーネント309がクライアントコンピュータ120に関連する情報を検証するか、またはアプリケーションをダウンロードしインストールするのに十分な権限があることをユーザが保証することを要求するデジタル権利管理システムを(サーバ102またはクライアントコンピュータ120のいずれか、または両方に)実装することができる。また、インストールプロセスの一部として、アプリケーションを購入するために要求されるライセンス同意をユーザに求めることもできる。
【0026】
図3には単一のエンティティとして示しているが、アプリケーションストア109は実際にはクライアントデータストア106内の複数の場所に常駐することができる。例えば、アプリケーションストア109は、多くのアプリケーションコンポーネントが格納された場所と、共有コンポーネントが格納された別の場所(例えばグローバルアセンブリキャッシュ)とを含むことができる。
【0027】
最終的にアプリケーションコンポーネントをローカルアプリケーションストア109に入れると、アクチベートコンポーネント308はそのアプリケーションをサーバコンポーネント312に登録する。サーバコンポーネント312は、サブスクライブされるアプリケーションの変更がないか、サブスクリプションマニフェスト250など登録されたサブスクリプションマニフェストを周期的にポーリングする役割を担うローカルサービスである。サーバコンポーネント312は、サブスクライブされる各アプリケーション、そのアプリケーションのサブスクリプションマニフェストの場所、およびサブスクリプションマニフェストが変化したかどうかを判定する時間間隔を識別するサブスクリプション情報314を保持する。一実装では、クライアントコンピュータ120がアイドル状態であるときに、サーバコンポーネント312は、サブスクライブされるアプリケーションのサブスクリプションマニフェストを取得することを試み、変化しているサブスクリプションマニフェストがある場合には、変更されたサブスクリプションマニフェストがアクチベートコンポーネント308に渡されて、サブスクライブされるアプリケーションの新しいバージョンがあればそれを自動的に取り込む。
【0028】
ここでも、各アプリケーションは並行してローカルに格納されるので、各アプリケーションのコンポーネント間にコンフリクトがない。したがって、インストールされた他のアプリケーションに影響を与えることなく、あるアプリケーションの新しいバージョンをダウンロードし、インストールすることができる。これは、上述のようにストロングネームをつけたアプリケーションコンポーネントを使用することによって可能になる。さらに、アプリケーションを並行してローカルにインストールするので、各アプリケーションバージョンが一意になり、ユーザが以前に使用していたバージョンに戻りたい場合には効果的なロールバックに対する向上したサポートが得られる。簡潔に述べると、各アプリケーションが他のアプリケーションから独立しているので、既存のアプリケーションに影響を与えずにインストールできるのと同様に、別のアプリケーションに影響を与える恐れなくアプリケーションをアンインストールすることができる。
【0029】
本発明によって構想される並行型のインストールは、特定のアプリケーションコンポーネント、特に共有コンポーネントに割り当てられるストロングネームによって可能になることに留意されたい。コンポーネントがグローバルに一意でない、従来のまたは伝統的なネーミング技術を使用して並行のインストールを試みると、各種の理由により失敗する可能性がある。例えば、単にあるアプリケーションのすべてのコンポーネントを1つのディレクトリに格納することは、共有コンポーネントにパッチを当てるのが難しくなるので十分とは言えない。インストールされたアプリケーションおよびその他のアプリケーションによってあるコンポーネントが共有される場合は、そのコンポーネントにパッチを適用すると、そのパッチを適用するためにその共有コンポーネントのすべての他のインスタンスを見つけることも必要となる。コンポーネントを(ストロングネームや何らかのその他のメカニズムにより)一意に識別することができないと、(例えば)ビルド番号だけが異なる2つ以上の同一の共有コンポーネントが、1つの共有コンポーネント位置で容易に共存することができない。本発明はこれらの制限を克服する。
【0030】
サブスクリプションを登録すると、アクチベートコンポーネント308は管理されるホスティングコンポーネント330にコントロールを渡し、ホスティングコンポーネント330は、そのアプリケーションを取得した場所のURLとセキュリティ特権に基づいて、そのアプリケーションをセキュアなアプリケーションドメイン(例えば「サンドボックス」)で開始する。また、アプリケーションまたはアプリケーションのコンポーネントは、パブリッシャによってデジタル的に署名することができる。その場合にはパブリッシャのデジタル署名を使用して、実行アプリケーションにサンドボックスを超える許可を提供することができる。すなわち、サンドボックスが適用されるアプリケーションに与えられる共通の許可以外に、特定パブリッシャからのアプリケーションに権利を付与するセキュリティ情報をクライアントコンピュータ120に格納することができる。管理されるホスティングコンポーネント330は、オンデマンドコンポーネントのダウンロードと、共有コンポーネントの単一のインスタンス化のためにも提供することができる。
【0031】
図5は、ネットワークを通じて利用可能になっているアプリケーションを取得し、インストールするプロセスを概説する論理的流れ図である。このプロセスは、ユーザが、アプリケーションに関連するハイパーリンクを選択するなど、何らかの方式でアプリケーションをインストールする要求を示したところから開始する。プロセスはブロック503で開始し、アプリケーションに関連するサブスクリプションマニフェストの取得を開始する。一実施形態では、ウェブページ上のハイパーリンクがサブスクリプションマニフェストをポイントし、ユーザは、そのハイパーリンクをトリガすることによりアプリケーションをダウンロードおよびインストールする要求を表し、サブスクリプションマニフェストをクライアントコンピュータにダウンロードさせる。
【0032】
ブロック505で、アプリケーションを記述する情報を含むアプリケーションマニフェストを取得する。この実施形態では、サブスクリプションマニフェストは、そのアプリケーションマニフェストがどこに存在するかを識別する情報を含む。その情報に基づいて、アプリケーションマニフェストを取得する。
【0033】
判定ブロック507で、同一バージョンのアプリケーションが既にローカルに存在するかどうかを判定する。この判定は、アプリケーションマニフェストを構文解析してアプリケーションについての識別情報を識別し、その識別情報とローカルにインストールされたアプリケーションとを比較することによって行うことができる。同一のアプリケーションが既にインストールされている場合、プロセスはブロック517でローカルに格納されたバージョンのアプリケーションを実行する。そうでない場合、プロセスはブロック509に進む。
【0034】
ブロック509で、アプリケーションのコンポーネントをダウンロードする。次にアプリケーションマニフェストにおいて識別される各コンポーネントをダウンロードすることができる。ダウンロードプロセスの一部として、各コンポーネントの記述を、既にローカルに格納されている各コンポーネントの記述と比較することができ、既にローカルに格納されているコンポーネントはダウンロードから除外できることを理解されよう。
【0035】
ブロック511で、ダウンロードしたコンポーネントをローカルアプリケーションストアに格納する。共有コンポーネントは、グローバルキャッシュまたはシステムキャッシュに格納して複数のアプリケーションで利用できるようにすることができる。
【0036】
ブロック515で、サブスクリプションのためにアプリケーションを登録する。一実装では、サブスクライブされるアプリケーションの現在発行されているバージョンに変更がないか、サーバコンポーネントが周期的にポーリングを行う。これは、アプリケーションのパブリッシャによって保持されるサブスクリプションマニフェストを見つけ、サブスクリプションマニフェストにおいて識別されるアプリケーションのバージョンと、現在インストールされているアプリケーションとを比較することによって実現することができる。サブスクリプション中の設定に基づいて、サブスクライブされているアプリケーションのより新しいバージョンを自動的にクライアントコンピュータにダウンロードすることができる。大規模なアプリケーションなど特定の事例では、ユーザにUIを提示して、ダウンロードが行われていることを通知し、ダウンロードおよびインストールの進行状況を提供することができる。最後にブロック517で、ローカルにインストールされたアプリケーションを実行する。
【0037】
図6は、本発明の一実装により、アプリケーションを自己記述型にし、ネットワークを通じてダウンロードできる状態にするプロセスを概説する論理的流れ図である。このプロセスは、アプリケーションのパブリッシャまたは開発者がアプリケーションをダウンロード可能な状態にする要求を示した際に開始する。処理はブロック603で開始する。
【0038】
ブロック603で、アプリケーションを分析してその構成部分(コンポーネント)を判定し、各構成部分間の依存性を識別する。この情報は、アプリケーションと関連付けてアプリケーションマニフェストに格納することができる。
【0039】
ブロック606で、インストールされたアプリケーションを識別するサブスクリプションマニフェストを作成し、このサブスクリプションマニフェストは、そのアプリケーションをダウンロードしたいユーザがネットワークを介して入手できるようにする。サブスクリプションマニフェストは、アプリケーションを一意に識別し、アプリケーションの場所を識別する情報を含む。一実装では、サブスクリプションマニフェストは、そのアプリケーションに対応するアプリケーションマニフェストをポイントするURLを含む。
【0040】
ブロック611で、アプリケーションおよびサブスクリプションマニフェストを、ネットワークを通じた公開のために公衆にアクセス可能な場所にコピーする。一実装では、公衆にアクセス可能な場所は、ウェブサービスソフトウェアによって維持されるパブリックシェアに対応することができる。別の実装では、公衆にアクセス可能な場所は、企業イントラネットなどに対応することができる。
【0041】
ブロック615で、アプリケーションをダウンロードしたいユーザにサブスクリプションマニフェストへのリンクを発行する。例えば、サブスクリプションマニフェストへのリンクを含むウェブページを作成することができる。アプリケーションをクライアントコンピュータにダウンロードしたいユーザは、そのウェブページを訪れ、リンクをアクチベートすることができる。それに応答して、サブスクリプションマニフェストをユーザのクライアントコンピュータに取得することができる。クライアントコンピュータが適切に構成されている場合には、次いでサブスクリプションマニフェスト中でポイントされるアプリケーションをダウンロードし、クライアントコンピュータにインストールすることができる。
【0042】
上記の仕様、実施例およびデータは、本発明の構成の製造および使用の完全な説明を提供する。本発明の精神および範囲から逸脱することなく本発明の多くの実施形態を作成することができるため、本発明は特許請求の範囲に存る。
【0043】
付録A.アプリケーションマニフェストサンプル
【0044】
【表1】
【0045】
【表2】
【0046】
【表3】
【0047】
付録B.サブスクリプションマニフェストサンプル
【0048】
【表4】
【図面の簡単な説明】
【0049】
【図1】本発明の実装を実施することが可能な分散ネットワーキング環境の概略機能ブロック図である。
【図2】本発明により、リモートクライアントコンピュータにインストールするアプリケーションコードをサービスする例示的サーバを詳細に示す機能ブロック図である。
【図3】本発明により、サーバからアプリケーションを取得し、ロードすることができる例示的クライアントコンピュータを示す機能ブロック図である。
【図4】本発明の一実装による、ウェブブラウジングソフトウェアによって提示し、リモートアプリケーションのダウンロードを可能にすることができる例示的な画像表示を示す図である。
【図5】ネットワークを通じて利用することができるアプリケーションを取得し、インストールするプロセスを概説する論理的流れ図である。
【図6】本発明の一実装による、アプリケーションを自己記述型とし、ネットワークを通じてダウンロードできるようにするプロセスを概説する論理的流れ図である。
【符号の説明】
【0050】
102 サーバ
105 ネットワーク
106,110 データストア
107,314 サブスクリプション情報
109 ローカルアプリケーションストア
112,212 アプリケーションマニフェスト
115 アプリケーションコード
120 クライアントコンピュータ
201 アプリケーションバージョンA
202 アプリケーションバージョンB
210,260 プログラムファイル
211,261 アセンブリ
225 マニフェストジェネレータ
250 サブスクリプションマニフェスト
255 ウェブサーバソフトウェア
302 ウェブブラウジングソフトウェア
305 インストールされたアプリケーション
307 セキュリティ情報
308 アクチベートコンポーネント
309 ダウンロードコンポーネント
312 サーバコンポーネント
315 ダウンロードデータ
330 管理されるホスティングコンポーネント
410 ウェブページ
460,470 ハイパーリンク
Claims (25)
- コンピュータ実行可能命令が符号化されたコンピュー
タ可読媒体であって、
該コンピュータ実行可能命令は、
アプリケーションおよび前記アプリケーションの場所を識別するマニフェストの取得を開始するステップと、
前記アプリケーションに関連するコンポーネントをローカルデータストアにダウンロードするステップであって、各コンポーネントが各コンポーネントを他のコンポーネントから区別するのに十分に自己記述型であるステップと、
前記アプリケーションをサブスクリプションのために登録するステップとを含み、
サブスクリプションはさらに、前記サブスクリプションマニフェストを周期的に取得して前記サブスクリプションマニフェストが別のアプリケーションを識別するかを判定することと、識別する場合には、前記ダウンロードするステップと登録するステップを別のアプリケーションについて繰り返すことを含む
ことを特徴とするコンピュータ可読媒体。 - 前記マニフェストはサブスクリプションマニフェストを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
- 前記マニフェストはアプリケーションマニフェストを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
- 前記マニフェストの取得を開始するステップはさらに、前記アプリケーションのダウンロードに関連するウェブページ上のハイパーリンクをアクチベートすることを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
- 前記マニフェストの取得を開始するステップはさらに、自動化されたサブスクリプションサービスにより、サブスクリプション情報に基づいてマニフェストの前記取得を行わせることを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
- 前記サブスクリプション情報はさらに、前記ローカルデータストアに格納された、周期的なアップグレードが登録されているアプリケーションを識別する情報を含むことを特徴とする請求項5に記載のコンピュータ可読媒体。
- 前記マニフェストはサブスクリプションマニフェストを含み、
前記命令はさらに、前記コンポーネントのダウンロード前に、前記アプリケーションに関連し、前記サブスクリプションマニフェストにおいて識別されるアプリケーションマニフェストを取得するステップであって、前記アプリケーションマニフェストが各コンポーネントを他のコンポーネントから区別するのに十分な各コンポーネントの記述を含むステップを含む
ことを特徴とする請求項1に記載のコンピュータ可読媒体。 - 前記アプリケーションマニフェストはさらに、前記アプリケーションに関連する各コンポーネントの依存性を記述することを特徴とする請求項7に記載のコンピュータ可読媒体。
- 前記コンポーネントの少なくとも1つは共有コンポーネントを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
- 前記共有コンポーネントはアセンブリを含むことを特徴とする請求項9に記載のコンピュータ可読媒体。
- 前記アセンブリはストロングネームを含むことを特徴とする請求項10に記載のコンピュータ可読媒体。
- 遠隔の格納場所からアプリケーションをインストールするためのコンピュータ実行可能な方法であって、
前記アプリケーションに関連するアプリケーションマニフェストを識別するステップであって、前記アプリケーションマニフェストが前記アプリケーションの各コンポーネントを一意に識別するのに十分な情報を含むステップと、
前記アプリケーションのコンポーネントをローカルストレージにダウンロードするステップであって、各コンポーネントは十分に自己記述型であり、既にインストールされたコンポーネントに依存する既存のアプリケーションが既にインストールされたそれらのコンポーネントに引き続き依存し、前記アプリケーションが前記アプリケーションとともにダウンロードされたコンポーネントに依存するステップと
を含むことを特徴とする方法。 - 前記アプリケーションマニフェストの前記情報をローカルにインストールされたアプリケーションと比較して、前記アプリケーションのコンポーネントがローカルにインストールされた一つのアプリケーションと関連して存在するかを判定するステップと、
存在する場合は、前記アプリケーションのコンポーネントのダウンロードを、ローカルにインストールされた一つのアプリケーションと関連して既に存在しないアプリケーションのコンポーネントに限定するステップと
をさらに含むことを特徴とする請求項12に記載の方法。 - 前記アプリケーションのコンポーネントは対応コンポーネントのインストールされたバージョンに適用されるパッチを含み、
さらに、前記アプリケーションのコンポーネントのダウンロードを前記パッチに限定するステップを含むことを特徴とする請求項12に記載の方法。 - 前記サブスクリプションマニフェストはさらに、前記アプリケーションマニフェストの場所の識別を含むことを特徴とする請求項14に記載の方法。
- 前記アプリケーションマニフェストを識別するステップは、前記アプリケーションマニフェストをポイントするサブスクリプションマニフェストをダウンロードすることを含むことを特徴とする請求項12に記載の方法。
- サブスクリプションマニフェストの変化に応答して自動的にアップグレードされるように前記アプリケーションを登録するステップをさらに含むことを特徴とする請求項12に記載の方法。
- サブスクリプションマニフェストの変化に応答して前記方法を繰り返すステップであって、前記サブスクリプションマニフェストが前記アプリケーションに関連するステップをさらに含むことを特徴とする請求項12に記載の方法。
- 前記アプリケーションマニフェストを識別するステップは、前記アプリケーションマニフェストをポイントするサブスクリプションマニフェストをダウンロードすることを含むことを特徴とする請求項18に記載の方法。
- データ構造が符号化されたコンピュータ可読媒体であって、
アプリケーションの一意の識別子を含む第1のフィールドと、
それぞれが他のコンポーネントから一意に区別される前記アプリケーションの各コンポーネントを識別する複数の第2のフィールドと、
前記アプリケーションの各コンポーネントが正常な動作のために依存するコンポーネントを識別する複数の第3のフィールドと
を備えることを特徴とするコンピュータ可読媒体。 - 前記第1のフィールドはさらに、前記アプリケーションに関連するハッシュ値を含むことを特徴とする請求項20に記載のコンピュータ可読媒体。
- 前記第2のフィールドはそれぞれ、前記第2のフィールド個々に対応するコンポーネントに関連するハッシュ値をさらに含むことを特徴とする請求項20に記載のコンピュータ可読媒体。
- 前記データ構造はXMLベースの文書を含むことを特徴とする請求項20に記載のコンピュータ可読媒体。
- 前記複数の第3のフィールドで識別された依存性は、依存するコンポーネントをストロングネームにより識別することを特徴とする請求項20に記載のコンピュータ可読媒体。
- 前記複数の第3のフィールドで識別された依存性は、依存するコンポーネントを公開鍵トークンにより識別することを特徴とする請求項24に記載のコンピュータ可読媒体。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/184,710 US20040003390A1 (en) | 2002-06-27 | 2002-06-27 | System and method for installing a software application in a non-impactfull manner |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004038962A true JP2004038962A (ja) | 2004-02-05 |
Family
ID=29717974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003173941A Pending JP2004038962A (ja) | 2002-06-27 | 2003-06-18 | 影響のない方式でソフトウェアアプリケーションをインストールするシステムおよび方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20040003390A1 (ja) |
EP (1) | EP1376345A3 (ja) |
JP (1) | JP2004038962A (ja) |
KR (1) | KR20040002739A (ja) |
CN (1) | CN100365569C (ja) |
TW (1) | TW200402658A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005259115A (ja) * | 2004-03-12 | 2005-09-22 | Microsoft Corp | 更新配信システム中で更新メタデータを配信するためのタグベースのスキーマ |
JP2007053556A (ja) * | 2005-08-17 | 2007-03-01 | Fuji Xerox Co Ltd | 複合機 |
JP2007279959A (ja) * | 2006-04-05 | 2007-10-25 | Fuji Xerox Co Ltd | ソフトウェアコンポーネントのインストール方法、インストーラ、及び複合機 |
JP2009506632A (ja) * | 2005-08-25 | 2009-02-12 | マイクロソフト コーポレーション | スキーマパッケージング、配布および可用性 |
JP2009146347A (ja) * | 2007-12-18 | 2009-07-02 | Ricoh Co Ltd | 通信システム |
JP2013137612A (ja) * | 2011-12-28 | 2013-07-11 | Kddi Corp | アプリケーション解析装置、アプリケーション解析システム、およびプログラム |
Families Citing this family (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671757B1 (en) | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
US8620286B2 (en) * | 2004-02-27 | 2013-12-31 | Synchronoss Technologies, Inc. | Method and system for promoting and transferring licensed content and applications |
US8615566B1 (en) | 2001-03-23 | 2013-12-24 | Synchronoss Technologies, Inc. | Apparatus and method for operational support of remote network systems |
US20040010786A1 (en) * | 2002-07-11 | 2004-01-15 | Microsoft Corporation | System and method for automatically upgrading a software application |
US20080313282A1 (en) * | 2002-09-10 | 2008-12-18 | Warila Bruce W | User interface, operating system and architecture |
US7765281B1 (en) * | 2003-03-10 | 2010-07-27 | Motive, Inc. | Large-scale targeted data distribution system |
US7457831B2 (en) * | 2003-03-31 | 2008-11-25 | Microsoft Corporation | Peripheral device driver maintenance scheme for networked peripheral device clients |
US7984434B1 (en) * | 2003-05-21 | 2011-07-19 | Altera Corporation | Nondestructive patching mechanism |
US20040237082A1 (en) * | 2003-05-22 | 2004-11-25 | Alcazar Mark A. | System, method, and API for progressively installing software application |
US7395534B2 (en) * | 2003-05-22 | 2008-07-01 | Microsoft Corporation | System and method for progressively installing a software application |
KR100953160B1 (ko) * | 2003-06-26 | 2010-04-20 | 삼성전자주식회사 | 네트워크 장치 및 이를 이용하는 상이한 저작권 관리방식을 갖는 네트워크 장치간의 컨텐츠 호환성 제공 방법 |
EP1652048A4 (en) | 2003-07-21 | 2009-04-15 | Fusionone Inc | ORDERING NEWS MANAGEMENT SYSTEM |
US20050091658A1 (en) * | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Operating system resource protection |
US20050091535A1 (en) * | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Application identity for software products |
US8930944B2 (en) * | 2003-11-18 | 2015-01-06 | Microsoft Corporation | Application model that integrates the web experience with the traditional client application experience |
EP1574949A1 (en) * | 2004-03-12 | 2005-09-14 | Sap Ag | Method for modifying the software configuration of a computer system |
JP2005293109A (ja) * | 2004-03-31 | 2005-10-20 | Canon Inc | ソフトウェア実行管理装置、ソフトウェア実行管理方法、及び制御プログラム |
CN1998224A (zh) | 2004-05-12 | 2007-07-11 | 富盛旺公司 | 高级联络识别系统 |
US9542076B1 (en) | 2004-05-12 | 2017-01-10 | Synchronoss Technologies, Inc. | System for and method of updating a personal profile |
US7552431B2 (en) * | 2004-08-31 | 2009-06-23 | Microsoft Corporation | Multiple patching in a single installation transaction |
US7703090B2 (en) * | 2004-08-31 | 2010-04-20 | Microsoft Corporation | Patch un-installation |
US7552430B2 (en) * | 2004-08-31 | 2009-06-23 | Microsoft Corporation | Patch sequencing |
US7747998B2 (en) * | 2004-08-31 | 2010-06-29 | Microsoft Corporation | Elevated patching |
US20060059481A1 (en) * | 2004-09-16 | 2006-03-16 | Rodney Smith | Presenting, delivering and installing electronic downloads with an installed list |
US8341531B2 (en) * | 2004-09-30 | 2012-12-25 | Microsoft Corporation | Content formatting and installation techniques |
US8245221B2 (en) * | 2004-09-30 | 2012-08-14 | Microsoft Corporation | Content formatting and installation techniques |
US7673148B2 (en) * | 2004-10-15 | 2010-03-02 | Microsoft Corporation | Versioning component for applications |
EP1811377A4 (en) * | 2004-10-27 | 2009-04-01 | Panasonic Corp | RECEPTION DEVICE |
US20060112152A1 (en) * | 2004-11-22 | 2006-05-25 | Microsoft Corporation | Smart patching by targeting particular prior versions of a file |
US8495619B2 (en) * | 2005-06-29 | 2013-07-23 | Flexera Software Llc | Method and system for pre-deployment conflict checking |
US7870547B2 (en) * | 2005-08-10 | 2011-01-11 | Cisco Technology, Inc. | Method and apparatus for managing patchable software systems |
US8677348B1 (en) | 2005-10-17 | 2014-03-18 | Cisco Technology, Inc. | Method and apparatus for determining least risk install order of software patches |
US8051298B1 (en) * | 2005-11-29 | 2011-11-01 | Sprint Communications Company L.P. | Integrated fingerprinting in configuration audit and management |
US8006240B2 (en) * | 2005-12-01 | 2011-08-23 | International Business Machines Corporation | Support continuous availability by allowing the use of multiple concurrent versions of shared artifact libraries, with proper bind-drain semantics, for long-lived process application consumers |
US8607213B2 (en) * | 2005-12-05 | 2013-12-10 | International Business Machines Corporation | SCORM manifest reconciliation |
US20070288389A1 (en) * | 2006-06-12 | 2007-12-13 | Vaughan Michael J | Version Compliance System |
US7496893B2 (en) * | 2006-06-15 | 2009-02-24 | International Business Machines Corporation | Method for no-demand composition and teardown of service infrastructure |
US20070294364A1 (en) * | 2006-06-15 | 2007-12-20 | International Business Machines Corporation | Management of composite software services |
US7519711B2 (en) * | 2006-06-15 | 2009-04-14 | International Business Machines Corporation | Method for middleware assisted system integration in a federated environment |
US7950007B2 (en) * | 2006-06-15 | 2011-05-24 | International Business Machines Corporation | Method and apparatus for policy-based change management in a service delivery environment |
US20070300280A1 (en) * | 2006-06-21 | 2007-12-27 | Turner Media Group | Interactive method of advertising |
US20070300273A1 (en) * | 2006-06-21 | 2007-12-27 | Gary Turner | Interactive television application and content enhancement |
CN100464299C (zh) * | 2006-08-08 | 2009-02-25 | 北京飞天诚信科技有限公司 | 一种计算机软件更新的方法 |
US8082442B2 (en) * | 2006-08-10 | 2011-12-20 | Microsoft Corporation | Securely sharing applications installed by unprivileged users |
US8615801B2 (en) * | 2006-08-31 | 2013-12-24 | Microsoft Corporation | Software authorization utilizing software reputation |
US8099789B2 (en) * | 2006-09-29 | 2012-01-17 | Lenovo (Singapore) Pte. Ltd. | Apparatus and method for enabling applications on a security processor |
WO2008094508A2 (en) | 2007-01-26 | 2008-08-07 | Fusionone, Inc. | System for and method of backing up content for use on a mobile device |
CN101652790B (zh) | 2007-04-03 | 2013-12-11 | 国际商业机器公司 | 用相关的产品信息填充软件目录的方法和系统 |
US20080260352A1 (en) * | 2007-04-19 | 2008-10-23 | Gary Turner | Recorded advertisement enhancement |
US20080263581A1 (en) * | 2007-04-19 | 2008-10-23 | Gary Turner | Recorded commercial optimization method and system |
US20080267589A1 (en) * | 2007-04-27 | 2008-10-30 | Gary Turner | Television bandwidth optimization system and method |
US20090133014A1 (en) * | 2007-11-16 | 2009-05-21 | Nokia Corporation | Methods, apparatuses and computer program product for automatic download of software dependencies on installation |
US20090183182A1 (en) * | 2008-01-10 | 2009-07-16 | Microsoft Corporation | Dynamic Composition of Virtualized Applications |
US8346897B2 (en) | 2008-02-25 | 2013-01-01 | Jon Jaroker | System and method for deploying and maintaining software applications |
US8776038B2 (en) | 2008-08-07 | 2014-07-08 | Code Systems Corporation | Method and system for configuration of virtualized software applications |
US8434093B2 (en) | 2008-08-07 | 2013-04-30 | Code Systems Corporation | Method and system for virtualization of software applications |
TW201025133A (en) * | 2008-12-22 | 2010-07-01 | Asustek Comp Inc | Method for installing application program and computer system |
KR101006841B1 (ko) * | 2009-02-05 | 2011-01-12 | 주식회사 푸른기술 | 지폐방출기용 지폐 카세트의 지폐 정렬 및 가압장치 |
JP4692652B2 (ja) * | 2009-02-18 | 2011-06-01 | コニカミノルタビジネステクノロジーズ株式会社 | ライセンス管理システム、ライセンス管理コンピュータ、ライセンス管理方法およびライセンス管理プログラム |
US8539477B2 (en) * | 2009-02-24 | 2013-09-17 | Microsoft Corporation | Managed environment update selection |
US8458690B2 (en) * | 2009-04-29 | 2013-06-04 | Microsoft Corporation | Automated software deployment triggered by state differences in distributed systems |
US8954958B2 (en) | 2010-01-11 | 2015-02-10 | Code Systems Corporation | Method of configuring a virtual application |
US8959183B2 (en) * | 2010-01-27 | 2015-02-17 | Code Systems Corporation | System for downloading and executing a virtual application |
US9104517B2 (en) | 2010-01-27 | 2015-08-11 | Code Systems Corporation | System for downloading and executing a virtual application |
US9229748B2 (en) | 2010-01-29 | 2016-01-05 | Code Systems Corporation | Method and system for improving startup performance and interoperability of a virtual application |
US8819671B2 (en) * | 2010-03-31 | 2014-08-26 | Ca, Inc. | Facilitating software acquisition |
US8763009B2 (en) | 2010-04-17 | 2014-06-24 | Code Systems Corporation | Method of hosting a first application in a second application |
US8612946B2 (en) * | 2010-05-17 | 2013-12-17 | Red Hat, Inc. | Cross-building support using dependency information |
US8620914B1 (en) * | 2010-05-18 | 2013-12-31 | Google Inc. | Ranking of digital goods in a marketplace |
US9218359B2 (en) | 2010-07-02 | 2015-12-22 | Code Systems Corporation | Method and system for profiling virtual application resource utilization patterns by executing virtualized application |
US9021015B2 (en) | 2010-10-18 | 2015-04-28 | Code Systems Corporation | Method and system for publishing virtual applications to a web server |
US20120102484A1 (en) * | 2010-10-20 | 2012-04-26 | Microsoft Corporation | Installing software remotely using a high privilege process |
US9209976B2 (en) | 2010-10-29 | 2015-12-08 | Code Systems Corporation | Method and system for restricting execution of virtual applications to a managed process environment |
US8943428B2 (en) | 2010-11-01 | 2015-01-27 | Synchronoss Technologies, Inc. | System for and method of field mapping |
US8838679B2 (en) * | 2010-12-22 | 2014-09-16 | Microsoft Corporation | Providing state service for online application users |
CN102360297B (zh) * | 2011-06-30 | 2013-09-25 | 四川长虹电器股份有限公司 | 在线应用加载的方法 |
US10430515B1 (en) * | 2011-07-18 | 2019-10-01 | Intuit Inc. | Electronic document signatures and signature retrieval involving mobile communication device |
US9823917B2 (en) * | 2011-10-20 | 2017-11-21 | Facebook, Inc. | Update application user interfaces on client devices |
US8959604B2 (en) | 2011-11-25 | 2015-02-17 | Synchronoss Technologies, Inc. | System and method of verifying a number of a mobile terminal |
GB2501287A (en) * | 2012-04-18 | 2013-10-23 | Ibm | Installing applications at selected runtime instances |
US20130339487A1 (en) * | 2012-06-15 | 2013-12-19 | Andy Wu | Method and Apparatus for URL Handling |
US8589911B1 (en) * | 2012-07-26 | 2013-11-19 | Google Inc. | Intent fulfillment |
US9727848B2 (en) * | 2013-04-29 | 2017-08-08 | Alex Bligh | Field programmable hierarchical cloud billing system |
US20140357357A1 (en) * | 2013-05-30 | 2014-12-04 | Microsoft Corporation | Game bundle package |
US9524157B2 (en) * | 2013-08-06 | 2016-12-20 | Salesforce.Com, Inc. | Providing an improved web user interface framework for building web applications |
CN104375850A (zh) * | 2013-08-15 | 2015-02-25 | 鸿富锦精密工业(深圳)有限公司 | 软件程序更新系统及方法 |
US9298923B2 (en) * | 2013-09-04 | 2016-03-29 | Cisco Technology, Inc. | Software revocation infrastructure |
US9430216B2 (en) * | 2014-05-11 | 2016-08-30 | Lumension Security, Inc. | Self-contained executable for predetermined software updating |
CN105787352A (zh) * | 2014-12-18 | 2016-07-20 | 中兴通讯股份有限公司 | 一种可执行模块的提供、加载方法及终端 |
KR20160088629A (ko) * | 2015-01-16 | 2016-07-26 | 삼성전자주식회사 | 광고 기반 애플리케이션 기능 실행 시스템 및 장치 그리고 그 방법 |
US9880824B2 (en) | 2015-06-05 | 2018-01-30 | Apple Inc. | On demand resources |
US10447812B2 (en) | 2015-06-05 | 2019-10-15 | Apple Inc. | On demand resources |
US10684839B2 (en) * | 2016-06-15 | 2020-06-16 | Red Hat Israel, Ltd. | Plugin for software deployment |
US10606450B2 (en) * | 2016-06-24 | 2020-03-31 | Accenture Global Solutions Limited | Method and system for visual requirements and component reuse driven rapid application composition |
US10083029B2 (en) * | 2016-11-09 | 2018-09-25 | Red Hat, Inc. | Detect application defects by correlating contracts in application dependencies |
US10447814B2 (en) | 2017-02-02 | 2019-10-15 | Microsoft Technology Licensing, Llc | Joint servicing of software packages |
JP6855348B2 (ja) * | 2017-07-31 | 2021-04-07 | 株式会社ソニー・インタラクティブエンタテインメント | 情報処理装置およびダウンロード処理方法 |
US11200034B2 (en) * | 2017-10-23 | 2021-12-14 | Open Text Sa Ulc | Universal application framework for streamlined frontend development of user interface applications |
US11036522B2 (en) | 2017-12-19 | 2021-06-15 | Citrix Systems, Inc. | Remote component loader |
US11055087B2 (en) * | 2018-03-16 | 2021-07-06 | Google Llc | Leveraging previously installed application elements to install an application |
US10740085B2 (en) * | 2018-11-30 | 2020-08-11 | Target Brands, Inc. | Webserver interface for deployment management tool |
CN110633087B (zh) * | 2019-08-13 | 2023-07-25 | 上海联影医疗科技股份有限公司 | 客户端安装方法、装置和存储介质 |
US11921859B2 (en) * | 2021-11-04 | 2024-03-05 | Dell Products L.P. | System and method for managing device security during startup |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6110228A (en) * | 1994-12-28 | 2000-08-29 | International Business Machines Corporation | Method and apparatus for software maintenance at remote nodes |
US5845077A (en) * | 1995-11-27 | 1998-12-01 | Microsoft Corporation | Method and system for identifying and obtaining computer software from a remote computer |
US6049671A (en) * | 1996-04-18 | 2000-04-11 | Microsoft Corporation | Method for identifying and obtaining computer software from a network computer |
US6006034A (en) * | 1996-09-05 | 1999-12-21 | Open Software Associates, Ltd. | Systems and methods for automatic application version upgrading and maintenance |
US5960204A (en) * | 1996-10-28 | 1999-09-28 | J.D. Edwards World Source Company | System and method for installing applications on a computer on an as needed basis |
GB9623298D0 (en) * | 1996-11-08 | 1997-01-08 | Int Computers Ltd | Updating mechanism for software |
US6381741B1 (en) * | 1998-05-18 | 2002-04-30 | Liberate Technologies | Secure data downloading, recovery and upgrading |
US6151708A (en) * | 1997-12-19 | 2000-11-21 | Microsoft Corporation | Determining program update availability via set intersection over a sub-optical pathway |
US6381742B2 (en) * | 1998-06-19 | 2002-04-30 | Microsoft Corporation | Software package management |
US6154878A (en) * | 1998-07-21 | 2000-11-28 | Hewlett-Packard Company | System and method for on-line replacement of software |
US6282711B1 (en) * | 1999-08-10 | 2001-08-28 | Hewlett-Packard Company | Method for more efficiently installing software components from a remote server source |
CN1296220A (zh) * | 1999-11-01 | 2001-05-23 | 城市集团发展中心有限公司 | 安装和/或升级自助金融交易终端的软件的方法和系统 |
US6807559B1 (en) * | 2000-04-06 | 2004-10-19 | Attachmate Corporation | System and method for applet management |
EP1168163A1 (en) * | 2000-06-19 | 2002-01-02 | Hewlett-Packard Company, A Delaware Corporation | Process for installing a software package in a client computer |
WO2002051063A1 (en) * | 2000-12-21 | 2002-06-27 | Digimarc Corporation | Methods, apparatus and programs for generating and utilizing content signatures |
IES20010015A2 (en) * | 2001-01-09 | 2002-04-17 | Menlo Park Res Teoranta | Content management and distribution system |
-
2002
- 2002-06-27 US US10/184,710 patent/US20040003390A1/en not_active Abandoned
-
2003
- 2003-06-18 JP JP2003173941A patent/JP2004038962A/ja active Pending
- 2003-06-24 TW TW092117171A patent/TW200402658A/zh unknown
- 2003-06-24 EP EP03014179A patent/EP1376345A3/en not_active Withdrawn
- 2003-06-25 CN CNB03145240XA patent/CN100365569C/zh not_active Expired - Fee Related
- 2003-06-26 KR KR1020030041900A patent/KR20040002739A/ko not_active Application Discontinuation
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005259115A (ja) * | 2004-03-12 | 2005-09-22 | Microsoft Corp | 更新配信システム中で更新メタデータを配信するためのタグベースのスキーマ |
JP2007053556A (ja) * | 2005-08-17 | 2007-03-01 | Fuji Xerox Co Ltd | 複合機 |
JP2009506632A (ja) * | 2005-08-25 | 2009-02-12 | マイクロソフト コーポレーション | スキーマパッケージング、配布および可用性 |
JP2007279959A (ja) * | 2006-04-05 | 2007-10-25 | Fuji Xerox Co Ltd | ソフトウェアコンポーネントのインストール方法、インストーラ、及び複合機 |
JP2009146347A (ja) * | 2007-12-18 | 2009-07-02 | Ricoh Co Ltd | 通信システム |
JP2013137612A (ja) * | 2011-12-28 | 2013-07-11 | Kddi Corp | アプリケーション解析装置、アプリケーション解析システム、およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20040003390A1 (en) | 2004-01-01 |
CN1480837A (zh) | 2004-03-10 |
CN100365569C (zh) | 2008-01-30 |
EP1376345A2 (en) | 2004-01-02 |
KR20040002739A (ko) | 2004-01-07 |
EP1376345A3 (en) | 2007-06-20 |
TW200402658A (en) | 2004-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004038962A (ja) | 影響のない方式でソフトウェアアプリケーションをインストールするシステムおよび方法 | |
US20040010786A1 (en) | System and method for automatically upgrading a software application | |
US6718549B1 (en) | Methods for managing the distribution of client bits to client computers | |
US8407694B2 (en) | System and method for facilitating installing software | |
US9654548B2 (en) | Intelligent network streaming and execution system for conventionally coded applications | |
US8448161B2 (en) | Application tracking for application execution environment | |
US7930273B1 (en) | Version management for application execution environment | |
US8336043B2 (en) | Dynamic deployment of custom code | |
US8375381B1 (en) | Management user interface for application execution environment | |
US6202207B1 (en) | Method and a mechanism for synchronized updating of interoperating software | |
US8332837B2 (en) | Installation method, information processing apparatus and device driver | |
US20070143446A1 (en) | Methods, systems, and computer program products for installing an application from one peer to another including application configuration settings and data | |
US20040237082A1 (en) | System, method, and API for progressively installing software application | |
US20020091763A1 (en) | Client-side performance optimization system for streamed applications | |
US20020083183A1 (en) | Conventionally coded application conversion system for streamed delivery and execution | |
JP2004534973A (ja) | ネットワークデバイスのアップグレードシステム及び方法 | |
JP2003521036A (ja) | クライアント・コンピュータのブラウザからアプリケーションを受取り、インストールしかつランチするためのブラウザ独立及び自動装置及び方法 | |
JPH09305408A (ja) | アプリケーション実行方法 | |
KR20140113685A (ko) | 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷 | |
US20070061277A1 (en) | Method, system, and storage medium for providing dynamic deployment of grid services over a computer network | |
US20100318967A1 (en) | Supplementary deployment actions | |
La Lau et al. | Software Management | |
US20080201759A1 (en) | Version-resilience between a managed environment and a security policy | |
Veeramani | Smart clients versus web forms | |
Chapter | WinForms Smart Client Deployment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060526 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090710 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091208 |