JP4796966B2 - ソフトウェアアプリケーションをプログレッシブインストールするためのシステムおよび方法およびapi - Google Patents

ソフトウェアアプリケーションをプログレッシブインストールするためのシステムおよび方法およびapi Download PDF

Info

Publication number
JP4796966B2
JP4796966B2 JP2006536561A JP2006536561A JP4796966B2 JP 4796966 B2 JP4796966 B2 JP 4796966B2 JP 2006536561 A JP2006536561 A JP 2006536561A JP 2006536561 A JP2006536561 A JP 2006536561A JP 4796966 B2 JP4796966 B2 JP 4796966B2
Authority
JP
Japan
Prior art keywords
application
client
resources
package
request
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.)
Expired - Fee Related
Application number
JP2006536561A
Other languages
English (en)
Other versions
JP2007519071A (ja
Inventor
エイ.アルカザール マーク
ダン マイケル
ダブリュ.カンター アドリアン
ラマ プラサド タムマナ ヴェンカタ
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 JP2007519071A publication Critical patent/JP2007519071A/ja
Application granted granted Critical
Publication of JP4796966B2 publication Critical patent/JP4796966B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本発明は、ソフトウェアアプリケーションのインストールに関する。
本出願は、参照により本明細書に組み込まれている、2003年5月22日に出願したMark Alcazar、Michael Dunn、Adriaan Carter、およびPrasad Tammanaらによる「SYSTEM AND METHOD FOR PROGRESSIVELY INSTALLING A SOFTWARE APPLICATION」という表題の米国係属特許出願第10/444699号の一部継続出願である。
今日利用可能なアプリケーションは大きく分けて2種類ある。第1の種類のアプリケーションは、クライアントサイドアプリケーションである。クライアントサイドアプリケーションは、クライアントコンピュータに配置され、クライアントコンピュータが動作している限り利用することができる。このクライアントサイドアプリケーションは、利用できるようになるまでの間、異なるインストール状態をとる。通常、インストール状態に関して、インストール時に温度計などの何らかの形式の進行状況指示ユーザインターフェースを表示する。インストール状態では、クライアントサイドアプリケーションは利用できない。クライアントサイドアプリケーションは、ユーザがアプリケーションを使用する前に完全にインストールされていなければならない。
他の種類のアプリケーションは、一般に、WebアプリケーションまたはWeb appと呼ばれる。Web appは、Webサーバに格納される。Web appは、一般に、インターネット上でアクセス可能な複数のWebページとして展開される。従来のWeb appは、マークアップ言語ベースのドキュメントを表す複数のWebページを含む。Web appは、Webページを通じてアクセスされるスクリプトまたはその他のリソースを含むこともできる。ほとんどのWeb appでは、複数のWebページおよびリソースは、Web appの「ビジネスロジック」が複数のリソース上に分散される形でハイパーリンクでつながっている。それぞれのページは、ビジネスロジック全体の一部を受け持ち、ページからページへナビゲートすることにより、ユーザはWeb app全体を体験することができる。このドキュメントの目的のために、「ナビゲート(する)」という用語は、ハイパーリンクをアクティブ化することなどによりWeb appに関連付けられているリソースをホスティング環境に読み出させることを意味する。リソースへのナビゲートでは、通常、ナビゲート先リソースがホスティング環境により読み出されるリソースである他のリソースからナビゲートすることを伴う。Web appは、インストールフェーズを必要とせず、クライアントコンピュータがWebサーバから接続を断たれると利用できなくなる。
ソフトウェアアプリケーションと対話するこれらの方法は両方とも、利点と欠点を持ち、いずれも理想的とはいえない。
本発明は、ユーザがアプリケーションとの対話を即座に開始できるようにソフトウェアアプリケーションのプログレッシブインストールを行うためのシステムおよび方法を実現する。その後、アプリケーションと対話をしている間に、アプリケーションは、ユーザのコンピュータにプログレッシブインストールされ、必要ならば、後からオフラインで使用可能にできる。プログレッシブインストール(progressive installation)は、スタートアップ状態、デマンド状態、および最終(ファイナル)状態という3つの状態を含む。これらの状態はいずれも、アプリケーションが使用不可になる専用インストールフェーズを必要としない。その代わり、本発明のプログレッシブインストールでは、Web appが従来のWeb appとして対話できるように、またその後、ユーザとアプリケーションとの対話に影響を及ぼすことなくクライアントサイドアプリケーションに円滑に遷移できるように、2つの形態のアプリケーションインストールを混合する。
本発明は、アプリケーションをプログレッシブインストールするためのメカニズムを提供する。プログレッシブインストールは、スタートアップ状態、デマンド状態、およびインストール状態という3つの状態を遷移する。スタートアップ状態では、アプリケーションに関連するコンポーネントのサブセットがダウンロードされ、ローカルデータストアに格納される。サブセットは、Webアプリケーションと類似の方法でアプリケーションを実行するのに十分なものである。デマンド状態では、アプリケーションに関連付けられたWebページ上のハイパーリンクをアクティブにした後アプリケーションに関連する追加リソースがダウンロードされる。オンデマンドリソースである追加リソースは、ローカルデータストアに格納される。オンラインリソースである追加リソースは、一時(transient)キャッシュに格納される。インストール状態では、アプリケーションは、クライアントサイドアプリケーションと似た方法で実行される。デマンド状態からインストール状態への遷移は、ユーザとアプリケーションとの対話に影響を及ぼすことなく実行される。この遷移は、ローカルデータストアに格納されている追加リソースの数に基づいて自律的に、または外部からトリガがかかったときに、実行される。遷移の間、まだダウンロードされていない追加リソースがローカルデータストアにダウンロードされる。さらに、デマンド状態で派生する状態は、アプリケーションとともに保存され、これにより、アプリケーションはオフラインで実行されたときに同じ状態から再開することができる。
手短に言うと、本発明は、ユーザがアプリケーションとの対話を即座に開始できるようにソフトウェアアプリケーションのプログレッシブインストールを行うためのシステムおよび方法を実現する。その後、アプリケーションと対話している間に、アプリケーションは、ユーザのコンピュータにプログレッシブインストールされ、必要ならば、後からオフラインで使用できるようにインストールされる。プログレッシブインストールは、スタートアップ状態、デマンド状態、および最終状態という3つの状態を含む。これらの状態はいずれも、アプリケーションが使用不可になる専用インストールフェーズを必要としない。その代わり、本発明のプログレッシブインストールでは、Web appが従来のWeb appとして対話できるように2つの形態のアプリケーションインストールを併用し、その後、ユーザとアプリケーションとの対話に影響を及ぼすことなくアプリケーションをオフラインアプリケーションに円滑に遷移させるメカニズムを提供する。
動作環境の例
図1は、本発明の一実施形態で使用できるコンピューティングデバイス例の図である。図1は、本発明の一実施例で使用できるコンピューティングデバイス例の図である。非常に基本的な構成では、コンピューティングデバイス100は、少なくとも1つの処理ユニット102およびシステムメモリ104を備えるのがふつうである。コンピューティングデバイスの正確な構成と種類に応じて、システムメモリ104は揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはこれら2つの何らかの組合せとすることができる。システムメモリ104は、通常、オペレーティングシステム105、1つまたは複数のプログラムモジュール106を格納し、プログラムデータ107を含むこともできる。基本構成は、図1において点線108内のコンポーネントにより示されている。
コンピューティングデバイス100は、さらに特徴または機能性を追加することもできる。例えば、コンピューティングデバイス100は、磁気ディスク、光ディスク、またはテープなどの追加データ記憶デバイス(取り外し可能および/または固定)を含むこともできる。このような追加記憶装置は、図1では、取り外し可能記憶装置109および固定記憶装置110により例示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可能媒体を含むことができる。システムメモリ104、取り外し可能記憶装置109、および取り外し不可能記憶装置110は、すべてコンピュータ記憶媒体の実施例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリもしくはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)もしくはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくはその他の磁気記憶デバイス、または所望の情報を格納するために使用することができコンピューティングデバイス100によりアクセスできるその他の媒体があるが、これらに限定されない。このような任意のコンピュータ記憶媒体をデバイス100の一部とすることができる。さらにコンピューティングデバイス100は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス112を含むこともできる。ディスプレイ、スピーカ、プリンタなどの出力デバイス114を含むこともできる。これらのデバイスは、当業ではよく知られているため、本明細書でさらに詳しい説明をする必要はない。
また、コンピューティングデバイス100は、デバイスがネットワークなどを経由して他のコンピューティングデバイス118と通信するために使用する通信接続116も含むことができる。通信接続116は、通信媒体の一実施例である。通信媒体は、通常、搬送波もしくはその他のトランスポートメカニズムなどの変調されたデータ信号を介して、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって実現されることができ、情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内の情報を符号化する方法によりその特性のうち1つまたは複数が設定または変更された信号を意味する。例えば、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、RF、赤外線、およびその他の無線媒体などの無線媒体があるが、これらに限定されない。本明細書で使用されているコンピュータ可読媒体という用語は、記憶媒体および通信媒体の両方を含む。
ネットワーク接続環境の例
図2は、本発明の実装を具体化できる分散ネットワーキング環境の機能ブロック図概要である。図2に例示されているように、サーバ202およびクライアントコンピュータ220などの2台以上のコンピュータがネットワーク205を介して接続される。サーバ202およびクライアントコンピュータ220は、図1とともに上で説明されているデバイスなどのコンピューティングデバイスである。コンピュータは、企業環境内で接続することができ、その場合、ネットワーク205はローカルエリアネットワークまたはワイドエリアネットワークとすることができる。同様に、コンピュータは、インターネットなどのワイドエリアネットワークを介して任意に接続することができる。
サーバ202は、リソースをネットワーク205に接続されている他のコンピューティングデバイスで利用できるようにする構成を採用するコンピューティングデバイスである。サーバ202は、ハイパーテキストマークアップ言語(HTML)ドキュメントなどのインターネット関連リソースに使用されるWebサービングソフトウェアを備えることができる。サーバ202は、サーバデータストア210の形態でローカル記憶装置を備える。サーバデータストア210上には、ネットワーク205上でサーバ202により利用できるようにされたリソースの少なくとも一部がある。具体的には、デプロイメントマニフェスト212は、サーバデータストア210だけでなく、アプリケーションパッケージ214および追加アプリケーションリソース216にも格納されるが、これらについては、図8〜10を参照しながら以下で詳述する。サーバ202は、さらに、デプロイメントマニフェスト212だけでなく他の関連するドキュメントおよびリソースも構築し、保持するための他のアプリケーションも備える。この実装では、サーバ202は、アプリケーションパッケージ214および追加アプリケーションリソース216を他のコンピューティングデバイスからネットワーク205上で利用可能にする。
クライアントコンピュータ220は、ローカルで実行されるアプリケーションを実行するとともに、ネットワーク205上で他のコンピュータに接続するように構成されたコンピューティングデバイスである。クライアントコンピュータ220は、クライアントデータストア228の形態でローカル記憶装置も備える。クライアントデータストア228には、アプリケーションストア230および一時キャッシュ232が配置される。一実施形態では、クライアントコンピュータ220上で実行されるそれぞれのアプリケーションは、関連するアプリケーションストア230を有する。クライアントコンピュータ220は、さらに、ネットワーク上で他のコンピュータと対話するため他のアプリケーションも備える。このようなアプリケーションの1つに、インターネットブラウジングソフトウェア(これ以降、ブラウザ222と呼ばれる)などのホストソフトウェア222がある。ブラウザ222は、アプリケーションパッケージハンドラ224およびリソースローダ226と通信する。アプリケーションパッケージハンドラ224は、ブラウザ222がアプリケーションパッケージ214などのアプリケーションパッケージを見つけたときに、ブラウザ側でアプリケーションパッケージハンドラ224を呼び出すことがわかるように登録される。その後、アプリケーションパッケージハンドラ224は、アプリケーションパッケージ214を処理する。アプリケーションパッケージ214は、クライアントコンピュータ220上で関連するアプリケーションの実行を開始するための情報を含む。アプリケーションパッケージ214の形式は、実行可能ファイルまたはその他のパッケージングタイプ形式でよい。一実施形態では、アプリケーションパッケージハンドラ224は、関連する情報を取得するためにアプリケーションパッケージの形式を解読するように構成することができる。ブラウザ222は、さらに、クライアントコンピュータが追加アプリケーションリソース216などの追加リソースをサーバ202に要求するときにリソースローダ226と通信する。ブラウザ222、アプリケーションパッケージハンドラ224、およびリソースローダ226により実行される処理については、図5〜7の流れ図とともに以下で詳述する。
手短に言うと、クライアントコンピュータ220のユーザは、従来の任意の方法でサーバ202に接続することができる。サーバ202は、サーバデータストア210に配置されたファイルを利用可能にするWebページまたは他の何らかのリソースを表示する。ユーザがリンクなどを選択したことに対する応答として、サーバ202はデプロイメントマニフェスト212へナビゲートし、要求されたアプリケーションに関連するアプリケーションパッケージ214を識別する。以下で詳述するが、アプリケーションパッケージ214は、アプリケーションを起動するのに必要な最低限の量のコードを含む。アプリケーションパッケージ214は、サーバ202からクライアントコンピュータ220にダウンロードされる。
図3は、本発明の一実装によりリモートアプリケーションのプログレッシブダウンロードを使用可能にするWebブラウジングソフトウェアにより表示できる画面表示である。図3を手短に参照すると、上述のサーバ202が使用されるWebページ310を含むブラウザ222の表示例300が示されている。Webページ310は、特定のWeb appと関連付けられたリソースででもよいし、またはリモートコンピューティングシステムがソフトウェアアプリケーションをダウンロードに利用できるようにするためのリソースでもよい。Webページ310は、上述のデプロイメントマニフェスト212を指しているハイパーリンク360を含む。デプロイメントマニフェスト212は、アプリケーションを起動するのに必要な少なくとも最小のコードを含む、アプリケーションパッケージ214を指している。また、Webページ310は、上述のデプロイメントマニフェスト212を指しているハイパーリンク380を含む。ハイパーリンク380を選択するということは、ユーザが現在アプリケーションを明示的に「インストール」することに関心を持っていることを示す。図7について以下で詳述するように、ハイパーリンク380を選択した後、ユーザは、アプリケーションのダウンロードまたはコンピュータへのインストールを待たずに引き続きアプリケーションと対話することができる。
Webページ310はインターネット、企業イントラネット、または他のネットワークアクセス可能なロケーション上で供給することができることは理解されるであろう。ハイパーリンク360をアクティブにすると、アプリケーションパッケージ214はサーバからプルダウンされる。Webページ310は、ユーザがアプリケーションを呼び出せる唯一の手段であることは理解されるであろう。例えば、アプリケーションパッケージ214へのリンクは、電子メールメッセージなどに入れて送ることができる。
手法の実例
図4は、本発明の一実装による、アプリケーションのプログレッシブインストールのさまざまな状態を例示する状態図400である。プログレッシブインストールは、呼び出し状態402、スタートアップ状態404、デマンド状態406、およびインストール状態410を含む。呼び出し状態402で、ユーザはアプリケーションを呼び出す。ユーザがサーバ202から供給されるリンクをクリックすることによりアプリケーションを呼び出すと、プログレッシブインストールはスタートアップ状態404に進む。しかし、後で詳述するように、アプリケーションは、クライアントコンピュータ上にすでにインストールされている可能性がある。ローカルにインストールされているアプリケーションは、ローカルアプリケーションへのリンクを選択する、スタートメニュー内のローカルアプリケーションへのショートカットを選択するなどの方法により呼び出すことができる。ローカルにインストールされているアプリケーションが呼び出されると、プロセスはインストール状態410に遷移する。他の実施形態では、呼び出し状態402からインストール状態410への遷移は、サブスクリプション更新状態412を介して進行することができる。手短に言うと、サブスクリプション更新状態412により、サーバ202上でアプリケーションの更新が利用可能かどうかを判別するということである。更新があれば、アプリケーションの更新されたコンポーネントがダウンロードされる。
次に、アプリケーションがローカルにインストールされていないと仮定して、プログレッシブインストールがスタートアップ状態404に進む。図5を参照し手短に言うと、スタートアップ状態404は、アプリケーションをクライアントコンピュータ上で実行するのに必要な最小のコードをダウンロードする。最小のコードはアプリケーション丸ごとに比べてかなり小さいので、ユーザはアプリケーションとの対話をすぐに開始することができ、これは、今日従来のWeb appと対話している場合にユーザが経験することとあまり変わらない。プログレッシブインストールは、スタートアップ状態からデマンド状態406に進む。図6を参照して手短に説明すると、デマンド状態406は、必要に応じて、リソースをダウンロードする。このため、ユーザは、アプリケーションの購入またはアプリケーションとの継続関係を進展させる前にアプリケーションを試すことができる。
デマンド状態406から、ユーザは、アプリケーションのローカルでのインストールに先んじて、終了状態408に進むことができる。これは、ユーザがブラウザを閉じると実行される。ユーザがデマンド状態406から終了状態408に遷移すると、アプリケーションダウンロードされたコンポーネントを削除することができる。したがって、クライアントコンピュータは、ユーザがアプリケーションを呼び出す前と同じ状態となる。そこで、ユーザは、後でリモートアプリケーションを再び呼び出すことができる。プログレッシブインストールは、再び、スタートアップ状態とデマンド状態を通る。そのため、ユーザは、アプリケーションをインストールすることに踏み切らずに再びアプリケーションを使用することができる。プログレッシブインストールは、デマンド状態406からインストール状態410に進む。遷移は、購入決定、昇格許可(elevated permission)(例えば、信頼昇格(trust elevation))の要求に基づいてユーザが開始するか、または予め定められている数のリソースがすでにクライアントコンピュータ上にインストールされているときなどに、オペレーティングシステム側で自律的に実行することができる。デマンド状態からインストール状態への遷移は、ユーザとアプリケーションとの対話に影響を及ぼさない。この遷移は、図7に関して以下で説明される。
そこで、本発明によるプログレッシブインストールを使用すると、ユーザは、アプリケーションを呼び出すと直ちにアプリケーションとの対話を開始することができる。ユーザに影響を及ぼすことなくユーザがアプリケーションと対話している間にアプリケーションの各部がダウンロードされる。ユーザが専用のインストールを待つ必要はまったくない。
図5は、本発明の一実施形態によるプログレッシブインストールのスタートアップ状態のプロセスを一般的に例示する論理流れ図である。プロセスはブロック501から開始し、そのブロックで、ネットワークに配置されるアプリケーションはアプリケーションに関係するハイパーリンクを選択するなどにより呼び出される。図5に進む前に、ネットワークに配置されるアプリケーションのコンポーネントについて図8と併せて説明する。
図8は、サーバ202上のネットワークに配置されたアプリケーションのコンポーネントを図形的に表したものである。コンポーネントは、デプロイメントマニフェスト212、アプリケーションパッケージ214、および追加アプリケーションリソース216を含む。アプリケーションパッケージ214は、アプリケーションマニフェスト802およびコード804を含む。アプリケーションマニフェスト802には、各コンポーネント、そのバージョン、および依存関係を含むアプリケーションコードの詳細が記述される。そのような性質のサンプルアプリケーションマニフェストが、本明細書に「付録A−サンプルアプリケーションマニフェスト」として収録されている。本明細書では特定のファイルとして説明されているが、本発明のアプリケーションマニフェスト212は何らかの形のアプリケーションのコンポーネントを説明する情報を意味するものとして解釈すべきであり、本明細書で説明されている場所以外の場所に存在していてもよい。本明細書で説明されているアプリケーションマニフェスト212は例示のために用意されているにすぎない。一実施形態では、コード804は、アプリケーションを実行するのに必要な最小のコードを含む。当業者であれば、本発明から逸脱することなく必要のない追加コードをアプリケーションパッケージ214に含めることができることは理解するであろう。しかし、遅延またはユーザへの影響を少なくするために、最低限の量のコードが必要である。追加アプリケーションリソース216は、マークアップA 810、追加コード812、マークアップB 814などのオンデマンドリソースおよびオンラインリソースを含む。図8は、5つの追加リソースのみを例示しているが、当業者であれば、通常、Web appのコンポーネントであるリソースがさらにいくつかあることを理解するであろう。
図5を参照すると、本発明の一実施形態では、ブロック502でデプロイメントマニフェスト212へのナビゲーションが行われる。一実施形態では、デプロイメントマニフェストはリモートサーバ上に配置され、これによりアプリケーションのエントリポイントが識別される。サンプルデプロイメントマニフェストが、本明細書に「付録B−サンプルデプロイメントマニフェスト」として収録されている。
ブロック504で、このエントリポイントへのナビゲーションが実行される。一実施形態では、エントリポイントは、アプリケーションマニフェストおよびアプリケーションを実行するのに必要な最低限の量のコードを含むアプリケーションパッケージ(例えば、図8に示されているアプリケーションパッケージ214)とすることができる。
ブロック506で、ホストが起動される。一実施形態では、ホストはWebブラウザである。アプリケーションがクライアントコンピュータからプログレッシブインストールされる他の実施形態では、ホストはスタンドアロンのホストとすることができる。そうすると、スタンドアロンのホストは、ホストがWebブラウザである実施形態を使用して以下で説明するのと同じ方法で機能する。アプリケーションパッケージに関連するファイルタイプに対しアプリケーションパッケージハンドラが登録される。したがって、ブラウザがアプリケーションパッケージを受け取ると、アプリケーションパッケージハンドラは本発明によるプログレッシブインストールを開始することができる。一実施形態では、アプリケーションパッケージハンドラは、アプリケーションパッケージ214に関連付けられたファイルタイプについて登録されているmimeハンドラとすることができる。
ブロック508で、アプリケーションを実行するために必要が最低限度の量のコードがダウンロードされる。アプリケーションパッケージ214を使用する実施形態では、これはアプリケーションパッケージ214をダウンロードすることを含む。上述のように、ブラウザはアプリケーションパッケージハンドラを呼び出してアプリケーションパッケージ214を処理する。
ブロック510で、リソースローダが登録され、アプリケーションに関連付けられる。リソースローダは、必要なときにアプリケーションリソースをロードする役割を持つ。一実施形態では、リソースローダは、アプリケーションの「コンテキストで」リソースをロードする方法が組み込まれているプラグ可能プロトコルとすることができる。
ブロック512で、アプリケーションのアプリケーションドメインが作成される。ブロック514で、アプリケーションを構成するユーザコードが実行される。一実施形態では、アプリケーションの実行によりアプリケーションオブジェクトが作成される。アプリケーションオブジェクトを作成するために、クラスを定義するアプリケーションパッケージ内のコードが実行される。アプリケーションオブジェクトは一意のIDを持つ。さらに、アプリケーションオブジェクトは状態を含む。この状態は、デマンド状態で連続的に更新される。この状態は、ユーザとアプリケーションとの対話に関連する情報を含む。この状態情報を使用することで、アプリケーションはWebアプリケーションからクライアントアプリケーションへ滑らかに遷移することができる。
スタートアップ状態での処理が完了する。その後、プログレッシブインストールがデマンド状態に進む。図8に示されているように、スタートアップが完了した後、アプリケーションパッケージ214はクライアントコンピュータ220のアプリケーションストア230に格納される。ユーザは、アプリケーションとの対話を開始することができる。従来のWeb appでは、Web appのリソースは、アプリケーション毎のストア230の概念もなく、一時キャッシュ232にダウンロードされていた。これからわかるように、アプリケーション毎のストア230を有することにより、本発明はWeb appからクライアントサイドアプリケーションへユーザに影響を及ぼすことなく滑らかに遷移することができる。
図6は、プログレッシブインストールのデマンド状態のプロセスを一般的に例示する論理流れ図である。デマンド状態はブロック601から始まるが、そのブロックでスタートアップ状態が完了し、ユーザはアプリケーションと対話する。プロセス600は、アプリケーションの一部が要求されたときに必ず実行される処理を示す。これは、アセンブリロード(コード)、リソースなどの要求を含むことができる。通常、デマンド状態ではリソースおよびコードに対する多くの要求が受け取られる。それぞれのそのような要求はプロセス600を実行する。以下の説明では、要求がリソースの場合のプロセス600を議論する。当業者であれば、要求がアセンブリロードについてのものである場合にプロセス600も実行されることを理解するであろう。
ブロック602で、要求が受け取られる。通常、ユーザがアプリケーションに関連付けられたWebページのうちの1つにあるハイパーリンクを選択すると必ず要求が発生する。処理は、決定ブロック604に続く。
決定ブロック604で、要求がリソースについてのものであるかどうかが判別される。要求がリソースについてのものでない場合、処理は終わりまで進む。その一方で、要求がリソースについてのものである場合、処理は決定ブロック606に進む。
決定ブロック606で、要求されたリソースがローカルで使用可能であるかどうかが判別される。リソースがローカルで使用可能である場合、使用するリソースのローカルコピーがロードされ、プロセスは終わりまで進む。リソースのタイプに応じて、ローカルコピーはアプリケーションストア内にあるか、または一時キャッシュ内にある。リソースがローカルで使用できない場合、処理は決定ブロック610に進む。
決定ブロック610で、要求されたリソースがオンデマンドリソースであるかどうかが判別される。要求されたリソースがオンデマンドリソースの場合、処理はブロック612に進み、そこで、リソースはhttpを介してロードされ、ローカルアプリケーションストアにキャッシュされる。例えば、図9で、マークアップA 810およびコード812は、アプリケーションストア230に格納される。プロセスは終わりまで進む。決定ブロック610で、リソースがオンデマンドリソースでない場合、処理は決定ブロック620に続く。
決定ブロック620で、要求がオンラインリソースであるかどうかが判別される。リソースがオンラインリソースである場合、処理はブロック622に続き、そこで、オンラインリソースがhttpを介してロードされる。ブロック624で、オンラインリソースはトランスポートキャッシュ232にキャッシュされる。例えば、図9で、マークアップb 814は、オンラインリソースとして指定されており、一時キャッシュに格納される。その後処理は完了する。
一実施形態では、それぞれのリソースは、何らかの形で関連付けられているリソースのグループに属すことができる。例えば、一般に併用されるリソースは、1つのグループに入れることができる。このような場合、ブロック612および622で、対象リソースを含むリソースのグループ全体を読み出すことができる。この手法により、後から必要になる他のリソースがローカルにすでに存在する可能性が高まる。
そのため、デマンド状態では、追加リソースがダウンロードされ、アプリケーション毎のストアに初期値として配置されることが分かるであろう。ダウンロードされるリソースはアプリケーションをオフラインで実行するのに必要なリソースと同じであるため、後述のように、アプリケーションストアをアプリケーションオブジェクトと併用することで、本発明は、ユーザとアプリケーションとの対話に影響を及ぼすことなく、Webアプリケーションからクライアントサイドアプリケーションへ滑らかに遷移することができる。したがって、2つの異なる種類のアプリケーション(つまり、クライアントサイドアプリケーションとWebアプリケーション)を用意せずに、1種類のアプリケーションを両方の目的に使用することができる。本発明を使用することで、この1種類のアプリケーションは必要なときに一方の目的から他方の目的に滑らかに遷移する。
図7は、プログレッシブインストールのデマンド状態とインストール状態との間で遷移するプロセスを一般的に例示する論理流れ図である。処理はブロック701から開始し、そこで、アプリケーションをインストールすべきであることを知らせるトリガが発生する。トリガは、ユーザ開始トリガ、またはアプリケーション毎のストアにすでにダウンロードされているリソースの数などの外部ベンチマークに基づいて自律的なトリガとすることもできる。処理は、ブロック702に続く。
ブロック702で、残りのオンデマンドリソースがhttpを介してダウンロードされる。処理は、ブロック704に続く。ブロック704で、これら残りのオンデマンドリソースは、アプリケーションストアに格納される。これは、ユーザがまだアプリケーションと対話している間に実行される。例えば、図10は、アプリケーションストアに現在配置されているマークアップC 816を例示している。処理は、ブロック706に続く。
ブロック706で、オンラインリソースのコピーがアプリケーションストア230に格納される。したがって、一時キャッシュ内のコピーが取り除かれても、オンラインリソースのコピーはそのまま存在する。例えば、図10を参照すると、マークアップB 814はアプリケーションストアに格納されているものとして例示されている。処理は、ブロック708に続く。
ブロック708で、アクティベーション情報がオペレーティングシステムに記録される。例えば、ショートカットがスタートメニューに追加される場合がある。アクティベーション情報により、アプリケーションが次回ローカルで呼び出されたときに従来のメカニズムを使用してアプリケーションを呼び出すことができる。処理は、ブロック710に続く。
ブロック710で、インプレッション情報(impression information)がオペレーティングシステムに記録される。インプレッション情報は、ファイル関連付けなどの、アプリケーションとオペレーティングシステムとの相互作用を記述するものである。さらに、インプレッション情報では、アプリケーションの変更/プログラムエントリからの削除の仕方についても記述する。図10を参照すると、アクティベーション情報832およびインプレッション情報834は、クライアントコンピュータ220のオペレーティングシステム情報830内に示されている。その後処理は完了する。
上述のように、この時点で、アプリケーションはオフラインで利用可能になっている。上述の説明を読むとわかるように、ユーザはアプリケーションのインストールを待つ必要がなかった。デマンド状態で生成される情報は、インストール状態に移行される。したがって、ユーザがアプリケーションと対話している間に格納されたアプリケーションのIDおよび状態情報を使用することにより、アプリケーションはインストール状態に滑らかに遷移することができる。
アプリケーションプログラミングインターフェースの実施例
具体的な一実施例では、上述の手法は、ダウンロードおよびインストール、サービス、信頼とプライバシーの確立、ならびにアプリケーションの最終的実行を管理するための機能性を公開するアプリケーションプログラミングインターフェース(API)で実装することができる。このようなAPIの一実施例について、これらの各機能を処理するためのDeploymentManagerの以下のクラス例で説明する。このDeploymentManagerのスケルトンタイプの定義を以下に示す。
* * * * * * * * * * * * * * * * * * *
public class DeploymentManager
{
public DeploymentManager(string identity, string codebase)
{ ... }

//呼び出すことができる非同期オペレーションに対するイベント。
public event BindCompletedEventHandler
BindCompleted;
public event
DeterminePlatformRequirementsCompletedEventHandler
DeterminePlatformRequirementsCompleted;
public event
DetermineAuthorizationCompletedEventHandler
DetermineAuthorizationCompleted;
public event SynchronizeCompletedEventHandler
SynchronizeCompleted;
public event ExecuteCompletedEventHandler
ExecuteCompleted;

//すべての非同期オペレーションに対するProgressChangedイベント

public event DeploymentProgressChangedEventHandler
DeploymentProgressChanged;

//BindAsync
public void BindAsync(object userToken)
{ ... }

//DetermineRequirementsAsync
public void
DeterminePlatformRequirementsAsync(object userToken)
{ ... }

// DetermineAuthorizationAsync
public void DetermineTrustAsync(object userToken)
{ ... }

// SynchronizeAsync
public void SynchronizeAsync(object userToken)
{ ... }

// ExecuteAsync
public void ExecuteAsync(object userToken)
{ ... }

// AsyncCancel
public void AsyncCancel()
{ ... }
}
* * * * * * * * * * * * * * * * * * *
DeploymentManagerは、(1)マニフェストバインディング、(2)プラットフォーム要件の判別、(3)権限の判別、(4)同期処理、および(5)実行の5つの主要オペレーションのためのメソッドを公開することに留意されたい。これらの関数について、それぞれ、簡単にここで説明することにする。
マニフェストバインディング
マニフェストバインディングは、展開されたアプリケーションに関する必要なマニフェストメタデータをインストール、サービス、およびアクティベーションのために最初に取得するプロセスである。バインディングは、一般に、デプロイメントマニフェストへのコード ベース、または展開されたアプリケーションのID、または場合によってはそれらの両方のから始まる。バインディングでは、展開されたアプリケーションに関して後から決定するためのマニフェスト情報の最小セットを取り出す。マニフェストバインドでは、バインド、アプリケーションストアの状態、およびバインド先のアプリケーションのコンテキストに応じてネットワーク接続を必要とする場合もあれば必要としない場合もある。アプリケーションがすでにマシンに展開されている場合、バインドは、ネットワークI/Oなしの完全オフライン状態で成功することができる。
プラットフォーム要件の判別
バインディングが完了した後、クライアントマシンのインストール状態を問い合わせてアプリケーションを実行するために必要なプラットフォームが存在しているかどうかを判別できるようになる。プラットフォームは、アプリケーションが依存しているが、展開済みアプリケーションインストールの一部としてインストールすることができないソフトウェアとして識別することができる。展開されたアプリケーションは、アプリケーションマニフェストに記述されているこれらの依存関係を参照する。例えば、オペレーティングシステムの最小バージョン、ランタイム環境の最小バージョン、GAC常駐アセンブリの特定のバージョンについてサポートを提供することもできる。バージョンが最小として処理されるかどうかは、アセンブリがプラットフォームまたはライブラリとしてマーク付けされるかどうかに依存する場合がある。
プラットフォーム要件が満たされている場合、アプリケーションインストールは続行する。プラットフォーム要件が満たされていない場合、どのプラットフォーム依存関係が満たされていなかったかに関する特定の情報とともに失敗が返される。アプリケーションインストールプロセスは、その後、続行できないが、マシンに必要なプラットフォームをインストールするアクションが実行された後そのプロセスを繰り返すことができる。
権限の判別
アプリケーションにどのような信頼、プライバシー、およびライセンスが受け入れられるかに関する決定を、このような情報を展開およびアプリケーションマニフェスト内に配置することもできるため、マニフェストバインディングが完了した後に行うことができる。これらの決定は、権限の一般的カテゴリの下にグループ化される。例えば、アプリケーションが既定のサンドボックスで実行できない場合に、権限がユーザプロンプティングを必要とすることがある。権限の付与が成功すると、クライアントマシン上でアプリケーションを実行するのに必要な一組の許可付与、プライバシーポリシー保証、ライセンスキーなどが生成される。この情報は、アプリケーションがアクティブにされているときに決定を後で繰り返す必要がないようにキャッシュしておくことができる。権限が失敗した場合、アプリケーションインストールは続行できない。
同期処理
プラットフォームおよび権限の判別が首尾よく完了すると、アプリケーションペイロードをインストールする実際のタスクを開始できる。このプロセスは、同期処理と呼ばれる。同期処理は、展開済みアプリケーションの必要なバージョンがすでにマシン上に存在していることを単に確認するだけで成功する。それとは別に、同期処理では、リモートで展開されているアプリケーション(オンデマンドコンポーネント、言語パックとともに必要)またはアプリケーションを起動するために必要な最小限度必要サブセットのみ(例えば、必要なコンポーネントのみ)の完全ダウンロードを伴う場合がある。ダウンロードが発生した場合、同期処理はさらに、(1)アプリケーションペイロードがディスク上の一時記憶域に複製される純粋なトランスポートフェーズおよび(2)展開済みアプリケーションが格納処理され、バインディングに利用可能にされる、コミットオペレーションの2つのフェーズに細分される。同時処理は、既存のインストール済みアプリケーションのオプションコンポーネントまたはオンデマンドコンポーネントのダウンロードに使用することもできる。
実行
アプリケーションがプラットフォームおよび権限の決定を正常に完了し、ペイロードの同期処理が正常に行われ、格納のコミットが行われた後、アプリケーションを実行(起動(launch)または実行(run))できる。実行は、別のスタンドアロンのプロセスで行うか、または既存の呼び出し側のプロセスを使用して行うことができる。両方の場合に、実行ホストは、場合によっては再プロンプティングを回避するために前回の権限呼び出しですでにすでにキャッシュされている決定を利用して、アプリケーションの安全な実行環境を提供する。
クライアントサイドの実装
非同期完了結果などのDeploymentManagerメソッドの呼び出しからの通知を受け取るために、クライアントは、関連する完了イベントハンドラ(例えば、BindCompletedEventHandlerなど)の実装を提供する。これらは、関連付けられた完了イベント引数(例えば、BindCompletedEventArgs)を受け渡される。これらのオペレーションに対する非同期の進行結果を受け取るために、クライアントはDeployrnentProgressChangedEventHandlerの実装を提供する。これは、引数(DeploymentProgressChangedEventArgs)を受け渡される。以下に、そのようなイベントハンドラ実装の実施例のスケルトンを示す。
* * * * * * * * * * * * * * * * * * *
//イベントハンドラデリゲートおよび引数をバインドする。
public delegate void BindCompletedEventHandler(object
sender, BindCompletedEventArgs e);
public class BindCompletedEventArgs :
AsyncCompletedEventArgs
{
public BindCompletedEventArgs(Exception error, bool
cancelled, object userToken) : base(error, cancelled,
userToken)
{ ... }
}

