JP2004038962A - 影響のない方式でソフトウェアアプリケーションをインストールするシステムおよび方法 - Google Patents

影響のない方式でソフトウェアアプリケーションをインストールするシステムおよび方法 Download PDF

Info

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
Application number
JP2003173941A
Other languages
English (en)
Inventor
Adriaan W Canter
エイドリアン ダブリュ.キャンター
Micheal Dunn
マイケル ダン
Srivatsan Parthasarathy
スリバットサン パーササラシー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004038962A publication Critical patent/JP2004038962A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Abstract

【課題】既インストールのアプリケーションに影響を与えず、遠隔場所からインストールできるアプリケーションを可能にし、完全に自己記述型のコンポーネントを含むアプリケーションをインストールするメカニズムを提供する。
【解決手段】アプリケーションの各コンポーネントは、そのアプリケーションとともに格納されたアプリケーションマニフェスト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】
Figure 2004038962
【0045】
【表2】
Figure 2004038962
【0046】
【表3】
Figure 2004038962
【0047】
付録B.サブスクリプションマニフェストサンプル
【0048】
【表4】
Figure 2004038962

【図面の簡単な説明】
【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. コンピュータ実行可能命令が符号化されたコンピュー
    タ可読媒体であって、
    該コンピュータ実行可能命令は、
    アプリケーションおよび前記アプリケーションの場所を識別するマニフェストの取得を開始するステップと、
    前記アプリケーションに関連するコンポーネントをローカルデータストアにダウンロードするステップであって、各コンポーネントが各コンポーネントを他のコンポーネントから区別するのに十分に自己記述型であるステップと、
    前記アプリケーションをサブスクリプションのために登録するステップとを含み、
    サブスクリプションはさらに、前記サブスクリプションマニフェストを周期的に取得して前記サブスクリプションマニフェストが別のアプリケーションを識別するかを判定することと、識別する場合には、前記ダウンロードするステップと登録するステップを別のアプリケーションについて繰り返すことを含む
    ことを特徴とするコンピュータ可読媒体。
  2. 前記マニフェストはサブスクリプションマニフェストを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  3. 前記マニフェストはアプリケーションマニフェストを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  4. 前記マニフェストの取得を開始するステップはさらに、前記アプリケーションのダウンロードに関連するウェブページ上のハイパーリンクをアクチベートすることを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  5. 前記マニフェストの取得を開始するステップはさらに、自動化されたサブスクリプションサービスにより、サブスクリプション情報に基づいてマニフェストの前記取得を行わせることを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  6. 前記サブスクリプション情報はさらに、前記ローカルデータストアに格納された、周期的なアップグレードが登録されているアプリケーションを識別する情報を含むことを特徴とする請求項5に記載のコンピュータ可読媒体。
  7. 前記マニフェストはサブスクリプションマニフェストを含み、
    前記命令はさらに、前記コンポーネントのダウンロード前に、前記アプリケーションに関連し、前記サブスクリプションマニフェストにおいて識別されるアプリケーションマニフェストを取得するステップであって、前記アプリケーションマニフェストが各コンポーネントを他のコンポーネントから区別するのに十分な各コンポーネントの記述を含むステップを含む
    ことを特徴とする請求項1に記載のコンピュータ可読媒体。
  8. 前記アプリケーションマニフェストはさらに、前記アプリケーションに関連する各コンポーネントの依存性を記述することを特徴とする請求項7に記載のコンピュータ可読媒体。
  9. 前記コンポーネントの少なくとも1つは共有コンポーネントを含むことを特徴とする請求項1に記載のコンピュータ可読媒体。
  10. 前記共有コンポーネントはアセンブリを含むことを特徴とする請求項9に記載のコンピュータ可読媒体。
  11. 前記アセンブリはストロングネームを含むことを特徴とする請求項10に記載のコンピュータ可読媒体。
  12. 遠隔の格納場所からアプリケーションをインストールするためのコンピュータ実行可能な方法であって、
    前記アプリケーションに関連するアプリケーションマニフェストを識別するステップであって、前記アプリケーションマニフェストが前記アプリケーションの各コンポーネントを一意に識別するのに十分な情報を含むステップと、
    前記アプリケーションのコンポーネントをローカルストレージにダウンロードするステップであって、各コンポーネントは十分に自己記述型であり、既にインストールされたコンポーネントに依存する既存のアプリケーションが既にインストールされたそれらのコンポーネントに引き続き依存し、前記アプリケーションが前記アプリケーションとともにダウンロードされたコンポーネントに依存するステップと
    を含むことを特徴とする方法。
  13. 前記アプリケーションマニフェストの前記情報をローカルにインストールされたアプリケーションと比較して、前記アプリケーションのコンポーネントがローカルにインストールされた一つのアプリケーションと関連して存在するかを判定するステップと、
    存在する場合は、前記アプリケーションのコンポーネントのダウンロードを、ローカルにインストールされた一つのアプリケーションと関連して既に存在しないアプリケーションのコンポーネントに限定するステップと
    をさらに含むことを特徴とする請求項12に記載の方法。
  14. 前記アプリケーションのコンポーネントは対応コンポーネントのインストールされたバージョンに適用されるパッチを含み、
    さらに、前記アプリケーションのコンポーネントのダウンロードを前記パッチに限定するステップを含むことを特徴とする請求項12に記載の方法。
  15. 前記サブスクリプションマニフェストはさらに、前記アプリケーションマニフェストの場所の識別を含むことを特徴とする請求項14に記載の方法。
  16. 前記アプリケーションマニフェストを識別するステップは、前記アプリケーションマニフェストをポイントするサブスクリプションマニフェストをダウンロードすることを含むことを特徴とする請求項12に記載の方法。
  17. サブスクリプションマニフェストの変化に応答して自動的にアップグレードされるように前記アプリケーションを登録するステップをさらに含むことを特徴とする請求項12に記載の方法。
  18. サブスクリプションマニフェストの変化に応答して前記方法を繰り返すステップであって、前記サブスクリプションマニフェストが前記アプリケーションに関連するステップをさらに含むことを特徴とする請求項12に記載の方法。
  19. 前記アプリケーションマニフェストを識別するステップは、前記アプリケーションマニフェストをポイントするサブスクリプションマニフェストをダウンロードすることを含むことを特徴とする請求項18に記載の方法。
  20. データ構造が符号化されたコンピュータ可読媒体であって、
    アプリケーションの一意の識別子を含む第1のフィールドと、
    それぞれが他のコンポーネントから一意に区別される前記アプリケーションの各コンポーネントを識別する複数の第2のフィールドと、
    前記アプリケーションの各コンポーネントが正常な動作のために依存するコンポーネントを識別する複数の第3のフィールドと
    を備えることを特徴とするコンピュータ可読媒体。
  21. 前記第1のフィールドはさらに、前記アプリケーションに関連するハッシュ値を含むことを特徴とする請求項20に記載のコンピュータ可読媒体。
  22. 前記第2のフィールドはそれぞれ、前記第2のフィールド個々に対応するコンポーネントに関連するハッシュ値をさらに含むことを特徴とする請求項20に記載のコンピュータ可読媒体。
  23. 前記データ構造はXMLベースの文書を含むことを特徴とする請求項20に記載のコンピュータ可読媒体。
  24. 前記複数の第3のフィールドで識別された依存性は、依存するコンポーネントをストロングネームにより識別することを特徴とする請求項20に記載のコンピュータ可読媒体。
  25. 前記複数の第3のフィールドで識別された依存性は、依存するコンポーネントを公開鍵トークンにより識別することを特徴とする請求項24に記載のコンピュータ可読媒体。
JP2003173941A 2002-06-27 2003-06-18 影響のない方式でソフトウェアアプリケーションをインストールするシステムおよび方法 Pending JP2004038962A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (6)

* Cited by examiner, † Cited by third party
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