JP2007523395A - ソフトウェア配信サービスのためのシステムおよび方法 - Google Patents

ソフトウェア配信サービスのためのシステムおよび方法 Download PDF

Info

Publication number
JP2007523395A
JP2007523395A JP2006543793A JP2006543793A JP2007523395A JP 2007523395 A JP2007523395 A JP 2007523395A JP 2006543793 A JP2006543793 A JP 2006543793A JP 2006543793 A JP2006543793 A JP 2006543793A JP 2007523395 A JP2007523395 A JP 2007523395A
Authority
JP
Japan
Prior art keywords
update
software update
server
computing device
client computing
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.)
Granted
Application number
JP2006543793A
Other languages
English (en)
Other versions
JP2007523395A5 (ja
JP4871138B2 (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 JP2007523395A publication Critical patent/JP2007523395A/ja
Publication of JP2007523395A5 publication Critical patent/JP2007523395A5/ja
Application granted granted Critical
Publication of JP4871138B2 publication Critical patent/JP4871138B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明は、ソフトウェアアップデートを管理するためのシステムおよび方法を対象としている。より詳細には、本発明は、ソフトウェアアップデートを選択し実施するために必要とされる帯域幅および処理リソースを最小にしながらソフトウェアアップデートの選択および実施を実行するためのシステムおよび方法を対象としている。本発明の一態様によれば、ソフトウェアアップデートサービスが、サーバ上に記憶されるソフトウェアアップデートに対するアクセスを制御する。別の態様によればこのソフトウェアアップデートサービスは、クライアントマシンと同期して適用可能なアップデートを識別する。

Description

本発明は、ソフトウェアおよびコンピュータネットワークに関し、詳細には、本発明は、ソフトウェアアップデートを管理し伝えるためのシステムおよび方法に関する。
ほとんどの市販のソフトウェア製品は、継続的なリビジョンプロセスを受けて機能および/またはファンクションを修復し、またはアップグレードする。ソフトウェア製品またはソフトウェアコンポーネントの各リビジョンは、新しいファイルの追加および/または既存ファイルを新しいバージョンのファイルと置換することを必要とすることもある。ベンダが、ソフトウェア製品の問題を分離しその問題についての解決方法を作成した後に、ベンダは、その解決方法をアップデート中へと修正し、このアップデートを顧客に広く使用可能にしたいと望むはずである。ソフトウェアベンダは、ソフトウェアアップデートをできる限り速やかに、また問題なく顧客に対して配信すべきビジネスインセンティブ(business incentive)を有する。
インターネットは、顧客がソフトウェア製品についての最終アップデートを取得するための重要なチャネルを提供する。インターネットの使用の爆発的な増加は、ソフトウェア製品およびアップデートがオンラインでダウンロードするために提供されるという、顧客による一般的な期待を生み出してきている。インターネットを使用してアップデートを配信することを推進することは、それがソフトウェアベンダのコストを低減し、その修正版がダウンロードのために使用可能になるとすぐに顧客が識別された問題についてのその修正版を取得できるようになるので、ソフトウェアベンダのためにもなる。インターネット上のこれらのベンダサイトは、あるアプリケーションについてのアップデートファイルを見出し、その所在を突き止めることを非常に簡単にするように設計することが可能である。ファイルダウンロードの技術的側面は、ユーザの観点からはほとんど見えなくなってしまっており、今では一般にオペレーティングシステムによって処理される。
従来のアプローチでは、ソフトウェアベンダは、ソフトウェアアップデートをダウンロードのための「パッケージ」として構築する。このパッケージは、一般にその設定プログラムおよび各製品アップデートファイルが、埋め込まれ、このパッケージをより小さなパッケージにするために圧縮された自己展開(self−extracting,自己解凍)実行可能ファイルである。このパッケージのサイズは、一般に各変更ファイルの圧縮されたサイズとその抽出コードそれ自体のサイズを加えた合計である。実行すると、このパッケージは含まれている各ファイルを一時的なロケーションへと抽出し、次いでその設定プログラムを開始して各ファイルをシステムディレクトリ中の適切なロケーションにインストールする。圧縮形式で発送されたファイルは、ファイルがインストールされるときに伸張される。同じロケーション中の同じ名前の既存ファイルはどれも、この置換ファイルによって単に上書きされるはずである。
インターネットがソフトウェアアップデートの広範で速やかな配信を可能にしているにもかかわらず、ネットワーク伝送のその限られた帯域幅が問題を引き起こしてきている。大規模な一般のソフトウェアアプリケーションが、アップデートのダウンロードサイズを不当なほど大きくなるようにしてきている。通常は、製品の様々な問題についての多数の修正が、1つのアップデート中にグループ化されることになる。ベンダが定期的にソフトウェア製品をアップデートする場合、このアップデートパッケージのダウンロードサイズは、ユーザがすでに以前のアップデートからこれらのファイルを有しているという想定の下ではこのベンダがファイルを省略することができないので、増大し続けることになる。アップデートパッケージは、いくつかの全体ファイルを結合するので、たとえこれらのファイルが圧縮されている場合でさえ、非常に大きくなってしまうこともある。時には、最高速のモデム接続上でさえ、このダウンロードの帯域幅効率は低下する。
従来のダウンロードプロセスの時間を浪費する側面は、もちろん望ましくない。一部の場合においては、顧客は、これらのファイルのダウンロード中に長距離料金または接続時間料金を支払うこともある。接続時間のどのような短縮も、これらの顧客にとっての直接的な金銭的コストを低下させることになる。ベンダには一般に、ベンダが提供するダウンロードのサイズに関連した何らかの区別できるコストがあり、したがって、サイズを低減することは同様にベンダにとっても直接的な金銭的な利点をもたらす。ダウンロードのサイズを低減することは、その使用可能なネットワーク帯域幅を増大させることになり、ベンダは、既存のネットワークサーバ装置を用いて、より多くの顧客を満足させることができるようになる。
大規模なアップデートをダウンロードするためにかかる長い時間は、様々なネットワーク接続問題に対してこのダウンロードプロセスをよりぜい弱にもする。電話回線ノイズ、キャッチホン信号、および意図的ではないコマンドを含めて、インターネットセッションが時期尚早にも切断されてしまう可能性がある理由がいくつかある。一部のインターネットサービスプロバイダは、接続時間制限を強制し、ユーザが単一セッション中でオンラインとなることができる時間長が制限される。ネットワーク接続が遮断される場合にそのユーザが大規模なファイルをダウンロードしている場合には、ユーザは、初めからやり直す必要があり得る。ほとんどの一般のオペレーティングシステムおよびファイル転送プロトコルでは、このファイル転送を再開できるようにはなっておらず、したがって、任意の中間的進捗状況が失われてしまうはずであり、この転送は再開される必要がある。エラーの可能性は非常に多いので、多くのユーザには、オンラインでそのアップデートを取得することがほとんど不可能であることが分かる。アップデートパッケージのサイズがあまりにも大きすぎる場合には、ユーザが、アップデートパッケージを完全にダウンロードすることが決してできないこともある。
ソフトウェアアップデートのサイズを低減させ、帯域幅効率を増大させる1つの試みが、デルタパッチ(delta patch)またはバイナリパッチ(binary patch)の使用に関する。デルタパッチが、コンピューティングデバイスによって実行される場合に既存のファイルを修正する専用ソフトウェアコードに対応することが当業者には理解されよう。このデルタパッチが専用ソフトウェアコードを含むので、一意のデルタパッチは、ファイルの一意のバージョンごとに必要とされる。ソフトウェアアップデートに適用するときに、ソフトウェアアップデートサービス(software update service)は、完全なアップデートされたファイルを伝送する代わりに、より小さなサイズのアップデートデルタパッチを伝送することができる。次いでこのアップデートされたデルタパッチを利用してこの既存のファイルを修正してそのアップデートされたファイルにする。
このアップデートデルタパッチは、ファイルをアップデートするために必要とされるデータ量を潜在的に減少させる可能性があるが、デルタパッチング(delta patching)に対する現行のアプローチは、ファイルの多数のバージョンが存在する状況において、適用可能なデルタファイルの選択を管理する際に不十分である。一意のデルタパッチがファイルのバージョンごとに必要とされるので、典型的なソフトウェアアップデートシステムではしばしば、ファイルの一意の各バージョンに対応する、たとえ数千でないとしても数百の一意のデルタパッチを必要とする可能性がある。1つのアプローチでは、デルタパッチングをサポートする一部のアップデートサービスは、すべての可能性のあるデルタパッチをクライアントコンピューティングデバイス(client computing device)に対して伝送する。しかし、このアプローチでは、一般に可能性のあるアップデートデルタパッチの数が増すにつれて、このソフトウェアアップデートを実施するために必要とされるデータ量が増大する。したがって、適用可能な可能性のあるデルタパッチ数は、その完全なアップデートされたファイルと同じサイズへと速やかに増大してしまう可能性がある。別のアプローチでは、ネットワーク化されたアップデートソフトウェアサービスが、クライアントマシンをスキャンしてクライアントマシンごとにどのデルタパッチが適用可能となり得るかを選択する。これによって伝送されるデルタパッチ情報量が減少するが、このアプローチは、そのクライアントマシンをスキャンし適用可能なデルタパッチを選択するための、このソフトウェアアップデートサービス上の追加のロジックを必要とする。この追加のロジックの使用は、このサービスが提供する必要があるそのシステムリソースを増大させる。さらに、このアプローチは一般に、従来のウェブサーバが一般に実現するなどのネットワークキャッシング(network caching)の利用を妨げる。
前述の短所に加えて、既存のシステムでは、ハードウェアドライバなど、ある種のタイプのソフトウェアアップデートを配信することができない。当技術分野において知られているように、ハードウェアドライバに適用されるアップデートなど専用化されたソフトウェアアップデートは、ほとんどの専用化されたソフトウェアアップデートが特定のハードウェアを有するクライアントコンピュータ上でしか機能しないことになるので、大規模配信でユーザに提供することが困難である。ほとんどの場合において、例えばクライアントコンピュータが互換性のないハードウェアドライバのアップグレードを取得する場合には、このドライバアップグレードのインストレーションは、致命的なエラーを引き起こすこともあり、あるいはそのコンピュータが動作しないようにさえすることもある。
前述のことから簡単に理解されるように、サーバといくつかのクライアントの間でソフトウェアアップデートの改善された通信を有するシステムおよび方法が必要になっている。さらに、専用化されたアップデートを配信する場合に、アップデートサービスが特定のタイプのクライアントをターゲットにすることを可能にする改善されたメカニズムを有するソフトウェアアップデートのシステムおよび方法が必要になっている。
本発明は、ソフトウェアアップデートを管理するためのシステムおよび方法を対象としている。より詳細には、本発明は、このソフトウェアアップデートを選択し実施するために必要とされる帯域幅および処理リソースを最小にしながらソフトウェアアップデートの選択および実施を実行するためのシステムおよび方法を対象としている。本発明の一態様によれば、ソフトウェアアップデートサービスは、サーバ上に記憶されたソフトウェアアップデートに対するアクセスを制御する。別の態様によれば、このソフトウェアアップデートサービスは、クライアントマシンと同期化して適用可能なアップデートを識別する。
本発明の一態様によれば、分散処理システムにおけるクライアントコンピューティングデバイスプロセスとサーバプロセスとの間における通信を行う方法が提供されている。この方法によれば、クライアントプロセスは、同期化要求を発行する。この同期化要求は、このクライアントコンピューティングデバイスがそのインストール済みのソフトウェアアップデートを記憶している場合、インストール済みのソフトウェアアップデートの識別子を含んでいる。サーバプロセスは、この同期化要求を受信し、この同期化要求が少なくとも1つのソフトウェアアップデートの識別子を含む場合に、追加のソフトウェアアップデートを選択する。この追加のソフトウェアアップデートの選択は、追加のソフトウェアアップデートにおいて定義された前提条件の実行に依存している。この前提条件は、少なくとも1つの特定のソフトウェアアップデートについての識別子を含む同期化要求を必要とする。この同期化要求が少なくとも1つのソフトウェアアップデートの識別子を含まないことをこのサーバプロセスが判定した場合、このサーバプロセスは、ヌル値(null value)を前提条件として有する第1のレベルのソフトウェアアップデートを選択する。このサーバプロセスは、この選択されたソフトウェアアップデートの命令コンポーネントを発行する。このクライアントプロセスは、この選択されたソフトウェアアップデートのこの命令コンポーネントを受信し、クライアントコンピューティングデバイスがこの選択されたソフトウェアアップデート中に記憶された適用規則の条件を満たす少なくとも1つのコンポーネントを含む場合には、このクライアントコンピューティングデバイス中のこの選択されたソフトウェアアップデートの命令コンポーネントをインストール済みのソフトウェアアップデートとして記憶する。
本発明の別の態様によれば、分散処理システム中におけるクライアントコンピューティングデバイスプロセスとサーバプロセスとの間における通信を行う方法が提供される。この方法によれば、クライアントプロセスが、許可要求(authorization request)を発行する。この許可要求は、ターゲットグループ(target group)に関連するクライアント許可モジュール(client authorization module)の識別子を含んでいる。サーバプロセスは、この許可要求を受信し、このサーバプロセスがそのターゲットグループに関連するサーバソフトウェアモジュールの存在を検出する場合、そのターゲットグループを識別するサーバクッキー(server cookie)を発行する。このクライアントプロセスは、そのターゲットグループを識別するサーバクッキーを受信し、少なくとも1つのソフトウェアアップデートについてのアップデート要求を発行し、ここでこの要求は、サーバクッキーを含んでいる。このサーバプロセスは、このアップデート要求を受信し、このソフトウェアアップデートがそのサーバクッキー中で識別されたターゲットグループに関連する場合、ソフトウェアアップデートを発行する。このソフトウェアアップデートが、そのサーバクッキー中で識別されるターゲットグループに関連する場合には、このクライアントプロセスは、このソフトウェアアップデートを受信する。
本発明のさらなる態様によれば、ソフトウェアアップデートを伝え管理するためのシステムが提供される。このシステムは、複数のソフトウェアアップデートを記憶する第1のデータベースを含んでいる。このデータベースに記憶される個別のソフトウェアアップデートは、ヌル値を含めて少なくとも1つの条件を定義する適用規則を含む命令データフィールドを含むことができる。この命令コンポーネントは、ヌル値を含めて個別のソフトウェアアップデートのインストレーションのために必要とされる1つまたは複数のソフトウェアアップデートを識別する1組の前提条件を含んでいる。このデータベースに記憶される個別のソフトウェアアップデートはまた、この個別のソフトウェアアップデートに関連した一般的な情報を記述するテキストデータを含む局所的データフィールドを含むことも可能である。さらに、このデータベースに記憶される個別のソフトウェアアップデートは、この個別のソフトウェアアップデートに関連する少なくとも1つのデータストリームを識別するデータコンポーネントを含むことも可能である。
このシステムはまた、この第1のデータベースに記憶されるソフトウェアアップデートに対してアクセスを許可するための許可サーバを含むことも可能である。このクライアントコンピューティングデバイスがターゲットグループに関連することを示す許可モジュールをこのクライアントコンピューティングデバイスが含む場合、この許可サーバは、クライアントコンピューティングデバイスがこの個別のソフトウェアアップデートにアクセスできるようにするサーバクッキーを発行する。そのサーバクッキーは、そのターゲットグループについての識別子を含んでいる。さらに、そのサーバクッキーは、そのサーバクッキーを記憶するためにこのクライアントコンピューティングデバイスへと伝えられる。
このシステムは、このクライアントコンピューティングデバイスにアップデートを提供するためのメタデータサーバ(metadata server)をさらに含むことも可能である。ソフトウェアアップデートがそのターゲットグループに関連し、ここでこのメタデータサーバが前記第1のデータベースに通信可能に結合される場合には、このソフトウェアアップデートは、このクライアントコンピューティングデバイスに伝えられる。このメタデータサーバは、同期化要求を取得することができる。このクライアントコンピューティングデバイスがこのインストール済みのソフトウェアアップデートを記憶している場合には、この同期化要求は、インストール済みのソフトウェアアップデートの識別子を含んでいる。この同期化要求は、そのサーバクッキーを含んでいる。この同期化要求が、少なくとも1つのインストール済みソフトウェアアップデートの識別子を含む場合には、このメタデータサーバは、このクライアントコンピューティングデバイスに伝えるための追加のソフトウェアアップデートを選択することもできる。この追加のソフトウェアアップデートの選択は、この追加のソフトウェアアップデート中で定義される前提条件の実行に依存する。この前提条件では、この同期化要求が少なくとも1つのインストール済みのソフトウェアアップデートについての識別子を含むことが要求される。この追加のソフトウェアアップデートは、そのサーバクッキー中で識別されるそのターゲットグループに関連している。この同期化要求が少なくとも1つのインストール済みのソフトウェアアップデートの識別子を含んでいない場合、このメタデータサーバはまた、このクライアントコンピューティングデバイスに伝えるための第1のレベルのソフトウェアアップデートを選択する。この第1のレベルのソフトウェアアップデートは、前提条件を含んでいない。このメタデータサーバは、この選択されたソフトウェアアップデートの命令コンポーネントを記憶するためにこのクライアントコンピューティングデバイスに伝え、この選択されたソフトウェアアップデートに関連する局所的データを求める要求を取得することができる。さらにまた、メタデータサーバは、この選択されたソフトウェアアップデートに関連する局所的データをこのクライアントコンピューティングデバイスに伝えることができる。この局所的データにより、このクライアントコンピューティングデバイスは、この選択されたソフトウェアアップデートのデータコンポーネントの受信を求めるダウンロード要求を生成することができるようになる。
このシステムは、この第1のデータベースに通信可能に結合されたダウンロードサーバをさらに含むことができる。このダウンロードサーバは、このクライアントコンピューティングデバイスからのこのダウンロード要求を取得することができる。このダウンロード要求は、この選択されたソフトウェアアップデートのこのデータコンポーネントを識別する。このダウンロードサーバは、この選択されたソフトウェアアップデートのこのデータコンポーネントをこのクライアントコンピューティングデバイスへと伝えることが可能である。
本発明の別の態様によれば、クライアントコンピューティングデバイス上のデータをアップデートするためのシステムが提供される。このシステムは、複数のデルタパッチを記憶する第1のデータベースを含んでいる。このシステムは、前記第1のデータベースと、このクライアントコンピューティングデバイスに通信可能に結合されるサーバコンピュータも含んでいる。このサーバは、このクライアントコンピューティングデバイス上にインストールされた1つまたは複数のファイルをアップデートするための1つまたは複数の使用可能なソフトウェアアップデートの選択と、インストール済みのファイルの少なくとも1つのバージョンをアップデートするための複数の使用可能なデルタパッチを識別する自己展開ファイルと、このクライアントコンピューティングデバイス上にインストールされた1つまたは複数のファイルのインベントリ(inventory)とを取得することができる。このサーバは、1つまたは複数の適用可能なデルタパッチを選択してこの選択されたソフトウェアアップデートを実施することもできる。この1つまたは複数の適用可能なパッチの選択は、このクライアントコンピューティングデバイス上にインストールされた1つまたは複数のファイルのそのインベントリに対する複数の使用可能なデルタパッチを識別する自己展開ファイルのマッピングに対応する。このサーバはさらに、1つまたは複数の選択されたデルタパッチを求める要求を伝送することができる。
本発明のさらに他の態様によれば、クライアントコンピューティングデバイスに対してソフトウェアアップデートを伝えるためのシステムが、提供される。このシステムは、複数のサーバ許可モジュール(server authorization module)を記憶する第1のコンポーネントを含んでいる。この個別のサーバ許可モジュールは、ターゲットグループを識別する。このシステムは、この第1のコンポーネントに通信可能に結合されたサーバコンピュータをさらに含んでいる。このサーバは、このクライアントコンピューティングデバイスからの許可要求を取得することができる。この許可要求は、このクライアントコンピューティングデバイスに記憶されたクライアント許可モジュールの識別子を含んでいる。このクライアントコンピューティングデバイスがそのターゲットグループに関連することをこのクライアント許可モジュールが示す場合、このサーバはさらに、このクライアントコンピューティングデバイスが、そのターゲットグループに関連するかどうかをさらに判定することができる。このクライアントコンピューティングデバイスがそのターゲットグループに関連する場合には、このサーバはさらに、サーバクッキーをこのソフトウェアアップデートサービスからこのクライアントコンピューティングデバイスへと伝えることができる。そのサーバクッキーは、そのターゲットグループを識別する。このサーバは、このソフトウェアアップデートサービスに記憶された少なくとも1つのソフトウェアアップデートについての要求を取得することができ、ここで、この要求は、そのサーバクッキーを含んでいる。この要求を取得するのに応答して、このサーバは、ソフトウェアアップデートが、そのサーバクッキー中で識別されるそのターゲットグループに関連するかどうかを判定することができる。さらに、このソフトウェアアップデートが、そのサーバクッキー中で識別されるそのターゲットグループに関連する場合には、このサーバは、このソフトウェアアップデートをこのソフトウェアアップデートサービスからこのクライアントコンピューティングデバイスへと伝えることができる。
本発明のさらに他の態様によれば、個別のソフトウェアアップデートのデータ構造をその上に記憶しているコンピュータ読取り可能媒体が、提供される。このコンピュータ読取り可能媒体は、ヌル値を含めて、少なくとも1つの条件を定義する適用規則を含む命令データフィールドを含んでいる。この命令コンポーネントは、ヌル値を含めて、この個別のソフトウェアアップデートのインストレーションのために必要とされる1つまたは複数のソフトウェアアップデートを識別する1組の前提条件を含んでいる。このコンピュータ読取り可能媒体は、個別のソフトウェアアップデートに関連した一般的な情報を記述するテキストデータを含む局所的データフィールドを含むこともできる。このコンピュータ読取り可能媒体は、この個別のソフトウェアアップデートに関連する少なくとも1つのデータストリームファイルを識別するデータコンポーネントをさらに含むこともできる。
本発明の前述の態様およびその多くの付随する利点については、以下の詳細なる説明を添付図面と併せて参照することによってさらに良く理解が進むにつれて、さらに簡単に認識されよう。
一般的に説明すると、本発明は、ソフトウェアアップデートを管理するためのシステムおよび方法を対象としている。より詳細には、本発明は、ソフトウェアアップデートを選択し実施するために必要とされる帯域幅および処理リソースを最小にしながら、ソフトウェアアップデートの選択と実施を実行するためのシステムおよび方法を対象としている。本発明によれば、ソフトウェアアップデートは、特定のソフトウェアアプリケーションまたはオペレーティングシステムについてのアップデートに対応することが可能である。さらに、ソフトウェアアップデートは、ソフトウェアドライバ、またはシステムBIOSなどのファームウェアへのアップデートを含むこともできる。本発明の一態様によれば、これらのソフトウェアアップデートを処理するためのシステムおよびコンポーネントアーキテクチャが提供される。本発明の別の態様によれば、クライアントマシンのアップデートサービスとの許可および同期化を実施するためのアップデートプロトコルおよびインターフェースが提供される。本発明のさらなる態様によれば、インストレーションコンポーネント、およびデルタパッチを利用した様々なインストール済みのファイルをアップデートするための方法が提供される。しかし、本発明の追加の態様を本出願において提供することもできることが当業者には理解されよう。さらに、各識別された態様は、個別に、あるいは共通の発明態様の一部分として考えることができることが、当業者には理解されよう。
図1のソフトウェアアップデートシステム100は、本発明によるソフトウェアアップデートシステム100を示すブロック図である。一般的に説明すると、このソフトウェアアップデートシステム100は、1つまたは複数のクライアントコンピューティングデバイス110、アップデートサービス120、および外部アップデートプロバイダ130を含むことができる。一般的に説明すると、このアップデートサービス120は、このクライアントコンピューティングデバイス110に伝えられそこでインストールされるソフトウェアアップデートの配信を記憶し管理する。このソフトウェアアップデートは、このアップデートサービス120によって、あるいは任意の数の外部アップデートプロバイダ130によって提供することができる。
このクライアントコンピューティングデバイス110と、このアップデートサービス120と、この外部アップデートプロバイダ130は、ネットワーク101を介して電子的に通信する。このネットワークは、LAN(ローカルエリアネットワーク)、またはWAN(ワイドエリアネットワーク)やインターネットなどのより大規模なネットワークでもよい。一般的に知られているソフトウェアを使用することにより、ソフトウェアアップデートシステム100は、クライアントコンピューティングデバイス110とこのアップデートサービス120のサーバ121、122、123および124との間でドキュメント、コマンド、および他の知られているタイプの情報を交換するように構成することができる。当業者には理解されるように、図1に示すソフトウェアアップデートシステム100は、本発明を実施するための1つの適切なシステムの簡略化された実施例であり、本発明は、この実施例だけには限定されない。
以下にさらに詳細に説明するように、一実施形態のアップデートサービス120は、いくつかのサーバを備えている。図1に示すように、このアップデートサービス120は、このアップデートサービス120のこれら全部のプロセスを管理し、このアップデートサービス120のサーバ121、122、123および124のプロセスを調整するためのアップデートサーバ121を含んでいる。許可サーバ122は、クライアントが要求するときに許可クッキーを生成し、次にこの許可クッキーを使用してサーバクッキーを生成し、このサーバクッキーは、クライアントコンピュータがこのアップデートサービス120によって生成されるアップデートにアクセスすることができるようにする。メタデータサーバ123は、アップデートサービス120が提供するこれらのアップデートに関する一般的な情報を提供する。このメタデータサーバ123は、本発明のシステムが特定のタイプのクライアントコンピュータまたは特定のグループのクライアントコンピュータについての特定のアップデートを識別することができるようにする。ダウンロードサーバ124は、アップデートサービス120が提供するソフトウェアアップデートに関連するデータファイルを配信するための1つまたは複数のソフトウェアコンポーネントを提供する。
外部アップデートプロバイダ130は、ソフトウェアアップデートを配信する1つまたは複数のサーバを含むことができる。外部アップデートプロバイダ130は、ソフトウェア、ソフトウェアアップデート、またはクライアントコンピュータのグループに対して配信すべき他のデータを提供するエンティティに関連づけることができる。例えば、外部アップデートプロバイダ130は、このアップデートサービス120を使用して1つまたは複数のソフトウェアアプリケーションについてのアップデートを配信したいと希望するサードパーティソフトウェア開発業者に関連づけることができる。別の実施例では、外部アップデートプロバイダ130は、ソフトウェアアップデートシステム120に関連づけることもできる。
クライアントコンピューティングデバイス110は、ソフトウェアアプリケーション114を記憶し実行するどのようなコンピューティングデバイスとすることもできる。このクライアントコンピューティングデバイス110は、それだけには限定されないが、PC(パーソナルコンピュータ)、PDA(携帯型個人情報端末)、移動電話、2方向ページャなどを含めていくつかの異なるコンピュータ製品のうちのどの1つからでも形成することができる。当業者または他の人々に理解されるように、このクライアントコンピューティングデバイス110のアーキテクチャは適切な任意の形態を取ることができる。例えば、クライアントコンピューティングデバイス110は、ネットワーク101との通信を提供するためのネットワークインターフェースを含むことができる。このネットワークインターフェースは、有線または無線の任意のネットワーク接続と共に使用するように構成することができ、TCP/IPプロトコルなど適切な任意の通信プロトコルを用いて使用することができる。さらに、クライアントコンピューティングデバイス110は、処理ユニット、ディスプレイ、およびメモリユニットを含むことができる。このメモリユニットは、オペレーティングシステム116などのクライアントコンピューティングデバイス110を動作させるために必要なプログラムコードを記憶することができる。さらに、このメモリユニットは、本発明のプロセスを制御し実行するためのアップデート管理コンポーネント112を記憶する。
このソフトウェアアップデートシステム100は、実行される場合に、本発明を実施するソフトウェアプログラムを記憶する。実行される場合に、このソフトウェアアップデートシステム100は、ソフトウェアアップデートを記憶し管理し選択的に伝える。以下でさらに十分に説明するように、多くの他の利点のうちでもとりわけ、本発明は、ソフトウェアアップデートを受信する資格を有するターゲットグループのクライアントコンピューティングデバイスを定義し選択するメカニズムを提供している。本発明は、ソフトウェアアップデートに関連するデータファイルをダウンロードするための改善されたメカニズムも提供している。
本発明を例示する目的のために、本発明の動作する実施例の詳細な説明が提供される。この動作する実施例を説明するに際して、ソフトウェアアプリケーションの特定のアップグレード、例えばメディアプレーヤバージョン6.0からメディアプレーヤバージョン7.0のアップグレードを言及することができるソフトウェアアップデートに対して言及を行う。当業者には理解されるように、かかるソフトウェアアップデートは、このソフトウェアアップデートに関連するいくつかのデータファイルの通信およびインストレーションを含むことができる。したがって、本発明を例示する目的では、ソフトウェアアップデートとソフトウェアアップデートを含む個別のデータファイルとの間で区別が行われる。
次に図2〜6を参照して、クライアントコンピューティングデバイス110上で1つまたは複数のファイルをアップデートするためのソフトウェアアップデートシステム100のコンポーネント間の例示の相互作用について説明する。図2を参照すると、ソフトウェアアップデートサービスは、1つまたは複数の外部アップデートプロバイダ130によるソフトウェアアップデート情報の伝送によって起動される。前述のように、外部アップデートプロバイダ130は、ソフトウェアアップデートシステム100に関連づけることができる。代わりに、ソフトウェアアップデート情報は、サードパーティの外部アップデートプロバイダ130が伝送することもできる。本発明の例示の一実施形態においては、このソフトウェアアップデート情報は、ファイルをアップデートするために利用されるソフトウェアコード、ファイルを置換するために利用されるソフトウェアコード、このソフトウェアアップデートの適用性を決定するための様々な規則、および/またはこのソフトウェアアップデートを記述するディスプレイ情報を含むことが可能である。このソフトウェアアップデート情報の送信は、いつでも終了することができ、他の例示したソフトウェアアップデートコンポーネントの相互作用の開始と同時である必要はない。
外部アップデートプロバイダ130からのソフトウェアアップデート情報を受信すると、このアップデートサービス120は、1つまたは複数のデータを生成して、アップデート情報の伝送を実施する。このデータは、ファイルの異なるバージョンをアップデートするための1組のソフトウェアデルタパッチに対応するパッチストレージファイル(patch storage file)を含むことができる。このデータはまた、このパッチストレージファイル中で見出される対応するデルタ(delta)に対して特定のファイルバージョンをマッピングするインデックスに対応するパッチストレージマニフェスト(patch storage manifest)を含むこともできる。このデータは、以下にさらに非常に詳細に説明するように、このアップデートエージェント(update agent)が特定のソフトウェアアップデートデータを要求しインストールするために利用することになる情報に対応する自己展開ファイルをさらに含むことができる。パッチストレージファイル、パッチストレージマニフェスト、および自己展開ファイルの生成は、いつでも終了することができ他の例示したコンポーネントの相互作用と同時である必要がないことが当業者には理解されよう。
ソフトウェアアップデート情報のクライアントに対する伝送を起動するために、クライアントコンピューティングデバイス110は、このアップデートサービス120に対して認証要求を起動する。本発明の例示の一実施形態においては、この認証要求は、クライアントコンピューティングデバイス110とアップデートサービス120の間のアップデートプロトコル相互作用に対応し、これについては、以下でさらに非常に詳細に説明することにする。この認証が完了すると、アップデートサービス120は、認証クッキーをクライアントコンピューティングデバイス120に送信する。次に図3を参照すると、この認証済みのクライアントコンピューティングデバイス120は、次いでこの使用可能なアップデートのアップデートサーバ120との同期化を起動する。本発明の例示の一実施形態においては、この同期化要求は、クライアントコンピューティングデバイス110とアップデートサービス120との間のアップデートプロトコル相互作用にも対応し、これについては、以下でさらに非常に詳細に説明することにする。この同期化が完了すると、クライアントコンピューティングデバイス110は、すべての適用可能なソフトウェアアップデートの情報、およびこのアップデートを記述する情報を受信する。しかし、本発明の例示の一実施形態においては、このアップデートをインスタンス化するソフトウェアコードは、ダウンロードされていない。
続けて図3を参照すると、このアップデートプロセス中のある時点で、インストールすべきアップデートの選択が受信される。本発明の例示の一実施形態においては、ユーザが、同期化中に受信するソフトウェアアップデート情報を提示され、適切なアップデートを選択するように求められることもある。代わりに、クライアントコンピューティングデバイス110が、すべての適用可能なソフトウェアアップデートを自動的に選択するように構成することもできる。さらに、クライアントコンピューティングデバイス110が、使用可能なソフトウェアアップデートのサブセットを自動的に選択することができるようにする何らかの規則を有することもある。さらにまた、ユーザが、インターネットのウェブページを介するなどアップデートサービス120と通信することによってアップデートの選択を開始することもできる。
次に図4を参照すると、アップデートエージェントがまだ存在していない場合、アップデート管理コンポーネント112は、クライアントコンピューティングデバイス110上でアップデートエージェント118をインスタンス化する。次いでアップデートエージェント118は、自己展開ファイルなどのソフトウェアアップデート情報パッケージの伝送を要求する。このアップデートエージェント118は、この自己展開ファイルを受信し、以下で説明するようにそのインストーラに対して任意のアップデートを実施する。さらに、アップデートエージェント118は、アップデートサービス120から任意の欠損した、または破損した情報を要求することができる。
次に図5を参照すると、アップデートエージェント118が、そのソフトウェアアップデート情報パッケージを受信した後に、アップデートエージェント118は、クライアントコンピューティングデバイス110上でインストールされるファイルのインベントリを実施する。このインベントリとそのソフトウェアアップデート情報パッケージの比較に基づいて、アップデートエージェント118は、どのデルタパッチまたは他のアップデート情報が、この選択されたアップデートを完了するために必要になるかを決定する。次いでアップデートエージェント118は、特定のデルタアップデートを求める要求を伝送する。本発明の一実施形態においては、ソフトウェアアップデートを求める要求は、直接ネットワーク接続を介して伝送される直接要求に対応することもあり、これは手動アップデートと呼ばれることになる。本発明の別の実施形態においては、ソフトウェアアップデートを求める要求は、顕在的なユーザアクションを必要とせずに伝送されるバックグラウンド要求である場合もある。この実施形態は、自動アップデートと呼ばれることになる。
本発明の例示の一実施形態においては、このソフトウェアアップデートが、デルタパッチに対応する場合、アップデートエージェント118は、そのパッチストレージマニフェストによって識別される特定のデルタパッチを識別する要求をアップデートサービス120に対して伝送する。代わりに、デルタパッチが使用可能でない場合、またはいくつかのデルタパッチが失敗している場合に、アップデートエージェント118は、フォールバックプロシージャ(fallback procedure)を起動することができる。このフォールバックプロシージャは、そのパッチストレージファイルから全体のアップデートファイルの完全コピーの伝送を求める要求を含むことができる。このフォールバックプロシージャはまた、自己完結型のパッケージから全体がアップデートされたファイルの完全コピーの伝送を求める要求を含むこともできる。
本発明の例示の一実施形態においては、アップデートサービス120のダウンロードサーバ124は、アップデートエージェント118からのこのソフトウェアアップデート要求を直接処理することができる。代わりに、この要求は、アップデートサービス120からのこの要求されたアップデートデルタパッチをいずれにしても受信している従来のウェブサーバなど任意の数の追加の外部ダウンロードサーバによって処理することもできる。例えば、ある会社では、内部サーバを利用してクライアントマシンをアップデートすることができる。さらに、この要求は、以前の要求を処理する際にそのアップデートデルタパッチの一部または全部がキャッシュされた外部ダウンロードサーバによって処理することもできる。したがって、この実施形態においては、このダウンロードは、「HTTP」(hyper text transfer protocolハイパーテキスト転送プロトコル)データ要求をサービスすることが可能ないくつかの追加のダウンロードサーバに分散することができる。
図6を参照すると、このソフトウェアアップデート情報が受信された後に、アップデートエージェント118は、このデルタパッチをこのインストール済みのファイルとマージしてアップデートされたファイルを生成する。さらに、アップデートエージェント118は、このマージが正常にその適切なファイルをアップデートしたかどうか妥当性検査することができる。前述のように、デルタパッチを妥当性検査することができない場合には、アップデートエージェント118は、そのデルタパッチを再度要求することができ、あるいは、何回かの失敗の後に全体がアップデートされたファイルを要求することができる。アップデートエージェント118が、妥当性検査されたアップデートファイルを取得した後に、このファイルは、クライアントコンピューティングデバイス110上にインストールされる。
図7は、本発明による、クライアントコンピューティングデバイス110とソフトウェアアップデートサービス120の間の相互作用を示すソフトウェアアップデート処理ルーチン700の流れ図である。ブロック702において、このソフトウェアアップデートサービス120は、このクライアントコンピュータ110に対してアクセスを許可する。本発明の例示の一実施形態においては、クライアントコンピュータに対するアクセスの許可は、特定のグループのコンピュータに関連するソフトウェアアップデートへのアクセスを可能にするサーバ発行クッキー(server−issued cookie)の生成を含むことが可能である。この許可プロセスのより詳細な説明は、図8に関して説明することにする。
ブロック704において、このクライアントコンピュータ110とソフトウェアアップデートサービス120は、アップデート情報を同期化させる。本発明の例示の一実施形態においては、ソフトウェアアップデートサービス120は、このクライアントコンピューティングデバイス110に対して特定のソフトウェアアップデートを記述するメタデータを送信する。このメタデータは、ユーザがインストレーションについての1つまたは複数のアップデートを選択できるようにする使用可能なソフトウェアアップデートを記述する情報を含んでいる。この同期化プロセスのより詳細な説明については、図9および図10に関して以下で説明することにする。ブロック706において、クライアントコンピューティングデバイス110は、ダウンロードする適用可能なアップデートの選択を得る。本発明の例示の一実施形態においては、適用可能なアップデートのこの選択は、ユーザの選択を実施するいくつかの固有のユーザインターフェースの利用に対応する可能性がある。ユーザインターフェースの選択については、図11に関してさらに非常に詳細に説明することにする。
ブロック708において、クライアントコンピューティングデバイス110は、適用可能なソフトウェアアップデートのこのユーザ選択を処理し、ソフトウェアアップデートサービス120とインターフェースして特定のアップデート情報を要求する。本発明の例示の一実施形態においては、クライアントコンピューティングデバイス110は、1つまたは複数の適用可能なアップデートデルタパッチを選択し要求する。次いでクライアントコンピューティングデバイス110上のアップデートエージェント118は、この要求されたデータを処理してこの選択されたソフトウェアアップデートを実施することができる。ブロック710において、このルーチン700は終了する。
図8を参照して、クライアントコンピューティングデバイス110に対してアクセスを許可するための、ブロック702(図7)に対応するプロトコル図800について次に説明することにする。本発明の例示の一実施形態においては、ソフトウェアアップデートサービス120は、拡張ターゲティングメカニズム(extensible targeting mechanism)を利用してクライアントコンピューティングデバイス110のアップデートおよび他のソフトウェアへのアクセスを制御する。このソフトウェアアップデートサービス120は、特定のソフトウェアアップデートを1つまたは複数のターゲットグループのクライアントコンピューティングデバイス110に関連づけるメカニズムを組み込んでいる。例えば、ソフトウェアアップデートサービス120は、特定のハードウェアデバイスを有する特定のブランドのクライアントコンピューティングデバイス110だけに特定のハードウェアドライバアップデートのアクセスを制限することができる。かかる実施例においては、このソフトウェアアップデートサービス120は、特定のブランド名および特定のハードウェアデバイスを有するクライアントコンピューティングデバイス110のターゲットグループを定義し、この特定のソフトウェアダウンロードの送信をそのターゲットグループだけに制限することができる。
本発明の例示の一実施形態においては、拡張ターゲティングメカニズムは、1つまたは複数のターゲットグループに対するクライアントコンピューティングデバイスの会員資格を定義するソフトウェアコンポーネント(「許可プラグイン」)の使用によって実行される。クライアントコンピューティングデバイス110上の許可プラグインの存在は、そのクライアントコンピューティングデバイスがその許可プラグインの特定のターゲットグループに属するかどうかを規定する。例えばあるターゲットグループは、特定のソフトウェアアプリケーションについての有効な「PID」(product identification製品識別)番号を有するすべてのコンピュータを含むことができる。かかる実施例においては、図8に関して以下でより詳細に説明するように、許可プラグイン826をそのクライアント中でインストールしてそのクライアントコンピューティングデバイスのメモリモジュールからPIDを読み取り、この得られたPIDを対応するPIDサーバプラグイン829へと渡すことができる。本明細書中でPIDバリデータ(PID validator)829とも呼ばれるこの対応するPIDプラグインは、1つまたは複数の方法を利用してこの受信されたPIDが有効かどうかを判定する。このクライアントコンピューティングデバイス110上に記憶されているPIDが有効であると判定された後に、このサーバは、このクライアントコンピューティングデバイス110が有効なPIDを有するターゲットグループのメンバであることを示すサーバクッキーを生成する。別の実施例においては、ターゲットグループは、ベータテストコンピュータ(beta test computer)として指定されるクライアントコンピューティングデバイスを含むことができる。
本発明の例示の一実施形態においては、ソフトウェアアップデートサービス120の許可サーバ122は、この許可サーバが認識することになるクライアントコンピューティングデバイスの1組のターゲットグループを定義するいくつかのサーバ許可プラグインを含んでいる。各サーバ許可プラグインは、クライアントコンピューティングデバイス110上に記憶された対応するクライアント許可プラグインとデータをやりとりするコンポーネントを含んでいる。同様にして、各クライアントコンピューティングデバイス110は、そのクライアントが属するターゲットグループを識別する1つまたは複数のクライアント許可プラグインを含んでいる。本発明の例示の一実施形態においては、このクライアント許可プラグインは、オペレーティングシステムのインストレーションやアップグレードなど、ソフトウェアアプリケーションのインストレーションまたはアップグレード中に各クライアントコンピューティングデバイス中にインストールすることができる。さらに、このサーバ許可プラグインは、ソフトウェアアップデートへのアクセスを制御したいと希望するアドミニストレータが動的にインストールし、または取り除くことができる。クライアントコンピューティングデバイス110および許可サーバ122上に記憶されたこの許可プラグインは、実際のソフトウェアプラグインとすることも可能であり、あるいはこの許可プラグインは、動的にリンクされたライブラリ中へとハードコード化することも可能である。
図8に示すように、この許可サーバ122は、3つの実施例のサーバ許可プラグイン、すなわち(1)すべてのコンピュータを含むターゲットグループ(以下で、「オールコンピュータターゲットグループ(All Computer target group)」)を定義する第1のサーバ許可プラグイン828、(2)有効なPIDを有するコンピュータを含むターゲットグループ(以下で、「PIDターゲットグループ」)を定義する第2のサーバ許可プラグイン829、および(3)ベータテストコンピュータを含むターゲットグループ(以下で、「ベータターゲットグループ」)を定義する第3のサーバ許可プラグイン830を含んでいる。また図8に示すように、クライアントコンピューティングデバイス110は、2つのクライアント許可プラグイン、すなわち(1)クライアントコンピューティングデバイス110が、オールコンピュータターゲットグループのメンバであることを示す第1のクライアント許可プラグイン825、および(2)クライアントコンピューティングデバイス110が、PIDターゲットグループのメンバであることを示す第2のクライアント許可プラグイン826を含んでいる。この実施例においては、クライアントコンピューティングデバイス110は、このクライアントコンピューティングデバイス110がそのベータターゲットグループのメンバであることを示す許可プラグインを含んでいない。当業者には理解されるように、各クライアント許可プラグイン825および826は、クライアントコンピューティングデバイス110上で1つまたは複数のファンクションを実行してこの妥当性検査プロセスを支援するように構成することができる。例えば、この第2のクライアント許可プラグイン826は、クライアントコンピューティングデバイス110のメモリを検査してインストール済みのソフトウェアアプリケーションについてのPIDを検証し、または取得するように構成することができる。
図8に示すように、許可サブルーチン702は、クライアントコンピューティングデバイス110が構成要求803を許可サーバ122に伝える場合に開始される。本発明の例示の一実施形態においては、この構成要求803は、この許可サーバ122上に記憶されたその許可プラグインを記述する情報を取得するように構成された任意の適切なソフトウェアコンポーネントから形成される。当業者には理解されるように、構成要求803は、「GetConfig」と呼ばれる、知られている方法を利用することができる。この構成要求803を受信することに応答して、許可サーバ122は、構成応答804を伝え、この構成応答は、許可サーバ122上に記憶されたすべての許可プラグインを識別する情報を含んでいる。一実施形態においては、この構成応答804は、許可サーバ122上に記憶されるすべての許可プラグインを識別し記述するストリングのアレイを含んでいる。本実施例においては、この構成応答804は、第1のサーバ許可プラグイン828、第2のサーバ許可プラグイン829、および第3のサーバ許可プラグイン830を識別する情報を含んでいる。
ブロック805において、クライアントコンピューティングデバイス110は、この構成応答804を受信することに応答して1つまたは複数の許可クッキーを生成する。ブロック805のプロセスにおいて、クライアントコンピューティングデバイス110は、マッチングしたクライアントとサーバ許可プラグインの各対ごとに許可クッキーを生成する。したがって、本実施例においては、第1のクライアント許可プラグイン825と第1のサーバ許可プラグイン828が共にオールコンピュータターゲットグループに関連するので、第1のクライアント許可プラグイン825は、このオールコンピュータターゲットグループに関連する第1の許可クッキーを生成する。さらに、第2のクライアント許可プラグイン826と第2のサーバ許可プラグイン829が共にPIDターゲットグループに関連するので、第2のクライアント許可プラグイン826は、このPIDターゲットグループに関連する第2の許可クッキーを生成する。クライアントコンピューティングデバイス110は、それがベータターゲットグループのメンバであることを示す許可プラグインをもたないので、第3の許可クッキーは生成されない。
当業者には理解されるように、ブロック805のプロセスの一実施形態は、当技術分野において「GetAuthCookie」と呼ばれる一般に知られているソフトウェアの方法を使用することを含んでいる。この各許可クッキーの生成は、追加の処理を含むことができることも理解されよう。例えば、第2のクライアント許可プラグイン826は、このクライアントのシステムレジストリ(system registry)に記憶された情報を検査してPIDを検索しこのPIDをこの許可クッキー中に含めるように構成することができる。他の実施例においては、ブロック805のプロセスは、他のコンピュータまたはデバイスと通信するためのプロセスを含むことができる。例えば、クライアント許可プラグインは、サウンドカード、スキャナ、ビデオカードなどのデバイスと通信してこのデバイスの型およびモデルを取得することができる。限定のない他の実施例においては、クライアント許可プラグインは、フィンガプリントリーダ(fingerprint reader)などのセキュリティデバイスと通信して、ユーザを記述する情報を取得することができる。
一般に、クライアント許可プラグインは、クライアントコンピューティングデバイス110、またはクライアントコンピューティングデバイス110に通信可能に接続された他の任意のコンピューティングデバイスの任意のコンポーネントから構成情報を読み取ることができる。他の実施例においては、クライアント許可プラグインは、1つまたは複数のパブリックまたは専用のAPI(アプリケーションプログラミングインターフェース)を利用してこの対応するサーバプラグインによって妥当性検査されるクライアントからの情報を収集し暗号化するように構成することができる。かかる実施例においては、PIDバリデータプラグイン826は、専用のAPIを使用してこのクライアントのPIDを暗号化して、この暗号化済みのPIDを暗号解読と妥当性検査のためにサーバに渡す。他の実施形態においては、他のクライアント許可プラグインは、フィンガプリントリーダや声紋などの生物測定学の測定を利用して許可クッキーを構築して妥当性検査のためにサーバに渡すことができる。さらに他の実施例においては、クライアント許可プラグインは、ウェブサービスまたは他の任意のサービスを呼び出して許可証明書または他の任意タイプのデータをこの許可サーバ122に伝えることができる。
本発明の例示の一実施形態においては、各許可クッキーは、関連するターゲットグループを識別するストリングを含んでいる。例えば、ストリングは、特定の許可クッキーがこのPIDターゲットグループに関連することを示すことができる。各許可クッキーは、クライアントとサーバの間でデータを伝えるためのデータセクションも含んでいる。例えば、このPIDターゲットグループに関連する許可クッキーは、実際のPIDを含むデータセクションを有することができる。当業者には理解されるように、このデータセクションは、バイトアレイなどの任意の形式で記憶される任意のタイプのデータを含むことができる。例えば、クライアントおよびサーバ上のプラグインが、パブリックキー(public key)およびプライベートキー(private key)の通信を必要とする場合には、かかるデータは、1つまたは複数の許可クッキーのデータセクション中で暗号化することができる。
クライアントコンピューティングデバイス110が対応するクライアントおよびサーバの許可プラグインの各対ごとに許可クッキーを生成した後に、このクライアントコンピューティングデバイスは、この生成済みの許可クッキーをこの許可サーバ122に対して伝える。図8に示すように、クライアントコンピューティングデバイス110は、クッキー要求806においてこの許可クッキーを伝える。このクッキー要求806は、ブロック805のプロセス中で生成された許可クッキーのアレイを伝えるための適切な任意のフォーマットを含んでいる。この許可方法702のこの一部分の一実施形態は、当技術分野において「GetCookie」と呼ばれる一般的に知られているソフトウェアの方法の使用を含むことができる。
一実施形態においては、クッキー要求806は、クライアントコンピューティングデバイス110のメモリに記憶された他の許可サーバクッキーも含んでいる。以下の説明からさらに簡単に理解されるように、クライアントコンピューティングデバイス110のこのメモリは、この許可ルーチン700の以前の実行において作成された以前の許可サーバクッキーを記憶していることもある。クッキー要求806においてこの記憶済みの許可サーバクッキーを提供することにより、このクライアントコンピューティングデバイス110は、許可サブルーチン702の以前の実行で認可されたそのアクセス権を維持することができるようになる。本実施例においては、このクライアント中に許可サーバクッキーが記憶されていないので、このクッキー要求806は、このオールコンピュータターゲットグループに関連する第1の許可クッキーと、このPIDターゲットグループに関連する第2の許可クッキーを含んでいる。
次に、ブロック807に示すように、このクッキー要求806を受信することに応答して、許可サーバ122は、サーバクッキーを生成する。一実施形態においては、この受信した許可クッキーごとに適切な許可プラグインに対して呼出しを行って、サーバクッキーデータが生成される。各サーバ許可プラグインによって生成されるサーバクッキーデータは、この受信された許可クッキー中で識別されるターゲットグループごとの識別子を含んでいる。本実施例においては、クッキー要求806が、このオールコンピュータターゲットグループに関連する第1の許可クッキーと、このPIDターゲットグループに関連する第2の許可クッキーとを含んでいるので、許可サーバ122は、これらの各ターゲットグループについての識別子を含むサーバクッキーデータを生成する。許可サーバ122上において、以前のサーバクッキーがそのクッキー要求806において受信されている場合には、このサーバクッキーデータを以前のサーバクッキーのデータと組み合わせて新しいサーバクッキーを生成する。一実施形態においては、この新しいサーバクッキーは、トリプルDES(Triple DES)などのパブリックに利用可能な暗号方法の使用によって暗号化される。
本発明の例示の一実施形態においては、このサーバクッキーは、1つまたは複数の関連するターゲットグループを識別する暗号化された情報を含むことが可能である。さらに、このサーバクッキーは、有効期限データ(expiration data)を含むことができ、これは、クリアテキストフォーマットでも暗号化フォーマットでも記憶される。クリアテキストフォーマットで記憶される有効期限データは、このサーバクッキーの有効期限切れについて監視するためにクライアントコンピューティングデバイス110によって使用される。この暗号化フォーマットで記憶される有効期限データは、ソフトウェアアップデートサービス120によって使用されて、このクライアントコンピューティングデバイス110が、特定のターゲットグループに関連するアップデートを受信することが許可されているかどうかを判定する。一実施形態においては、このサーバクッキーの有効期限データは、このサーバクッキーで識別されるすべてのターゲットグループに適用される。代わりに、またはこの全体のサーバクッキーに適用される有効期限の時間に追加して、このサーバクッキーは、それぞれ、個別のターゲットグループに適用できる複数の有効期限データを含むことができる。当業者には理解されるように、各サーバクッキーは、追加のデータを含むことができる。例えば、サーバクッキーは、この許可サブルーチン702の最後の実行のタイムスタンプなどのクライアント状態情報を記憶するように構成することができる。
生成された後に、この許可サーバクッキー809は、許可サーバ122からクライアントコンピューティングデバイス110に伝えられる。次に、ブロック811に示すように、このサーバクッキーは、その後にクライアントコンピューティングデバイス110のメモリに記憶される。クライアントコンピューティングデバイス110が、このサーバクッキーの少なくとも1つのコンポーネントが、有効期限切れになったことを判定した場合には、このクライアントコンピューティングデバイスは、この許可方法702を再実行して新しいサーバクッキーを取得することができる。前述のように、この許可方法702の後続の各実行において、クライアントコンピューティングデバイス110は、このクッキー要求806においてその記憶されたサーバクッキーを許可サーバ122に対して伝えることができる。一実施形態においては、サーバが、クライアントにこのサーバ構成が変更されたこと、すなわち新しい許可プラグインが追加されたことを通知しない限り、このクライアントは、要求803を送信する必要がない。
本発明の別の態様によれば、このソフトウェアアップデートサービス120は、メタデータサーバ123とクライアントコンピューティングデバイス110の間でアップデート情報を同期化させるための同期化サブルーチンを提供することができる。一意のソフトウェアアップデート階層を使用することによって、この同期化サブルーチンは、特定のクライアントコンピューティングデバイスに適用される特定のアップデートを効率的に識別することが可能である。さらに、この許可サブルーチン702において生成されるこのサーバクッキーの使用によって、この同期化サブルーチンは、特定のターゲットグループに関連するアップデートに対するアクセスを選択的に認可することが可能である。
本発明の例示の一実施形態によれば、各ソフトウェアアップデートは3つのコンポーネント、すなわち(1)命令コンポーネント、(2)局所的データコンポーネント、および(3)データコンポーネントを含んでいる。当業者には理解されるように、各アップデートは、1つまたは複数の前述のコンポーネントを有することができる。例えば、アップデートが、命令コンポーネント、局所的データコンポーネント、およびデータストリームコンポーネントを含むこともある。別の実施例においては、アップデートは、クライアントコンピューティングデバイスの1つまたは複数の条件をテストするための1つの命令コンポーネントしか含まないこともある。このソフトウェアアップデートの様々なコンポーネントについて以下でより詳細に説明する。
一般的に説明すると、この命令コンポーネントは、2つのサブコンポーネント、すなわち(1)クライアントコンピューティングデバイス110がテストすべき1つまたは複数の条件を定義する適用規則、および(2)個別のアップデートの適切なインストレーションのために必要とされる1つまたは複数のアップデートを識別する1組の前提条件を含んでいる。以下で説明するように、この適用規則は、1台のコンピュータに関連したいくつかの条件を定義することが可能であり、これらの各条件は、任意の論理演算子を使用することによって他の条件に関連づけることが可能である。例えば、この命令コンポーネントは、コンピュータが特定のバージョンのWindows(登録商標)をインストールしているかどうかを判定する適用規則を含むこともできる。また以下で説明するように、この1組の前提条件は、以前にインストールされている必要がある1つまたは複数のアップデートを識別することが可能である。例えば、図9を参照して以下でさらに詳細に説明するように、個別のアップデートは、個別のアップデートの適切なインストレーションのために必要とされる他のアップデートをリストにした前提条件を含むこともある。他の実施例においては、図9にも示すように、この1組の前提条件は、より複雑な前提条件の規則を定義するための論理演算子の使用を含むことも可能である。
この命令コンポーネントはまた、特定のアップデートに依存する他のアップデートが存在するかどうかを示す、ブールフラグ(Boolean flag)などのコードも含む。図では、特定のアップデートに依存する他のアップデートが存在しない場合には、アップデートは、LEAFアップデートであると考えられる。あるアップデートがLEAFであるかどうかを示すために使用されるこのブールフラグは、関連したアップデートが追加され、または除去されるときに、メタデータサーバ123によって動的にアップデートされる。
各アップデートの局所的データコンポーネントは、このアップデートを記述する一般的な情報を含んでいる。例えば、この局所的データコンポーネントは、このアップデートの特徴および利点を記述する情報を含むことができる。この局所的データコンポーネントはまた、このアップデートのインストレーションプロシージャのテキスト記述を含むこともできる。さらに、この局所的データコンポーネントは、このアップデートに関連した他の任意のデータまたは情報を含むこともできる。例えば、その局所的データは、アップデートが、高優先順位のアップデートであることを示すことができる。別の実施例においては、この局所的データは、アップデートが他のソフトウェアアップデートと共にインストールすることができないことを示すメッセージなど、特定のインストレーションメッセージを提供することができる。この局所的情報は、ユーザに対してその含まれる情報の表示を可能にするフォーマットにすることもできる。
各アップデートのデータコンポーネントは、そのアップデートの1つまたは複数のバイナリデータストリーム(binary data stream)を含んでいる。一実施形態において、各アップデートのデータコンポーネントは、実行可能ファイル、ドキュメント、リンクされたライブラリなど、1つまたは複数のデータファイルに関連づけることができる。以下でさらに詳細に説明するように、各アップデートは、データファイルの組合せに関連づけることができ、これらのデータファイルのそれぞれは、クライアントが使用するソフトウェアの実際のアップグレード、インストレーション、または修正を実施する。例えば、アップデートのインストレーションは、選択されたアップデートを完了するために必要とされるすべての情報を含む1つのCABファイルの使用によって実施することができる。代わりに、このアップデートのインストレーションは、クライアントコンピューティングデバイス上に記憶される1つまたは複数のファイルをアップデートするために使用されるいくつかの個別のアップデートの使用によって実施することができる。
本発明の例示の一実施形態においては、ソフトウェアアップデートは、このソフトウェアアップデートの制御された配信を可能にする階層の形で構成することが可能である。一般的に説明すると、アップデートのこの階層は、アップデートの間の関係を定義しており、特にどのアップデートが他のアップデートに依存しているかを示している。図示するために、実施例の1組のアップデートが、図9に提供され示されている。図に示すように、サンプルのアップデート900の階層は、ベースの組のアップデート901、第2の組のアップデート902、および第3の組のアップデート903を含んでいる。一般的に、ベースの組のアップデート901中の各アップデートは、他のアップデートのインストレーションを必要とする前提条件を有していない。しかし、第6のアップデート921は、この第1のアップデート911、第2のアップデート912、および第3のアップデート913のインストレーションを必要とする前提条件を含んでいる。第7のアップデート922は、第4のアップデート914のインストレーションを必要とする前提条件を含んでいる。第8のアップデート931は、第6のアップデート921、および第5のアップデート915のインストレーションを必要とする前提条件を含んでいる。したがって、第8のアップデート931はまた、第1のアップデート911、第2のアップデート912、および第3のアップデート913のインストレーションを必要とする。本発明を例示するために、このサンプルの1組のアップデート900のうちのすべてのアップデートが、すべてオールコンピュータターゲットグループおよびPIDターゲットグループに関連していることが想定されている。
また図9に示すように、また以下でさらに詳細に説明するように、各アップデートは、このアップデートのインストレーションについての条件を指定する適用規則を含んでいる。例えば、第1のアップデート911は、オペレーティングシステムの英語バージョンのインストレーションを必要とする。第2のアップデート912は、Windows(登録商標)XPバージョンSP1のインストレーションを必要とする。別の実施例においては、第6のアップデート921は、XP PATCH1と呼ばれるソフトウェアパッチのインストレーションを必要とする。したがって、この適用規則が満たされていない場合には、クライアントコンピューティングデバイス110は、このアップデートをインストールしないはずである。
図9はまた、特定のアップデートに依存する他のアップデートがあるかどうかを示す命令コンポーネントのセクションを示している。このセクションは、LEAFと呼ばれ、これは、ソフトウェアアップデートが一連の関連したアップデートの最後のアップデートであることを示すブール値(Boolean value)の形式とすることができる。本発明を例示する目的では、他のアップデートが、特定のアップデートを前提条件としてリストアップしない場合には、特定のアップデートは、LEAFアップデートになる。図9に示すように、第7のアップデート922と、第8のアップデート931が、このたった2つのLEAFアップデートである。
図10は、本発明に従って形成される同期化サブルーチン704(図7)のプロトコル図を示している。一般的に説明すると、この同期化サブルーチン704は、クライアントコンピューティングデバイス110と、メタデータサーバ123などのサーバとの間である種のアップデートの命令コンポーネントを選択的に交信してクライアントコンピューティングデバイス110に適用することが可能なアップデートを識別する。図10に示すように、アップデートを起動するために、クライアントコンピューティングデバイス110は、まずインストール済みのアップデートを処理し、このクライアントにとって使用可能な1つまたは複数のアップデートを要求する同期化要求1051をメタデータサーバ123に対して伝える。この同期化要求1051を受信することに応答して、このメタデータサーバ123は、いくつかのアップデートをこのクライアントコンピューティングデバイス110に対して戻す。以下の説明からさらに簡単に理解されるように、クライアントコンピューティングデバイス110は、この同期化要求1051の通信に先立って局所的に記憶されたデータを処理する。
クライアントコンピューティングデバイス110は、各受信されたアップデートの命令コンポーネントを処理してこの適用規則中で定義されるその条件を満たすことができるかどうかを判定する。個別のアップデート中で定義されるこの条件が満たされる場合、同期化サブルーチン1050を例示する目的では、個別のアップデートが「インストール済み」であり、このインストール済みのアップデートがこのクライアントのアップデートキャッシュの第1のコンポーネントに保存される。他方、個別のアップデート中で定義されるこの条件が満たされない場合には、個別のアップデートは、「失敗した」と考えられ、この失敗したアップデートが、このクライアントのアップデートキャッシュの第2のコンポーネントに保存される。この同期化サブルーチン1050のこの説明において、アップデートがインストールされる場合には、この適用規則のこれらの前提条件およびこの条件が満たされていることを仮定することができる。このサブルーチンを説明するためのアップデートのインストレーションは、このアップデートに関連するこのデータファイルが、クライアントコンピューティングデバイス110において実際にインストールされることを必ずしも意味していない。
一実施形態においては、このクライアントのアップデートキャッシュのこれらの2つのコンポーネントを使用してこの受信済みのアップデートを分類する。第1のコンポーネントが、インストール済みの非LEAFアップデートを記憶するために使用され、第2のコンポーネントが、クライアントが受信する他のすべてのアップデート、すなわちインストールされなかったアップデートを記憶するために使用される。このアップデートキャッシュの第2のコンポーネントは、すべてのLEAFアップデートのストレージも含んでいる。以下でさらに詳細に説明するように、このアップデートキャッシュに記憶されるアップデートが、メタデータサーバ123に伝えられこれによって処理されてクライアントコンピューティングデバイス110上でインストレーションのために使用可能な他の関連したアップデートを識別することができる。
ここで図10に戻って、アイテム1051、1055、および1060として示されている同期化要求の細部について次に説明することにする。当業者には理解されるように、この同期化要求は、アップデートを要求するいくつかの異なるデバイス、プロセス、アプリケーション、ユーザ起動されたコマンドのうちの1つによって起動することができる。この同期化要求は、アップデートのリストを要求するユーザ、クライアントエージェントが起動する自動アップデート、あるいはメタデータサーバ123またはアップデートサービス120からの情報を要求する他の任意のソフトウェアコンポーネントによって起動することができる。一実施形態においては、この同期化要求は、許可ルーチン702から生成された許可サーバクッキーなどの許可サーバクッキーを含んでいる。このサーバクッキーの使用により、このサーバは、そのクライアントが1つまたは複数のターゲットグループのメンバであるかどうかを判定できるようになる。
各同期化要求は、このクライアントのアップデートキャッシュに記憶されたアップデートごとの識別子を含むこともできる。より詳細には、1つまたは複数のアップデートが、アップデートキャッシュに記憶されている場合、この同期化要求は、インストール済みの非LEAFアップデートについての識別子を有する第1のコンポーネントと、LEAFアップデート、失敗したアップデート、インストールされなかった他のアップデートなど、他のすべてのアップデートについての識別子を有する第2のコンポーネントとを含んでいる。このアップデート識別子は、それだけには限定されないが、整数アレイを含めて任意のフォーマットにすることができる。代わりに、このクライアントのアップデートキャッシュにアップデートが記憶されていない場合には、この同期化要求は、アップデート識別子を用いて構成されていない。同期化要求がアップデート識別子を用いて構成されていない場合に、この同期化要求は、このクライアントコンピューティングデバイス110がキャッシュされたアップデートをまったくもたないことを示す指示を提供する。
図10に示すように、第1の同期化要求1051が、クライアントコンピューティングデバイス110からメタデータサーバ123へと伝えられる。本実施例においては、これがこの方法の最初の実行であることを考えれば、このクライアントのアップデートキャッシュは、どのようなアップデートも含んでいないことになる。したがって、この第1の同期化要求1051は、キャッシュされたアップデートについての識別子を含んでいない。この同期化要求を受信することに応答して、ブロック1052に示すように、メタデータサーバ123は、この同期化要求が少なくとも1つのアップデート識別子を含むかどうかを判定する。この同期化要求がアップデート識別子を含んでいないと判定された場合、メタデータサーバ123は、クライアントコンピューティングデバイス110に伝えるための第1のレベルのアップデートを選択することによって応答する。前述のように、第1のレベルのアップデートは、他のアップデートを識別する前提条件をもたないどのようなアップデートも含むことができる。
代わりに、同期化要求が、少なくとも1つのアップデート識別子を含んでいると判定された場合には、メタデータサーバ123は、このサーバの記憶されたアップデートの前提条件を検査してこのクライアントに配信するための追加のアップデートを選択する。一実施形態においては、メタデータサーバ123は、条件が満たされた前提条件を有するアップデートを選択する。この前提条件の検査において、このサーバは、このクライアント上にインストールされた非LEAFアップデートの識別子を含む同期化要求の第1のコンポーネントのアップデートを使用する。
条件が満たされた前提条件を有するアップデートを選択するのに加えて、このサーバはまた、この同期化要求の第2のコンポーネント中で識別されるアップデートを使用してこの選択されたアップデートにフィルタをかける。より詳細には、この同期化要求の第2のコンポーネント中で識別されるインストールされていないアップデート、LEAFアップデート、および失敗したアップデートを使用して1つまたは複数の選択されたアップデートにフィルタをかける。本発明のこの特徴によって、本発明のシステムおよび方法は、メタデータサーバ123上に記憶されるアップデートの複数回の伝送を回避することができるようになる。
本実施例に戻ると、この第1の同期化要求1051は、アップデート識別子を含んでいないので、このメタデータサーバ123は、クライアントコンピューティングデバイス110に伝えるためのベースレベルのアップデート901を選択する。図9に示すアップデートのサンプルの組を参照すると、このベースレベルのアップデート901は、911、912、913、914および915と呼ばれるアップデートを含んでいる。
ブロック1052の処理において、メタデータサーバ123はまた、この同期化要求1051に含まれる許可サーバクッキーを検査して、クライアントコンピューティングデバイス110に関連するターゲットグループを識別する。メタデータサーバ123はまた、ブロック1052のプロセスで選択されたこのアップデートのターゲットグループも検査する。次いで、ブロック1052のこのプロセスは、この受信済みの許可サーバクッキー中で識別されるターゲットグループに関連していないすべての選択されたアップデートをフィルタで取り除く。本実施例においては、選択されたアップデート911、912、913、914および915のすべてが、PIDターゲットグループおよびオールコンピュータターゲットグループに関連するので、これらの選択されたアップデートのすべてがクライアントコンピューティングデバイス110に対して送信される。
次いでメタデータサーバ123は、同期化応答1053中でこの選択されたアップデートをクライアントコンピューティングデバイス110に伝える。一般的に、各同期化応答は、このサーバ120が送信する各アップデートの命令コンポーネントを含んでいる。したがって、本実施例においては、第1の同期化応答1053は、911、912、913、914および915と呼ばれるこれらのアップデートについての命令コンポーネントを含んでいる。一実施形態においては、各同期化応答は、各アップデートの局所的データコンポーネントまたはデータコンポーネントを含んでいない。
次に、ブロック1054に示すように、クライアントコンピューティングデバイス110は、各受信済みのアップデートの命令コンポーネントを処理してこの適用規則で定義される条件を満たすことができるかどうかを判定する。再度図9を参照すると、このクライアントコンピューティングデバイス110は、受信されたアップデート911〜915の命令コンポーネントを処理する。本発明を例示するために、クライアントコンピューティングデバイス110のオペレーティングシステムは、Windows(登録商標)バージョンXP SP1の英語のインストレーションであることがこの実施例において想定されている。また、クライアントコンピューティングデバイス110は、DellのPCであり、32ビットのX86プロセッサを作動させていることも想定されている。したがって、このサンプルの1組のアップデートの命令コンポーネントの処理においては、このコンピュータが英語のOSを含んでいるので、クライアントコンピューティングデバイス110は、第1のアップデート911中で定義される条件が満たされるはずであると判定するはずである。このオペレーティングシステムがWindows(登録商標)バージョンXP SP1であるので、この第2のアップデート912中で定義される条件も満たされるはずである。クライアントコンピューティングデバイス110が、X86プロセッサを作動させているのでこの第3のアップデート913中で定義される条件も満たされるはずである。クライアントコンピューティングデバイス110がDellのPCであるので第5のアップデート915中で定義される条件も満たされるはずである。その結果、第1のアップデート911、第2のアップデート912、第3のアップデート913、および第5のアップデート915はすべて、このクライアントのアップデートキャッシュの第1のコンポーネントに保存される。クライアントコンピューティングデバイス110は64ビットのX86プロセッサを作動させていないので第4のアップデート914中で定義される条件は、満たされないはずである。したがって、この第4のアップデート914は、失敗したアップデートであると考えられ、このクライアントのアップデートキャッシュの第2のコンポーネントに保存される。
図10に戻ると、ブロック1054の処理において、クライアントコンピューティングデバイス110はまた、後続の同期化要求が必要とされるかどうかを判定する。一実施形態においては、少なくとも1つのこの受信済みのアップデートが、それがLEAFアップデートではないことを示す場合、後続の同期化要求が必要であることが決定される。本実施例においては、受信済みのアップデートのすべてがLEAFアップデートではないので、後続の同期化要求が必要とされることが決定される。したがって、クライアントコンピューティングデバイス110は、後続の同期化要求1055をメタデータサーバ123に伝える。
以上で概要を述べたように、同期化要求は、このクライアントのアップデートキャッシュに記憶されるアップデートごとの識別子を含んでいる。したがって、本実施例において、後続の同期化要求855は、第1のアップデート711、第2のアップデート712、第3のアップデート713、および第5のアップデート715が、このクライアント上にインストールされていることを示す第1のデータコンポーネントを含んでいる。さらに、後続の同期化要求855は、第4のアップデート711が、このクライアント上に正常にインストールされていないことを示す第2のデータコンポーネントを含んでいる。
後続の同期化要求1055を受信することに応答して、以上で概要を述べたように、メタデータサーバ123は、後続の同期化要求1055が、少なくとも1つのアップデート識別子を含むかどうかを判定する。後続の同期化要求が少なくとも1つのアップデート識別子を含むと判定された場合、メタデータサーバ123はすべての記憶されているアップデートの前提条件を検査してこのクライアントに配信するための追加のアップデートを選択する。
再度本実施例を参照すると、ブロック856の処理において、その前提条件が満たされるので、メタデータサーバ123は、第6のアップデート921を選択するはずである。より詳細には、図9に示すように、第1のアップデート711、第2のアップデート912、および第3のアップデート913のインストレーションを必要とするその前提条件が満たされるので、第6のアップデート921が、クライアントコンピューティングデバイス110に伝えるために選択される。第7のアップデート922および第8のアップデート931は、これらの前提条件が満たされないので、このクライアントに伝えるために選択されないはずである。より詳細には、この同期化要求1055は、第7のアップデート922についての前提条件である、第4のアップデート914についての識別子を含んでいない。さらに、同期化要求855は、第8のアップデート931についての前提条件である第6のアップデート921についての識別子を含んでいない。
図10に戻ると、同期化サブルーチン1050は、後続の応答1057において選択されたアップデートをメタデータサーバ123からクライアントコンピューティングデバイス110へと伝えることによって継続される。再度本実施例を参照すると、この後続の応答1057は、第6のアップデート721に関連した情報を含むはずであり、これは後続の応答1057においてクライアント110に伝えられる。
後続の応答1057を受信すると、クライアントコンピューティングデバイス110は、後続の応答857の命令コンポーネントを処理する。ブロック854のプロセスと同様に、クライアントコンピューティングデバイス110は、各受信されたアップデートの命令コンポーネントを処理して、この適用規則中で定義される条件が満たされるかどうかを判定する。本実施例においては、XP PATCH1がこのクライアントコンピューティングデバイス中でインストールされると想定する場合に、第6のアップデート921は、インストールすべきと考えられ、このアップデートは、クライアントコンピューティングデバイス110のこのアップデートキャッシュに書き込まれる。この第6のアップデート921がLEAFアップデートではないので、クライアントコンピューティングデバイス110は、このクライアントのアップデートキャッシュの第1および第2のコンポーネントに記憶されるすべてのアップデートを含む別の同期化要求1060を送信する。この同期化要求1060も、許可サーバクッキーを含んでいる。
本実施例においては、メタデータサーバ123の前述の処理を使用することによって、この同期化要求1060は、ブロック1061において処理され、ここでは、このサーバは、第8のアップデート731を選択する。この同期化要求1060は、第5および第6のアップデート915および921がクライアントコンピューティングデバイス110中にインストールされることを示すので、この第8のアップデート931が選択される。この第8のアップデート931は、この許可サーバクッキー中で識別される同じターゲットグループに関連することを想定すると、第8のアップデート931の命令コンポーネントが、別の応答1062中においてクライアントコンピューティングデバイス110に対して伝えられる。次いで、第8のアップデート931が、ブロック1054および1059のプロセスと同様にしてブロック1063において処理される。この応答1062の受信済みのアップデートがすべて、LEAFアップデートであるので、後続の同期化要求が、メタデータサーバ123に対して返信されない。
クライアントコンピューティングデバイス110において、この受信済みのアップデートのすべてがLEAFアップデートであると判定された後に、またはアップデートが応答1062中で受信されない場合には、同期化サブルーチン1050は、クライアントコンピューティングデバイス110からメタデータサーバ123へとドライバ同期化要求1064を伝える。当業者には理解されるように、このドライバ同期化要求1064は、クライアントコンピューティングデバイス110中にインストールされるハードウェアをすべて記述する情報と、このインストール済みのソフトウェアを記述する情報を含むことができる。以前のソフトウェア同期化要求(1051、1055、および1060)と同様に、このドライバ同期化要求1064は、このインストール済みのアップデートをサーバに対して伝えることができる。さらに、このクライアント上に現在キャッシュされているすべてのドライバアップデートが、もしある場合には、このサーバに対して伝えられる。
このドライバ同期化要求1064を受信することに応答して、メタデータサーバ123は、このクライアント上にまだキャッシュされていない、クライアントコンピューティングデバイス110に適用されるすべてのドライバアップデートを送信することによって応答する。その前提条件および条件が満たされる場合には、ドライバアップデートは、応答1065においてクライアントコンピューティングデバイス110に対して送信される。このドライバアップデートを伝える応答1065は、各アップデートの命令コンポーネントを伝えることが好ましい。次いでこのドライバアップデートは、このクライアントコンピューティングデバイスのアップデートキャッシュに書き込まれる。
このドライバアップデートを含むこの応答1065を受信した後に、この同期化サブルーチン1050は、この受信済みのソフトウェアアップデートおよびハードウェアアップデートのそれぞれの局所的データを求める要求1066を送信する。以上で概要を述べたように、各アップデートの局所的データコンポーネントは、このアップデートを記述する一般的な情報を含んでいる。例えば、この局所的データコンポーネントは、このアップデートの特徴および利点を記述する情報を含むことができる。この局所的データコンポーネントはまた、このアップデートのインストレーションプロシージャのテキスト記述を含むこともできる。さらに、この局所的データコンポーネントは、このアップデートに関連した他の任意のデータまたは情報を含むこともできる。
したがって、この受信済みのソフトウェアアップデートおよびハードウェアアップデートのそれぞれのこの局所的データを求める要求1066を受信すると、メタデータサーバ123は、このクライアントのこのアップデートキャッシュに保存されたすべてのこの受信済みのソフトウェアアップデートおよびハードウェアアップデートについてのすべての局所的データを送信することによって応答する。受信した後に、この局所的データをソフトウェアアプリケーションによって処理して、これらのアップデートのうちのどれをインストールする必要があるかを決定することができる。代わりに、この受信済みの局所的データをユーザに対して表示して、このクライアントコンピューティングデバイス110にとって使用可能なすべてのアップデートについてそのユーザに通知することができる。一実施形態においては、この受信済みの局所的データは、ウェブページ上に表示することが可能である。本実施例においては、局所的データは、第6および第8のアップデート921および931についてこのクライアントが受信することができる。局所的データがベースアップデート911、912、913、および915に記憶されている場合には、これらのアップデートについてのこの局所的データも、このクライアントは受信するはずである。
図11は、このクライアントにとって使用可能なこれらのアップデートに関連する局所的データの一実施例を表示するウェブページ1100の一実施例を示している。図では、ウェブページ1100は、あるアップデートの第1の詳細な記述1105と、別のアップデートの第2の詳細な記述1106とを含んでいる。また図に示すように、各アップデートは、それぞれこれらのアップデートのユーザ選択を受け取るための選択メカニズム1103および1104に関連している。また図に示すように、ウェブページ1100は、ユーザが、メタデータサーバ123やダウンロードサーバ124などのサーバに対する、アップデートの選択の通信を制御できるようにする制御ボタン1101を用いて構成されている。
本発明の一態様において、このクライアントは、いくつかのプロセスを実施してこのウェブページ1100の表示を拡張する。例えば、クライアントコンピューティングデバイス110は、各アップデートのこの局所的データを検査して、特定のアップデートが高優先順位であるかどうかを判定する。かかる特徴は、局所的データ中に、または特定のアップデートの他のコンポーネント中に、この特定のアップデートが高優先順位アップデートまたは緊急アップデートであることを示すテキストを見つけることによって実施することができる。クライアントコンピューティングデバイス110が高優先順位アップデートまたは緊急アップデート検出する場合には、このクライアントは、このページの最上部セクションなど、ウェブページ1100の可視セクションにこの高優先順位アップデートを表示する。さらに、このクライアントは、このアップデートが高優先順位アップデートであることを示す、専用化されたテキストメッセージ1120などの視覚インジケータを生成することができる。
クライアントコンピューティングデバイス110はまた、各アップデートの局所的データを検査して、特定のアップデートが、排他的インストレーションを必要とするかどうか、すなわち別のアップデートのインストレーションファイルと同時にはインストールすることができないインストレーションファイルを有するアップデートであるかどうかを判定することができる。かかる特徴は、局所的データ中に、または特定のアップデートの他のコンポーネント中に、この特定のアップデートが排他的インストレーションを必要とすることを示すテキストを見つけることによって実施することができる。クライアントコンピューティングデバイス110が、かかるアップデートを検出する場合には、このクライアントは、排他的インストレーションを必要とするアップデートの記述を有する、図11に示すテキストメッセージ1122などの視覚インジケータを表示する。
図7に戻ると、このソフトウェアアップデートルーチン700は、ブロック708で継続され、ここで、クライアントコンピューティングデバイス110は、これらのアップデートの選択を受け取る。以上で指摘したように、制御ボタン1101の動作に応答して、1つまたは複数のアップデートの選択をメタデータサーバ123またはダウンロードサーバ124が取得することが可能である。1つまたは複数のアップデートの選択を受け取った後に、このソフトウェアアップデートルーチン700は、ブロック708で継続され、ここでこの選択されたソフトウェアアップデートが処理される。
本発明のさらに他の態様によれば、ソフトウェアアップデートサービス120は、このソフトウェアアップデートサービスとクライアントコンピューティングデバイス110の間で情報を選択し伝送する方法を提供することができる。図12Aおよび12Bは、本発明による、要求されたソフトウェアを検索しインストールするための、クライアントコンピューティングデバイス110によって実施されるソフトウェアアップデート処理サブルーチン1200を示している。前述のように、このソフトウェアアップデート処理サブルーチン1200は、ソフトウェアアップデートの選択が生成され受信された後に実施することができる。図12Aを参照すると、ブロック1202において、アップデート管理コンポーネント111が、アップデートエージェント118をインスタンス化する。本発明の例示の一実施形態において、このアップデートエージェント118は、要求されたソフトウェアアップデートを完了するため、このアップデートエージェントのインストレーションコンポーネントの要求されたバージョンを生成するため、既存のファイルをデルタパッチとマージすることによってアップデートされたファイルを生成するため、および/またはアップデートされたファイルのインストレーションを開始するために、どのようなソフトウェアアップデート情報が必要とされるかを決定するための専用ソフトウェアコンポーネントである。アップデートエージェント118が、すでにインスタンス化されている場合には、ブロック1202は、省略することができる。
ブロック1204において、アップデートエージェント118は、アップデートサービス120からソフトウェアアップデート情報を取得する。本発明の例示の一実施形態においては、アップデートサービス120が送信するこのソフトウェアアップデート情報は、このアップデートエージェントが利用することができる様々なデータを含む、自己展開ファイルなどのパッケージの形態である。一態様によれば、このパッケージは、特定のソフトウェアアップデートに対応するすべてのファイルのリストを含むことが可能である。さらに、このパッケージは、アップデートすべき特定のバージョンのファイルをアップデートサービス120上のそのパッチストレージファイルに記憶される対応するソフトウェアアップデートデルタパッチに対してマッピングするパッチストレージマニフェストの少なくとも一部分のコピーを含むことが可能である。このパッケージはまた、このインストレーションを完了するために必要とされるインストレーションコンポーネントのバージョンの識別を含むことが可能な、アップデートすべきファイルごとのインストレーション情報を含むことも可能である。さらにこのパッケージはまた、アップデートエージェント118についてのインストレーションコンポーネントまたはクライアントコンピューティングデバイス110上にすでに記憶されているインストレーションコンポーネントのバージョンをアップデートするためのデルタパッチを含むことが可能である。さらにまた、このパッケージは、このアップデートエージェントにソフトウェアアップデートが正常であったかどうかを判定できるようにする検証情報を含むことが可能である。例えば、この検証情報は、比較するためのアップデートファイルについての基準ハッシュ値を含むことが可能である。このアップデートエージェント118は、パッケージのその内容を検証することもできる。
判断ブロック1206において、テストを実施してアップデートエージェント118がアップデートを実施するためにこのインストレーションコンポーネントのバージョンをアップデートする必要があるかどうかを判定する。この自己展開ファイル中のインストレーションコンポーネントの完全なコピーの送信により、ソフトウェアアップデートごとの、アップデートサービス120が送信するデータ量を増大させる可能性があることが当業者には理解されよう。したがって本発明の例示の一実施形態においては、インストレーションコンポーネントのベースラインバージョンは、このクライアントコンピューティングデバイスに記憶し、インストレーションコンポーネントデルタパッチを介してこの現行のソフトウェアアップデートの要件について特にアップデートすることができる。したがって、この自己展開ファイル中のこのインストレーション情報は、クライアントコンピューティングデバイス110上において、含められた任意のインストレーションコンポーネントアップデートをこのインストレーションコンポーネントのこのベースラインバージョンとマージする必要があるか否かをアップデートエージェント118に指示する。アップデートが必要とされる場合、図13に関して以下でさらに非常に詳細に説明するように、ブロック1208において、アップデートエージェント118は、このベースラインインストレーションコンポーネント(baseline installation component)をアップデートする。
このアップデートエージェントがこのインストレーションコンポーネントをアップデートした後に、またはこのインストレーションコンポーネントが、アップデートを必要としない場合には、ブロック1210において、アップデートエージェント118は、クライアントコンピューティングデバイス110上にインストールされたファイル、およびこの特定のバージョンのファイルのインベントリを実施する。本発明の例示の一実施形態において、アップデートエージェント118は、この選択されたアップデートに対応するものとしてこのパッケージ中で識別されたすべてのファイルについてクライアントコンピューティングデバイス110のファイルシステムに照会することができる。代わりに、アップデートエージェント118が、最近インベントリを実施したことがある場合には、このインベントリのキャッシュされたバージョンを利用することができる。ブロック1212において、アップデートエージェント118は、この要求されたアップデートを完了するためにどのようなソフトウェアアップデート情報が必要とされるかを識別する。本発明の例示の一実施形態において、そのパッチストレージマニフェストは、必要とされるデルタパッチに対するインストール済みのファイルのバージョンのマッピングを含んでいる。したがって、デルタパッチングが利用可能な場合、アップデートエージェント118は、このマッピングを利用してこのパッチストレージファイル内の特定のデルタパッチおよびそのオフセットロケーションを識別することになる。代わりに、デルタパッチが利用可能でなく実施できない場合には、アップデートエージェント118は、ダウンロードするために全体のファイルを識別することができる。
次に図12Bを参照すると、ブロック1214において、このアップデートデートエージェント(update date agent)は、識別されたソフトウェアアップデート情報を求める要求を送信する。本発明の例示の一実施形態において、アップデートエージェント118は、このアップデートサービス120のダウンロードサーバ124に対してこのパッチストレージファイルから必要とされる特定の範囲のパッチを示すことによって特定のデルタパッチを求める要求を送信することができる。前述のように、このパッチストレージファイルは、各デルタパッチがそのパッチストレージファイルに伴うそのロケーションによって識別される多数の適用可能デルタパッチを含んでいる。このパッチストレージファイルが一部の実施形態ではかなり大きいこともあるので、アップデートエージェント118は、このパッチストレージマニフェストから指示されるように、このパッチストレージファイル中の特定のロケーションからのデータだけしか求めない要求を利用することができる。本発明の代替実施形態においては、アップデートエージェント118は、アップデートファイルの全体コピーおよび/またはこのパッチストレージファイルの完全コピーを要求することができる。
本発明の代替実施形態においては、アップデートサービス120に排他的に関連づけることができない別のダウンロードサーバが、このアップデートエージェント118の要求を処理することができる。この実施形態においては、この要求パッチストレージファイルは、全部または一部分をネットワーク上で任意の数の追加のダウンロードサーバに対して伝送することができる。この追加のダウンロードサーバは、プライベートネットワーク上でクライアントをアップデートするために利用されるプライベートネットワークの一部分とすることができる。さらに、この追加のダウンロードサーバは、パブリックネットワークの一部分とすることができる。プライベートネットワーク環境においては、これらのダウンロードサーバは、クライアント要求を処理するためのパッチストレージファイルの完全コピーを取得することができる。代わりに、ダウンロードサーバは、他のクライアントからの以前のデータ要求を処理する際にこのパッチストレージファイルの一部分をキャッシュすることもでき、このキャッシュデータを利用してこのダウンロードを履行することができる。したがって、この追加のダウンロードサーバは、アップデートサービス120のダウンロードサーバ124上における通信歪み(communication strain)を低減することが可能である。
ブロック1216において、アップデートエージェント118は、この要求されたアップデート情報を受信する。本発明の例示の一実施形態においては、この要求されたアップデート情報は、2つのアプローチで伝送することができる。手動アップデートと呼ばれる第1のアプローチでは、このアップデート要求は、直接HTTPデータ配信応答(direct HTTP data delivery response)を求める要求と共にアップデートサービス120に対して送信される。このアプローチにおいては、アップデートサービス120は、使用可能な全帯域幅のすべてを利用してこの要求されたデータをアップデートエージェント118に対して送信することができる。自動アップデートと呼ばれる第2のアプローチでは、このアップデート要求は、間接HTTPデータ配信応答(indirect HTTP data delivery response)を求める要求と共にアップデートサービス120に対して送信される。この応答においては、アップデートサービス120は、この要求されたデータをバックグラウンドプロセス(background process)として送信する。このバックグラウンドプロセスは、使用可能な帯域幅の最小量を利用するようにして実施することができる。さらに、このバックグラウンドプロセスは、このダウンロードプロセス中に中断し、次に利用可能な時に再開することができる。バックグラウンドプロセスを介して要求されたデータを伝送するためのシステムおよび方法についての説明は、参照により本明細書中に組み込まれている、2000年2月16日に出願の「System and Method for Transferring Data Over a Network」という名称の同一出願人による同時係属の米国特許出願第09/505,735号明細書中に説明されている。フォアグラウンドまたはバックグラウンドのデータ配信は、この選択されたソフトウェアアップデートの優先順位を必ずしも反映したものではなく、代わりにこのアップデート情報を取得するためにどのようにして帯域幅が割り付けられるかを反映したものであることが当業者には理解されよう。
要求された情報をこのアップデートサービスから受信した後に、ブロック1218において、アップデートエージェント118は、このデルタパッチをこの対応するインストール済みのファイルとマージする。本発明の例示の一実施形態においては、アップデートエージェント118は、このインストール済みのファイルの元のバージョンをキャッシュして、この選択されたファイルがこのダウンロードおよびマージングプロセス中に変化しないようにする。さらに、このインストール済みのファイルのキャッシュされた元のバージョンを使用してこの選択されたアップデートをアンインストール(uninstall)することができる。
判断ブロック1220において、テストを実施してこのアップデートされたファイルが有効であるかどうかを判定する。本発明の例示の一実施形態においては、アップデートエージェント118は、ハッシングアルゴリズムを利用して、アップデート情報パッケージから得られ、有効なファイルアップデートに対応する基準ハッシュ値を現在の修正されたファイルからのハッシュと比較することができる。これらのハッシュがマッチングしない場合、現行の修正ファイルは有効ではない。いくつかの代替の妥当性検査アルゴリズムのうち任意の1つを利用することもできることが当業者には理解されよう。このアップデートファイルが有効でない場合には、このサブルーチン1200はブロック1214に戻り、ここでこのアップデートエージェントは、アップデート情報を再度要求することができる。代わりに、アップデートエージェント118が、このアップデートファイルを数回にわたって生成しようと試みてもうまくいかない場合には、このアップデートエージェントは、いくつかのフォールバックプロシージャ(fallback procedure)の1つを実施することができる。本発明の一実施形態において、このアップデートエージェント118は、このパッチストレージファイルに記憶されこのパッチストレージマニフェストから識別されたアップデートファイルの完全コピーをアップデートサービス120から要求することができる。本発明の他の実施形態においては、アップデートエージェント118は、アップデートサービス120から自己完結型のファイル中のこのアップデートファイルのコピーを要求することができる。本発明のさらに他の実施形態においてサブルーチン1200は、その他の場合には失敗することもある。
この選択されたファイルが有効になった後に、判断ブロック1222において、テストを実施して追加のダウンロードが何か必要とされるかどうかを判定する。本発明の例示の一実施形態においては、サブルーチン1200は、以前に選択されたダウンロードの終了後に追加のダウンロードがあるかについて絶えずチェックする反復ループに入る。このダウンロード中にファイルの状態が変化する場合、アップデートエージェント118は、この新しい状態変化について追加のダウンロードを要求し続けるはずである。追加のダウンロードが必要とされる場合には、ブロック1224において、アップデートエージェント118は、別のインベントリを実施し、すべての適用可能なデルタパッチを識別する。次いでこのサブルーチン1200はブロック1214へと戻る。
すべてのこの要求されたアップデートのダウンロードが完了した後に、判断ブロック1226において、テストを実施して、このクライアントマシンの状態が変化しているかどうかを判定する。本発明の例示の一実施形態においては、アップデート情報のダウンロードおよびマージングと、このアップデートされたファイルの実際のインストレーションの間で時間が経過してしまうこともある。したがってこのアップデートファイルをインストールするのに先立ってこのアップデートエージェントは、このクライアントコンピューティングデバイス状態が変化しているかどうかを判定する。この状態が変化している場合には、このファイルアップデートは有効でないこともあり、このアップデートはブロック1228において失敗する。代わりに、状態の変化が起こっていなければ、アップデートエージェント118は、ブロック1230においてこのアップデートされたファイルをインストールし、サブルーチン1200は、ブロック1232において戻る。
次に図13を参照して、ブロック1208(図12A)に対応するベースラインインストレーションコンポーネントをアップデートするための、クライアントコンピューティングデバイス110によって実施されるサブルーチン1300について説明することにする。判断ブロック1302において、テストを実施して新しいベースラインインストレーションコンポーネントが、アップデートサービス120からアップデートエージェント118に伝送される自己展開ファイル中に含まれるかどうかを判定する。本発明の例示の一実施形態において、このベースラインインストーラ(baseline installer)をアップデートするために必要とされるデルタパッチが、アップデートされたインストレーションコンポーネントの伝送とサイズが同等である場合、新しいベースラインインストレーションコンポーネントが伝送されることになる。アップデートされたインストレーションコンポーネントが含まれる場合には、ブロック1304において、このアップデートエージェントは、このアップデートされたベースラインインストレーションコンポーネントを新しいインストレーションコンポーネントとしてインストールする。さらに、この新しいアップデートされたインストレーションコンポーネントは、クライアントコンピューティングデバイス110のメモリに保存されて追加のアップデートについてのベースラインインストーラとしての役割を果たすことができる。ブロック1306においてこのサブルーチンは戻る。
アップデートされたベースラインインストレーションコンポーネントが、この自己展開ファイル中に含まれていない場合には、ブロック1308においてアップデートエージェント118は、この自己展開ファイルからベースラインインストレーションコンポーネントデルタパッチを取得する。本発明の例示の一実施形態において、このベースラインインストレーションコンポーネントデルタパッチは、このベースラインインストレーションコンポーネントとマージされてアップデートされたベースラインインストレーションコンポーネントを生成することができるソフトウェアコードに対応する。したがって、ブロック1310において、このアップデートエージェントは、このベースラインインストレーションコンポーネントデルタパッチをこのベースラインインストレーションコンポーネントとマージする。ブロック1312において、次いでアップデートエージェント118は、このアップデートされたベースラインインストレーションコンポーネントを現在のインストレーションコンポーネントとして指定する。本発明の例示の一実施形態において、このインストレーションが完了した後にはこのアップデートされたインストレーションコンポーネントは、保存されないことになる。この実施形態によれば、アップデートエージェント118は、クライアントコンピューティングデバイス110のメモリ中に限られた数のベースラインインストレーションコンポーネントしか保持しない。したがって、このアップデートエージェントは、インストレーションごとに、一時的なアップデートされたインストレーションコンポーネントを生成する。各クライアントコンピューティングデバイス110は、限られた数のベースラインインストレーションコンポーネントにしか対応することができないので、アップデートサービス120には、クライアントコンピューティングデバイスごとに1つのベースラインインストレーションコンポーネントデルタパッチを伝送する必要があるだけである。ブロック1314において、このサブルーチン1300は、戻る。
本発明の好ましい実施形態について示し説明してきたが、本発明の趣旨および範囲を逸脱することなく様々な変更をここで行うことができることが理解されよう。例えば、本明細書中で説明した例示の実施例は、ソフトウェアアップデートに適用されるが、本発明の範囲は、ソフトウェアアップデートに関連した情報の配信および通信以外の他の使用を含んでいる。したがって、特定の主題がこの開示中において明確に除外されない限り、本発明の範囲が、ソフトウェアアップデート以外の、またはソフトウェアアップデートに追加の任意タイプのデータの配信および通信に適用されることを理解されたい。
本発明による、クライアントコンピュータ、およびアップデートソフトウェアを提供するアップデートサービスを含むソフトウェアアップデートシステムを示すブロック図である。 本発明による、アップデートサービスを用いたクライアントコンピューティングデバイスの認証を示す、図1のソフトウェアアップデートシステムのブロック図である。 本発明による、クライアントコンピューティングデバイスとアップデートサービスの間の使用可能なアップデートの同期化を示す、図1のソフトウェアアップデートシステムのブロック図である。 本発明による、アップデートサービスからクライアントコンピューティングデバイスへのソフトウェアアップデート情報の伝送を示す、図1のソフトウェアアップデートシステムのブロック図である。 本発明による、クライアントコンピューティングデバイスによるアップデート情報の処理および選択を示す、図1のソフトウェアアップデートシステムのブロック図である。 本発明による、クライアントコンピューティングデバイスによるデルタパッチのマージング、およびアップデートファイルのインストレーションを示す、図1のソフトウェアアップデートシステムのブロック図である。 本発明による、クライアントコンピューティングデバイス上におけるインストレーションのために使用可能なソフトウェアアップデートを識別するための、クライアントコンピューティングデバイスおよびアップデートサービスによって実施されるソフトウェアアップデートルーチンを示す流れ図である。 本発明による、アップデートサービス上に記憶されるアップデートに対する選択的なアクセスを提供するための許可ルーチンのプロトコル図である。 本発明による、許可ルーチンを示す実施例の1組のソフトウェアアップデートのブロック図である。 本発明による、選択グループのソフトウェアアップデートをソフトウェアアップデートサービスからクライアントコンピューティングデバイスへと伝えるための同期化ルーチンのプロトコル図である。 本発明による、個別のクライアントコンピューティングデバイスにとって使用可能なソフトウェアアップデートのリストを表示するためのグラフィックユーザインターフェースの例示のセクションを示すブロック図である。 本発明による、要求されたソフトウェアを検索しインストールするためのクライアントコンピューティングデバイス110によって実施されるソフトウェアアップデート処理サブルーチン1200の一部分を示す図である。 本発明による、要求されたソフトウェアを検索しインストールするためのクライアントコンピューティングデバイス110によって実施されるソフトウェアアップデート処理サブルーチン1200の一部分を示す図である。 本発明による、ベースラインインストレーションコンポーネントをアップデートするための、クライアントコンピューティングデバイスによって実施されるサブルーチンを示す流れ図である。

Claims (25)

  1. 分散処理システムにおいて、クライアントコンピューティングデバイスプロセスとサーバプロセスの間で通信する方法であって、
    (a)前記クライアントコンピューティングデバイスがインストール済みのソフトウェアアップデートを記憶する場合に、前記クライアントプロセスが、前記インストール済みのソフトウェアアップデートの識別子を含む同期化要求を発行するステップと、
    (b)前記サーバプロセスが、前記同期化要求を受信するプロセスと、
    (c)前記同期化要求が少なくとも1つのソフトウェアアップデートの識別子を含む場合に、前記サーバプロセスが、追加のソフトウェアアップデートを選択するステップであって、前記追加のソフトウェアアップデートの選択は、前記追加のソフトウェアアップデート中で定義される前提条件の満足に依存しており、前記前提条件は、少なくとも1つの特定のソフトウェアアップデートについての識別子を含む前記同期化要求を必要とするステップと、
    (d)前記同期化要求が少なくとも1つのソフトウェアアップデートの識別子を含まないと判定された場合には、前記サーバプロセスが、ヌル値を前提条件として有する第1のレベルのソフトウェアアップデートを選択するステップと、
    (e)前記サーバプロセスが、前記選択されたソフトウェアアップデートの命令コンポーネントを発行するステップと、
    (f)前記クライアントプロセスが、前記選択されたソフトウェアアップデートの前記命令コンポーネントを受信するステップと、
    (g)前記クライアントコンピューティングデバイスが、前記選択されたソフトウェアアップデート中に記憶される適用規則の条件を満たす少なくとも1つのコンポーネントを含む場合に、前記クライアントプロセスが、前記クライアントコンピューティングデバイス中の前記選択されたソフトウェアアップデートの前記命令コンポーネントをインストール済みのソフトウェアアップデートとして記憶するステップと
    を含むことを特徴とする方法。
  2. 前記クライアントプロセスが処理するための追加のソフトウェアアップデートが存在することを示す指示を前記選択されたソフトウェアアップデートの前記命令コンポーネントが提供する場合に、前記クライアントプロセスによってエレメント(a)〜(g)を反復するステップをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記サーバプロセスによって、前記選択されたソフトウェアアップデートの局所的データコンポーネントを発行するステップと、
    前記クライアントプロセスによって、前記選択されたソフトウェアアップデートの前記局所的データコンポーネントを受信するステップであって、前記局所的データコンポーネントを受信すると、前記クライアントプロセスがアプリケーションを呼び出し、ディスプレイ上で前記選択されたソフトウェアアップデートの前記局所的データコンポーネントの表示を生成するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記クライアントプロセスによって、前記選択されたソフトウェアアップデートに関連するデータファイルの通信を引き起こすコマンドを受信するステップと、
    前記クライアントプロセスによって、前記選択されたソフトウェアアップデートに関連する前記データファイルを伝えるためのコマンドを発行するステップと、
    前記サーバプロセスによって、前記選択されたソフトウェアアップデートに関連する前記データファイルを伝えるためのコマンドを受信し、アプリケーションを呼び出して前記データファイルをダウンロードするステップと
    をさらに含むことを特徴とする請求項3に記載の方法。
  5. 前記クライアントプロセスによって読み取られるメモリが前記インストール済みのソフトウェアアップデートを記憶する場合に、前記クライアントプロセスによって、前記インストール済みのソフトウェアアップデートの識別子を前記同期化要求に一体化するステップをさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記クライアントプロセスが、前記選択されたソフトウェアアップデート中に記憶された適用規則の少なくとも1つの条件が満たされないと判定した場合に、前記クライアントプロセスによって、前記クライアントコンピューティングデバイス中の前記選択されたソフトウェアアップデートの前記命令コンポーネントを失敗したソフトウェアアップデートとして記憶するステップをさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記クライアントプロセスによって、前記失敗したソフトウェアアップデートの識別子を前記同期化要求中に一体化するステップと、
    前記選択されたソフトウェアアップデートが前記失敗したソフトウェアアップデートに関連している場合に、前記サーバプロセスによって、前記選択されたソフトウェアアップデートの発行を制限するステップと
    をさらに含むことを特徴とする請求項7に記載の方法。
  8. 分散処理システムにおいて、クライアントコンピューティングデバイスプロセスとサーバプロセスの間で通信する方法であって、
    (a)前記クライアントプロセスによって、ターゲットグループに関連するクライアント許可モジュールの識別子を含む許可要求を発行するステップと、
    (b)前記サーバプロセスによって、前記許可要求を受信するステップと、
    (c)前記サーバプロセスが前記ターゲットグループに関連するサーバソフトウェアモジュールの存在を検出した場合に、前記サーバプロセスによって、前記ターゲットグループを識別するサーバクッキーを発行するステップと、
    (d)前記クライアントプロセスによって、前記ターゲットグループを識別する前記サーバクッキーを受信するステップと、
    (e)前記クライアントプロセスによって、少なくとも1つのソフトウェアアップデートを求める、前記サーバクッキーを含むアップデート要求を発行するステップと、
    (f)前記サーバプロセスによって、前記アップデート要求を受信するステップと、
    (g)前記ソフトウェアアップデートが前記サーバクッキー中で識別される前記ターゲットグループに関連する場合に、前記サーバプロセスによって、ソフトウェアアップデートを発行するステップと、
    (h)前記ソフトウェアアップデートが前記サーバクッキー中で識別される前記ターゲットグループに関連する場合に、前記クライアントプロセスによって、前記ソフトウェアアップデートを受信するステップと
    を含むことを特徴とする方法。
  9. 前記許可要求は、以前に記憶されたサーバクッキーのデータを含み、前記サーバプロセスによって発行された前記サーバクッキーは、前記以前に記憶されたサーバクッキーの前記データを含むことを特徴とする請求項8に記載の方法。
  10. 前記サーバプロセスと通信するサーバ許可モジュールが前記クライアント許可モジュールに関連する同じターゲットグループを識別する場合に、前記クライアントコンピューティングデバイスが前記ターゲットグループに関連すると判定されることを特徴とする請求項8に記載の方法。
  11. 前記サーバクッキーは、有効期限時間を含み、前記サーバクッキーの前記有効期限時間が経過している場合に、前記サーバプロセスによって前記ソフトウェアアップデートを発行しないステップをさらに含むことを特徴とする請求項8に記載の方法。
  12. 前記サーバクッキーは、前記有効期限時間をクリアテキストフォーマットおよび暗号化されたフォーマットで記憶し、前記サーバクッキーは、少なくとも1つのターゲットグループを識別する暗号化されたデータを含み、
    前記クライアントプロセスによって、前記サーバクッキーからの前記有効期限時間を取得するステップであって、前記クライアントプロセスが、前記クリアテキストフォーマットで記憶される前記有効期限時間から前記有効期限時間を取得するステップと、
    前記クライアントプロセスによって、少なくとも1つのソフトウェアアップデートを求める、前記サーバクッキーを含む前記要求を発行するステップと
    をさらに含むことを特徴とする請求項8に記載の方法。
  13. 前記ソフトウェアアップデートを発行するステップは、前記ソフトウェアアップデートの命令コンポーネントを発行するステップを含み、前記ソフトウェアアップデートの前記命令コンポーネントが、追加のソフトウェアアップデートが存在することを示す場合に、
    前記クライアントプロセスによって、局所的データを求める要求を発行するステップと、
    前記サーバプロセスによって、局所的データを求める要求を受信するステップと、
    前記サーバプロセスによって、前記ソフトウェアアップデートの局所的データコンポーネントを発行するステップと、
    前記クライアントプロセスによって、前記局所的データを受信するステップと、
    前記クライアントプロセスによって、少なくとも1つのアップデートファイルの選択についての前記局所的データコンポーネントを処理するステップと
    をさらに含むことを特徴とする請求項8に記載の方法。
  14. ソフトウェアアップデートを伝え管理するためのシステムであって、
    (a)複数のソフトウェアアップデートを記憶する第1のデータベースであって、前記データベース中に記憶される個別のソフトウェアアップデートは、
    (i)少なくとも1つの条件を定義する適用規則を含む命令データフィールドであって、
    前記適用規則は、ヌル値を含むことが可能であり、前記命令コンポーネントは、前記個別のソフトウェアアップデートのインストレーションのために必要とされる1つまたは複数のソフトウェアアップデートを識別する1組の前提条件を含み、前記1組の前提条件は、ヌル値を含むことが可能である命令データフィールドと、
    (ii)前記個別のソフトウェアアップデートに関連した一般的な情報を記述するテキストデータを含む局所的データフィールドと、
    (iii)前記個別のソフトウェアアップデートに関連する少なくとも1つのデータストリームファイルを識別するデータコンポーネントと
    を含むデータベースと、
    (b)前記第1のデータベースに記憶されるソフトウェアアップデートに対してアクセスを許可するための許可サーバであって、前記クライアントコンピューティングデバイスがターゲットグループに関連することを示す許可モジュールを前記クライアントコンピューティングデバイスが含む場合に、前記許可サーバは、前記クライアントコンピューティングデバイスが前記個別のソフトウェアアップデートにアクセスできるようにするサーバクッキーを発行し、前記サーバクッキーは、前記ターゲットグループについての識別子を含み、前記サーバクッキーが、前記サーバクッキーを記憶するために前記クライアントコンピューティングデバイスに伝えられる許可サーバと、
    (c)アップデートを前記クライアントコンピューティングデバイスに対して提供するためのメタデータサーバであって、前記ソフトウェアアップデートが前記ターゲットグループに関連する場合に、ソフトウェアアップデートが、前記クライアントコンピューティングデバイスに対して伝えられ、前記メタデータサーバが、通信可能に前記第1のデータベースに結合され、前記メタデータサーバは、
    (i)前記クライアントコンピューティングデバイスが、インストール済みのソフトウェアアップデートを記憶する場合に、前記インストール済みのソフトウェアアップデートの識別子を含み、前記サーバクッキーを含む同期化要求を取得し、
    (ii)前記同期化要求が少なくとも1つのインストール済みのソフトウェアアップデートの識別子を含む場合に、前記クライアントコンピューティングデバイスに伝えるための追加のソフトウェアアップデートを選択し、前記追加のソフトウェアアップデートの選択は、前記追加のソフトウェアアップデート中で定義される前提条件の満足に依存しており、前記前提条件は、少なくとも1つのインストール済みのソフトウェアアップデートについての識別子を含む前記同期化要求を必要とし、前記追加のソフトウェアアップデートが、前記サーバクッキー中で識別される前記ターゲットグループに関連しており、
    (iii)前記同期化要求が、少なくとも1つのインストール済みのソフトウェアアップデートの識別子を含んでいない場合には、前記クライアントコンピューティングデバイスに伝えるための、前提条件を含まない第1のレベルのソフトウェアアップデートを選択し、
    (iv)記憶するために前記選択されたソフトウェアアップデートの命令コンポーネントを前記クライアントコンピューティングデバイスに伝え、
    (v)前記選択されたソフトウェアアップデートに関連する局所的データを求める要求を取得し、
    (vi)前記選択されたソフトウェアアップデートに関連する、前記クライアントコンピューティングデバイスが前記選択されたソフトウェアアップデートのデータコンポーネントの受信を求めるダウンロード要求を生成できるようにする局所的データを伝える
    ように動作可能であるメタデータサーバと、
    (d)前記第1のデータベースに通信可能に結合されたダウンロードサーバと
    を備え、前記ダウンロードサーバは、
    (i)前記クライアントコンピューティングデバイスから、前記選択されたソフトウェアアップデートの前記データコンポーネントを識別する前記ダウンロード要求を取得し、
    (ii)前記選択されたソフトウェアアップデートの前記データコンポーネントを前記クライアントコンピューティングデバイスに伝える
    ように動作可能であることを特徴とするシステム。
  15. サーバ許可モジュールが前記ターゲットグループを識別する場合に、前記サーバクッキーは、前記ターゲットグループについての識別子を含むことを特徴とする請求項1に記載のシステム。
  16. 前記サーバクッキーは、有効期限時間を含み、前記メタデータサーバは、
    前記サーバクッキーの前記有効期限時間が経過しているかどうかを判定し、
    前記サーバクッキーの前記有効期限時間が経過していると判定された場合に、前記選択されたソフトウェアアップデートの通信を制限するように動作可能であることを特徴とする請求項1に記載のシステム。
  17. 前記メタデータサーバは、
    前記クライアントコンピューティングデバイスが失敗したソフトウェアアップデートを記憶する場合に、前記同期化要求中の前記失敗したソフトウェアアップデートの識別子を取得し、
    前記同期化要求が前記失敗したソフトウェアアップデートの識別子を含むと判定された場合に、前記失敗したソフトウェアアップデートに関連した選択されたソフトウェアアップデートの通信を制限する
    ように動作可能であることを特徴とする請求項1に記載のシステム。
  18. 前記ダウンロードサーバは、
    前記クライアントコンピューティングデバイス上にインストールされた1つまたは複数のファイルをアップデートするための1つまたは複数の使用可能なソフトウェアアップデートの選択を取得し、
    少なくとも1つのバージョンのインストール済みのファイルをアップデートするための複数の使用可能なデルタパッチを識別する自己展開ファイルを取得し、
    前記クライアントコンピューティングデバイス上にインストールされた前記1つまたは複数のファイルのインベントリを取得し、
    1つまたは複数の適用可能なデルタパッチを選択して前記選択されたソフトウェアアップデートを実施し、前記1つまたは複数の適用可能なパッチを選択するステップは、前記クライアントコンピューティングデバイス上にインストールされた前記1つまたは複数のファイルの前記インベントリに対する前記複数の使用可能なデルタパッチを識別する前記自己展開ファイルのマッピングするステップに対応しており、
    1つまたは複数の選択されたデルタパッチを求める要求を伝送する
    ように動作可能であることを特徴とする請求項1に記載のシステム。
  19. クライアントコンピューティングデバイス上でデータをアップデートするためのシステムであって、
    複数のデルタパッチを記憶する第1のデータベースと、
    前記第1のデータベースおよび前記クライアントコンピューティングデバイスに通信可能に結合されたサーバコンピュータと
    を備え、前記サーバコンピュータは、
    前記クライアントコンピューティングデバイス上にインストールされた1つまたは複数のファイルをアップデートするための1つまたは複数の使用可能なソフトウェアアップデートの選択を取得し、
    少なくとも1つのバージョンのインストール済みのファイルをアップデートするための複数の使用可能なデルタパッチを識別する自己展開ファイルを取得し、
    前記クライアントコンピューティングデバイス上にインストールされた1つまたは複数のファイルのインベントリを取得し、
    1つまたは複数の適用可能なデルタパッチを選択して前記選択されたソフトウェアアップデートを実施し、前記1つまたは複数の適用可能なパッチを選択するステップは、前記クライアントコンピューティングデバイス上にインストールされた前記1つまたは複数のファイルの前記インベントリに対する前記複数の使用可能なデルタパッチを識別する前記自己展開ファイルのマッピングするステップに対応しており、
    1つまたは複数の選択されたデルタパッチを求める要求を伝送する
    ように動作可能であることを特徴とするシステム。
  20. クライアントコンピューティングデバイスにソフトウェアアップデートを伝えるためのシステムであって、
    それぞれがターゲットグループを識別する複数のサーバ許可モジュールを記憶する第1のコンポーネントと、
    前記第1のコンポーネントに通信可能に結合されたサーバコンピュータと
    を備え、前記サーバコンピュータは、
    前記クライアントコンピューティングデバイス上に記憶されたクライアント許可モジュールの識別子を含む許可要求を前記クライアントコンピューティングデバイスから取得し、
    前記クライアントコンピューティングデバイスが、前記ターゲットグループに関連するかどうかを判定し、前記クライアントコンピューティングデバイスが前記ターゲットグループに関連することを前記クライアント許可モジュールが示す場合に、前記クライアントコンピューティングデバイスが、前記ターゲットグループに関連すると判定され、
    前記クライアントコンピューティングデバイスが、前記ターゲットグループに関連すると判定された場合に、前記ターゲットグループを識別するサーバクッキーを前記ソフトウェアアップデートサービスから前記クライアントコンピューティングデバイスに伝え、
    前記ソフトウェアアップデートサービス上に記憶された少なくとも1つのソフトウェアアップデートを求める、前記サーバクッキーを含む要求を取得し、
    前記要求を取得するステップに応答してソフトウェアアップデートが前記サーバクッキー中で識別される前記ターゲットグループに関連するかどうかを判定し、
    前記ソフトウェアアップデートが前記サーバクッキー中で識別される前記ターゲットグループに関連すると判定された場合には、前記ソフトウェアアップデートを前記ソフトウェアアップデートサービスから前記クライアントコンピューティングデバイスに伝える
    ように動作可能であることを特徴とするシステム。
  21. 個別のソフトウェアアップデートのデータ構造をその上に記憶しているコンピュータ読取り可能媒体であって、
    少なくとも1つの条件を規定する適用規則を含む命令データフィールドであって、前記適用規則は、ヌル値であることが可能であり、前記命令コンポーネントは、前記個別のソフトウェアアップデートのインストレーションのために必要とされる1つまたは複数のソフトウェアアップデートを識別する1組の前提条件を含み、前記1組の前提条件は、ヌル値であることが可能である命令データフィールドと、
    前記個別のソフトウェアアップデートに関連した一般的な情報を記述するテキストデータを含む局所的データフィールドと、
    前記個別のソフトウェアアップデートに関連する少なくとも1つのデータストリームファイルを識別するデータコンポーネントと
    を含むことを特徴とするコンピュータ読取り可能媒体。
  22. 前記命令コンポーネントは、前記個別のソフトウェアアップデートに依存する他のアップデートが存在するかどうかを示すデータ値を含むことを特徴とする請求項8に記載のコンピュータ読取り可能媒体。
  23. 前記命令コンポーネントは、前記個別のソフトウェアアップデートが少なくとも1つの他のソフトウェアアップデートの前記インストレーションを必要とするかどうかを示すデータ値を含むことを特徴とする請求項8に記載のコンピュータ読取り可能媒体。
  24. 前記局所的データフィールドは、前記個別のソフトウェアアップデートが高優先順位アップデートであることを示す指示を提供することを特徴とする請求項8に記載のコンピュータ読取り可能媒体。
  25. 前記局所的データフィールドは、前記個別のソフトウェアアップデートが排他的インストレーションを必要とすることを示す指示を提供することを特徴とする請求項8に記載のコンピュータ読取り可能媒体。
JP2006543793A 2003-12-15 2004-07-23 ソフトウェアアップデートのための通信方法 Expired - Fee Related JP4871138B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/737,726 US7478381B2 (en) 2003-12-15 2003-12-15 Managing software updates and a software distribution service
US10/737,726 2003-12-15
PCT/US2004/023965 WO2005060387A2 (en) 2003-12-15 2004-07-23 System and method for a software distribution service

Publications (3)

Publication Number Publication Date
JP2007523395A true JP2007523395A (ja) 2007-08-16
JP2007523395A5 JP2007523395A5 (ja) 2007-10-04
JP4871138B2 JP4871138B2 (ja) 2012-02-08

Family

ID=34654196

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006543793A Expired - Fee Related JP4871138B2 (ja) 2003-12-15 2004-07-23 ソフトウェアアップデートのための通信方法

Country Status (11)

Country Link
US (1) US7478381B2 (ja)
EP (1) EP1579301B1 (ja)
JP (1) JP4871138B2 (ja)
KR (1) KR101130367B1 (ja)
CN (1) CN101410800B (ja)
AU (1) AU2004279162B8 (ja)
BR (1) BRPI0406412A (ja)
CA (1) CA2501499A1 (ja)
MX (1) MXPA05006615A (ja)
RU (1) RU2365983C2 (ja)
WO (1) WO2005060387A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619244B2 (en) 2014-09-05 2017-04-11 Xiaomi Inc. Method and system for upgrading an electronic device

Families Citing this family (227)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694546A (en) 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
US6751794B1 (en) 2000-05-25 2004-06-15 Everdream Corporation Intelligent patch checker
US6990660B2 (en) * 2000-09-22 2006-01-24 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US7574481B2 (en) * 2000-12-20 2009-08-11 Microsoft Corporation Method and system for enabling offline detection of software updates
KR100718613B1 (ko) 2001-10-22 2007-05-16 애플 인크. 호스트 컴퓨터와 미디어 플레이어의 미디어 내용 동기화 방법
US7680849B2 (en) 2004-10-25 2010-03-16 Apple Inc. Multiple media type synchronization between host computer and media device
US8150937B2 (en) 2004-10-25 2012-04-03 Apple Inc. Wireless synchronization between media player and host device
US8255361B2 (en) * 2003-01-31 2012-08-28 Oracle America, Inc. Method and system for validating differential computer system update
US8122106B2 (en) * 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7549148B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
JP2005242981A (ja) * 2004-01-28 2005-09-08 Seiko Epson Corp サービス提供システム、アプリケーション管理システム、サービス提供装置、サービス提供プログラム、アプリケーション管理プログラムおよび記憶媒体、並びにサービス提供方法およびアプリケーション管理方法
US7539686B2 (en) * 2004-03-12 2009-05-26 Microsoft Corporation Tag-based schema for distributing update metadata in an update distribution system
US8051483B2 (en) 2004-03-12 2011-11-01 Fortinet, Inc. Systems and methods for updating content detection devices and systems
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US20050246529A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US10972536B2 (en) 2004-06-04 2021-04-06 Apple Inc. System and method for synchronizing media presentation at multiple recipients
US8797926B2 (en) 2004-06-04 2014-08-05 Apple Inc. Networked media station
US8443038B2 (en) 2004-06-04 2013-05-14 Apple Inc. Network media device
US20070110074A1 (en) 2004-06-04 2007-05-17 Bob Bradley System and Method for Synchronizing Media Presentation at Multiple Recipients
US7526534B2 (en) * 2004-07-16 2009-04-28 Cassatt Corporation Unified system services layer for a distributed processing system
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US20060039566A1 (en) * 2004-08-19 2006-02-23 Xerox Corporation System for installing software with encrypted client-server communication
US7661102B2 (en) * 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
US8229301B2 (en) * 2004-09-07 2012-07-24 Finisar Corporation Configuration of optical transceivers to perform custom features
US7801449B2 (en) * 2004-09-07 2010-09-21 Finisar Corporation Off-module optical transceiver firmware paging
US20060059481A1 (en) * 2004-09-16 2006-03-16 Rodney Smith Presenting, delivering and installing electronic downloads with an installed list
US7974538B2 (en) 2004-10-29 2011-07-05 Finisar Corporation Transaction for transceiver firmware download
US7957651B2 (en) * 2004-10-29 2011-06-07 Finisar Corporation Configurable optical transceiver feature specific cost transaction
US7802124B2 (en) * 2004-10-29 2010-09-21 Finisar Corporation Microcode configurable frequency clock
US8219807B1 (en) 2004-12-17 2012-07-10 Novell, Inc. Fine grained access control for linux services
US8151245B2 (en) 2004-12-17 2012-04-03 Computer Associates Think, Inc. Application-based specialization for computing nodes within a distributed processing system
US8271785B1 (en) 2004-12-20 2012-09-18 Novell, Inc. Synthesized root privileges
US9021456B2 (en) * 2004-12-22 2015-04-28 International Business Machines Corporation Using collaborative annotations to specify real-time process flows and system constraints
US8457108B1 (en) 2004-12-27 2013-06-04 At&T Intellectual Property Ii, L.P. Method and apparatus for monitoring client software usage in end user device
US11314378B2 (en) 2005-01-07 2022-04-26 Apple Inc. Persistent group of media items for a media device
EP1688834A3 (en) * 2005-02-03 2009-01-14 LG Electronics Inc. Video device having software upgrade function using wireless communication and method for controlling the same
US7490072B1 (en) 2005-02-16 2009-02-10 Novell, Inc. Providing access controls
US7802144B2 (en) * 2005-04-15 2010-09-21 Microsoft Corporation Model-based system monitoring
US7797147B2 (en) * 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US20060253617A1 (en) * 2005-04-22 2006-11-09 Microsoft Corporation Driver upgrade tools
US8074214B2 (en) * 2005-05-19 2011-12-06 Oracle International Corporation System for creating a customized software installation on demand
US8352935B2 (en) 2005-05-19 2013-01-08 Novell, Inc. System for creating a customized software distribution based on user requirements
US8316129B2 (en) 2005-05-25 2012-11-20 Microsoft Corporation Data communication coordination with sequence numbers
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US20070016393A1 (en) * 2005-06-29 2007-01-18 Microsoft Corporation Model-based propagation of attributes
US8577761B1 (en) * 2005-06-30 2013-11-05 Oracle America, Inc. System and method for dynamic offering topologies
JP4747733B2 (ja) * 2005-08-22 2011-08-17 ブラザー工業株式会社 ノード装置、共用情報更新処理プログラム、共用情報更新方法、及び情報共有システム
US7668905B2 (en) * 2005-09-07 2010-02-23 International Business Machines Corporation Method, system and computer program for providing web pages based on client state
US8261258B1 (en) 2005-10-28 2012-09-04 Google Inc. Common installer client
US9274774B2 (en) * 2005-10-28 2016-03-01 Google Inc. Common installer server
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
US8078952B2 (en) 2005-11-28 2011-12-13 Microsoft Corporation Site redirection
US7813963B2 (en) * 2005-12-27 2010-10-12 The Pen Interactive electronic desktop action method and system for executing a transaction
US8676973B2 (en) 2006-03-07 2014-03-18 Novell Intellectual Property Holdings, Inc. Light-weight multi-user browser
KR100750169B1 (ko) * 2006-03-08 2007-08-21 삼성전자주식회사 델타 파일 생성 방법 및 이를 이용한 소프트웨어 업데이트방법
WO2007113550A1 (en) * 2006-03-31 2007-10-11 British Telecommunications Public Limited Company Exception handler for the upgrade of java objects in a distributed system
US20070257354A1 (en) * 2006-03-31 2007-11-08 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Code installation decisions for improving aggregate functionality
EP2002334A1 (en) * 2006-03-31 2008-12-17 British Telecommunications Public Limited Company Xml-based transfer and a local storage of java objects
US7793285B2 (en) * 2006-03-31 2010-09-07 Ricoh Company, Ltd. Web installer driver and management through a remote network
WO2007146710A2 (en) 2006-06-08 2007-12-21 Hewlett-Packard Development Company, L.P. Device management in a network
CN101356519B (zh) * 2006-06-19 2011-11-09 三星电子株式会社 用于可利用空中机制的便携式设备的程序升级系统及方法
US8775572B2 (en) * 2006-06-23 2014-07-08 Microsoft Corporation Public network distribution of software updates
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US8074213B1 (en) * 2006-08-11 2011-12-06 Symantec Operating Corporation Automatic software updates for computer systems in an enterprise environment
US20080046879A1 (en) * 2006-08-15 2008-02-21 Michael Hostetler Network device having selected functionality
US7730480B2 (en) * 2006-08-22 2010-06-01 Novell, Inc. System and method for creating a pattern installation by cloning software installed another computer
US20130047145A1 (en) * 2006-08-29 2013-02-21 Quan-Jie Cui Match analysis for encoding optimized update packages
JP4842742B2 (ja) * 2006-09-05 2011-12-21 富士通株式会社 ソフトウェア管理プログラム、ソフトウェア管理方法およびソフトウェア管理装置
US8112508B1 (en) * 2006-09-08 2012-02-07 Dell Products L.P. Delivering data from device management services to devices using bulletin system
US7886292B2 (en) * 2006-10-05 2011-02-08 International Business Machines Corporation Methodology of individualized software deployment for hardware-independent personal computer mass development
US8122443B2 (en) * 2006-12-14 2012-02-21 International Business Machines Corporation Dynamic multi-context delta view for merging structured data in a visual merge tool
KR101368714B1 (ko) * 2006-12-22 2014-03-05 삼성전자주식회사 이동식 저장장치, 소프트웨어 자동설치시스템 및소프트웨어 자동설치방법
CN107122373A (zh) * 2007-01-07 2017-09-01 苹果公司 与主机设备的按优先级的数据同步
US8631088B2 (en) 2007-01-07 2014-01-14 Apple Inc. Prioritized data synchronization with host device
US8850140B2 (en) 2007-01-07 2014-09-30 Apple Inc. Data backup for mobile device
JP4905150B2 (ja) * 2007-01-22 2012-03-28 富士通株式会社 ソフトウェア動作実績管理システム、方法及びプログラム
US20080281958A1 (en) * 2007-05-09 2008-11-13 Microsoft Corporation Unified Console For System and Workload Management
US20080288622A1 (en) * 2007-05-18 2008-11-20 Microsoft Corporation Managing Server Farms
US20090007096A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Secure Software Deployments
KR100955426B1 (ko) * 2007-08-10 2010-05-04 (주)지란지교소프트 가상 플랫폼 실행방법
US7857222B2 (en) 2007-08-16 2010-12-28 Hand Held Products, Inc. Data collection system having EIR terminal interface node
US8938735B2 (en) * 2007-08-31 2015-01-20 Thomson Reuters Global Resources Bootstrapper and software download manager
US20090083441A1 (en) 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US8413130B2 (en) * 2007-10-03 2013-04-02 International Business Machines Corporation System and method for self policing of authorized configuration by end points
US8281294B1 (en) * 2007-11-12 2012-10-02 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
US8726260B2 (en) * 2007-11-26 2014-05-13 Lenovo (Singapore) Pte Ltd Techniques for providing software patches to a computer system
US9208308B2 (en) 2007-11-27 2015-12-08 The Boeing Company Alternate parts signature list file
US8930310B2 (en) * 2007-11-27 2015-01-06 The Boeing Company Proxy server for distributing aircraft software parts
US8490074B2 (en) 2007-11-27 2013-07-16 The Boeing Company Aircraft software part library
US8442751B2 (en) 2007-11-27 2013-05-14 The Boeing Company Onboard electronic distribution system
US8683458B2 (en) * 2007-11-30 2014-03-25 Red Hat, Inc. Automatic full install upgrade of a network appliance
US8589592B2 (en) * 2007-12-11 2013-11-19 Red Hat, Inc. Efficient object distribution
US8266260B2 (en) * 2007-12-11 2012-09-11 Sharp Laboratories Of America, Inc. Method and system for updating the software of multiple network nodes
DE102007060990A1 (de) * 2007-12-14 2009-06-18 Codewrights Gmbh Verfahren zum Erzeugen eines anwendungsspezifischen Installationspakets von Geräteobjekten
WO2009137365A1 (en) * 2008-05-05 2009-11-12 Sentilla Corporation, Inc. Efficient broadcast of data in a communication network
US20090287917A1 (en) * 2008-05-19 2009-11-19 Microsoft Corporation Secure software distribution
US8418164B2 (en) 2008-05-29 2013-04-09 Red Hat, Inc. Image install of a network appliance
US20090313352A1 (en) * 2008-06-11 2009-12-17 Christophe Dupont Method and System for Improving the Download of Specific Content
US8503001B2 (en) * 2008-06-18 2013-08-06 Ricoh Company, Ltd. Approach for updating usage information on printing devices
US8930930B2 (en) * 2008-09-04 2015-01-06 International Business Machines Corporation Updating a computer system
US8527614B2 (en) * 2008-10-07 2013-09-03 Ricoh Company, Ltd. Method of deployment of remote patches to business office appliances
US8719811B2 (en) * 2008-10-07 2014-05-06 Ricoh Company, Ltd. Method of causing functions to be executed on business office appliances
US8914783B2 (en) * 2008-11-25 2014-12-16 Fisher-Rosemount Systems, Inc. Software deployment manager integration within a process control system
US8898660B2 (en) * 2008-11-25 2014-11-25 Fisher-Rosemount Systems, Inc. Systems and methods to provide customized release notes during a software system upgrade of a process control system
US8938717B1 (en) * 2009-03-16 2015-01-20 Xilinx, Inc. Updating an installed computer program
US8438558B1 (en) * 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
EP2239659A1 (en) * 2009-04-09 2010-10-13 Siemens Aktiengesellschaft A network device and a system thereof
US8327351B2 (en) * 2009-04-30 2012-12-04 Sap Ag Application modification framework
US8495621B2 (en) * 2009-06-15 2013-07-23 Microsoft Corporation Catalog-based software component management
US8849717B2 (en) * 2009-07-09 2014-09-30 Simon Cooper Methods and systems for upgrade and synchronization of securely installed applications on a computing device
CN101989208A (zh) * 2009-08-04 2011-03-23 鸿富锦精密工业(深圳)有限公司 软件更新方法
US8528037B2 (en) 2009-08-28 2013-09-03 CSC Holdings, LLC Dynamic application loader for set top box
CN101674326B (zh) * 2009-09-21 2012-09-05 中兴通讯股份有限公司 进程间同步通信实现方法及代理单元
US9003387B2 (en) * 2009-09-25 2015-04-07 Fisher-Rosemount Systems, Inc. Automated deployment of computer-specific software updates
US20110113420A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US9176898B2 (en) * 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US8584113B2 (en) * 2009-11-09 2013-11-12 Bank Of America Corporation Cross-updating of software between self-service financial transaction machines
US8972974B2 (en) * 2009-11-09 2015-03-03 Bank Of America Corporation Multiple invocation points in software build task sequence
US20110113416A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Network-Enhanced Control Of Software Updates Received Via Removable Computer-Readable Medium
US20110113421A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Programmatic Creation Of Task Sequences From Manifests
US8397230B2 (en) * 2009-11-09 2013-03-12 Bank Of America Corporation Software updates using delta patching
US9497092B2 (en) 2009-12-08 2016-11-15 Hand Held Products, Inc. Remote device management interface
EP2360581A1 (en) * 2010-01-18 2011-08-24 Thomson Licensing Method, system and device for execution of a software application
US8316120B2 (en) * 2010-02-02 2012-11-20 Microsoft Corporation Applicability detection using third party target state
US20110238572A1 (en) * 2010-03-25 2011-09-29 Bank Of America Corporation Remote Control Of Self-Service Terminal
TW201135594A (en) * 2010-04-08 2011-10-16 Inventec Corp System for updating software using separated modules and method thereof
US9083762B2 (en) * 2010-05-28 2015-07-14 Greg Saunders System and method for providing hybrid on demand services to a work unit
US10102687B1 (en) 2010-08-17 2018-10-16 The Boeing Company Information management system for ground vehicles
US9052976B2 (en) * 2010-11-08 2015-06-09 Mckesson Financial Holdings Methods, apparatuses and computer program products for facilitating efficient deployment of software
US8863114B2 (en) * 2010-12-06 2014-10-14 Red Hat, Inc. Managing software packages using a version control system
US9519600B2 (en) 2011-03-04 2016-12-13 Microsoft Technology Licensing, Llc Driver shimming
US9003363B2 (en) * 2011-03-21 2015-04-07 Microsoft Technology Licensing, Llc Device flags
US8910142B2 (en) 2011-04-13 2014-12-09 Xerox Corporation Method and system to regulate the electronic availability of application software updates based on information collected regarding installation, usage and support for these updates
US8918782B2 (en) * 2011-05-27 2014-12-23 Microsoft Corporation Software image distribution
US8875100B2 (en) * 2011-06-17 2014-10-28 Microsoft Corporation Pattern analysis and performance accounting
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
CN102395149A (zh) * 2011-06-30 2012-03-28 中兴通讯股份有限公司 Mme报文处理方法及装置
US8856582B2 (en) * 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US8930940B2 (en) * 2011-08-19 2015-01-06 Yongyong Xu Online software execution platform
US9037642B2 (en) 2011-08-29 2015-05-19 Fiberlink Communications Corporation Platform for deployment and distribution of modules to endpoints
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US8613101B2 (en) 2011-09-12 2013-12-17 Microsoft Corporation Software distribution service federation
US9253164B2 (en) 2011-09-12 2016-02-02 Microsoft Technology Licensing, Llc Distribution of portions of content
US8726263B2 (en) 2011-09-28 2014-05-13 Microsoft Corporation Detection and installation of software on a per-user basis
US8539123B2 (en) 2011-10-06 2013-09-17 Honeywell International, Inc. Device management using a dedicated management interface
US8621123B2 (en) 2011-10-06 2013-12-31 Honeywell International Inc. Device management using virtual interfaces
US8959504B2 (en) 2011-10-18 2015-02-17 Microsoft Corporation Update scanning
US9053201B2 (en) 2012-02-29 2015-06-09 Microsoft Technology Licensing, Llc Communication with a web compartment in a client application
WO2013138895A1 (en) 2012-03-22 2013-09-26 Irdeto Canada Corporation Updating software components
US8832018B2 (en) * 2012-05-22 2014-09-09 Sap Ag Decision service manager
US9244673B2 (en) 2012-06-08 2016-01-26 Apple Inc. System and method for updating application archive files
US9378026B2 (en) * 2012-07-27 2016-06-28 Daniel A. Dooley Customizable application
KR101199014B1 (ko) * 2012-08-06 2012-11-09 (주)네오위즈게임즈 멀티 프로세스 실행 프로그램 제공 방법, 이를 수행하는 멀티 프로세스 실행 프로그램 제공 서버 및 이를 저장한 기록 매체
RU2495487C1 (ru) * 2012-08-10 2013-10-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ для определения доверия при обновлении разрешенного программного обеспечения
RU2526754C2 (ru) 2012-09-28 2014-08-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ подбора функций управления мобильными устройствами
CN104981774B (zh) * 2013-01-11 2020-09-18 辛纳科尔股份有限公司 背景控制面板配置选择的方法和系统
US9418072B2 (en) * 2013-03-04 2016-08-16 Vmware, Inc. Cross-file differential content synchronization
US9727831B2 (en) 2013-03-15 2017-08-08 Vivint, Inc. Methods for prompting a user to use enhanced automation system features, and systems and devices related thereto
US9665359B2 (en) 2013-09-13 2017-05-30 Microsoft Technology Licensing, Llc Automatically resolving conflicts after installation of selected updates in a computer system
US9830142B2 (en) * 2013-09-13 2017-11-28 Microsoft Technology Licensing, Llc Automatic installation of selected updates in multiple environments
US10026064B2 (en) 2013-09-13 2018-07-17 Microsoft Technology Licensing, Llc Automatically recommending updates based on stored lifecycle information
US9626176B2 (en) 2013-09-13 2017-04-18 Microsoft Technology Licensing, Llc Update installer with technical impact analysis
US9069641B2 (en) * 2013-09-17 2015-06-30 Blackberry Limited Updating firmware on mobile devices
GB2519790B (en) * 2013-10-30 2017-07-12 1E Ltd Configuration of network devices
JP6432127B2 (ja) * 2013-11-12 2018-12-05 株式会社リコー 通信装置、通信システム、通信方法及び通信プログラム
JP2015103105A (ja) * 2013-11-26 2015-06-04 株式会社リコー 通信装置、通信システム、及び通信プログラム
US10120667B2 (en) * 2014-04-30 2018-11-06 Schneider Electric Industries Sas Systems and methods for delivering and accessing software components
RU2595529C2 (ru) * 2014-05-29 2016-08-27 Общество С Ограниченной Ответственностью "Яндекс" Способ селективной загрузки набора модулей, электронное устройство и носитель данных
WO2016007563A1 (en) 2014-07-07 2016-01-14 Symphony Teleca Corporation Remote Embedded Device Update Platform Apparatuses, Methods and Systems
US20160098259A1 (en) * 2014-10-02 2016-04-07 The Boeing Company Software Aircraft Part Installation System
US10318271B2 (en) 2015-01-05 2019-06-11 Irdeto Canada Corporation Updating software components in a program
US9921823B2 (en) 2015-01-09 2018-03-20 Garmin International, Inc. Line replacement unit (LRU) replacement process
JP6478026B2 (ja) * 2015-01-28 2019-03-06 株式会社リコー 情報処理装置、プログラム、及び記録媒体
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US20160350099A1 (en) * 2015-05-29 2016-12-01 Hewlett Packard Enterprise Development Lp Application deployment to virtual machines
US10042626B2 (en) * 2015-06-29 2018-08-07 Verizon Patent And Licensing Inc. Software updates using client self-reporting and a hierarchical data structure
US10250600B2 (en) * 2015-07-27 2019-04-02 International Business Machines Corporation Updating database drivers for client applications through a database server push
US9740473B2 (en) 2015-08-26 2017-08-22 Bank Of America Corporation Software and associated hardware regression and compatibility testing system
US20170090910A1 (en) * 2015-09-29 2017-03-30 International Business Machines Corporation Mobile device application installation with performance enhancement
US9697269B2 (en) * 2015-10-29 2017-07-04 Dropbox, Inc. Content item block replication protocol for multi-premises hosting of digital content items
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US10382312B2 (en) 2016-03-02 2019-08-13 Fisher-Rosemount Systems, Inc. Detecting and locating process control communication line faults from a handheld maintenance tool
US10554644B2 (en) 2016-07-20 2020-02-04 Fisher-Rosemount Systems, Inc. Two-factor authentication for user interface devices in a process plant
US11605037B2 (en) 2016-07-20 2023-03-14 Fisher-Rosemount Systems, Inc. Fleet management system for portable maintenance tools
US10599134B2 (en) * 2016-07-22 2020-03-24 Fisher-Rosemount Systems, Inc. Portable field maintenance tool configured for multiple process control communication protocols
US10374873B2 (en) 2016-07-22 2019-08-06 Fisher-Rosemount Systems, Inc. Process control communication between a portable field maintenance tool and a process control instrument
US10585422B2 (en) 2016-07-22 2020-03-10 Fisher-Rosemount Systems, Inc. Portable field maintenance tool system having interchangeable functional modules
US10270853B2 (en) 2016-07-22 2019-04-23 Fisher-Rosemount Systems, Inc. Process control communication between a portable field maintenance tool and an asset management system
US10375162B2 (en) 2016-07-22 2019-08-06 Fisher-Rosemount Systems, Inc. Process control communication architecture
US10505585B2 (en) 2016-07-25 2019-12-10 Fisher-Rosemount Systems, Inc. Portable field maintenance tool with a bus for powering and communicating with a field device
US10481627B2 (en) 2016-07-25 2019-11-19 Fisher-Rosemount Systems, Inc. Connection check in field maintenance tool
US10764083B2 (en) 2016-07-25 2020-09-01 Fisher-Rosemount Systems, Inc. Portable field maintenance tool with resistor network for intrinsically safe operation
CN106372139A (zh) * 2016-08-27 2017-02-01 乐视控股(北京)有限公司 操作通知的生成方法、前台数据的更新方法及数据库系统
US10572240B2 (en) 2016-12-19 2020-02-25 Vmware Inc. Operating system update management for enrolled devices
US10262124B2 (en) 2017-01-18 2019-04-16 Bank Of America Corporation Autonomous software containers
US10362166B2 (en) 2017-03-01 2019-07-23 At&T Intellectual Property I, L.P. Facilitating software downloads to internet of things devices via a constrained network
US10467842B2 (en) 2017-03-17 2019-11-05 Bank Of America Corporation Portable item transfer container
CN107025121B (zh) * 2017-03-31 2020-10-09 Oppo广东移动通信有限公司 软件升级方法、装置和电子装置
CN107172143A (zh) * 2017-05-12 2017-09-15 郑州云海信息技术有限公司 一种服务器集群中的软件同步方法及装置
US11726822B2 (en) 2017-06-05 2023-08-15 Umajin Inc. Systems and methods for providing digital twin-enabled applications
US11188390B2 (en) * 2017-06-05 2021-11-30 Umajin Inc. Method for configuring a server kit by a server management system
US12001917B2 (en) 2017-06-05 2024-06-04 Umajin Inc. Hub-and-spoke classification system and methods
US11922564B2 (en) 2017-06-05 2024-03-05 Umajin Inc. Generative content system that supports location-based services and methods therefor
US11954486B2 (en) 2017-06-05 2024-04-09 Umajin Inc. Location tracking system and methods
US10496398B2 (en) * 2017-07-25 2019-12-03 Aurora Labs Ltd. Hot updates to ECU software using tool chain
US10503495B2 (en) * 2017-08-02 2019-12-10 Accenture Global Solutions Limited Component management platform
KR102417004B1 (ko) * 2017-09-19 2022-07-07 삼성전자주식회사 전자 장치의 소프트웨어의 업데이트를 관리하기 위한 장치 및 방법
US10956143B2 (en) * 2017-12-06 2021-03-23 Hewlett Packard Enterprise Development Lp Server updates
US10993274B2 (en) 2018-03-30 2021-04-27 Apple Inc. Pairing devices by proxy
US11297369B2 (en) 2018-03-30 2022-04-05 Apple Inc. Remotely controlling playback devices
US10783929B2 (en) 2018-03-30 2020-09-22 Apple Inc. Managing playback groups
CN108874319B (zh) * 2018-06-27 2021-06-29 郑州云海信息技术有限公司 一种元数据更新方法、装置、设备及可读存储介质
US10614857B2 (en) 2018-07-02 2020-04-07 Apple Inc. Calibrating media playback channels for synchronized presentation
CN109857414B (zh) * 2019-01-22 2022-05-17 上海微小卫星工程中心 卫星软件扩散方法和系统
US11140086B2 (en) 2019-08-15 2021-10-05 At&T Intellectual Property I, L.P. Management of background data traffic for 5G or other next generations wireless network
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
CN111026735B (zh) * 2019-12-10 2023-03-21 腾讯科技(深圳)有限公司 一种数据传输方法、装置、设备及介质
KR20230103774A (ko) * 2021-12-31 2023-07-07 엘지전자 주식회사 가전기기, 가전기기 업그레이드 방법 및 가전기기 업그레이드 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11272454A (ja) * 1998-01-28 1999-10-08 Internatl Business Mach Corp <Ibm> コンピュ―タ・ネットワ―クを通してソフトウエア更新を配布する装置
JP2001508575A (ja) * 1997-11-12 2001-06-26 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ソフトウェア更新マネージャ

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5047928A (en) * 1986-10-24 1991-09-10 Wiedemer John D Billing system for computer software
US5155680A (en) * 1986-10-24 1992-10-13 Signal Security Technologies Billing system for computing software
US4796181A (en) 1986-10-24 1989-01-03 Wiedemer John D Billing system for computer software
US5155847A (en) * 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US5142680A (en) * 1989-04-26 1992-08-25 Sun Microsystems, Inc. Method for loading an operating system through a network
CA2053261A1 (en) * 1989-04-28 1990-10-29 Gary D. Hornbuckle Method and apparatus for remotely controlling and monitoring the use of computer software
US5473772A (en) * 1991-04-02 1995-12-05 International Business Machines Corporation Automatic update of static and dynamic files at a remote network node in response to calls issued by or for application programs
US5267171A (en) * 1990-03-29 1993-11-30 Brother Kogyo Kabushiki Kaisha Computer software vending machine
JPH0792744B2 (ja) * 1990-08-20 1995-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション 多重レベル適用業務ソフトウェアをデータ処理装置にインストールする方法。
US5155484A (en) * 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
AU662805B2 (en) * 1992-04-06 1995-09-14 Addison M. Fischer A method for processing information among computers which may exchange messages
US5528490A (en) * 1992-04-10 1996-06-18 Charles E. Hill & Associates, Inc. Electronic catalog system and method
US5586322A (en) * 1992-06-11 1996-12-17 Beck; Robert E. Workgroup organized network manager with workstation comparison system
US5359730A (en) * 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
US5495411A (en) * 1993-12-22 1996-02-27 Ananda; Mohan Secure software rental system using continuous asynchronous password verification
US5421009A (en) * 1993-12-22 1995-05-30 Hewlett-Packard Company Method of remotely installing software directly from a central computer
US6038586A (en) * 1993-12-30 2000-03-14 Frye; Russell Automated software updating and distribution
US5694546A (en) * 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
US5586304A (en) * 1994-09-08 1996-12-17 Compaq Computer Corporation Automatic computer upgrading
US5654901A (en) * 1995-01-30 1997-08-05 Telefonaktiebolaget Lm Ericsson Loading software into field test equipment
US5884323A (en) * 1995-10-13 1999-03-16 3Com Corporation Extendible method and apparatus for synchronizing files on two different computer systems
US5845077A (en) * 1995-11-27 1998-12-01 Microsoft Corporation Method and system for identifying and obtaining computer software from a remote computer
KR100286008B1 (ko) * 1995-12-30 2001-04-16 윤종용 소프트웨어 프로그램 자동 갱신방법
US6049671A (en) * 1996-04-18 2000-04-11 Microsoft Corporation Method for identifying and obtaining computer software from a network computer
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6643506B1 (en) * 1996-08-07 2003-11-04 Telxon Corporation Wireless software upgrades with version control
GB9623298D0 (en) * 1996-11-08 1997-01-08 Int Computers Ltd Updating mechanism for software
US6347398B1 (en) * 1996-12-12 2002-02-12 Microsoft Corporation Automatic software downloading from a computer network
US5922072A (en) * 1997-01-03 1999-07-13 Ncr Corporation Method and apparatus for creating alternate boot environments in a computer
US6035423A (en) * 1997-12-31 2000-03-07 Network Associates, Inc. Method and system for providing automated updating and upgrading of antivirus applications using a computer network
US6202207B1 (en) * 1998-01-28 2001-03-13 International Business Machines Corporation Method and a mechanism for synchronized updating of interoperating software
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6330715B1 (en) * 1998-05-19 2001-12-11 Nortel Networks Limited Method and apparatus for managing software in a network system
US6381742B2 (en) 1998-06-19 2002-04-30 Microsoft Corporation Software package management
KR20000041146A (ko) * 1998-12-21 2000-07-15 구자홍 네트워크 컴퓨터의 소프트웨어 업데이트 방법
US6286138B1 (en) * 1998-12-31 2001-09-04 International Business Machines Corporation Technique for creating remotely updatable programs for use in a client/server environment
US6401239B1 (en) * 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
US6490722B1 (en) * 1999-03-30 2002-12-03 Tivo Inc. Software installation and recovery system
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
US6425126B1 (en) * 1999-05-19 2002-07-23 International Business Machines Corporation Apparatus and method for synchronizing software between computers
JP2001067232A (ja) * 1999-08-31 2001-03-16 Hitachi Ltd ソフトウエアの配信システムおよびソフトウエアの受信端末装置
JP2001075785A (ja) * 1999-09-09 2001-03-23 Nec Corp データ更新システム
US6493871B1 (en) * 1999-09-16 2002-12-10 Microsoft Corporation Method and system for downloading updates for software installation
KR20010076025A (ko) * 2000-01-24 2001-08-11 이승룡 지정 클라이언트만의 사용을 위한 컴퓨터네트워크상에서의 암호화 파일 전송 방법
US7035878B1 (en) * 2000-01-25 2006-04-25 Fusionone, Inc. Base rolling engine for data transfer and synchronization system
US6751794B1 (en) * 2000-05-25 2004-06-15 Everdream Corporation Intelligent patch checker
GB0017336D0 (en) * 2000-07-15 2000-08-30 Ibm Preferable modes of software package deployment
US7035912B2 (en) * 2000-08-28 2006-04-25 Abaco.P.R., Inc. Method and apparatus allowing a limited client device to use the full resources of a networked server
US20020112230A1 (en) * 2000-12-07 2002-08-15 Scott John Charles Software update management system with update chronology generator
US7574481B2 (en) * 2000-12-20 2009-08-11 Microsoft Corporation Method and system for enabling offline detection of software updates
US7051327B1 (en) * 2001-05-08 2006-05-23 Gateway Inc. System for providing data backup and restore with updated version by creating data package based upon configuration data application data and user response to suggestion
KR20030016073A (ko) * 2001-08-20 2003-02-26 엘지전자 주식회사 웹 상에서 쿠키를 통한 사용자 인증 방법 및 인증 시스템
US7761535B2 (en) * 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US7257649B2 (en) * 2001-09-28 2007-08-14 Siebel Systems, Inc. Method and system for transferring information during server synchronization with a computing device
US7115919B2 (en) * 2002-03-21 2006-10-03 Hitachi, Ltd. Storage system for content distribution
US20030195951A1 (en) * 2002-04-12 2003-10-16 Wittel Walter I. Method and system to dynamically detect, download and install drivers from an online service
US6966058B2 (en) * 2002-06-12 2005-11-15 Agami Systems, Inc. System and method for managing software upgrades in a distributed computing system
US7478385B2 (en) * 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US20050050142A1 (en) * 2003-08-28 2005-03-03 Aligo Inc. Method and framework for transaction synchronization
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7853609B2 (en) * 2004-03-12 2010-12-14 Microsoft Corporation Update distribution system architecture and method for distributing software

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001508575A (ja) * 1997-11-12 2001-06-26 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ソフトウェア更新マネージャ
JPH11272454A (ja) * 1998-01-28 1999-10-08 Internatl Business Mach Corp <Ibm> コンピュ―タ・ネットワ―クを通してソフトウエア更新を配布する装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619244B2 (en) 2014-09-05 2017-04-11 Xiaomi Inc. Method and system for upgrading an electronic device

Also Published As

Publication number Publication date
CA2501499A1 (en) 2005-06-15
RU2005116849A (ru) 2006-01-20
WO2005060387A2 (en) 2005-07-07
RU2365983C2 (ru) 2009-08-27
AU2004279162B8 (en) 2010-04-08
WO2005060387A3 (en) 2009-04-02
EP1579301B1 (en) 2018-08-29
EP1579301A4 (en) 2009-11-11
MXPA05006615A (es) 2005-10-21
US7478381B2 (en) 2009-01-13
KR20060109284A (ko) 2006-10-19
EP1579301A2 (en) 2005-09-28
AU2004279162A1 (en) 2005-06-30
JP4871138B2 (ja) 2012-02-08
CN101410800B (zh) 2011-07-13
KR101130367B1 (ko) 2012-03-28
US20050132349A1 (en) 2005-06-16
CN101410800A (zh) 2009-04-15
BRPI0406412A (pt) 2005-10-04
AU2004279162B2 (en) 2010-03-04

Similar Documents

Publication Publication Date Title
JP4914220B2 (ja) ソフトウェアアップデートのための通信方法およびシステム
JP4871138B2 (ja) ソフトウェアアップデートのための通信方法
JP4800968B2 (ja) デルタパッチを利用してファイルをアップデートするための方法
KR101098621B1 (ko) 네트워킹된 환경에서 설치 컴포넌트들을 업데이트하는시스템 및 방법
US7676448B2 (en) Controlling installation update behaviors on a client computer
US20050203968A1 (en) Update distribution system architecture and method for distributing software

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070723

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110204

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110502

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111025

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: 20111115

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: 20111118

R150 Certificate of patent or registration of utility model

Ref document number: 4871138

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141125

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