//DeterminePlatformRequirementsイベントハンドラデリゲートおよび引数。
public delegate void
DeterminePlatformRequirementsCompletedEventHandler(objec
t sender,
DeterminePlatformRequirementsCompletedEventArgs e);
public class
DeterminePlatformRequirementsCompletedEventArgs :
AsyncCompletedEventArgs
{
public
DeterminePlatformRequirementsCompletedEventArgs(Exceptio
n error, bool cancelled, object userToken) : base(error,
cancelled, userToken)
{ ... }
}
//DetermineAuthorizationイベントハンドラデリゲートおよび引数。
public delegate void
DetermineAuthorizationCompletedEventHandler(object
sender, DetermineAuthorizationCompletedEventArgs e);
public class DetermineAuthorizationCompletedEventArgs :
AsyncCompletedEventArgs
{
public
DetermineAuthorizationCompletedEventArgs(Exception
error, bool cancelled, object userToken) : base(error,
cancelled, userToken)
{ ... }
}

//イベントハンドラデリゲートおよび引数を同期処理する。
public delegate void
SynchronizeCompletedEventHandler(object sender,
SynchronizeCompletedEventArgs e);
public class SynchronizeCompletedEventArgs :
AsyncCompletedEventArgs
{
public SynchronizeCompletedEventArgs(Exception
error, bool cancelled, object userToken) : base(error,
cancelled, userToken)
{ ... }
}

