(57)【特許請求の範囲】
【請求項１】
複数のソフトウェアベンダーから提供される複数のソフトウェア製品に関するソフトウェア更新を少なくとも１つのユーザコンピュータへ提供するために、コンピュータで実施される方法であって、
複数のソフトウェアベンダーから提供される複数のソフトウェア製品の各ソフトウェア更新について該ソフトウェア更新を記憶しているコンピュータシステムのネットワーク位置を含む情報を有するデータベースをサービスプロバイダーコンピュータ上に有するものにおいて、
前記ユーザコンピュータが、前記データベースのうちの少なくとも一部を前記サービスプロバイダーコンピュータからダウンロードするステップと、
前記ユーザコンピュータが、該ユーザコンピュータにインストールされているソフトウェア製品に関連するソフトウェア更新を判定するステップと、
前記ユーザコンピュータが、前記ユーザコンピュータにインストールされているソフトウェア製品に関連するものと判定されたソフトウェア更新のリストをユーザに対して表示するステップと、
前記ユーザコンピュータが、表示された前記ソフトウェア更新のリストの中から少なくとも１つのインストール可能なソフトウェア更新を選択するユーザ選択を受け取るステップと、
前記ユーザコンピュータが、選択されたソフトウェア更新を前記データベースのダウンロードされた部分の中に指定されたネットワーク位置にあるコンピュータシステムから前記ユーザコンピュータへダウンロードするステップと、
前記ユーザコンピュータが、ダウンロードされた前記ソフトウェア更新を前記ユーザコンピュータにインストールするステップと、
からなる方法。
【請求項２】
前記データベースは、各ソフトウェア更新について該ソフトウェア更新をユーザコンピュータにインストールするためのインストール手順を含み、
前記ソフトウェア更新をユーザコンピュータにインストールするステップは、前記データベースの中で前記ソフトウェア更新に対して指定されたインストール手順に従って、前記ソフトウェア更新を前記ユーザコンピュータにインストールすることからなる、請求項１の方法。
【請求項３】
前記インストール手順は、ソフトウェア更新のファイルフォーマットごとに指定される、請求項２の方法。
【請求項４】
複数のソフトウェアベンダーから提供される複数のソフトウェア製品に関するソフトウェア更新を少なくとも１つのユーザコンピュータへ提供するために、コンピュータで実施される方法であって、
複数のソフトウェアベンダーから提供される複数のソフトウェア製品の各ソフトウェア更新について該ソフトウェア更新を記憶しているコンピュータシステムのネットワーク位置を含む情報を有するデータベースをサービスプロバイダーコンピュータ上に有し、
前記ユーザコンピュータが、前記データベースのクライアントアプリケーションを有し、該クライアントアプリケーションを定期的に起動するものにおいて、
前記クライアントアプリケーションにより、
前記ユーザコンピュータと前記サービスプロバイダコンピュータとの間にネットワークを介した通信リンクを確立するステップと、
前記データベースのうちの少なくとも一部を前記ユーザコンピュータに自動的にダウンロードするステップと、
前記ユーザコンピュータ上で、前記ユーザコンピュータにインストールされているソフトウェア製品に関連するソフトウェア更新を自動的に判定するステップと、
前記ユーザコンピュータが、前記ユーザコンピュータにインストールされているソフトウェア製品に関連するものと判定されたソフトウェア更新のリストをユーザに対して表示するステップと、
前記ユーザコンピュータが、表示された前記ソフトウェア更新のリストの中から少なくとも１つのインストール可能なソフトウェア更新を選択するユーザ選択を受け取るステップと、
選択されたソフトウェア更新を前記データベースのダウンロードされた部分の中に指定されたネットワーク位置にあるコンピュータシステムから前記ユーザコンピュータへダウンロードするステップと、
ダウンロードされた前記ソフトウェア更新を前記ユーザコンピュータにインストールするステップと
を実施することを含む、方法。
【請求項５】
前記データベースは、各ソフトウェア更新について該ソフトウェア更新を前記ユーザコンピュータにインストールするためのインストール手順を含み、
前記クライアントアプリケーションは、前記ユーザコンピュータに、前記データベースの中で前記ソフトウェア更新に対して指定されたインストール手順に従って、前記ソフトウェア更新を前記ユーザコンピュータにインストールさせる、請求項４の方法。
【請求項６】
前記インストール手順は、ソフトウェア更新のファイルフォーマットごとに指定される、請求項５の方法。
【請求項７】
前記サービスプロバイダーコンピュータが、前記ソフトウェア更新のファイルフォーマット、前記ソフトウェア更新を記憶しているコンピュータシステムのネットワーク位置、及び前記ソフトウェア更新をインストールするためのインストール手順を含む、ソフトウェア製品のソフトウェア更新に関連する情報を、ソフトウェアベンダーのコンピュータシステムから受信するステップと、
前記サービスプロバイダーコンピュータが、受信した前記情報を前記データベースに記憶するステップと、
を含む、請求項４の方法。
【請求項８】
前記ソフトウェア更新をユーザコンピュータにインストールするステップは、
前記クライアントアプリケーションが、前記データベースから前記ソフトウェア更新のファイルフォーマットを判定するステップと、
前記クライアントアプリケーションが、ダウンロードされた前記ソフトウェア更新に対して指定されたインストール手順を実行するステップと、
を含む、請求項７の方法。
【請求項９】
前記データベースは、様々なソフトウェアベンダーの複数のソフトウェア製品について、該ソフトウェア製品のプロモーション情報を該プロモーション情報のネットワーク位置に関連付けて有し、
前記クライアントアプリケーションは自動的に、前記ユーザコンピュータにインストールされたソフトウェア製品に関連するプロモーション情報を判定し、該プロモーション情報を該プロモーション情報に関連付けられたネットワーク位置にあるコンピュータシステムからダウンロードする、請求項４の方法。
【請求項１０】
前記選択されたソフトウェア更新をデータベースの中に指定されたネットワーク位置にあるコンピュータシステムからユーザコンピュータへダウンロードするステップを実施する際に、前記サービスプロバイダコンピュータは、前記ユーザコンピュータから前記サービスプロバイダコンピュータへの接続時間の合計と、ダウンロードされたソフトウェア更新の合計数とを前記サービスプロバイダコンピュータのデータベースに記録し、記録された接続時間及びソフトウェア更新の合計数に基づくサービス料を、前記サービスプロバイダコンピュータのデータベースに事前に登録されたユーザのクレジットカードに課金する、請求項４の方法。
【請求項１１】
前記選択されたソフトウェア更新をデータベースの中に指定されたネットワーク位置にあるコンピュータシステムからユーザコンピュータへダウンロードするステップは、ダウンロードされたソフトウェア更新が認証されたものであり、改悪されていないことを検証するステップを含む、請求項４の方法。
【請求項１２】
前記ダウンロードされたソフトウェア更新をユーザコンピュータにインストールするステップは、
インストール中に前記ユーザコンピュータに対して行なわれたファイル及びディレクトリに対する変更を監視するステップと、
インストール後に前記ユーザコンピュータ上のファイル及びディレクトリに対する各変更について該変更の履歴を記述するデータを記憶するステップと、
記憶された前記データを前記ソフトウェア更新に関連するデータとして圧縮ファイルに圧縮するステップと、
を含む、請求項４の方法。
【請求項１３】
前記ユーザコンピュータが、前記ユーザコンピュータから除去すべきインストール済みソフトウェア更新のユーザ選択を受け取るステップと、
前記ユーザコンピュータが、選択されたインストール済みソフトウェア更新に関連する圧縮ファイルを前記ユーザコンピュータから検索するステップと、
前記ユーザコンピュータが、前記圧縮ファイルからデータを復元し、該データに記述された変更を元に戻すことにより、前記ユーザコンピュータを前記ソフトウェア更新をインストールする前の状態に復元するステップと、
をさらに含む、請求項１２の方法。
【請求項１４】
前記ダウンロードされたソフトウェア更新をユーザコンピュータにインストールするステップは、
前記ユーザコンピュータに存在するファイルを消去または変更するか、それとも前記ユーザコンピュータに新たなファイルを追加するかを判定するステップと、
ファイルを消去する場合、該ファイルのコピーを前記ユーザコンピュータに保存した後、該ファイルを消去するステップと、
過去に変更されたことがないファイルを変更する場合、該ファイルのコピーを保存した後、該ファイルを変更するステップと、
前記ユーザコンピュータに新たなファイルを追加する場合、該ファイルのパス名を記憶した後、該ファイルを前記ユーザコンピュータに追加するステップと、
コピーされた前記ファイル及び記憶された前記パス名を、インストールされた前記ソフトウェア更新に関連する少なくとも１つの圧縮ファイルに格納するステップと、
を含む、請求項４の方法。
【請求項１５】
前記ユーザコンピュータから除去すべきインストール済みのソフトウェア更新の選択を受け取るステップと、
選択されたインストール済みのソフトウェアに関連する圧縮ファイルを検索するステップと、
前記圧縮ファイルに格納されたパス名に従って、インストールの際に追加されたファイルを消去するステップと、
コピーされた前記ファイルから、インストールの際に消去または変更されたファイルを復元するステップと、
をさらに含む、請求項１４の方法。
【請求項１６】
前記ユーザコンピュータにインストールされているソフトウェア製品に関連するソフトウェア更新を自動的に判定するステップは、
前記ユーザコンピュータにインストールされている各ソフトウェア製品を識別するステップと、
前記インストールされている各ソフトウェア製品のバージョンを判定するステップと、
前記ユーザコンピュータ上にインストールされているソフトウェア製品のバージョンよりも新しいバージョンを有する該ソフトウェア製品に関連するソフトウェア更新を前記データベースから識別するステップと、
を含む、請求項４の方法。
【請求項１７】
前記各ソフトウェア製品を識別するステップは、ソフトウェア製品間を区別するためのルールを用いて、同じ名前を持つ２つのソフトウェア製品を一意に識別するステップを含む、請求項１６の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータ・ベースの顧客支援に関するシステム及び方法に関し、より詳しくは、複数のエンドユーザ、クライアント・コンピュータ・システムに関して、様々なソフトウエア・ベンダ−からのソフトウエア製品を自動的に更新するシステム、方法、及び製品に関する。
【０００２】
【従来の技術】
通常のパーソナル・コンピュータは、オペレーティング・システム・ファイル、ユーティリティ、アプリケーション、及びデバイス・ドライバ、コード・ライブラリ、及びコンピュータが読み取り可能で実行可能な形式の他の情報といった、ソフトウエア製品の様々なカテゴリーを含んでいる。アプリケーションのような、こうした幾つかのカテゴリにおいて、パーソナル・コンピュータは多くの様々なサブ・カテゴリーのプログラムを含むことができる。例えば、ユーザは１つ又は２つのワード・プロセッサ、幾つかのグラフィック・アプリケーション、及び多くのゲームを有することができる。こうした製品の殆どは、異なるソフトウエア・ベンダのものである。ここで用いる「ソフトウエア・ベンダ」という語は、ソフトウエア製品を配布する任意のエンティティを含み、そのエンティティはまた、ハードウエア又は他の非ソフトウエア製品を製造し、配布することもある。こうしたソフトウエア・ベンダは、新しい機能を加えたり、既知の問題を解決することによってその製品を頻繁に改良し、これらのソフトウエアをそのユーザが利用できるように更新する。この更新は、無料の場合もあれば有料で行われる場合もある。
【０００３】
【発明が解決しようとする課題】
こうしたユーザに対する更新を提供するにあたって、ベンダとユーザは少なくとも３つの重大な問題に直面する。第１に、ベンダは彼らの製品のユーザに更新が可能であることを知らせる際の困難さとそのコストに直面し、ユーザはどの更新が入手可能か確認しようとする際に同様の困難を経験する。ベンダは通常、登録ユーザに葉書を郵送し、関連する商業ジャーナル及び雑誌に広告記事を載せ、その他の促進活動を進める。
【０００４】
こうした努力の全てをもってしても、多くのユーザは、彼らが問題に直面し、ベンダの技術支援組織に接するまで、彼らのシステムに対して多くのソフトウエア更新が入手可能であることに気づかない。他のユーザも、技術的な問題を解決するために、インターネットやオンライン・サービスを検索することによって、更新に関して知るだけである。全てのソフトウエア製品の更新に関する問題の重要性を分解すること自体が非常に困難である場合がある。ユーザが、コンピュータに多くのベンダから多くのソフトウエア製品を導入したとすると、ユーザが、更新が可能なのは多くのソフトウエア製品のうちどれかということを判定するために、入手可能な配布チャネル、ジャーナル、インターネット・フォーラム等を全て頻繁に監視することは、不可能に近い。
【０００５】
例えば、ベンダの幾つかは、ワールド・ワイド・ウエブや電子掲示板（BBS）上に、現在の更新及び製品に関する情報を含むサイトを有しており、ユーザがこうした更新をダウンロードできるようになっている。しかし、こうしたサイトは明確に単一のベンダに占有されており、そのソフトウエア・ベンダの製品のみに関する情報を提供し、所与のユーザが対象としうる他の多くのベンダの製品に関する情報は明らかにない。従って、ユーザはインターネット、及び可能であればオンライン・サービスを検索して、どのベンダがこういったサイトを有しているか判定しなければならない。ユーザはこれらのサイトを個々に訪れて、どのソフトウエア更新がそのサイトのそれぞれから入手可能かを判定しなければならないであろう。同様に、幾つかのオンライン・サービスが、ユーザが入手可能な更新に関して知ることができるフォーラム又は他の機構を含んでいても、ユーザは懸命にこの情報を探し出さなければならず、これは依然としてユーザの負担である。Exite、Yahoo、Lycos、及びInfoseekなどのインターネットのディレクトリ又はサーチ・エンジンは、単にソフトウエア・ベンダへのリンクを提供するだけであるが、一般にどのソフトウエア更新が入手可能かをシステム的に判定し、この情報をユーザに提供し、単独でユーザのマシンに実際にソフトウエアの更新を行うものではない。
【０００６】
別の問題は、一度でも更新が識別されると、それをユーザのコンピュータにインストールする必要があるということである。多くのユーザがメール・オーダー等でソフトウエア更新を購入し、それをフロッピーディスクで受け取る。他には、ユーザはソフトウエア・ベンダのコンピュータ、又はオンライン・サービスからインターネットを介してソフトウエア更新をダウンロードすることができる。これらのケースの幾つかにおいては、単一の更新をインストールするのが退屈で、時間がかかり、様々なフォーマットとインストール手順が要求されているためにエラーの多い処理となる可能性がある。ユーザのシステム上の多くのソフトウエア製品全てに関する更新を、通常の基準でインストールすることは、通常のユーザにとってはより困難で、時間のかかる作業でさえある。
【０００７】
最後に、多くのユーザはプライバシーに関する懸念を持っており、１つ又は複数のベンダに対してソフトウエア構成に関する完全な情報を開示することに抵抗を示すことが多い。しかし、単一のベンダであっても、そのベンダの製品のどれがユーザのコンピュータ・システム上にインストールされているという情報、及びシステム構成情報が、どの更新がそのユーザのコンピュータ・システムに適用可能かを判定するのに必要である。例えば、ベンダＡの会計プログラムに対するあるソフトウエア更新は、ユーザがベンダＢのプリンタを有していれば適用可能で、ユーザのプリンタがベンダＣであれば異なるソフトウエア更新が適用可能である。ユーザが各ベンダに彼らのシステムについての全ての構成要素を知らせたくても、この構成情報は、正しいソフトウエア更新のインストールを保証するために必要である。更に、ユーザは、彼らのコンピュータ・システム内に常駐するソフトウエア構成要素の概略を記述した単一ベンダの記憶情報の予想に抵抗を示す。
【０００８】
要するに、個々のベンダの立場からは、問題は、タイムリーに及び有効な基準でソフトウエアに対する更新の可用性を識別し、それをベンダのソフトウエアの全てのユーザに知らせ、適切なソフトウエア更新がインストールされることを保証することである。個々のユーザの立場からは、問題はシステム的に、及び簡単に、どの更新がユーザのシステム上の全てのソフトウエアに対して現在入手可能かを識別することである。
【０００９】
従って、多くの様々なソフトウエア・ベンダからのソフトウエア更新のどれが現在入手可能であるか、及び所与のユーザのコンピュータ・システムにはどれが適用可能かを自動的に判定し、ユーザ・コンピュータ上に、こうした更新のうちユーザが選択した更新をインストールするシステムを提供することが好ましい。更に、システム・プロファイル情報を取得し記憶することによって、ユーザのプライバシーを侵害することのないシステムを提供することが好ましい。
【００１０】
【課題を解決するための手段】
本発明の１態様によれば、多くの様々なソフトウエア・ベンダから、多くのエンド・ユーザのコンピュータ・システム上にソフトウエア構成要素を自動的に更新するシステム、及び方法が提供される。このシステムは、多くの様々なソフトウエア・ベンダによって作成された多くのソフトウエア製品に関するソフトウエア更新情報を記憶する、少なくとも１つのデータベースを含む。このデータベースはサービス・プロバイダのコンピュータ・システム上でサービス・プロバイダによって保持される。代替的には、このデータベースは、サービス・プロバイダと関連のある、ソフトウエア製品の１組のソフトウエア・ベンダによって保持される。データベース内のソフトウエア更新情報は、ソフトウエア更新プログラム又はファイル、ソフトウエア・ベンダのコンピュータ・システムにおけるそれらのネットワーク位置、及びどのコンピュータ・システムがそのネットワークを介してサービス・プロバイダのコンピュータ・システムに接続されるかを指定している。データベースは更に、ユーザのコンピュータにソフトウエア更新をインストールするためのインストール手順を記述した情報を記憶している。
【００１１】
好適実施例では、ネットワークは多くの様々なソフトウエア・ベンダのコンピュータ・システムが接続されたインターネットであり、それらのソフトウエアの更新を可能にするものである。ソフトウエア更新情報で提供されるネットワーク位置は、１つ又は複数のユニバーサル資源位置（URL）によって指定される。従って、更新データベースはソフトウエア更新自体を記憶していないが、元のベンダのコンピュータ・システムからソフトウエアをアクセスするのに使用される情報を記憶している。更に、ソフトウエア更新情報は、ソフトウエア更新をインストールするのに必要な特定のインストール・プログラム又は動作と関連づけられたフォーマットの記述を含む。
【００１２】
ユーザのコンピュータ毎の、即ち同じ意味でクライアント・コンピュータ毎の、本発明の一実施例に基づく動作によって、サービス・プロバイダのコンピュータ・システムの更新データベースにネットワークを介して周期的に接続するクライアント・アプリケーションが提供される。クライアント・アプリケーションは、クライアント・コンピュータにデータベースの一部を、好ましくはデータベースのミラー部分を更新するために、自動的にダウンロードする。クライアント・データベースから、クライアント・アプリケーションは、どのソフトウエア更新が適用可能か、又はユーザのコンピュータに関連するかを判定する。このことは、まずクライアント・コンピュータにインストールされている製品を判定し、そのそれぞれに対して、クライアント・コンピュータにインストールされているソフトウエア製品のバージョンより新しい入手可能な更新があるかどうかを判定することによって行われることが好ましい。この適用可能なソフトウエア更新はユーザに対して示される。
【００１３】
ユーザはクライアント・コンピュータにインストールするための様々なソフトウエア更新を選択する。次にクライアント・アプリケーションか、サービス・プロバイダのコンピュータのどちらかがデータベースに指定されたネットワーク位置を使用してソフトウエア・ベンダのコンピュータ・システムに接続し、ソフトウエア更新をそこからクライアント・コンピュータにダウンロードする。クライアント・アプリケーションはフォーマット情報を使用して、そのソフトウエア更新に関連する適当なインストール手順を判定し、そのソフトウエア更新を適当なインストール手順を使用してインストールする。インストール手順の間、クライアント・アプリケーションは、ファイルやディレクトリの削除、追加、又は変更といった、クライアント・コンピュータになされる全ての変更を監視する。クライアント・アプリケーションはこれらの変更の前に、クライアント・コンピュータの状態を記憶する。このことは、変更や削除がなされるファイルのコピーを保存することによって行われ、追加されるファイルやディレクトリのパス名はない。インストールが完了すると、コピーされたファイルなどの記憶された状態情報は圧縮され、保管され、今インストールされたソフトウエア更新に関連するものとして示される。この記憶された状態情報は、クライアント・アプリケーションにアンドゥ(undo)をさせ、クライアント・コンピュータが、インストール前の状態に復旧すること可能とし、これは削除や変更された全てのファイルを復旧させることも含む。複数のインストールの複数のアンドゥも達成されうる。
【００１４】
ベンダがソフトウエア更新に課金を行う場合、サービス・プロバイダのコンピュータは、ソフトウエア・ベンダのコンピュータとクライアント・コンピュータの中間に存在して、ユーザによるソフトウエア・ベンダへの電子支払いを可能にする。電子支払いが認証されると、クライアント・アプリケーションはソフトウエア更新をダウンロードし、上述のインストールを完了する。更に、サービス・プロバイダのコンピュータは、ソフトウエア更新を認証し、例えば、コンピュータ・ウイルスによって改悪されていないことを保証するためのチェックを行うことができる。
【００１５】
サービス・プロバイダは、周期的に更新データベースを更新し、ソフトウエア更新の位置を正確に識別し、データベースに含めるための新しいソフトウエア更新又は新しい製品を識別すること等を保証するためにURL情報を監視する。
【００１６】
上記システムは、多くのユーザが周期的かつ自動的に、様々なソフトウエア・ベンダから単一の更新機構を介して、ソフトウエア製品を彼らのコンピュータ上で更新することができるようにする。ユーザは、現在入手可能な更新を識別するために、多くの時間と労力を費やす必要がなく、手動で（電子的であってさえも）ソフトウエア更新を取得し、インストールし、コンピュータ・システムを適切に構成する潜在的に困難な手順に関わる必要がない。むしろ、現在入手可能な更新に関する関連情報の全ては、サービス・プロバイダのデータベース内で加入ユーザ毎に保持されている。更に、上記システムは、これらの利点を直接ソフトウエア更新自体を記憶することなく提供する。こうした記憶は、数百、又は潜在的には数千のソフトウエア・ベンダからのソフトウエア更新を扱うのに必要な膨大なメモリ容量、及びこうしたソフトウエア更新全てが現在のものであることを保証する困難さのために、サービス・プロバイダにとっては好ましくないものである。
【００１７】
本発明の更なる態様では、更新データベースは、ソフトウエア更新情報の他に様々なソフトウエア製品のプロモーション情報を記憶する。プロモーション情報は、製品パンフレット、広告パンフレット、技術情報、製品デモ・ソフトウエア等を含む。この情報は、多くの製品カテゴリに分類される。ソフトウエア更新情報のように、プロモーション情報自体は、更新データベース内には記憶されない。むしろ、ネットワーク位置が、プロモーション情報の各項目毎に記憶される。
【００１８】
クライアント・アプリケーションは、クライアント・コンピュータに関して、その中のソフトウエア製品の製品カテゴリを判定し、次にある製品カテゴリからプロモーション情報を選択し、このプロモーション情報を、それに関連づけられたネットワーク位置情報から検索する。このことによって、クライアント・アプリケーションはプロモーション情報を、クライアント・コンピュータのソフトウエア製品に基づいて、クライアント・コンピュータに向け、従って、１）大量のプロモーション情報を直接記憶することなく、及び２）第三者にユーザ・コンピュータに実際の内容を開示することなく、ユーザが選択しうる製品が対象とされる。
【００１９】
ソフトウエア更新情報の更新データベースは、クライアント・アプリケーションの供給者によって保持されることが好ましく、彼らは又、ソフトウエア更新を提供するサービスも保持する。このデータベースは、多くのソフトウエア・ベンダを、その製品のソフトウエア更新に関する情報を提供するためにサービス・プロバイダと結びつけることによって作成される。ソフトウエア・ベンダは、バージョン情報、ファイル・フォーマット、構成情報、及びネットワーク位置を含む、ソフトウエア更新を記述するサービス・プロバイダ情報を提供することが望ましい。
【００２０】
代替案として、ソフトウエア更新はシステム的に、及び周期的にインターネットを検索することによって識別され、ソフトウエア製品に対する更新を提供するソフトウエア・ベンダを識別する。これらの更新は、次にソフトウエア・ベンダのインターネット・サイトからダウンロードされ、そのダウンロードを得るために１つ又は複数のネットワーク位置(URL)が識別される。ダウンロードされたソフトウエア更新は次に、エンド・ユーザによって通常構成される１つ又は複数の目的コンピュータにインストールされる。ソフトウエア更新のフォーマットが、ソフトウエア更新のネットワーク位置、他の記述情報、ソフトウエア更新のインストールの間に取られる特定の構成動作、及び有用な記述テキスト等に沿って判定される。
【００２１】
本発明の別の態様では、更新データベースと対話するクライアント・アプリケーションが提供される。クライアント・アプリケーションは多くのクライアント・コンピュータ毎に提供される。クライアント・アプリケーションは周期的な基準で実行され、前述のように更新データベースに接続し、データベースの一部のダウンロード動作を実施し、検索対象の関連するソフトウエア更新を判定し、そのネットワーク位置からソフトウエア更新を検索し、そのソフトウエア更新をクライアント・コンピュータにインストールし、必要があればインストールされた更新を除去する。
【００２２】
本発明の更に別の態様では、ソフトウエア更新又はソフトウエア製品に関する情報は、ユーザから電子メール通知の要求があった場合には、サービス・プロバイダによって電子メールを介してクライアント・コンピュータに提供される。サービス・プロバイダのサービスに加入したユーザは、サービスを使用したユーザの動作によって、直接的、又は間接的に対象とするソフトウエア更新を示す。新しいソフトウエア更新、又はソフトウエア製品が入手可能となった場合、サービス・プロバイダはどれが特定のユーザの対象と一致するかを判定し、電子メールによってこうした更新や製品をユーザに通知する。この通知は、そのソフトウエア製品やソフトウエア更新が入手可能なネットワーク位置を含む。ユーザは次に、その製品や更新のインストールを認可し、ソフトウエア更新やソフトウエア製品のダウンロード及びインストールにクライアント・アプリケーションを使用する。
【００２３】
【発明の実施の形態】
システム・アーキテクチャ
図１を参照すると、本発明に従ってユーザ・コンピュータ上で様々なソフトウエア製品を更新するシステムの一例のアーキテクチャが示されている。システム100では、サービス・プロバイダのコンピュータ102と通信できるようにネットワーク106によって接続された複数のクライアント・コンピュータ101がある。多くのソフトウエア・ベンダのコンピュータ103もまた、サービス・プロバイダのコンピュータ102と通信できるようにネットワーク106によって接続されている。ネットワーク106は好ましくはインターネットであるか、または他の同様な広域エリア・ネットワークである。
【００２４】
各クライアント・コンピュータ101は、エンド・ユーザによって操作され、通常、アプリケーション、ドライバ、ユーティリティ等のような多くのインストールされたソフトウエア製品を有している。本発明に従って、クライアント・コンピュータ101はサービス・プロバイダのコンピュータ102と通信するクライアント・アプリケーション104を含み、クライアント・コンピュータ101にインストールされたソフトウエア製品のソフトウエア更新を取得する。クライアント・コンピュータ101とクライアント・アプリケーション104のソフトウエア・アーキテクチャは、図７に関連して更に詳細に以下で説明される。
【００２５】
サービス・プロバイダのコンピュータ102に接続されたソフトウエア・ベンダのコンピュータ103のそれぞれは、ソフトウエア更新情報、ソフトウエア製品、情報ファイル等を記憶している。ソフトウエア更新情報は、クライアント・コンピュータ101にインストールされたソフトウエア製品を更新するための、アプリケーション、２進ファイル、テキスト・ファイル等、及び、更新する潜在ソフトウエアを評価するのに有用なこうした製品に関する広告や他の情報を含む。製品の支援、技術サービス、又は同様のものを提供するのに有用な情報の他のタイプも有利に提供される。更に、ソフトウエア・ベンダのコンピュータ103は、クレジット・カード支払いフロント・エンド、コード認証、及び検証サブシステム等といった、ソフトウエア更新の配布と支払いを制御する機構を提供する。こうした様々な機構は、当業界では既知のものである。例えば、支払い機構は、当業界で知られるように、様々なクレジット・カード又は借り入れシステムに応じて実施される。同様に、認証及び検証は、従来の暗号技法を用いて実施される。
【００２６】
好適実施例では、ネットワークはインターネットであり、更に特定すればインターネットのワールド・ワイド・ウエブの部分である。これに関しては、様々なコンピュータがFTP、HTTPに関するプロトコルを支援し、HTML、VRML、又は他のテキスト記述言語やインタフェース記述言語の表示とレンダリングを提供する。各コンピュータ101、102、及び103は、ネットワーク106上のコンピュータの位置を指定するIPアドレスを有し、それによって、これらのコンピュータが従来の方法で互いに通信できる。実行可能、２進といったファイル、及びテキスト・ファイルは、当業者に周知のユニバーサル資源位置(URL)によって様々なコンピュータ内で識別される。
【００２７】
全体のシステム動作
図２を参照すると、本発明に従って、単一のクライアント・コンピュータ101を更新する処理の全体の流れ図が示されている。この処理は、ここでは単一のクライアント・コンピュータ101に関連するものとして記述されている。システムにクライアント−サーバの特性を持ち込めば、当業者には、他の多くの個々のクライアント・コンピュータ101が並列にサービス・プロバイダのコンピュータ102に対話可能であることが理解される。
【００２８】
更新処理200は通常、クライアント・コンピュータ101上で開始される。ユーザは手動でその処理を開始させるか、または例えば、月に１回といった事前に設定された周期で自動的に発生させることができる。代替案としては、サービス・プロバイダのコンピュータ102が様々な間隔で、又は特定のイベントに応答してクライアント・コンピュータ101を指示することによって、この処理を開始することができる。
【００２９】
いずれの場合でも、ユーザは201において、従来の方法でクライアント・アプリケーション104を使用し、ユーザID、パスワード等を提供してサービス・プロバイダのコンピュータ102にログインする。この情報はユーザによってクライアント・アプリケーション104を介して手動で入力されるか、より好ましくは、クライアント・アプリケーション104内に記憶されており、クライアント・コンピュータ101とサービス・プロバイダのコンピュータ102の間の接続が一旦確立されると自動的に提供される。ユーザが登録されていない場合、ユーザの入力と連携してサービス・プロバイダのコンピュータ102は、システムの新しいユーザを登録する(202)。図３は、ユーザを登録するための基本的なユーザ・インタフェース300を示している。ユーザ自身は、名前301で識別され、パスワード303を選択する。ユーザはまた、メーリング・アドレス305、及びユーザがサービス・プロバイダのコンピュータ102によって提供されたサービスを使用してアクセスできるサービス及び有料ソフトウエア更新に対して支払いを行うための、クレジット・カード番号及び有効期限を含む、クレジット・カードのデータ311のような支払い機構を提供することもできる。電子メールのアドレス307は、サービス・プロバイダがユーザに電子メールを介して接触できるように入力される。ユーザはチェック・ボックス309を選択して、ユーザのコンピュータにインストールされたソフトウエア製品に関するソフトウエア更新が入手可能である時に電子メールで知らせて欲しいということを示す。登録処理202が完了すると、サービス・プロバイダのコンピュータ102はユーザにユニークな登録番号を返す。この番号は、クライアント・コンピュータ101上に記憶され、サービス・プロバイダのコンピュータ102に対してユーザを識別するために、後続のログインの際に使用される。
【００３０】
登録されたユーザは、サービス・プロバイダのコンピュータ102によって、１つ又は複数のパスワード、ディジタル署名、証明等といった、従来の認証機構を使用して認証される(203)。認証は、サービス・プロバイダによって適当に認証されたユーザのみがソフトウエア更新に関する更新を得られるよう保証する。
【００３１】
クライアント・アプリケーション104は次に、クライアント・コンピュータ101を分析して、インストールされているソフトウエア製品のリストを決定する。インストールされているソフトウエア製品のリストは通常、アプリケーション、システム・ユーティリティ、ドライバ、及びその他の実行可能なもの、又は資源を含む。これらのソフトウエア製品は、通常多くの様々なソフトウエア・ベンダから提供され、その数はネットワーク106上のソフトウエア・ベンダのコンピュータ103を維持する。
【００３２】
リスト上のインストールされたソフトウエア製品毎に、クライアント・アプリケーション104は、そのソフトウエア製品に対して適用可能な、又は関連する更新があるかどうか判定する(205)。この判定は、サービス・プロバイダのコンピュータ102との相談で行われ、サービス・プロバイダのコンピュータ102は、以下でより詳細に説明するように、様々なソフトウエア・ベンダの多くのソフトウエア製品に関する入手可能なソフトウエア更新のリストを含むデータベースを維持している。
【００３３】
クライアント・アプリケーション104は、購入とインストールのための更新を検討し、選択するために、ユーザに適用可能なソフトウエア更新のリストを表示する(206)。図４は、適用可能なソフトウエア更新のユーザ・インタフェースの表示(400)の例を示している。この表示400は、クライアント・コンピュータ101上で識別された各ソフトウエア製品の名前401、そのソフトウエア製品が既に最新のものであるかどうか、即ち、適用可能な更新がないことを示すか又は、その製品が現在のものでない場合に、適用可能な更新のリスト（そのソフトウエア製品自身に関するものであったり、また関連する製品に関するものであったりする）を示す備考403を含む。適用可能な更新が存在する場合、備考403は簡単にそのソフトウエア更新の特徴を示す。図４の例では、Intuit社のソフトウエア製品Quicken5.0TMに関する備考が、新しい機能を提供するための更新を示している。ユーザは、特定のソフトウエア製品の名前又は備考を選択することによって、追加情報を得ることができる。選択された製品の名前と備考は、図４に示すように高輝度にされ、そのソフトウエア更新に関する情報は、情報ウインドウ405内に表示される(207)。この情報は、サービス・プロバイダのコンピュータ102内に記憶されるか又は、必要な場合に、その情報に関連づけられたURLを用いて、ソフトウエア・ベンダのコンピュータ103から直接得られる。ユーザは、チェック・ボックス407を選択することによって、インストールされたソフトウエア製品全てを表示するのではなく、更新が必要なソフトウエア製品のみをリストするよう制限することができる。
【００３４】
ユーザは、更新する１つ又は複数のソフトウエア製品を選択することができる。ソフトウエア製品の１つを更新するために、ユーザは、そのソフトウエア製品を含む行を選択（例えば、ダブル・クリック）するか、又は行の上で１回のクリックを行った後、検索ボタン409をクリックすることによって、更新するソフトウエア製品を選択する。ユーザは、更新する各ソフトウエアの名前の上で１回クリックしている間にキーボード上のコントロール・キーを押し、その後検索ボタン409を選択することによって、２つ以上のソフトウエア更新を選択することができる 。所望の更新全てが選択されると、ユーザは継続ボタン411をクリックしてインストール処理を開始する。
【００３５】
選択されたソフトウエア更新毎に、クライアント・アプリケーション104はインストール処理208を実施する。図５を参照すると、クライアント・アプリケーション104が、選択されたソフトウエア更新に関する情報505を表示し、ユーザにインストールの確定501、又はキャンセル503の機会を提供している。確定されると、クライアント・アプリケーション104は、インストール・プログラム、ファイル等のインストール情報に沿って、ソフトウエア更新をダウンロードする(209)。このダウンロードは、ネットワーク106上のソフトウエア更新の位置に関するサービス・プロバイダのコンピュータ102に記憶されたURLデータを使用して、ソフトウエア・ベンダのコンピュータ103から直接行われる。
【００３６】
ダウンロード処理209に関連して、支払いトランザクション210が処理され、更新が無料でない場合に、それによってクライアント・コンピュータ101のユーザがソフトウエア更新の支払いを行うことができる。サービス・プロバイダのコンピュータ102は、このトランザクションの中で仲介をし、又はクライアント・アプリケーション104を更新のソフトウエア・ベンダのコンピュータ103に接続することによって単にそのトランザクションを開始させる。クレジット・カードの番号といった支払い情報がクライアント・アプリケーション104内に記憶されている場合、この情報はクライアント・アプリケーション104によってソフトウエア・ベンダのコンピュータ103に提供されうる。
【００３７】
ダウンロードと適切な支払いが完了すると、ソフトウエア更新が物理的にクライアント・コンピュータ101にインストールされる。各ソフトウエア更新は、構成、伸長、又は他の情報のような、インストールに関する項目を記述した情報に関連づけられる。インストールは、こうした情報に対応して実施される。
【００３８】
好適実施例では、クライアント・アプリケーション104は、実際にソフトウエア更新をインストールする前に、インストール・モニタを実行すする(211)。インストール・モニタは、以下でより詳細に説明するように、ソフトウエア更新のインストールの結果としてクライアント・コンピュータ101になされた変更を記録する。この情報は、インストール・モニタによって保存され、これによってユーザが、任意の数のインストールを除去し、そのインストールの前の状態にクライアント・コンピュータ101を復旧するアンドゥ(undo)を行うことができる。従って、クライアント・アプリケーション104は、インストールを実行し(212)、任意の必要な伸長、インストール、又はソフトウエア更新のインストールに必要なセットアップ・アプリケーションを実行する。インストール処理212の実行中、インストール・モニタは、様々な構成ファイルへの変更、ファイルの追加又は削除、及びディレクトリの追加又は削除を含む、システム構成になされた全ての変更を記録する(213)。この変更は、ファイルの修正に関する構築記述、又はファイルの変更や削除の前のファイルのコピーの記憶などの様々な方法で記録される。インストールが完了すると、インストール・モニタがその変更を保存する(214)。この処理208は、インストールされるソフトウエア更新に関して繰り返される。
【００３９】
ソフトウエア更新の全てがインストールされると、クライアント・アプリケーション104はサービス・プロバイダのコンピュータ102をログアウトし(215)、購入したソフトウエア更新の数に基づく支払い、オンライン接続時間等の、ユーザに関する任意の必要な支払い情報が更新される。代替案として、サービスのコストがソフトウエア・ベンダによって課金されるソフトウエア更新のコストに含まれる場合があるので、直接なされる支払いがない場合もあり、このとき、ソフトウエア・ベンダはサービス・プロバイダに、エンド・ユーザをソフトウエア・ベンダのコンピュータ・システム103に同期させ、接続したサービス料として支払いをする。
【００４０】
後続の幾つかの点で、ユーザは、例えば、ソフトウエア更新が満足なものでないといった理由で、前のインストールに戻ること（アンドゥ）を決定することができる。ユーザは、インストールをアンドゥ(216)するために、クライアント・アプリケーション104のリカバリ機能を使用できる。リカバリ機能のユーザ・インタフェース600の例が図６に示されている。ユーザ・インタフェース600は、ユーザに選択された除去すべき以前の更新を、ソフトウエア更新を記述する情報ウインドウ603に沿って表示する。ユーザは、アンドゥ・ボタン605を選択することによってソフトウエア更新の除去を確定させることができ、キャンセル・ボタン607でキャンセルできる。リカバリ機能は、ソフトウエア更新に関してインストールされたファイルを削除し、製品のインストール時にインストール・モニタによって作成された保存情報を使用して、クライアント・コンピュータ・システム101を製品のインストールの直前の構成に復旧する。この処理216は、追加されたファイルとディレクトリを削除し、削除されたファイルとディレクトリを復旧させ、その他の変更がなされたファイルを復旧させることを含む。好適実施例では、リカバリ機能は、所定の順のインストールにおける任意のインストールを、特定のインストール後のクライアント・コンピュータ101の構成に対する変更を考慮してアンドゥすることができる。別の実施例では、リカバリ機能は、インストールをそのインストールと逆の順序でアンドゥできる。ユーザに、ソフトウエア更新のコスト、及びそのダウンロードとインストールの関連サービスに関する支払いが元来必要とされている場合、ユーザがインストールをアンドゥすると、その支払いはユーザに戻される。
【００４１】
サービス・プロバイダのコンピュータ
図７を参照すると、本発明に従うサービス・プロバイダのコンピュータ102の一実施例が示されている。ハードウエア・アーキテクチャの用語において、サービス・プロバイダのコンピュータ102は、従来のサーバタイプのコンピュータであり、データ及び他の処理操作の要求に対して、比較的多くの複数クライアントを同時に支援することが好ましい。サービス・プロバイダのコンピュータ102は、プロセッサ・コア723に１つ又は複数の従来型プロセッサを含み、好ましくは18ないし64Kbのオーダーである、適当な大きさのアドレス指定可能メモリ700を含む。サービス・プロバイダのコンピュータ102は、１つ又は複数のPentiumTMプロセッサを含むインテル−ベースのコンピュータで実施でき、またUltraSparcTMを使用するサンマイクロシステムズ社のSparcStationsの様々なモデルのような他のより強力なコンピュータでも実施できる。サービス・プロバイダのコンピュータ102は、マイクロソフト社のWindows NTTM、又はサンマイクロシステムズ社のSolaris 2.5のような、様々なUNIXベースのオペレーティング・システムのうちの１つといった従来のオペレーティング・システム721を実行する。サービス・プロバイダのコンピュータ102は更に、ネットワーク106に接続し、他のコンピュータと通信するために必要なTCP-IP通信機能を実行するネットワーク通信プロトコル層719を含む。
【００４２】
本発明によれば、サービス・プロバイダのコンピュータ102は、多くの実行可能な構成要素、及びクライアント・コンピュータ101とソフトウエア・ベンダのコンピュータ103とのソフトウエア更新の対話を管理するのに有益なデータベース構造を含む。これらの構成要素はセキュリティ・モジュール701、通信モジュール703、支払いモジュール705、データベース修正ツール707、更新データベース709、ユーザ・プロファイル・データベース711、報告ツール・モジュール713、URLモニタ・モジュール715、広告／情報データベース717、及び活動ログ718を含む。更新データベース709はここで説明される。残りの構成要素は後で更に詳細に説明される。
【００４３】
更新データベース
更新データベース709は、大多数のソフトウエア製品を識別する情報、様々なソフトウエア製品のベンダから、これらのソフトウエア製品に関する入手可能なソフトウエア更新に関する情報、及びクライアント・コンピュータ101にインストールされたソフトウエア製品を識別し、インストールされたソフトウエア製品のバージョンと名前をユニークに区別するための情報を保持する。
【００４４】
一実施例では、更新データベース709自身はソフトウエア更新を記憶しておらず、むしろURLなどの情報を記憶し、それによって、サービス・プロバイダのコンピュータ102又はクライアント・コンピュータ101が、直接ソフトウエア・ベンダのコンピュータ103からソフトウエア更新にアクセスできる。この実施は幾つかの理由で選択される。システム100は、何百というオーダーで、恐らく数千という多数のソフトウエア製品に関するソフトウエア更新を提供するよう設計されている。この状況では、関連するファイルを記憶するのに非常に大きな記憶域が必要となる。更に、ソフトウエア・ベンダのコンピュータ103へのリンクだけは別として、ソフトウエア更新自体を記憶しないことによって、サービス・プロバイダは、ソフトウエア更新自体が常に現在のものであることを確認する必要はないが、より管理が容易なリンク情報は保持する必要がある。他の実施例では、ソフトウエア更新は更新データベース709に記憶される。この実施形態は、例えば、データベース709の更新を、ソフトウエア製品に関する新しいソフトウエア更新のリリースと容易に同期をとるのに有用であり、それによってデータベース709が新しいソフトウエア更新の現在のリリースと一貫性を有することが保証される。
【００４５】
最後に、更新データベース709はまた、ソフトウエア更新をインストールするためのインストール処理を記述した情報を記憶する。この情報は、特定の構成、ファイル・フォーマット、又はクライアント・コンピュータ101にソフトウエア更新のインストールを行うのに有用な他のデータを含むことができる。この情報は、それがもしあれば、クライアント・コンピュータ101に提供され、ソフトウエア更新のインストールの間に使用される。
【００４６】
更新データベース709は、様々な方法で実行される。図８を参照すると、更新データベース709の一実施例がリレーショナル・データベースのスキーマとして示されている。この実施例では、更新データベース709は、方法テーブル801、製品所在テーブル803、製品テーブル805、及び更新テーブル807の４つのテーブルを含んでいる。図９は、更新データベース709のテーブルを使用してクライアント・コンピュータ101を分析する処理のフローチャートを示している。
【００４７】
方法テーブル801は、どのソフトウエア製品がそのコンピュータにインストールされているかを判定するための、クライアント・コンピュータ101を分析する様々な方法を識別する情報を保持している。方法テーブル801は走査方法811とパラメータ812を含んでいる。様々な走査方法812が、インストールされた製品を識別できるクライアント・コンピュータ101の様々な異なる機能に対応するよう設計されている。例えば、マイクロソフト社のWindows95、又はWindowsNTオペレーティング・システムを使用するライアント・コンピュータ101では、インストールされたソフトウエア製品のインデックスが保持されるよう設計されたレジストリが提供される。レジストリは、そこで識別されたソフトウエア製品に関する情報を戻すようにコールされる様々な方法を含んでいる。これらの方法の幾つかは走査モジュール811内にリストされる。パラメータ812は、例えば、検索されるレジストリの特定の態様を識別する、レジストリ・メソッドへの引数である。
【００４８】
ソフトウエア・ベンダのインストール手順がレジストリを更新しなければならないというWindows95標準要件に従うようになっているが、全てのソフトウエア・ベンダがそれに従うとは限らない。この場合、インストールされたソフトウエア製品を識別する情報がconfig.sys、system.ini、及びautoexec.batファイルに保持される。また、クライアント・コンピュータ101はマイクロソフト社のMS-DOSやWindows3.1オペレーティング・システムを使用する場合があるが、これらはレジストリを使用しない。従って、走査方法811は、これらのファイルを検査して、インストールされたソフトウエア製品のインデックスを戻す方法を含んでいる。
【００４９】
各走査モジュール812は、多くのストリング（ここでは走査ストリング）の形式で、インストールされた製品のインデックスを戻す。各走査ストリングは、製品名やファイル名、又は幾つかの他のデータを識別する。しかし、走査ストリングはユニークに製品を識別しない。これは、走査ストリングが製品所在テーブル803によって分解されているからである。
【００５０】
製品所在テーブル803は、個々の走査ストリング813を、製品名815、バージョン番号やリリース番号を判定するための命令816、及び１つ又は複数の制約814に関連づける。制約は、同じ走査ストリングを有する２つのエントリがある場合、製品に関する文章情報が与えられた時に、その製品をユニークに識別するルールである。制約は、製品、システム構成ファイル内の追加エントリ、レジストリ等を含む特定のディレクトリを含む。こうした様々な位置の中に指定された情報が制約の値に一致する場合、制約に関連づけられた製品名は走査ストリングに対する正しい製品名である。一実施例では、制約814はこれらの様々な位置の中で情報を検索する実行可能手順であり、この情報から、制約の指定された詳細がクライアント・コンピュータ101で見つかったかどうかに従って、製品名が走査ストリングを一致したかどうかを判定する。
【００５１】
インストールされたソフトウエア製品の幾つかは、その最も新しいバージョンであるので、クライアント・コンピュータ101にインストールされたソフトウエア製品の全てを更新する必要はない。むしろ、インストールされたソフトウエア製品のリストから、更に分析して（205、図２）これらのソフトウエア製品のうちどれにソフトウエア更新が適用可能かを判定する。ソフトウエア更新は、ソフトウエア更新のバージョンがインストールされたソフトウエア製品のバージョンより新しい場合に、クライアント・コンピュータ101に適用可能である。
【００５２】
クライアント・コンピュータ101にインストールされたソフトウエア製品全てを更新する必要はないので、適用可能なシステム更新の判定は、製品テーブル805で有効になされる。製品テーブル805は、製品名815と特定のリリース818をそのバージョンの製品に関するソフトウエア更新を識別する更新ID 819に関連づける。新しいバージョン番号820は、更新ID 819で指定されたソフトウエア更新を製品名及びリリース番号によって識別されるソフトウエア製品に適用することによって作成される新しいバージョンを指定する。最新フィールド821は、ソフトウエア更新の適用がその製品を最新のバージョンにするかどうかを指定する(Y/N)。
【００５３】
最後に、更新テーブル807は、ソフトウエア更新自体を実施するのに必要な情報を記憶する。このテーブルは、更新ID 819によって有効にキーが付けられる。各更新毎に、ソフトウエア更新に関する実際の２進ファイルを記憶する様々なサイト、典型的にはソフトウエア・ベンダのコンピュータ・システム103、及び潜在的にはミラー・サイトのURLを含むURLリスト823が提供される。URLリスト823は多くのURLのエントリからなり、各URLのエントリは、URLとそのURLが確認された最後の時間のタイムスタンプ、及びそのURLが有効かどうかを示すフラグを有している。これによって、URLモニタ715は、現在のURL情報がデータベースに保持されていることを保証できる。
【００５４】
ソフトウエア更新の現在のコスト824もまた、記憶されて、ユーザにソフトウエア更新に関するコスト情報を提供する。
【００５５】
フォーマット825はソフトウエア更新ファイルのファイル・フォーマットを指定し、それによってソフトウエア更新ファイルをインストールするのに必要な処理のタイプを示す。一実施例では、６つのフォーマットと以下に示す手順がある。
【００５６】
【表１】
0004486169.tif 000002
【００５７】
不明なフォーマット及び特別なフォーマットに関しては、更新テーブル807がスクリプト826内に、更新のソフトウエア・ベンダによって、あるいはサービス・プロバイダによって提供される特別のインストール・プログラムに対するハンドルを記憶する。更に、スクリプト826は、ウイルス検査プログラムや、インストール処理の間に競合する他のプログラムの停止といった、インストールに必要とされる任意の条件に関する情報も記憶する。
【００５８】
記述フィールド827は、製品の特徴を説明するような、ソフトウエア更新の記述に関連づけられたデータを記憶する。この記述は、記述情報を含むソフトウエア・ベンダのコンピュータ・システム103上のファイルに対するURLであることが好ましい。ここでも、実際のテキストは、個々に記憶される必要はなく、その情報がネットワーク106上で入手可能な位置へのリンクのみが記憶される。
【００５９】
更新データベース709は１組のテーブルとして説明される。代替案として、更新データベース709は、各テーブルがクラスで、テーブルのフィールドがクラスの属性及びメソッドである、オブジェクト指向フレームワークにおいて実施されうる。ここでクラスのタイプはテーブルの主キーによって都合よく定義される。
【００６０】
クライアント・コンピュータ
ここで、図９を参照すると、クライアント・コンピュータ101のハードウエア及びソフトウエア・アーキテクチャが示されている。クライアント・コンピュータ101は従来の設計のものであり、プロセッサ・コア918、アドレス指定可能メモリ900、及び、ディスプレイ、ローカルのハードディスク、入出力ポート、及びネットワーク・インタフェースのような他の従来の機能（図示せず）を含んでいる。ディスプレイは従来の設計のものであり、カラービットマップ化され、図３ないし６にあるような様々なアプリケーションのユーザ・インタフェースに対して出力を提供することが好ましい。入出力ポートは、キーボード、マウス等のようなコマンドとデータを入力するための入力装置を支援する。ネットワーク・インタフェースとネットワーク通信プロトコル916は、TCP-IPタイプの通信によるインターネットへのアクセス、又はWAN、LAN、MAN等のその他のネットワークを介して、リモートにある大容量記憶装置へのアクセスを提供する。
【００６１】
好適実施例では、クライアント・コンピュータ101が、マイクロソフト社のWindows3.1やWindows95のオペレーティング・システム917で制御されるインテル・ベースのコンピュータ、又はその同等の装置で実行されうる。クライアント・コンピュータ101は、Windows95のレジストリ、system.ini、config.sys及び他のファイルのような幾つかの構成ファイル915を含む。
【００６２】
クライアント・コンピュータ101は更に、そこにインストールされたソフトウエア製品をアプリケーション912、オペレーティング・システム・ユーティリティ913、及びデバイス・ドライバ914等の形で含んでいる。これらの様々なソフトウエア製品は、サービス・プロバイダのコンピュータ102によって更新されるソフトウエア製品に含まれる。
【００６３】
本発明によれば、クライアント・コンピュータ101は、メモリ900内でクライアント・アプリケーション104を実行する。クライアント・アプリケーション104は、多くの実行可能コード部とデータ・ファイルからなる。これらはセキュリティ・モジュール901、通信モジュール903、支払いモジュール905、登録モジュール904、広告及びニュース・モジュール906、システム・アナライザ・モジュール907、リカバリ・モジュール908、インストール・モニタ910、及びアプリケーションの現在の状態911を定義するデータを含む。クライアント・アプリケーション104は更に、各更新のインストール前のクライアント・コンピュータ101の状態を保存した保存ファイル909を、コンピュータ記憶域の私的領域に保持する。クライアント・アプリケーション104は、CD-ROM、ディスケット、８ミリ・テープといったコンピュータ読み取り可能媒体、又はネットワーク106を介した電子的通信で、クライアント・コンピュータ101上でのインストールと実行のために、クライアントコンピュータ101に提供される。
【００６４】
インストールされたソフトウエア製品の分析と適用可能な更新の判定
好適実施例では、分析204がクライアント・コンピュータ101上のクライアント・アプリケーション104によって実施されるのが好ましい。これによって、ネットワークの帯域幅要件は低減され、サービス・プロバイダのコンピュータ102が分析を実施することによって、無国籍でない(non-stateless)リモート手順コールの実施において潜在的にある信頼性の低さが改善される。それはサービス・プロバイダのコンピュータ102の同時使用ユーザの数を更に増加させる。この分析処理は、クライアント・アプリケーション104のシステム分析907モジュールによって実行される。
【００６５】
この実施例では、クライアント・コンピュータ101は方法テーブル801と製品所在テーブル803のローカル・コピーを記憶し、これらのローカル・コピーを分析の実施に使用する。
【００６６】
ここで、図10を参照すると、クライアント・コンピュータ101を分析し(204)、インストールされたソフトウエア製品のリストを判定するための、システム・アナライザ907の処理が示されている。
【００６７】
システム・アナライザ907は最初に、クライアント・コンピュータ101内の方法テーブル801と製品所在テーブル803と、サービス・プロバイダのコンピュータ102によって保持されている現在のバージョンとの同期をとる(1001)。各テーブルは、その全体が置換されるのが好ましく、これは、個々のエントリを比較して日付の古いものだけを更新する方法より速い可能性がある。この同期は、命令されるかまたは、サービス・プロバイダのコンピュータ102内の更新テーブル709が更新された最新の時間の記憶されたタイムスタンプによって示されるように、サービス・プロバイダのコンピュータ102上のバージョンより古いクライアント・コンピュータ101上のバージョンによって条件付けられたものであってよい。
【００６８】
テーブルが同期付けられると、システム・アナライザ907が効果の改良のために、ローカルで動作できる。システム・アナライザ907が前部の方法テーブル801を横断し、各操作方法812をクライアント・コンピュータ101のレジストリと構成ファイル915を検索するために発行する。各操作方法811は、前述のように走査ストリングを出力し、これはクライアント・コンピュータ101上にインストールされた幾つかのソフトウエア製品を指定する。
【００６９】
システム・アナライザ907は走査ストリングのそれぞれを製品所在テーブル803に適用する(1005)。製品所在テーブル803は走査ストリングを受信し、その走査ストリングを分解してそれに関する製品名815とリリース命令816を判定する。走査ストリングがユニークに製品名815を識別せず、インストールされたソフトウエア製品の幾つかの製品名に一致する場合がある。従って、それぞれ一致するエントリ毎に、システム・アナライザ907は製品所在テーブル803から制約814を取得し(1009)、その制約を分解し(1009)クライアント・コンピュータ101上の製品が実際にそのエントリにリストされた製品であるかどうかを判定する。このエントリの１つの制約814は満足され、ユニークに製品名を識別する。
【００７０】
正しい製品名を有する特定のエントリが識別されると、システム・アナライザ907がエントリに関するリリース命令816を分解し(1011)、インストールされたソフトウエア製品のリリース番号やバージョン番号を取得する。リリース命令816は、指定されたソフトウエア製品からバージョン番号（実際のデータであるとは限らない）を得る実行可能手順であることが望ましい。ここで、実行可能手順を使用して、得られたリリース番号又はバージョン番号が製品の実際の値であることを保証する。
【００７１】
システム・アナライザ907によって製品所在テーブル803から得られた結果は、クライアント・コンピュータ101にインストールされたソフトウエア製品のリスト1013であり、各製品は名前とインストールされたバージョンによって識別される。システム・アナライザ907はこのリストを使用して、サービス・プロバイダのコンピュータ102を照会し、更新が適用可能な製品がこれらのうちどれかを判定する(205)。
【００７２】
インストールされた製品(1002)のそれぞれに対して、システム・アナライザ907がサービス・プロバイダのコンピュータ102を照会し、製品の名前815とリリース番号818を分解し(1004)、その製品の現在の更新821が存在するかを判定する。このことは、名前、値の対としてのリスト全体を横断し、又はサービス・プロバイダのコンピュータ102を個別に捜すことによって行われる。いずれにしても、サービス・プロバイダのコンピュータ102は、製品テーブル805に対し製品名815とリリース情報818を比較し、最新の更新フィールド821内の情報を得ることによって、ソフトウエア製品に関して適用可能な更新があるかどうか判定する。テーブル内のリリース情報がクライアント・コンピュータ101にインストールされたバージョンより新しいバージョンを示すという点で適用可能な更新がある場合、サービス・プロバイダのコンピュータ102はシステム・アナライザ907にハンドル：更新ID 819を戻す(1006)。クライアント・コンピュータ101にインストールされたソフトウエア製品のリリースが、最も新しいバージョンであった場合、サービス・プロバイダのコンピュータ102は次のエントリをチェックする。この処理は、インストールされた全てのソフトウエア製品がチェックされるまで継続される。
【００７３】
ソフトウエア更新の選択
インストールされたソフトウエア製品の全てが製品テーブル805に対して検査されると、システム・アナライザ907は、サービス・プロバイダのコンピュータ102から更新ID 819を受信する製品として、適用可能なソフトウエア更新のリスト1007を有する。システム・アナライザ907はここで、ユーザにそのリストを表示する(206)。例示のユーザ・インタフェースは、図４で前に説明した。
【００７４】
システム・アナライザ907は更に、図５に示すように、更新テーブル807上の更新ID 819を分解し(1008)、コスト、記述等の情報を戻すために、特定の製品の更新ID 819でサービス・プロバイダのコンピュータ102を照会することによって、ソフトウエア更新に関する追加情報を表示する(207)。
【００７５】
ソフトウエア更新とインストール・モニタのインストール
ユーザは１つ又は複数のソフトウエア更新のリストを選択する。選択された更新毎に、システム・アナライザ907は更新ID 819をサービス・プロバイダのコンピュータ102に戻す。サービス・プロバイダのコンピュータ102は更新テーブル807を参照して更新ID 819を分解し、関連する更新ファイルの位置を識別するURLリスト823を含む、この更新に関するレコードを得る。このレコードはクライアント・コンピュータ101に戻される。クライアント・コンピュータ101は識別されたURLにアクセスし、通常はソフトウエア・ベンダのコンピュータ103から（もっとも、ダウンロードはミラー・サイト等から行われるが）ソフトウエア更新ファイルをダウンロードする。クライアント・コンピュータ101は更に、（受信したURLから）インストール実行可能ファイル及びスクリプトのような、追加のインストール・ファイルをダウンロードする。クライアント・コンピュータ101はまた、ソフトウエア更新ファイルが改悪されていないことも確認する。
【００７６】
好適実施例では、クライアント・コンピュータ101は、そのセキュリティ・モジュール901を利用して、ファイルが改悪されていないことを保証するために、ファイルの完全性を確認する。
【００７７】
ソフトウエア更新は次に、前述のように、クライアント・アプリケーション104によって、特定のインストール処理を判定するためのフォーマット情報825、特別のインストール又は構成情報を制御するためのスクリプト826を使用して、インストールされる(212)。
【００７８】
インストール212は、インストール・モニタ910によって監視され、このインストール・モニタは実際のインストール以前に実行される。インストール・モニタ910は、インストール前のクライアント・コンピュータ101の状態、及びソフトウエア更新のインストールの際に行われた変更を記録する。インストール・モニタ910はバックグラウンドで動作し、クライアント・コンピュータ101内の任意のファイルに変更を生じることになるファイル・システムへのコール、又は他のオペレーティング・システムのコールを傍受する。特定のコールに依存して、インストール・モニタ910は、変更が行われる前のファイルの状態を保存するよう動作する。
【００７９】
図11はインストール・モニタ910の動作のフローチャートを示している。インストール・モニタ910はオペレーティング・システムのコール、及びクライアント・アプリケーション104からのメッセージを受信する。オペレーティング・システムのコールをトラップする(1101)際に、インストール・モニタ910はコールのタイプを判定する(1103)。対象のコールには、ファイルやディレクトリを削除するコール1105、既存のファイルをそのファイルに書き込みを行うことによって変更するコール1107、及び新しくファイルやディレクトリを追加するコール1109の３つのタイプがある。ファイルやディレクトリが削除される場合、インストール・モニタ910はまず、既存のファイルやディレクトリのコピーをクライアント・コンピュータ101のハードディスクや他の記憶装置の私的領域に作成する。インストール・モニタ910は次に、オペレーティング・システム917にファイルやディレクトリを削除させ、次のコールを待つ。ファイルが変更される(1107)場合、インストール・モニタ910は、これがそのファイルに対して最初の書き込みであるかどうかを判定する(1115)。最初の書き込みである場合、ここでもインストール・モニタ910はそのファイルを私的領域にコピーする(1119)。ファイルが既にインストールの際に変更されている場合、そのファイルを再びコピーする必要はない。こうしたコピー動作1113、1119は、インストール前のクライアント・コンピュータ101の構成を保存する。最後に、新しいファイルやディレクトリが追加された(1109)場合、インストール・モニタ910はその新しいファイルやディレクトリのパス名を記憶する(1117)。このことによって、新しいファイルやディレクトリが、インストールのアンドゥの際に、後で削除される。オペレーティング・システムのコールの他の全てのタイプ(1111)に対しては、インストール・モニタ910はそのコールを何もせずに通過させる。
【００８０】
インストール・モニタ910は、好ましくはクライアント・アプリケーション104からのメッセージによって示されるインストール処理212の完了を待つ。この時点で、クライアント・コンピュータ101の完全な以前の構成が、コピーされたファイルとパス名の情報から既知となる。これらのファイル及び情報は、保存ファイル909内に圧縮され（1121)、ソフトウエア製品が属するソフトウエア製品のインストールを識別する情報に応じて、クライアント・コンピュータ101上に保存される。この識別情報によって、リカバリ・モジュール908は保存された情報を検索でき、クライアント・コンピュータ101の構成を復旧できる。
【００８１】
サービス・プロバイダのソフトウエア・アーキテクチャ
再び図７を参照して、サービス・プロバイダのコンピュータ102の残りのモジュールを説明する。
【００８２】
通信
通信モジュール703は、サービス・プロバイダのコンピュータ102とソフトウエア・ベンダのコンピュータ103か又はクライアント・コンピュータ101の間のネットワーク通信の確立、維持、及び終了を提供する。通信モジュール703は、インターネット及びワールド・ワイド・ウエブ上のデータの送受信を行うために、FTP及びHTTPプロトコルを支援する。通信モジュール703は通常、そのモジュールが維持する各接続毎に異なるストリームを維持し確立する。サービス・プロバイダのコンピュータ102は、一度に数百又は数千となる、大量の接続を支援できることが好ましい。より多くの同時接続が要求されうるような顧客の規模である場合、更新データベース709のミラー・イメージを有する複数サービスを利用できる。通信モジュール703はまた、従来の方法でログイン、及びログアウトを扱い、こうした機能は以下のセキュリティ・モジュール701に統合される。
【００８３】
セキュリティ
セキュリティ・モジュール701は、サービス・プロバイダのコンピュータ102の認証ユーザとして、ユーザの認証を扱う。セキュリティ・モジュール701は、ディジタル署名、証明等を支援する公開キー・システムといった、ディジタル署名に基づく従来の認証機構で実施されうる。適当なセキュリティ機構は、通信モジュール703からログイン、及びログアウト機能を統合するVeriSign社のDigital ID Centerを含む。
【００８４】
更に、セキュリティ・モジュール701は、ソフトウエア・ベンダのコンピュータ103からダウンロードされたソフトウエア更新の完全性を検証することを提供し、こうしたソフトウエア更新がコンピュータ・ウイルスや他の認証されていない修正によって変更されたり感染したりしていないことを保証する。このモジュールは例えば、更新のチェックサムを計算するのに使用され、チェックサムは更新データベース709に記憶することができる。チェックサムは簡単なものでもよく、又はRonald Rivest教授が提案するメッセージ・ダイジェスト(MD)アルゴリズムのような暗号で保護され、及びマイクロソフト社の暗号化API標準のようなプログラミングAPIで共通に入手可能なものであってもよい。更新がソフトウエア・ベンダのコンピュータ103からクライアント・コンピュータ101に後にダウンロードされた場合は常に、更新のチェックサムが計算され、それが更新データベース709に記憶されていたものと比較される。この２つが一致する場合、ソフトウエア更新がクライアント・コンピュータ101に正しくダウンロードされたことに妥当性が生じる。セキュリティ・モジュール701は、ウイルスに関するソフトウエア・ベンダのコンピュータ103に記憶されたソフトウエア更新内のウイルスに関する走査を行うためにも使用される。
【００８５】
支払い
支払いモジュール705は、ソフトウエア更新を提供するサービスに対するサービス・プロバイダへのエンド・ユーザの支払いを処理する。サービス・プロバイダのコンピュータ102は、そのユーザのデータベースを保持する。このデータベースはユーザ・プロファイル・データベース711や他のデータベースであってよい。各ユーザはソフトウエア更新をダウンロードするためにサービス・プロバイダのコンピュータ102を使用することに対し、サービス料を徴収される。このサービス料は、接続時間、購入したソフトウエア更新の数、年単位や月単位の加入料、又はこれらの幾つか又は他の料金計算との組み合わせといった、様々な異なるスケジュールに基づいている。しかし、課金されると、支払いモジュール705は、ユーザがサービス・プロバイダのコンピュータ102をログアウトするまで、ユーザのサービスの使用、例えば、接続時間の合計を記録し、ダウンロードされたソフトウエア更新の数を保持する。支払いは次に、登録の際にユーザによって事前に知らされているユーザのクレジット・カードに課金する。支払いモジュール705の適切な実施は、Mastercard及びVisaの機密電子トランザクション(Secure Electronic Transaction)仕様に適合して作成される。
【００８６】
ユーザのサービスへの支払いは、様々な方法で支払いモジュール705によって実施される。支払いを実施するアルゴリズムの一例は以下のようなものである。
【００８７】
ユーザはクライアント・コンピュータ101からサービス・プロバイダのコンピュータ102にログインする。支払いモジュール705は、ユーザの口座があるかどうか判定し、あればクライアント・コンピュータ101の接続を受け入れる。ユーザの口座の有効期限の終わりに近い場合、例えば、30日以内である場合、又は期限切れの場合、支払いモジュール705はユーザに再加入するよう知らせる。ユーザが同意すると、加入料がユーザのクレジット・カードの口座に請求され、クライアント・コンピュータ101への接続が確立され、ユーザは前述のようにサービスを使用できるようになる。ユーザが再加入を拒否すると、接続は拒否される。
【００８８】
課金は、トランザクション毎でも行われる。この場合、課金は選択されたトランザクションに帰属しうる。トランザクション毎の課金を実施するアルゴリズムの一例は以下の通りである。
【００８９】
クライアント・アプリケーション104は、更新されるソフトウエア製品に関して、サービス・プロバイダのコンピュータ102からトランザクションの許可を要求する。支払いモジュール705は更新データベース705からトランザクションに関する特定の課金を判定し、許可に従って、クライアント・アプリケーション104にこの情報を戻す。クライアント・アプリケーション104はユーザに課金を表示し、ユーザはそのトランザクションを確定させるか、あるいはそのソフトウエア更新をキャンセルする。トランザクションが確定されると、クライアント・アプリケーション104はインストール処理を実施する。支払いモジュール705には、トランザクションとインストールが成功したかどうかが通知され、そのトランザクションの課金を現在のセッションの課金の実行合計に加える。ユーザのセッションが完了すると、トランザクションの課金の実行合計がユーザのクレジット・カードに課金され、それがクライアント・アプリケーション104に提供され、ユーザに表示される。
【００９０】
リカバリ・モジュール908によって更新が戻されようとしている場合、課金されたトランザクション料はユーザのクレジット・カードの口座に戻される。ここで、クライアント・アプリケーション104は、サービス・プロバイダのコンピュータ102に、ソフトウエア更新が戻されるものであることを知らせ、ソフトウエア更新の更新ID 819を提供する。支払いモジュール705はこの更新ID 819を使用して課金されるトランザクション料（コスト824）を判定する。この金額はクライアント・アプリケーション104に戻され、ユーザに表示される。ソフトウエア更新はリカバリ・モジュール908によって除去され、支払いモジュール705に除去が成功したことが知らされる。支払いモジュール705は次に、現在の課金の実行合計からそのトランザクション料を減算する。セッションを終了する時点で、支払いモジュール705が必要に応じて、請求又はユーザのクレジット・カードの口座に課金する。
【００９１】
データベース修正
データベース修正ツール707は、様々なソフトウエア・ベンダからの新しいソフトウエア更新を含むために、更新データベース709の維持及び更新を行う。このツール707は新しいエントリを追加し、更新データベース709の任意のテーブルの既存のエントリを削除又は修正する。
【００９２】
様々なテーブルのうち、更新テーブル807は、ソフトウエア更新に関する現在の更新の情報を含み、製品テーブル805は更新のある様々なソフトウエア製品を識別し、最も頻繁に更新される。
【００９３】
新しいソフトウエア更新が入手可能になると、サービス・プロバイダ又はソフトウエア・ベンダがデータベース修正ツール707をアクセスして、データベースを更新する。これは、データベースのテーブルで使用される情報を網羅する完全なフォームによって達成されることが好ましい。図13、及び図14ないし図18は、新しい更新情報を指定し、又は既存の更新情報を変更するフォームの例を示している。フォーム1300は、更新の説明に使用される備考1301、ソフトウエア更新の情報に関するURL 1303、バージョン情報1305、更新によって影響を受けるソフトウエア製品1307、更新のタイプ1309、既知の非互換性1311、バージョン情報に基づいて更新されるソフトウエア製品の以前のバージョンを見つけるためのフィルタ1313、日付情報1315、及び（クライアント・コンピュータ101の915のレジストリ・ファイル内でソフトウエア製品を識別するための）レジストリの情報1317を含む。更に、更新のファイル・フォーマット1321は、ソフトウエア更新自体のネットワーク位置に関するURL 1319に応じて指定される。最後に、インストール手順1323が、インストール・スクリプト826で使用するために指定される。この情報は、従来の方法で容易に処理され、更新データベース709の適当なテーブルに対して更新される。
【００９４】
サービス・プロバイダの更新サービスによって支援されるように、ソフトウエア製品とソフトウエア製品に対する更新は更新データベース709に登録されなければならない。
【００９５】
ソフトウエア製品の登録は、その製品が所与のクライアント・コンピュータ101にインストールされている場合、製品及びそのバージョンを識別するのに十分な情報を指定することを目的としている。図22及び図23ないし図26はソフトウエア更新を最初に更新データベース709に登録するためのフォームを示している。登録フォーム1700は、ソフトウエア・ベンダの会社名1701、ソフトウエア製品名1703、製品タイプ1705、クライアント・コンピュータ101上でソフトウエア製品を識別する方法1707、ユニークなファイル名1707又は製品を指定する文字ストリング、バージョン情報を確認する方法1709、ファイル日付1711、及びクライアント・コンピュータ101上のディレクトリ1713に関するフィールドを含んでいる。
【００９６】
製品タイプ1705はデバイス・ドライバ、アプリケーション、プラグイン（インターネット・ブラウザのような他の製品の機能を拡張する製品）、又はオペレーティング・システム・ファイルであってもよい。
【００９７】
ソフトウエア製品を識別する方法1707は、ユニークなファイル名又は文字ストリング、及びファイル名又はストリングの位置を指定することが好ましい。例えば、Windows95オペレーティング・システムでは、サウンド・ドライバの名前はレジストリの位置\HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\MediaResource\midiに指定される。この場合、ドライバのファイル名はこのレジストリ位置で見られる。ソフトウエア製品もまた、ユニークなディレクトリ名の存在によって識別される。前述のように、製品名がユニークでない場合もある。
【００９８】
クライアント・コンピュータ101にインストールされたソフトウエア製品のバージョンは幾つかの方法のうちの１つで得られる。それはバージョン番号、ファイルの最新修正タイムスタンプであってもよく、レジストリで明示的に指定されてもよい。登録フォームで提供される情報は、提出後に処理され、更新データベース709の適切なテーブルに追加される。
【００９９】
ソフトウエア更新は、サービス・プロバイダが周期的にインターネットを検索し、ソフトウエア・ベンダが提供するソフトウエア製品の更新を識別することによって、更新データベース709に含めるために識別される。殆どのソフトウエア・ベンダは、新しいソフトウエア更新の存在を示すインターネット・サイトを維持している。識別されたソフトウエア・ベンダ毎に、サービス・プロバイダはソフトウエア更新を更新データベース709にダウンロードする。ソフトウエア更新のファイル・フォーマットが判定され、インストール処理がソフトウエア更新のファイル・フォーマットに応じて指定される。最後に、サービス・プロバイダは、ソフトウエア更新、ソフトウエア更新のファイル・フォーマット、及びインストール処理の指定を記憶しているソフトウエア・ベンダのコンピュータ・システム103のURL又はネットワーク位置を含む、更新データベース709内のエントリを作成する。
【０１００】
代替案として、サービス・プロバイダに接触するソフトウエア・ベンダは彼らのソフトウエア製品及びソフトウエア更新に関する情報、例えば、名前、ファイル・フォーマット等を直接サービス・プロバイダに、又は更新データベース709に提供できる。
【０１０１】
しかし、更新データベース709に提供されると、更新の登録はソフトウエア更新及びソフトウエア製品のプロパティ、及びそのソフトウエア更新が適用可能なバージョンを指定することからなる。ソフトウエア更新のプロパティは、ソフトウエア更新がその製品に適用された場合のバージョン番号820、ソフトウエア更新のフォーマット825（zipファイル、自己解凍保存等）、及びクライアント・コンピュータ101にソフトウエア更新をインストールするのに必要なインストール・ステップ（スクリプト826）を含むことが好ましい。ソフトウエア更新が適用される製品のバージョンは、このセクションでより早く製品自体が指定されている場合に指定される。また、ソフトウエア更新の簡単な説明、及び詳しい説明（解決した問題点、及び加えられた特徴）へのURLが含められ、その情報が直接記憶されることが好ましい。
【０１０２】
新しい更新がそれぞれ入手可能になった場合、新しい更新エントリが作成される。
【０１０３】
ソフトウエア・ベンダやサービス・プロバイダは、ソフトウエア更新のプロパティに従って、製品及びソフトウエア更新データベースのエントリを指定する。
【０１０４】
ユーザ・プロファイル・データベース
ユーザ・プロファイル・データベース711は、各ユーザ毎に、例えば、特定の製品のソフトウエア更新に関する通知、又は新しいソフトウエア製品に関する通知を要求することによって、どの製品をユーザが対象にしたかという情報を含むプロファイルを保持する。この情報は次に、例えば、電子メール又は電子通信機構によって、これらの製品に適用可能な新しい更新に関する通知をユーザに配布するのに使用される。サービス・プロバイダのコンピュータ102のこうしたオプションとしての機能は、ユーザに対するサービスの価値を更に拡張し、ソフトウエア更新及び新しいソフトウエア製品の可用性をタイムリーに通知することを保証する。
【０１０５】
これに関して、本発明の代替実施例の１つは、ユーザに新しいソフトウエア更新の情報、及びユーザが興味を示した新しいソフトウエア製品を知らせるのに電子メールを使用する。特に、新しいソフトウエア更新やソフトウエア製品が入手可能である場合、サービス・プロバイダのコンピュータ102は、電子メールでの通知を要求したユーザに電子メールを送信する。電子メールはソフトウエア更新に関する情報を含み、ソフトウエア更新ファイルをアクセスするのに使用するURLデータ823を含む、ソフトウエア更新に関する更新テーブル807からのレコードを含むこともできる。クライアント・アプリケーション104は次に、更新情報を読みとり、ソフトウエア更新がクライアント・コンピュータ101に実際に適用可能か、及びクライアント・コンピュータ101がインストールのための条件を満たすか確認する。ソフトウエア更新がユーザに認められると、クライアント・アプリケーション104はソフトウエア更新をダウンロードし、その完全性を確認し、そのソフトウエア更新を、サービス・プロバイダのコンピュータ102にログインする(201)ことなく直接インストールし、クライアント・コンピュータ101にインストールされたソフトウエア製品を分析する(204)。ユーザが興味を示した新しいソフトウエア製品に関して通知が行われた場合、クライアント・アプリケーション104は、ユーザが依然そのソフトウエア製品に興味を持ち、購入して、ダウンロードした後、インストールしようとしているか確認する。
【０１０６】
電子メールで通知をするよう更に拡張された実施例では、その電子メールは、クライアント・コンピュータ101がソフトウエア更新又はソフトウエア製品をインストールするのに満たすべき条件の仕様を含み、サービス・プロバイダのコンピュータ102によって送信される。この情報は基本的に、クライアント・コンピュータ101に関連するソフトウエア更新を判定するためにクライアント・アプリケーション104によって使用されたものと同じである。例えば、この情報はソフトウエア更新に関して、ソフトウエア更新が適用可能なソフトウエア製品の最も古いバージョンを含む。この電子メール通知における追加情報は、例えば、ソフトウエア更新がユーザによって一度だけ使用され、繰り返し適用できることを保証するように、クライアント・アプリケーション104によって使用される。
【０１０７】
ユーザ・プロファイル・データベース711は通常、各ユーザを記述する情報を記憶する。この情報は、ユーザID、パスワード、ディジタル署名、クレジット・カード番号等を含むことができ、セキュリティ701、通信703、及び支払いモジュール705で使用される。図19はユーザ・プロファイル・データベース711のスキーマの一例を指定する。ユーザ・テーブル1400において、各ユーザはユーザID 1401、名前1403、電子メール・アドレス1405、サービス加入の開始日1407、加入の終了即ち完了日1409、数字などのクレジット・カード情報1411、発行日及び有効期限、ユーザが選択したパスワード1413、及び公開キー1415又は他の認証トークンで識別される。図３に示すように、ユーザにはこうしたソフトウエア更新の通知を電子メールで要求するオプション309がある。ユーザ・テーブル1400は従って、ユーザがそのように電子メールで通知を要求しているかを示すフラグ1416も含んでいる。ユーザ・テーブル1400は、ユーザを選択された製品名1419とそれらのバージョン1421に関連づける通知テーブル1417に対し、ユーザID 1401によってキー付けがなされている。ソフトウエア・ベンダやサービス・プロバイダは、新しいソフトウエア更新の情報で更新データベース709を更新し、通知テーブル1417は走査されて、更新に関する通知を行うためにユーザID 1401によってユーザを識別する。ユーザに関する電子メール・フラグ1416がチェックされ、真である場合、ユーザの電子メール・アドレス1405がユーザ・テーブル1400から得られ、ユーザに電子メールによって新しいソフトウエア更新を識別する情報が通知される。
【０１０８】
活動ログ
サービス・プロバイダのコンピュータ102は、活動ログ718内に、サービスに関連して実行される全ての活動を記録するのに使用されうる。特に興味のある活動の中に、コンピュータがユーザのソフトウエア更新等の要求に応答して行う活動がある。活動ログ718のフォーマットを表２に示す。
【０１０９】
【表２】
0004486169.tif 000003
【０１１０】
この例では、ユーザは1996年３月12日の午前９時35分40秒にログインし、方法テーブル801及び製品所在テーブル803と同期を取り、サウンドブラスタ16 2.0とMyst 1.0のソフトウエア更新が、それらの製品の入手可能な最新バージョンより新しいかどうか照会した。応答は、Myst 1.0は最新であるが、サウンドブラスタ16の現在のバージョンは2.02であるというものであった。ユーザは次にソフトウエア更新を記述したサウンドブラスタ16の新しいバージョンに関する更新エントリを取得し、次いで、そのソフトウエア更新をダウンロードし、インストールした後、ログアウトした。
【０１１１】
上の例では、活動タイプが示されていないが、リカバリ・モジュール908による更新のアンドゥ、サービスの登録、及び特定の製品に対する更新の通知の登録を含む。
【０１１２】
この例では、単一ユーザの活動が活動ログ内に示されている。実際のシステムでは、異なる何人かのユーザが活動ログ内に散在することになる。
【０１１３】
報告ツール
報告ツール713は、更新データベース709、ユーザ・プロファイル・データベース711、及び活動ログ718の照会を支援する。照会は、ソフトウエア製品と更新に関するもの、様々なユーザにアクセスされるソフトウエア更新のタイプの相関に関するもの、及び集合データに関するものであってもよい。データベース709、711、及び活動ログ718は一緒になって、ユーザのソフトウエア製品プロファイルの正確な記述を提供することができる。例えば、サウンドブラスタ16といった１つの製品のユーザであり、Mystのような第２の製品も所有するユーザ数を示す統計情報を検索できる。この情報は、個々のユーザのプライバシーを侵害することなく、収集され分析される。
【０１１４】
URLモニタ
URLモニタ715は、更新データベース709内のURLのリストをコンパイルし、周期的な基準でそれらが変更されたかどうか確認する。これは、ソフトウエア更新のURL情報が常に有効であることを保証するために行われる。図12は、URLモニタ715のフローチャートを示している。URLモニタ715は、更新テーブル807の各エントリを横断する(1201)。これは、単に連続順で、又は最も古いエントリを最初にといったより複雑なアプローチで、又は他の何らかの方法で行われる。各エントリ毎に、URLモニタ715はURLリスト823内のURLエントリを得る(1203)。各エントリは、前述のようにタイムスタンプを有する。URLモニタ715は、識別されたサイト、又はファイルにインターネット経由で接続しようとする際に、URLに対して接続する(1205)。
【０１１５】
試みられた接続は失敗するかもしれないし、ネットワークのサービス・プロバイダ等の単なる失敗とは対照的に、URLが実際にないか又は、他の意味で正しくないことを確認するために、数回繰り返されることもある。URLが存在しないことが判定されると(1207)、そのURLは、無効であるとして更新テーブル807においてマークされる(1209)。
【０１１６】
URLが存在する場合、URLのホスト・サイトにおけるタイムスタンプが、通常そのURLに関連づけられたファイルのタイムスタンプをチェックし、又はそのURLを含むファイルのタイムスタンプをチェックすることによって、又はそのどちらか最新の方をチェックすることによってチェックされる。ホストにおけるタイムスタンプが更新テーブル807で保持されるタイムスタンプより新しい場合、基礎となるファイルが変更されており、URLがもはや有効でないことが考えられる。ここで再度、URLが無効であるとしてマークされる(1209)。ホストにおけるタイムスタンプが新しくなければ、URLモニタ715はURLリスト823の次のURLに対して処理を継続する。更新テーブル807の中のURLが全て（又は、所望の数の古いURLが）処理されたら、URLモニタ715はシステム管理者に潜在的に無効なURLを知らせる(1213)。システム管理者は次に、そのURLを確認し、必要であればそれらを更新してURLが更新された時に有効フラグをリセットする。
【０１１７】
広告及び情報データベース
サービス・プロバイダのコンピュータ102が持つ、クライアント・コンピュータ101のソフトウエア・プロファイルへのアクセスは、情報、広告、及びユーザ・コンピュータにインストールされたソフトウエアに基づいて特定のユーザのそれぞれに適する他のプロモーション材料の送信に役立つ。インストールされたソフトウエア製品に基づく情報の配布は、ユーザが既にその商品に対する興味を示しているので、情報の効果を向上させる。従って、こうしたソフトウエア製品から導出され、又は関連づけられた広告又はプロモーション情報は、ユーザの興味をひく可能性が最も高い。サービス・プロバイダのコンピュータ102は、ソフトウエア製品を広告情報に関連づけ、この広告情報をユーザに対して周期的に配布することができる。
【０１１８】
更に、ソフトウエア更新のダウンロードとインストールの性質は元来時間のかかるものであり、ユーザが更新の際に気付くリスクは普通、ユーザが作業をしていないコンピュータで更新を実行することはほとんどないことを意味している。これらの要素は、サービス・プロバイダが、ユーザがソフトウエアを更新するためにクライアント・アプリケーション104を実行する適当な瞬間に、ユーザにおいて目的となる広告を向ける機会を作り、その時に、その広告はユーザのコンピュータ内にあるが、他の活動においては関係していない。広告自体は、ユーザがサービス・プロバイダ又は他のサード・パーティから購入できる有料ソフトウエア更新（アップグレード）に関するものもある。更新処理212の間の広告情報の配布は、広告／ニュース・モジュール906によってクライアント・コンピュータ101上で行われる。
【０１１９】
広告及び情報データベース717は、ソフトウエア製品を、その製品に応じて広告及びプロモーション情報に関連づける。この関連づけは、多くの異なる方法で行われる。関連づけの１つの機構は、ソフトウエア製品と広告をカテゴリに分類することである。図20は、広告情報とソフトウエア製品を関連づけるために、広告及び情報データベース717に関するスキーマの例を示している。
【０１２０】
広告テーブル1500は各広告毎に、広告番号1501、広告又は情報の項目に対するURL1503、及び「ワープロ」、「デスクトップ・パブリッシング」、「グラフィックス」、「アドベンチャー・ゲーム」、「通信」、「インターネット」等といった広告に関するカテゴリのリスト1505を含んでいる。広告又は情報の項目は、これに関連づけられた任意の数の様々なカテゴリを有することができる。製品カテゴリ・テーブル1507は、製品名1511、製品ID 1509、及びここでもその製品に関するカテゴリのリスト1513を含んでいる。
【０１２１】
ユーザが特定のインストールされた製品の更新を要求する場合、ユーザはそのインストールされた製品と同じカテゴリの他の製品に関する広告や情報に興味を有すると仮定できる。例えば、ユーザがMyst 1.0のインストールされたコピーを更新する要求を行った場合、この製品名は商品カテゴリ・テーブル1507内の商品名1511に一致し、「対話型ゲーム」といった、それに関するカテゴリ1513が検索される。広告テーブル1500のカテゴリ・リスト1505内のカテゴリ1505は、このカテゴリに一致し、一致したエントリに関するURL1503が、クライアント・アプリケーション104によってユーザに配布される情報と共に検索され、アクセスされる。情報は、インストール処理208ないし214の間にクライアント・コンピュータ101上に提供されることが好ましい。多くの一致がある場合、インストールされた製品のカテゴリの、ある割合又は数と一致する広告だけを選択するために、重み付けが適用される。他の選択基準も適用できる。図20のスキーマは単に例示のためのものであって、広告情報を、こうしたユーザ・コンピュータ上にインストールされた製品を有するユーザに配布するソフトウエア製品に関連付けるために、他のカテゴリ分類を実施可能である。
【０１２２】
クライアント・アプリケーション・ソフトウエア・アーキテクチャ
再び図９を参照して、クライアント・アプリケーション104の残りのモジュールを説明する。
【０１２３】
通信
通信モジュール903は、接続ストリームの確立と終了、ログイン、及びログアウト機能、FTP機能、及びHTTPプロトコル対応を含む補足的な機能を、サービス・プロバイダのコンピュータ102の通信モジュール703に提供する。こうした機能全てが従来の方法で実施される。
【０１２４】
セキュリティ
セキュリティ・モジュール901は、ユーザのパスワード、ディジタル署名、証明等のために、サービス・プロバイダのコンピュータ102のセキュリティ・モジュール701とインタフェースする。ユーザのパスワードや他の認証情報は、従来の方法でユーザに割り当てられる。セキュリティ・モジュール901が認証情報を記憶できるか又は、ユーザがログインの際に認証情報を手動で入力するよう要求されうる。
【０１２５】
支払い
支払いモジュール905は、更新サービスの使用に対する支払いを行うために、サービス・プロバイダのコンピュータ102の支払いモジュール705とインタフェースする。支払いのスケジュールは前述したように多岐にわたる。支払いは、クレジット・カード認証によって行われるのが好ましい。サービスの使用に対して、更新毎、周期的課金等といった、１つ又は複数の支払いスケジュールが与えられると、支払いモジュールが従来の方法で実施される。
【０１２６】
登録
登録モジュール904は、新しいユーザをサービス・プロバイダのコンピュータ102に登録するのに使用される。登録モジュール904に関するユーザ・インタフェースの例が図３に示されている。
【０１２７】
登録モジュール904は、ユーザ名、アドレス、クレジット・カード情報、及びユーザ選択のパスワードを得る。パスワードは、２度入力され、ユーザの意に反してパスワードをタイプミスしていないか保証するために、その２つのエントリが比較される。この情報は現在状態911データに記憶される。登録モジュール904はまた、この情報をサービス・プロバイダのコンピュータ102にも送信する。そこで、この情報が確認され、ユニークな登録番号がユーザに割り当てられ、その番号がクライアント・アプリケーション104に戻され、登録モジュール904がユーザにその番号を表示し、その番号を現在状態911データに内部的に記憶する。
【０１２８】
広告及びニュース
広告及びニュース・モジュール906は、監視されユーザ・プロファイル・データベースに記憶された、様々なソフトウエア製品と更新に対するユーザの以前の興味に基づいてカスタマイズされた情報を、サービスを受けるユーザに提供する。広告及びニュース・モジュール906は、ユーザ・コンピュータ101にインストールされたソフトウエア製品に基づいてユーザに広告及びプロモーション情報を配布するために、サービス・プロバイダのコンピュータ102の広告データベース717とインタフェースする。
【０１２９】
広告及びニュース・モジュール906は、様々な異なるモードで情報を提供する。あるモードでは、広告及びニュース・モジュール906が、２、３時間に１回といった周期的な基準で、前述のようにクライアント・コンピュータ101にインストールされたソフトウエア製品に従い広告データベース717から広告を取得し、それらをローカルにキャッシュする。広告（ここでは他のタイプの情報又は促進データを含む）が既にキャッシュにある場合、新しいものとしてマークされ、そうでない場合、（データベース717から判定された）広告のURLがアクセスされ、その広告がキャッシュ内に保存される。新しいものとしてマークされない広告は削除される。
【０１３０】
第２の補足モードでは、広告及びニュース・モジュール906がキャッシュから広告を選択し、前述のインストール処理の間、又はリカバリ・モジュール908によるアンドゥ操作の間といった、他のユーザの活動が発生しない所定の期間に、その広告をユーザに表示する。
【０１３１】
現在状態
現在状態911は、例えば名前、アドレス、クレジット・カード番号、登録あるいは順次番号、及びダウンロードされてインストールされている更新といった、ユーザ特有の情報を含む、クライアント・アプリケーション104の現在の動作を記述するデータのデータ記憶である。登録番号は、ユーザがサービス・プロバイダのコンピュータ101にログインする毎に使用される。ダウンロードされインストールされた更新に関する情報は、リカバリ・モジュール908のアンドゥの能力を提供する。
【０１３２】
リカバリ
リカバリ・モジュール908は、保存ファイル909を使用して、以前インストールされたソフトウエア更新をアンドゥし、又はインストール解除(de-installing)する。
【０１３３】
リカバリは、ユーザがソフトウエア更新に満足できない場合に、ユーザによって起動される動作である。起動されると、以前にインストールされたソフトウエア更新の効果を逆に戻す。ソフトウエア更新が最初にインストールされたときに、インストール・モニタ910によって作成された保存ファイル909が存在するために、リカバリ・モジュール908はリカバリを実行できる。この保存ファイル909は、ファイルの元のパス名に従って、インストールの間に削除され又は修正された各ファイルのコピー、及びインストールの間に追加されたファイルのパス名のリストを含む。この保存909は、空間を有効に利用するため、圧縮フォーマットで保持されることが好ましい。一般的に、特定のソフトウエア更新が除去されると、リカバリ・モジュール908はそのソフトウエア更新に関連付けられた保存ファイル909を読み取り、削除され、又は修正されたファイルをそのディレクトリに対して復旧し、追加されたファイル又はディレクトリを削除する。
【０１３４】
図21はリカバリ・モジュール908の操作の一例を示している。図６に示すように、リカバリ・モジュール908は、除去すべきソフトウエア更新の名前の入力を受信する。この名前は現在状態情報911内で、そのインストールに関する特定の保存ファイル909に関連付けられる。リカバリ・モジュール908は、全ての実行中のアプリケーションを終了させる(1601)。リカバリ・モジュール908は、ソフトウエア更新の名前を使用して、又は他の識別基準を使用して、その更新に関連付けられた保存ファイル909を得て、それを伸張する(1602)。リカバリ・モジュール908は、削除されたファイルを表現する、圧縮形式で保存ファイルに記憶されたファイル毎に、そのファイルをクライアント・コンピュータ101内の元の位置にコピーする(1603)。リカバリ・モジュール908は、新しいものとしてリストされたファイル又はディレクトリ毎に、そのファイル又はディレクトリを削除する(1604)。最後に、リカバリ・モジュール908は、クライアント・コンピュータ101をリブートする(1605)。
【０１３５】
要するに本発明は、様々なソフトウエア・ベンダからの様々なソフトウエア製品の更新を、それぞれがそのコンピュータにインストールされたソフトウエア製品の異なる更新を有する複数ユーザに対して提供する有効な機構を可能とする。本発明のシステムによって、ユーザとソフトウエア・ベンダ双方の実質的な負担の軽減を達成しながら、ソフトウエア更新が連続的に維持され、かつ正しいかどうかの検査が行われるようになる。このシステムによって、ソフトウエア・ベンダはソフトウエア更新をサービス・プロバイダに提供でき、加入ユーザがソフトウエア更新をタイムリーに取得できることを保証する。同様に、加入ユーザには、ユーザがこうした各製品に関して個別に情報を探し出すことなく、彼らのコンピュータにインストールされたソフトウエア更新の全てに関するソフトウエア更新に関して通知を得ることが保証される。更に、本発明によって、広告とその他の情報が、ユーザの興味と嗜好に基づいてユーザに向けられ、ユーザのコンピュータにインストールされたソフトウエア製品について表現される。
【０１３６】
【発明の効果】
本発明によって、様々なエンド・ユーザのクライアント・コンピュータを、そのクライアント・コンピュータにインストールされた、様々な異なる範疇のソフトウエア・ベンダによって作成されたソフトウエア製品に関するソフトウエア更新で更新するシステム、及び方法が提供される。
【図面の簡単な説明】
【図１】本発明に従う、ソフトウエア更新を提供するシステムを示す図である。
【図２】本発明に従う、ソフトウエア更新をクライアント・コンピュータに提供する全体的方法を示す図である。
【図３】更新サービスの新しいユーザ登録に関するユーザ・インタフェースを示す図である。
【図４】インストールに関してソフトウエア更新を選択するユーザ・インタフェースを示す図である。
【図５】ソフトウエア更新のインストールを確認するユーザ・インタフェースを示す図である。
【図６】ソフトウエア更新のインストールをアンドゥするユーザ・インタフェースを示す図である。
【図７】サービス・プロバイダのコンピュータ・システムのソフトウエア・アーキテクチャを示す図である。
【図８】サービス・プロバイダのコンピュータの更新データベースに関するスキーマの一例を示す図である。
【図９】クライアント・コンピュータのソフトウエア・アーキテクチャを示す図である。
【図１０】クライアント・コンピュータの分析、ソフトウエア更新の判定、及び更新情報の表示を更に詳細に示すフローチャートである。
【図１１】インストール・モニタの動作を示すフローチャートである。
【図１２】  URLモニタの動作を示すフローチャートである。
【図１３】図１４ないし図１８の構成を示す図である。
【図１４】ソフトウエア更新を更新データベースに登録するユーザ・インタフェースを示す図である。
【図１５】ソフトウエア更新を更新データベースに登録するユーザ・インタフェースを示す図である。
【図１６】ソフトウエア更新を更新データベースに登録するユーザ・インタフェースを示す図である。
【図１７】ソフトウエア更新を更新データベースに登録するユーザ・インタフェースを示す図である。
【図１８】ソフトウエア更新を更新データベースに登録するユーザ・インタフェースを示す図である。
【図１９】ユーザ・プロファイル・データベースのスキーマの一例を示す図である。
【図２０】広告情報データベースのスキーマの一例を示す図である。
【図２１】復旧モジュールの動作を示すフローチャートである。
【図２２】図２３ないし図２６の構成を示す図である。
【図２３】ソフトウエア製品を更新データベースに登録するユーザ・インタフェースを示す図である。
【図２４】ソフトウエア製品を更新データベースに登録するユーザ・インタフェースを示す図である。
【図２５】ソフトウエア製品を更新データベースに登録するユーザ・インタフェースを示す図である。
【図２６】ソフトウエア製品を更新データベースに登録するユーザ・インタフェースを示す図である。
【符号の説明】
101  クライアントコンピュータ
102  サービス・プロバイダのコンピュータ・システム
103  ソフトウエア・ベンダのコンピュータ・システム
104  クライアント・アプリケーション
106  ネットワーク
【図１】
0004486169.tif 000004
【図２】
0004486169.tif 000005
【図３】
0004486169.tif 000006
【図４】
0004486169.tif 000007
【図５】
0004486169.tif 000008
【図６】
0004486169.tif 000009
【図７】
0004486169.tif 000010
【図８】
0004486169.tif 000011
【図９】
0004486169.tif 000012
【図１０】
0004486169.tif 000013
【図１１】
0004486169.tif 000014
【図１２】
0004486169.tif 000015
【図１３】
0004486169.tif 000016
【図１４】
0004486169.tif 000017
【図１５】
0004486169.tif 000018
【図１６】
0004486169.tif 000019
【図１７】
0004486169.tif 000020
【図１８】
0004486169.tif 000021
【図１９】
0004486169.tif 000022
【図２０】
0004486169.tif 000023
【図２１】
0004486169.tif 000024
【図２２】
0004486169.tif 000025
【図２３】
0004486169.tif 000026
【図２４】
0004486169.tif 000027
【図２５】
0004486169.tif 000028
【図２６】
0004486169.tif 000029