//イベントハンドラデリゲートおよび引数を実行する。
public delegate void ExecuteCompletedEventHandler(object
sender, ExecuteCompletedEventArgs e);
public class ExecuteCompletedEventArgs :
AsyncCompletedEventArgs
{
public ExecuteCompletedEventArgs(Exception error,
bool cancelled, object userToken) : base(error,
cancelled, userToken)
{ ... }
}

//DeploymentProgressChangedイベントハンドラデリゲートおよび引数。
public delegate void
DeploymentProgressChangedEventHandler(object sender,
DeploymentProgressChangedEventArgs e);
public class DeploymentProgressChangedEventArgs :
ProgressChangedEventArgs
{
public DeploymentProgressChangedEventArgs(object
userToken, int progressPercentage) : base(userToken,
progressPercentage)
{ ... }
}
* * * * * * * * * * * * * * * * * * *
説明したばかりのメカニズムを呼び出すクライアント(例えば、アプリケーション)の一実装の一般的な実施例を以下に示す。以下の実施例は、上述のDeploymentManagerを実装するクラス(クライアント)に基づくアプリケーションである。
* * * * * * * * * * * * * * * * * * *
public class Client
{
public static void Main()
{
DeploymentManager dep = new
DeploymentManager("name=bar, version=1.0.0.0",
"http://www.foo.com/bar.deploy");
dep.DeploymentProgressChanged += new
DeploymentProgressChangedEventHandler(Client.ProgressCha
nged);
dep.BindCompleted += new
BindCompletedEventHandler(Client.BindCompleted);

dep.BindAsync(null);
}
public static void BindCompleted(object sender,
BindCompletedEventArgs e)
{
System.Console.WriteLine(e.ToString());
}
public static void ProgressChanged(object sender,
DeploymentProgressChangedEventArgs e)
{
System.Console.WriteLine(e.ProgressPercentage);
}
}
* * * * * * * * * * * * * * * * * * *
上記の明細、実施例、およびデータは、本発明の実装の構造および使用に関する完全な説明となっている。本発明の多くの実施形態は、本発明の精神と範囲を逸脱することなく実装できるため、本発明は付属の請求項によって定められる。
付録A.サンプルアプリケーションマニフェスト
Figure 0004796966
Figure 0004796966
付録B.サンプルデプロイメントマニフェスト
Figure 0004796966
本発明の一実施形態で使用できるコンピューティングデバイス例の図である。 本発明の実装を具体化できる分散ネットワーキング環境の機能ブロック図概要である。 本発明の一実装によりアプリケーションのプログレッシブダウンロードを使用可能にするためWebブラウジングソフトウェアにより表示できる画面表示である。 本発明の一実装による、アプリケーションのプログレッシブインストールのさまざまな状態を例示する状態図である。 プログレッシブインストールのスタートアップ状態のプロセスを一般的に例示する論理流れ図である。 プログレッシブインストールのデマンド状態のプロセスを一般的に例示する論理流れ図である。 プログレッシブインストールのデマンド状態とインストール状態との間で遷移するプロセスを一般的に例示する論理流れ図である。 本発明の一実装による、プログレッシブインストールでロードされるファイルを一般的に例示する一連のブロック図である。 本発明の一実装による、プログレッシブインストールでロードされるファイルを一般的に例示する一連のブロック図である。 本発明の一実装による、プログレッシブインストールでロードされるファイルを一般的に例示する一連のブロック図である。

Claims (18)

  1. アプリケーションに関連するアプリケーションパッケージであって、ユーザによる前記アプリケーションとの対話的操作を可能にするために必要な最小限のコードを含むアプリケーションパッケージを識別するステップと、
    前記識別されたアプリケーションパッケージを、ローカルのストアにダウンロードするステップと、
    前記ローカルのストアを含むクライアントから前記アプリケーションに関連する複数の追加のリソースのうちの1つに対する要求を受け取ると、前記追加のリソースをダウンロードするステップであって、前記複数の追加のリソースのうちの1つに対する要求は、前記アプリケーションパッケージに含まれたコードを実行する前記クライアントが、対応するユーザの操作に応じて発生させるステップと、
    前記アプリケーションをクライアントサイドアプリケーションに遷移させるための要求を受け取ると、残りのリソースを前記ローカルのストアにダウンロードするステップであって、前記アプリケーションをクライアントサイドアプリケーションに遷移させるための要求は、対応するユーザの操作なしに作成されるステップと
    をコンピュータに実行させることを特徴とするプログラム。
  2. 前記アプリケーションパッケージの識別は、前記アプリケーションに関連するハイパーリンクをアクティブにすることを含むことを特徴とする請求項1に記載のプログラム。
  3. 前記アプリケーションパッケージの識別は、前記アプリケーションパッケージを識別するマニフェストの検索を開始することを含むことを特徴とする請求項1に記載のプログラム。
  4. 前記アプリケーションパッケージはアプリケーションのマニフェスト含むことを特徴とする請求項1に記載のプログラム。
  5. 前記アプリケーションパッケージに含まれたコードは実行可能形式であることを特徴とする請求項1に記載のプログラム。
  6. 前記アプリケーションに関連するウェブページ上のハイパーリンクをアクティブにすると、前記アプリケーションに関連する追加のリソースをダウンロードするステップをさらにコンピュータに実行させることを特徴とする請求項1に記載のプログラム。
  7. 前記追加のリソースはオンデマンドのリソースを含むことを特徴とする請求項に記載のプログラム。
  8. 前記オンデマンドのリソースを前記ローカルのストアに格納するステップをさらにコンピュータに実行させることを特徴とする請求項に記載のプログラム。
  9. 前記アプリケーションを前記クライアントサイドのアプリケーションに遷移させることは、複数の残りのリソースを前記ローカルのストアに格納することを含み、前記複数の残りのリソースは、前記ローカルのストアに現在格納されていないリソースであることを特徴とする請求項1に記載のプログラム。
  10. 前記アプリケーションを前記クライアントサイドのアプリケーションに遷移させることは、前記クライアントサイドのアプリケーションがオフラインで起動されたとき、前記クライアントサイドのアプリケーションの実行が前記アプリケーションに関連付けられた状態で再開するように、前記アプリケーションに関連付けられた状態を前記クライアントサイドのアプリケーションに遷移させることを含むことを特徴とする請求項1に記載のプログラム。
  11. 前記状態の情報は前記アプリケーションに関連するアプリケーションオブジェクトに格納されることを特徴とする請求項10に記載のプログラム。
  12. ウェブアプリケーションをクライアントサイドアプリケーションに遷移させる方法であって、コンピュータのプロセッサが、
    アプリケーションに関連するアプリケーションパッケージであって、ユーザのアプリケーションに対する対話的操作を可能にするために必要な最小限のコードを含むアプリケーションパッケージを識別するステップと、
    前記識別されたアプリケーションパッケージローカルのストアにダウンロードするステップと、
    前記ローカルのストアを含むクライアントから前記アプリケーションに関連する複数の追加のリソースのうちの1つに対する要求を受け取ると、前記追加のリソースをダウンロードするステップであって、前記複数の追加のリソースのうちの1つに対する要求は、前記アプリケーションパッケージに含まれたコードを実行する前記クライアントが、対応するユーザの操作に応じて発生させるステップと、
    前記アプリケーションを前記クライアントサイドアプリケーションに遷移させるための要求を受け取ると、残りのリソースを前記ローカルのストアにダウンロードするステップであって、前記アプリケーションを前記クライアントサイドアプリケーションに遷移させるための要求は、対応するユーザの操作なしに作成されるステップと
    を含むことを特徴とする方法。
  13. 前記アプリケーションを前記クライアントサイドアプリケーションに遷移させるための要求は、前記ローカルのストアに現在格納されている追加のリソースの数に基づくことを特徴とする請求項1に記載の方法。
  14. 前記アプリケーションの遷移に対する要求は自律的に発生することを特徴とする請求項1に記載の方法。
  15. 前記アプリケーションパッケージはアプリケーションのマニフェストおよびコードを含み、前記アプリケーションのマニフェストは前記アプリケーションに関するリソースのサブセットを一意に識別することを特徴とする請求項1に記載の方法。
  16. 前記プロセッサが、
    前記追加のリソースがローカルで利用可能であるかどうかを判断するステップと、利用可能である場合、前記追加のリソースをダウンロードせずに、前記追加のリソースを利用するステップとをさらに含むことを特徴とする請求項1に記載の方法。
  17. 前記残りのリソースは、前記ローカルのストアに現在格納されていない複数の追加のリソースからの追加のサブセットであることを特徴とする請求項1に記載の方法。
  18. 前記アプリケーションを前記クライアントサイドのアプリケーションに遷移させることは、前記クライアントサイドアプリケーションがオフラインで起動されたとき、前記クライアントサイドアプリケーションの実行が、遷移したときの前記アプリケーションに関連付けられた状態で再開するように、前記アプリケーションに関する状態を前記クライアントサイドアプリケーションに遷移させることを含むことを特徴とする請求項1に記載の方法。
JP2006536561A 2003-10-23 2004-07-21 ソフトウェアアプリケーションをプログレッシブインストールするためのシステムおよび方法およびapi Expired - Fee Related JP4796966B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/692,323 2003-10-23
US10/692,323 US20040237082A1 (en) 2003-05-22 2003-10-23 System, method, and API for progressively installing software application
PCT/US2004/023546 WO2005045562A2 (en) 2003-10-23 2004-07-21 Progressively installing a software application

Publications (2)

Publication Number Publication Date
JP2007519071A JP2007519071A (ja) 2007-07-12
JP4796966B2 true JP4796966B2 (ja) 2011-10-19

Family

ID=34573192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006536561A Expired - Fee Related JP4796966B2 (ja) 2003-10-23 2004-07-21 ソフトウェアアプリケーションをプログレッシブインストールするためのシステムおよび方法およびapi

Country Status (6)

Country Link
US (1) US20040237082A1 (ja)
EP (1) EP1597654A4 (ja)
JP (1) JP4796966B2 (ja)
KR (1) KR20060114615A (ja)
CN (1) CN1961307A (ja)
WO (1) WO2005045562A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3040857A1 (en) 2015-01-05 2016-07-06 Fujitsu Limited Application providing method, application providing server, and application providing program

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040040023A1 (en) * 2002-08-22 2004-02-26 Ellis David G. Remote identification loader
US7395534B2 (en) 2003-05-22 2008-07-01 Microsoft Corporation System and method for progressively installing a software application
US8930944B2 (en) 2003-11-18 2015-01-06 Microsoft Corporation Application model that integrates the web experience with the traditional client application experience
US8302020B2 (en) 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US7490295B2 (en) 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US8453065B2 (en) * 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7954064B2 (en) 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US7743336B2 (en) 2005-10-27 2010-06-22 Apple Inc. Widget security
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US8543824B2 (en) 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US7484084B1 (en) * 2005-12-20 2009-01-27 Netapp, Inc. Use of a baseboard management controller to facilitate installation of firmware in a processing system
US20070174824A1 (en) * 2006-01-23 2007-07-26 Microsoft Corporation Techniques for generating and executing browser-hosted applications
GB2440170B8 (en) 2006-07-14 2014-07-16 Vodafone Plc Digital rights management
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
US20080168368A1 (en) * 2007-01-07 2008-07-10 Louch John O Dashboards, Widgets and Devices
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US8667415B2 (en) 2007-08-06 2014-03-04 Apple Inc. Web widgets
CN101453416A (zh) * 2007-11-30 2009-06-10 国际商业机器公司 用于远程程序安装的包预取的服务节点、网络及其方法
US20090183182A1 (en) * 2008-01-10 2009-07-16 Microsoft Corporation Dynamic Composition of Virtualized Applications
GB2459682B (en) * 2008-04-30 2012-04-25 Vmware Inc A computer system and a method of deploying an application in a computer system
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
US8065617B2 (en) * 2008-08-28 2011-11-22 Microsoft Corporation Discovering alternative user experiences for websites
US20100115471A1 (en) * 2008-11-04 2010-05-06 Apple Inc. Multidimensional widgets
CN101452402B (zh) * 2008-11-28 2012-05-30 珠海金山快快科技有限公司 软件运行***和软件运行方法
US8069247B2 (en) * 2008-12-03 2011-11-29 Verizon Data Services Llc Application launcher systems, methods, and apparatuses
US10656931B2 (en) * 2009-05-26 2020-05-19 Comcast Cable Communications, Llc Network event triggered software updates
US8230078B2 (en) * 2009-08-18 2012-07-24 International Business Machines Corporation Accept and receive enhancements
US8954958B2 (en) 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US9883008B2 (en) 2010-01-15 2018-01-30 Endurance International Group, Inc. Virtualization of multiple distinct website hosting architectures
US20130204746A1 (en) * 2012-01-11 2013-08-08 Endurance International Group, Inc. Automatic web presence feature deployment
US9277022B2 (en) 2010-01-15 2016-03-01 Endurance International Group, Inc. Guided workflows for establishing a web presence
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US8959183B2 (en) * 2010-01-27 2015-02-17 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
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US8782106B2 (en) 2010-07-02 2014-07-15 Code Systems Corporation Method and system for managing execution of virtual applications
KR101702618B1 (ko) * 2010-07-09 2017-02-03 삼성전자주식회사 어플리케이션 관련 관리 객체를 제공하는 장치 및 방법
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
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
JP5760716B2 (ja) 2011-03-30 2015-08-12 富士通株式会社 アプリ提供システム、アプリ提供方法、情報処理装置及び情報処理プログラム
JP5686046B2 (ja) 2011-03-31 2015-03-18 富士通株式会社 アプリ提供システム、アプリ提供方法及びアプリ提供プログラム
US9329851B2 (en) 2011-09-09 2016-05-03 Microsoft Technology Licensing, Llc Browser-based discovery and application switching
KR101891337B1 (ko) * 2011-10-06 2018-08-29 주식회사 케이티 단말 및 그의 애플리케이션 실행을 위한 모듈 조회 방법
US20130110661A1 (en) * 2011-10-28 2013-05-02 Microsoft Corporation Application store delivered platform components
US20130219383A1 (en) * 2012-02-16 2013-08-22 Israel Hilerio Using an Application Cache to Update Resources of Installed Applications
CN103257868B (zh) * 2012-02-20 2016-12-28 联想(北京)有限公司 安装程序的方法和装置
JP6207163B2 (ja) 2013-01-30 2017-10-04 キヤノン株式会社 クライアント、サーバー、管理システム及びその方法
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
US20170052773A1 (en) * 2015-08-17 2017-02-23 Google Inc. Application installs using remote applications
CN105391757B (zh) * 2015-10-09 2018-09-25 南京工程学院 一种高安全性的软件安装方法
US20170269916A1 (en) * 2016-03-21 2017-09-21 Microsoft Technology Licensing, Llc Selective Application Installation Or Application Running Without Installation
US10432549B1 (en) * 2016-06-29 2019-10-01 EMC IP Holding Company LLC Method and system for scope-sensitive loading of software resources
US9871905B1 (en) * 2016-08-09 2018-01-16 Sprint Communications Company L.P. Systems and methods for customized delivery of virtually installed applications
CN108287758A (zh) * 2017-01-09 2018-07-17 阿里巴巴集团控股有限公司 一种应用资源管理方法、使用方法及装置
EP3602283A1 (en) * 2017-03-23 2020-02-05 MZ IP Holdings, LLC System and method for reducing start-up times for software applications
CN110678819B (zh) * 2017-05-25 2023-03-28 Ls产电株式会社 控制程序运行方法
US20190079788A1 (en) * 2017-09-08 2019-03-14 Cisco Technology, Inc. Predictive image storage system for fast container execution
US11237843B2 (en) * 2018-03-05 2022-02-01 Beijing Zhanxinzhanli Information Technology Co., Ltd. Application-level runtime environment for executing applications native to mobile devices without full installation
US10891017B1 (en) 2018-08-25 2021-01-12 Sprint Communications Company L.P. Rotating icon selection and interaction software development kit (SDK)
EP3621266B1 (de) * 2018-09-05 2021-07-28 Siemens Aktiengesellschaft Verfahren zum betrieb eines webservers
US20200089779A1 (en) * 2018-09-19 2020-03-19 Twitter, Inc. Progressive API Responses
EP3977269B1 (en) 2019-05-24 2023-06-07 Assa Abloy Ab Enabling upgrading firmware of a target device
US20220166762A1 (en) * 2020-11-25 2022-05-26 Microsoft Technology Licensing, Llc Integrated circuit for obtaining enhanced privileges for a network-based resource and performing actions in accordance therewith
US20230221797A1 (en) * 2022-01-13 2023-07-13 Meta Platforms Technologies, Llc Ephemeral Artificial Reality Experiences
US12026527B2 (en) 2022-05-10 2024-07-02 Meta Platforms Technologies, Llc World-controlled and application-controlled augments in an artificial-reality environment

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2053261A1 (en) * 1989-04-28 1990-10-29 Gary D. Hornbuckle Method and apparatus for remotely controlling and monitoring the use of computer software
US5835777A (en) * 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US6272556B1 (en) * 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for migrating a client-server application (#5)
EP1786211A3 (en) * 1996-09-11 2009-07-29 Panasonic Corporation Program reception/execution apparatus that can commence execution of a machine program having only received the program in part, and a program transmission apparatus that enables such execution
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
US6347398B1 (en) * 1996-12-12 2002-02-12 Microsoft Corporation Automatic software downloading from a computer network
US5995756A (en) * 1997-02-14 1999-11-30 Inprise Corporation System for internet-based delivery of computer applications
US6496979B1 (en) * 1997-10-24 2002-12-17 Microsoft Corporation System and method for managing application installation for a mobile device
US6226747B1 (en) * 1998-04-10 2001-05-01 Microsoft Corporation Method for preventing software piracy during installation from a read only storage medium
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6574618B2 (en) * 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
US6289512B1 (en) * 1998-12-03 2001-09-11 International Business Machines Corporation Automatic program installation
US6510466B1 (en) * 1998-12-14 2003-01-21 International Business Machines Corporation Methods, systems and computer program products for centralized management of application programs on a network
US6442754B1 (en) * 1999-03-29 2002-08-27 International Business Machines Corporation System, method, and program for checking dependencies of installed software components during installation or uninstallation 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
US6715144B2 (en) * 1999-12-30 2004-03-30 International Business Machines Corporation Request based automation of software installation, customization and activation
US6654888B1 (en) * 1999-12-31 2003-11-25 International Business Machines Corporation Installing and controlling trial software
US6546554B1 (en) * 2000-01-21 2003-04-08 Sun Microsystems, Inc. Browser-independent and automatic apparatus and method for receiving, installing and launching applications from a browser on a client computer
US6931546B1 (en) * 2000-01-28 2005-08-16 Network Associates, Inc. System and method for providing application services with controlled access into privileged processes
US7225460B2 (en) * 2000-05-09 2007-05-29 International Business Machine Corporation Enterprise privacy manager
US6698018B1 (en) * 2000-05-10 2004-02-24 Microsoft Corporation System and method of multiple-stage installation of a suite of applications
JP2004531780A (ja) * 2000-06-22 2004-10-14 マイクロソフト コーポレーション 分散型コンピューティングサービスプラットフォーム
US6959320B2 (en) * 2000-11-06 2005-10-25 Endeavors Technology, Inc. Client-side performance optimization system for streamed applications
US7062567B2 (en) * 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US6918113B2 (en) * 2000-11-06 2005-07-12 Endeavors Technology, Inc. Client installation and execution system for streamed applications
US20020188941A1 (en) * 2001-06-12 2002-12-12 International Business Machines Corporation Efficient installation of software packages
US7111055B2 (en) * 2001-08-30 2006-09-19 Sun Microsystems, Inc. Method and apparatus to facilitate automated software installation on remote computers over a network
WO2003029971A1 (en) * 2001-10-04 2003-04-10 Accretive Technology Group, Inc. Incentive system for distributing software over a computer network
US20030145316A1 (en) * 2002-01-25 2003-07-31 Mckinlay Eric System, method and computer program product for initiating a software download
US7028295B2 (en) * 2001-10-31 2006-04-11 Seiko Epson Corporation Dynamic java class loading for application execution
AU2002230410A1 (en) * 2001-11-15 2003-06-10 Aladdin Knowledge Systems, Ltd. Incrementally increasing or decreasing the available functionalities of a computer program
JP3908944B2 (ja) * 2001-11-30 2007-04-25 ソフトバンクモバイル株式会社 携帯通信機器
US6993760B2 (en) * 2001-12-05 2006-01-31 Microsoft Corporation Installing software on a mobile computing device using the rollback and security features of a configuration manager
US7028296B2 (en) * 2001-12-13 2006-04-11 International Business Machines Corporation Distributing computer programs to a customer's multiple client computers through a hypertext markup language document distributed to and stored on the customer's network server computer
US7203940B2 (en) * 2002-04-29 2007-04-10 Hewlett-Packard Development Company, Lp. Automated installation of an application
EP1361509B1 (en) * 2002-05-08 2013-07-10 Sap Ag Software delivery manager
US20040003390A1 (en) * 2002-06-27 2004-01-01 Microsoft Corporation System and method for installing a software application in a non-impactfull manner
US7395534B2 (en) * 2003-05-22 2008-07-01 Microsoft Corporation System and method for progressively installing a software application

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3040857A1 (en) 2015-01-05 2016-07-06 Fujitsu Limited Application providing method, application providing server, and application providing program

Also Published As

Publication number Publication date
US20040237082A1 (en) 2004-11-25
EP1597654A4 (en) 2008-12-24
WO2005045562A3 (en) 2007-05-03
CN1961307A (zh) 2007-05-09
KR20060114615A (ko) 2006-11-07
WO2005045562A2 (en) 2005-05-19
EP1597654A2 (en) 2005-11-23
JP2007519071A (ja) 2007-07-12

Similar Documents

Publication Publication Date Title
JP4796966B2 (ja) ソフトウェアアプリケーションをプログレッシブインストールするためのシステムおよび方法およびapi
US8448161B2 (en) Application tracking for application execution environment
US7930273B1 (en) Version management for application execution environment
US8375381B1 (en) Management user interface for application execution environment
US7395534B2 (en) System and method for progressively installing a software application
US8930944B2 (en) Application model that integrates the web experience with the traditional client application experience
US9727327B1 (en) Software distribution framework
US8171470B2 (en) Software installation and support
US8191060B2 (en) Software installation using template executables
US8136100B1 (en) Software installation and icon management support
US8230417B1 (en) Combined application and execution environment install
US20140040877A1 (en) Application execution and installation environment
US20080295110A1 (en) Framework for Startup of Local Instance of Remote Application
US8640121B2 (en) Facilitating multi-installer product installations
JP2003521036A (ja) クライアント・コンピュータのブラウザからアプリケーションを受取り、インストールしかつランチするためのブラウザ独立及び自動装置及び方法
JP2005338940A (ja) インストール方法、情報処理装置、及びデバイスドライバ
JPH09305408A (ja) アプリケーション実行方法
US20100318967A1 (en) Supplementary deployment actions
JP2006163840A (ja) 情報処理装置及びその方法
US20110289192A1 (en) Controlling a running application for live scene graph editing
Hane Build your own PaaS with Docker
Jaygarl et al. Professional Tizen Application Development
KR20110123513A (ko) 페이지 연동 기능을 구비한 웹 어플리케이션 실행 장치 및 방법
JP2003330719A (ja) アプリケーションのバージョン/リリースコントロール方法及びシステム、クライアントpcにインストールするアプリケーションのバージョン/リリースコントロールを行なうためのコンピュータソフトウエアプログラム
Kotaru Upgrading Applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101101

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110411

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110701

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110801

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4796966

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140805

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees