(57)【要約】  サービスパッケージ３０２は、ネットワーク３１０などの連結器を介してコンピュータ・デバイス２０１に結合されている。サービスパッケージ３０２は、磁気ディスク、光ディスク、フラッシュメモリ、および半導体ディスクなどの様々な種類のデータ元を含む。加えて、サービスパッケージ３０２は、ローカル（コンピュータ・デバイス２０１のディスクドライブによってアクセスされるディスク）または遠隔（ネットワーク３１０を介してアクセスされる遠隔サーバのディスク）に存在する。サービスパッケージ３０２は、更新されるべきコンポーネントの状態または段階に対応する複数の命令セットを含む。
2007521529.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア・プロダクトを更新するコンピュータ化された方法であって、
ソフトウェア・プロダクトを複数のコンポーネントとして定義すること、
更新されるべき前記ソフトウェア・プロダクトのライフサイクルの段階に基づいて、サービスパッケージに関連づけられた複数の命令セットの１つにアクセスすること、および
前記アクセスされた命令セットにしたがって前記ソフトウェア・プロダクトのコンポーネントの少なくとも１つを修正すること
を備えることを特徴とする方法。
【請求項２】
前記ソフトウェア・プロダクトの前記コンポーネントを修正することは、前記ソフトウェア・プロダクトから一又は複数のコンポーネントを削除することを備えることを特徴とする請求項１に記載のコンピュータ化された方法。
【請求項３】
前記ソフトウェア・プロダクトの前記コンポーネントを修正することは、一又は複数のコンポーネントを前記ソフトウェア・プロダクトに追加することを備えることを特徴とする請求項１に記載のコンピュータ化された方法。
【請求項４】
前記複数の命令セットの各々は、少なくとも以下のライフサイクル段階の一つ、すなわち、前記ソフトウェア・プロダクトのプレ・デプロイ、前記ソフトウェア・プロダクトのデプロイ、前記ソフトウェア・プロダクトのポスト・デプロイに対応することを特徴とする請求項１に記載のコンピュータ化された方法。
【請求項５】
サービスパッケージでソフトウェア・プロダクトを更新する方法であって、前記ソフトウェア・プロダクトは複数のコンポーネントを含み、前記コンポーネントの各々は、それとともに関連付けられた状態を有し、前記状態は、前記コンポーネントの動作状況を表し、前記サービスパッケージは、選択されたコンポーネントに関連づけられた一又は複数のファイルを含み、前記サービスパッケージは、前記ファイルをインストールする、複数の命令セットをさらに備え、前記方法は、
前記選択されたコンポーネントに関連付けられた前記状態を決定すること、
前記決定された状態に基づいて命令セットの１つを選択すること、および
一または複数のファイルを、前記選択された命令セットにしたがって、前記選択されたコンポーネントに適用すること
を備えることを特徴とする方法。
【請求項６】
前記選択されたコンポーネントに関連付けられた状態を、それとともに関連付けられたマニフェストで、定義することをさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記コンポーネントは、コンピュータ読み取り可能な媒体上に記憶され、
前記方法は、
一又は複数の前記ファイルを適用することに関するデータで、前記選択されたコンポーネントのマニフェストを更新すること、および
コンピュータ読み取り可能な媒体上の前記選択されたコンポーネントの、前記更新されたマニフェストを記憶すること
をさらに備えることを特徴とする請求項６に記載の方法。
【請求項８】
前記マニフェストを更新することは、少なくとも以下の１つ、すなわち、バージョンナンバー、更新時間、サービスパッケージの記述、および、コンポーネントになされた変更の記述で、前記選択されたコンポーネントにとっての前記マニフェストを更新することを備えることを特徴とする請求項７に記載の方法。
【請求項９】
ユーザから、前記選択されたコンポーネントにとっての、前記更新されたマニフェストの中のデータの要求を受信すること、
問い合わせ結果を生成するために、前記受信された要求に応えて、前記更新されたマニフェストを問い合わせること、および
前記ユーザに、前記問い合わせ結果を提供すること
をさらに備えることを特徴とする請求項７に記載の方法。
【請求項１０】
前記マニフェストは、少なくとも以下の１つ、すなわち、前記ソフトウェア・プロダクトのライフサイクルの段階、および前記コンポーネントの記憶場所を明示することを特徴とする請求項６に記載の方法。
【請求項１１】
前記コンポーネントは、コンピュータ読み取り可能な媒体上に記憶され、
一又は複数の前記ファイルを適用することは、前記サービスパッケージから、前記ファイルの各々を、前記コンピュータ読み取り可能な媒体にコピーし、および前記コピーされたファイルを前記コンポーネントに結合すること
を備えることを特徴とする請求項５に記載の方法。
【請求項１２】
前記サービスパッケージは、一又は複数の更新コンポーネントを含み、前記更新コンポーネントの各々は、それとともに関連付けられた更新マニフェストを有し、前記更新マニフェストは、前記関連付けられた更新コンポーネントをインストールする、複数の命令セットを備えることを特徴とする請求項５に記載の方法。
【請求項１３】
前記複数の命令セットの各々は、少なくとも以下の段階、すなわち、前記ソフトウェア・プロダクトのプレ・デプロイ、前記ソフトウェア・プロダクトのデプロイ、前記ソフトウェア・プロダクトのポスト・デプロイの１つに対応することを特徴とする請求項５に記載の方法。
【請求項１４】
前記ソフトウェア・プロダクトは、オペレーティングシステム、およびアプリケーションプログラムの少なくとも１つを備えることを特徴とする請求項５に記載の方法。
【請求項１５】
一又は複数の前記ファイルを、前記選択されたコンポーネントに適用することは、一又は複数の前記バイナリファイルを、前記選択されたコンポーネントに適用すること
を備えることを特徴とする請求項５に記載の方法。
【請求項１６】
前記サービスパッケージを受信し、前記サービスパッケージは、更新されたコンポーネントを備えること、および
前記ソフトウェア・プロダクト内の、前記受信され、更新されたコンポーネントと前記選択されたコンポーネントの間の依存関係を解決すること
をさらに備えることを特徴とする請求項５に記載の方法。
【請求項１７】
前記依存関係を解決する間に特定された、追加のコンポーネントを受信することをさらに備えることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記依存関係の解決をすることは、前記選択された命令セットにアクセスして、前記更新されたコンポーネントに依存する追加のコンポーネントを特定することを備えることを特徴とする請求項１６に記載の方法。
【請求項１９】
前記追加のコンポーネントを取得することをさらに備え、
一又は複数の前記ファイルを適用することは、前記ソフトウェア・プロダクトに、前記更新されたコンポーネント、および前記取得された、追加のコンポーネントを適用すること
を備えることを特徴とする請求項１８に記載の方法。
【請求項２０】
一又は複数の前記ファイルを適用することは、少なくとも以下の１つ、すなわち、ファイルアクション、およびデータアクションを実行することを備えることを特徴とする請求項５に記載の方法。
【請求項２１】
前記ファイルアクションを実行することは、少なくとも以下の１つ、すなわち、前記ファイルをコピーすること、削除すること、および置き換えることを備えることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記データアクションを実行することは、システム設定を更新することを備えることを特徴とする請求項２０に記載の方法。
【請求項２３】
前記システム設定を更新することは、レジストリエントリを更新することを備えることを特徴とする請求項２２に記載の方法。
【請求項２４】
請求項５に記載の方法を実行する、コンピュータ実行可能命令を有する、一又は複数のコンピュータ読み取り可能な媒体。
【請求項２５】
一又は複数のコンピュータ読み取り可能な媒体は、サービスパッケージで、ソフトウェア・プロダクトを更新する、コンピュータ実行可能モジュールを有し、
前記ソフトウェア・プロダクトは、複数のコンポーネントを備え、
前記コンポーネントの各々は、それとともに関連付けられた状態を有し、前記状態は、前記コンポーネントの動作状況を表し、
前記サービスパッケージは、選択されたコンポーネントに関連付けられた一又は複数のファイルを備え、
前記サービスパッケージは、前記ファイルをインストールする、複数の命令セットをさらに備え、
前記モジュールは、
前記選択されたコンポーネントに関連付けられた前記状態を決定し、前記決定された状態に基づいて、前記命令セットの１つを選択する設定モジュールと、および
前記設定モデルによって選択された命令セットにしたがって、前記選択されたコンポーネントに、一又は複数の前記ファイルを適用することによって、前記選択されたコンポーネントを修正するインストールモジュール
を備えることを特徴とするコンピュータ読み取り可能な媒体。
【請求項２６】
前記選択されたコンポーネントは、それとともに関連付けられたマニフェストを有し、前記マニフェストは、前記コンポーネントに関連付けられた前記状態を定義することを特徴とする請求項２５に記載のコンピュータ読み取り可能な媒体。
【請求項２７】
前記コンポーネントは、コンピュータ読み取り可能な媒体上に記憶され、
スクリプトモジュールは、
前記インストールモジュールよって、一又は複数の前記ファイルを適用することに関するデータで、前記選択されたコンポーネントの前記マニフェストを更新すること、および
前記コンピュータ読み取り可能な媒体上の前記選択されたコンポーネントの前記更新されたマニフェストを記憶すること
をさらに備えることを特徴とする請求項２６に記載のコンピュータ読み取り可能な媒体。
【請求項２８】
レポートモジュールは、
ユーザから、前記選択されたコンポーネントの前記更新されたマニフェストのデータの要求を受信すること、
前記更新されたマニフェストを、問い合わせ結果を生成するために、前記受信された要求に応答して問い合わせをすること、および
前記ユーザに前記問い合わせ結果を提供すること
をさらに備えることを特徴とする請求項２７に記載のコンピュータ読み取り可能な媒体。
【請求項２９】
前記サービスパッケージは、更新されたコンポーネントを備え、
前記ソフトウェア・プロダクトにおける、前記更新されたコンポーネントと前記選択されたコンポーネントの間の依存関係を解決する依存モジュールをさらに備えることを特徴とする請求項２５に記載のコンピュータ読み取り可能な媒体。
【請求項３０】
前記複数の命令セットの各々は、少なくとも以下の段階、すなわち、前記ソフトウェア・プロダクトのプレ・デプロイ、前記ソフトウェア・プロダクトのデプロイ、および前記ソフトウェア・プロダクトのポスト・デプロイの１つに対応することを特徴とする請求項２５に記載のコンピュータ読み取り可能な媒体。
【請求項３１】
前記ソフトウェア・プロダクトは、オペレーティングシステム、およびアプリケーションプログラムの、少なくとも１つを備えることを特徴とする請求項２５に記載のコンピュータ読み取り可能な媒体。
【請求項３２】
ソフトウェア・プロダクトのサービスパッケージを作成する方法であって、前記ソフトウェア・プロダクトは、それとともに関連付けられた、複数のライフサイクルの段階の１つを有するコンポーネントを備え、前記方法は、
前記ソフトウェア・プロダクトに関連付けられた一又は複数のファイルを選択すること、
前記選択されたファイルをコンピュータ読み取り可能な媒体上に記憶すること、および
複数のインストールスクリプトをコンピュータ読み取り可能な媒体上に記憶し、前記インストールスクリプトの各々は、前記ライフサイクルの段階の１つに対応し、前記インストールスクリプトは、前記コンポーネントの前記ライフサイクル段階に基づいて実行され、前記記録され、選択されたファイルを前記ソフトウェア・プロダクトに適用すること
を備えることを特徴とする方法。
【請求項３３】
前記ソフトウェア・プロダクトに関連付けられた一又は複数のファイルを選択することは、少なくとも、アプリケーションプログラム、およびオペレーティングシステムの１つを表すイメージに関連付けられた、一又は複数のファイルを選択することを備えることを特徴とする請求項３２記載の方法。
【請求項３４】
ネットワークを介して、コンピュータ読み取り可能な媒体を配布することをさらに備えることを特徴とする請求項３２記載の方法。
【請求項３５】
前記複数のインストールスクリプトを記憶することは、前記ソフトウェア・プロダクトに関連づけられた、前記選択されたファイル、およびインストールされたファイルの間の依存関係を解決する、複数のインストールスクリプトを記憶することを備えることを特徴とする請求項３２に記載の方法。
【請求項３６】
請求項３２の方法を実行する、コンピュータ実行可能命令を有する一又は複数のコンピュータ読み取り可能な媒体。
【請求項３７】
コンピュータ読み取り可能な媒体上に記憶されたソフトウェア・プロダクトを更新するサービスパッケージであって、前記ソフトウェア・プロダクトは、それとともに関連付けられた、複数のライフサイクルの段階の１つを有するコンポーネントを備え、前記サービスパッケージは、
前記コンポーネントに関連付けられた一又は複数のファイルと、および
前記コンポーネントの前記複数のライフサイクルの段階に対応する複数の命令セットであって、前記複数の命令セットの１つは、前記コンポーネントに関連付けられた前記ライフサイクルの段階に応答して、選択され、および実行され、前記ファイルを前記コンポーネントに適用することを備えることを特徴とするサービスパッケージ。
【請求項３８】
前記複数の命令セットの１つは、前記サービスパッケージから、前記ファイルの各々を、コンピュータ読み取り可能な媒体にコピーし、および前記コピーされたファイルと前記コンポーネントを結合することによって、前記ファイルを前記コンポーネントに適用することを特徴とする請求項３７に記載のサービスパッケージ。
【請求項３９】
前記ライフサイクルの段階は、少なくとも以下の１つ、すなわち、前記ソフトウェア・プロダクトのプレ・デプロイ、前記ソフトウェア・プロダクトのデプロイ、および前記ソフトウェア・プロダクトのポスト・デプロイに対応することを特徴とする請求項３７に記載のサービスパッケージ。
【請求項４０】
前記ソフトウェア・プロダクトは、少なくとも、オペレーティングシステム、およびアプリケーションプログラムの１つを備えることを特徴とする請求項３７に記載のサービスパッケージ。
【請求項４１】
前記ファイルは、バイナリファイルを備えることを特徴とする請求項３７に記載のサービスパッケージ。
【請求項４２】
前記ファイルは、別のファイルへの参照を備えることを特徴とする請求項３７に記載のサービスパッケージ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ソフトウェア・プロダクトの保守分野に関する。具体的には、本発明の実施形態は、コンポーネントベースのオペレーティングシステムおよびアプリケーションプログラムを、ソフトウェア・プロダクトのライフサイクルを通じて、サービスパッケージを用いて更新することに関する。
【背景技術】
【０００２】
オペレーティングシステムのイメージは、コンピュータ内のハードウェアと相互に作用して、複数の機能を実行する。従来のコンピュータは通常、オペレーティングシステムを実行して、その作動中に、コンピュータの様々な面を管理する。典型的には、オペレーティングシステムは、入力、および／または出力装置だけでなく、外部記憶装置へのアクセスを管理すること、および一又は複数の追加のアプリケーションの実行を制御することを担当する。オペレーティングシステムがコンピュータによって実行される前に、オペレーティングシステムは、典型的には、コンピュータにインストールされなければならず、その工程は、通常、複数のファイルを、配布媒体（例えば、ＣＤ−ＲＯＭ）からコンピュータの外部記憶装置（例えば、ハードディスク）上にコピーすることを含む。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のオペレーティングシステムは、命令、および／またはデータを含む、非常に多くのファイルを含む。これらの命令は、コンピュータによって実行される場合、オペレーティングシステムに機能を提供する。オペレーティングシステムは、一または複数の特定のファイルを追加、または置き換えるなどの幅広い種類の方法で、および幅広い種類の人々（例えば、オペレーティングシステム開発者以外のユーザ、管理者、ソフトウェア開発者など）によって、変更される（例えば、更新される）だろう。正常に動作しないコンピュータを検査し、またはオペレーティングシステムを更新することが難しくなっているのは、ユーザ、または管理者が、どのような機能であって、またはコンピュータに何がインストールされるべきかを、正確に知ることが難しいからである。
【０００４】
現在あるシステムにおいて、ソフトウェア・プロダクト（例えば、オペレーティングシステム、またはアプリケーションプログラム）を備えるバイナリファイルを保守することは、ソフトウェア・プロダクトのライフサイクルにおいて最も費用のかかる側面であることが多い。典型的なソフトウェア・プロダクトのライフサイクルは、プレ・デプロイ(pre-deployment)段階（例えば、事前インストール）、デプロイ(deployment)段階（例えば、インストール）、および、ポスト・デプロイ(post-deployment)段階（例えば、稼動中のシステムへのインストール）を含む。バイナリファイルの大きさ、どれか一つの単独の問題のために一般的に提供されるバイナリファイルの量、およびソフトウェア・プロダクトのライフサイクルの各々の段階におけるバイナリファイルの異なる記憶場所によって、バイナリファイルの配布、および作成は困難になる。また、システム全体に複数のバイナリを保守することにより、システム上の、より大きい、統合された機能の現行バージョンに、特定の情報を提供できなくなる。
【０００５】
例えば、バイナリファイルに記録されたソフトウェアコードの問題点を改善するためにサービスパッケージを作成する場合、現在あるシステムは、通常、バイナリの更新されたコピー、または他のソフトウェアを修正することなくそのソフトウェアコードを修正するパッチを作成する。しかしながら、現在あるシステムは、通常、現段階のソフトウェア・プロダクトのライフサイクルに基づき、パッチとバイナリファイルの両方の異なるバージョン、すなわち、プレ・デプロイのためのバージョン、デプロイのためのバージョン、および、稼動中のシステムのためのバージョン、を必要とする。
【０００６】
他の例においては、ある従前のシステムは、エンドユーザに対して、稼動中のシステム上の、またはプレ・デプロイ時の、一つのファイル、またはライブラリ（例えば、library.dll）を置き換える“ホットフィックス（hot fix）”（例えば、パッチ）を提供する。他のシステムは、インストール時に、クライアントマシーンに対して、インストール媒体から、またはネットワークを介して、更新されたファイル、またはライブラリ（例えば、library.dll）を取得し、および取得したアップデートをインストールするよう指図することによってアップデートを提供する。しかしながら、そのようなシステムは、クライアントマシーンの各々のライフサイクルの段階、すなわち、プレ・デプロイ、デプロイ、ポスト・デプロイのための個別のスクリプトを必要とする。さらに、たった一つのファイルの変更が、他の従属ファイルの変更を必要とするかもしれない。従前のシステムは、更新処理の間、理にかなった、従属関係の解決を提供できない。
【０００７】
したがって、ソフトウェア・プロダクトのライフサイクル全般にわたってソフトウェア・プロダクトの保守をするシステムは、これらの一又は複数の、および他の課題に対応することが望まれる。
【課題を解決するための手段】
【０００８】
本発明の実施態様は、ソフトウェア・プロダクトを、サービスパッケージによって更新することを含む。サービスパッケージは、コンポーネントに関連づけられた一又は複数のファイル、およびファイルをインストールするための複数の命令セットを含む。一実施態様では、本発明は、コンポーネントに関連付けられた状態、または他の操作状況を決定し、決定された状態に基づき命令セットの一つを選択し、および選択された命令セットにしたがって、一又は複数のファイルを、コンポーネントに適用する。例えば、その状態はソフトウェア・プロダクトのライフサイクルの以下の段階、すなわち、ソフトウェア・プロダクトのプレ・デプロイ、ソフトウェア・プロダクトのデプロイ、および、ソフトウェア・プロダクトのポスト・デプロイ、の一つに相当するだろう。
【０００９】
本発明は、ソフトウェア・プロダクトのライフサイクルの全ての段階において、消費者および元の機器製造者の両方に対し一つのサービスパッケージを提供し、ソフトウェア・プロダクトを保守する。ソフトウェア・プロダクトが保守点検すべき、ますます多くのバイナリを持つため、本発明は、保守コストを引き下げ、および、システムの単なるクエリーがシステム上で保守されているバイナリのバージョンを決定できるようにする。
【００１０】
本発明のある側面によると、コンピュータ化された方法はソフトウェア・プロダクトを更新する。その方法は、複数のコンポーネントとしてソフトウェア・プロダクトを特徴付ける。その方法は、更新されるべきソフトウェア・プロダクトのライフサイクルの段階に基づいて、サービスパッケージに関連づけられた、複数の命令セットの一つにアクセスすることも含む。その方法は、アクセスされた命令セットにしたがって、ソフトウェア・プロダクトにおけるコンポーネントの少なくとも一つを修正することも含む。
【００１１】
本発明の他の側面によると、方法は、ソフトウェア・プロダクトを、サービスパッケージによって更新する。ソフトウェア・プロダクトは複数のコンポーネントを含む。コンポーネントの各々は、それとともに関連づけられた状態を有している。その状態はコンポーネントの動作状況を表す。サービスパッケージは選択されたコンポーネントに関連づけられた一又は複数のファイルを含む。サービスパッケージはさらにファイルをインストールするための複数の命令セットを含む。方法は選択されたコンポーネントに関連づけられた状態を決定することを含む。方法は決定された状態に基づいて命令セットの一つを選択することも含む。方法は、選択された命令セットにしたがって、一又は複数のファイルを選択されたコンポーネントに適用することも含む。
【００１２】
本発明のさらに他の側面によると、一又は複数のコンピュータ読み取り可能な媒体は、サービスパッケージによってソフトウェア・プロダクトを更新する、コンピュータで実行可能なモジュールを有する。ソフトウェア・プロダクトは複数のコンポーネントを含む。コンポーネントの各々はそれとともに関連づけられた状態を有している。その状態はコンポーネントの動作状況を表す。サービスパッケージは選択されたコンポーネントに関連づけられた一又は複数のファイルを含む。サービスパッケージは、さらに、ファイルをインストールするための複数の命令セットを含む。モジュールは、選択されたコンポーネントに関連付けられた状態を決定し、および決定された状態に基づいて命令セットの一つを選択する設定モジュールを含む。モジュールは、設定モジュールによって選択された命令セットにしたがって、一又は複数のファイルを選択されたコンポーネントに適用することによって、選択されたコンポーネントを修正するインストールモジュールも含む。
【００１３】
本発明のさらに別の側面によると、方法はソフトウェア・プロダクトのためのサービスパッケージを作成する。そのソフトウェア・プロダクトはそれとともに関連付けられた複数のライフサイクル段階の一つを有するコンポーネントを含む。その方法はソフトウェア・プロダクトに関連付けられた一又は複数のファイルを選択することを含む。その方法は、選択されたファイルを、コンピュータ読み取り可能な媒体上に記憶することも含む。その方法は、複数のインストールスクリプトを、コンピュータ読み取り可能な媒体上に記憶することも含む。各々のインストールスクリプトはライフサイクルの段階の一つに対応する。インストールスクリプトは、コンポーネントのライフサイクルの段階に基づいて実行されて、記憶され、選択されたファイルをソフトウェア・プロダクトに適用する。
【００１４】
本発明のさらに別の側面によると、サービスパッケージはコンピュータ読み取り可能な媒体上に記憶されたソフトウェア・プロダクトを更新する。そのソフトウェア・プロダクトはそれと関連づけられた複数のライフサイクルの段階の一つを有するコンポーネントを含む。そのサービスパッケージは、そのコンポーネントに関連づけられた一又は複数のファイルを含む。そのサービスパッケージはコンポーネントの複数のライフサイクルの段階に対応する複数の命令セットも含む。複数の命令セットの一つは、コンポーネントに関連づけられたライフサイクルの段階に応答して、選択され、および実行されて、ファイルをコンポーネントに適用する。
【００１５】
また、本発明は様々な他の方法および装置を含む。
【００１６】
他の特徴は、以下の記述により、その一部が明らかになり、その一部が指摘される。
【発明を実施するための最良の形態】
【００１７】
最初に図１に言及すると、ブロック図は、コンピュータ・デバイス１０２上に記憶されたコンポーネント＃１ないしコンポーネント＃Ｘなど、一又は複数のコンポーネント１０８を持つ、コンポーネントベースのソフトウェア・プロダクト１０６に適用される例示的なサービスパッケージ１０４を説明する。一実施態様において、本発明は、ソフトウェア・プロダクト１０６（例えば、オペレーティングシステム、または、アプリケーションプログラム）を更新するために、コンピュータ・デバイス１０２上で実行するソフトウェアを含む。ソフトウェア・プロダクト１０６における各コンポーネント１０８は少なくともバイナリファイルなどの一つのファイルを含み、およびマニフェスト、またはそれとともに関連付けられたコンポーネント１０８を記載する他の情報を有する。本発明はソフトウェア・プロダクト１０６のコンポーネントベースの定義を使用し、コンポーネント１０８を更新するためのただ一つの方法を提供する。すなわち、本発明はサービスパッケージ１０４内のバイナリファイル＃１ないしバイナリファイル＃Ｙなど、全てのバイナリファイル１１０を適用し、またはそうでなければインストールするコンポーネントインストーラを提供する。
【００１８】
サービスパッケージ１０４は、ソフトウェア・プロダクトのライフサイクルにおけるコンポーネント１０８に関連付けられた段階または状態で、ファイル１１０の適切なインストールを指示する命令セット＃１ないし命令セット＃Ｚなど、複数の命令セット１１２（例えば、インストール段階の宣言的記述を含む）も含む。例えば、ソフトウェア・プロダクトのライフサイクルの段階は、これらに限定されないが、ソフトウェア・プロダクト１０６のプレ・デプロイ、ソフトウェア・プロダクト１０６のデプロイ、およびソフトウェア・プロダクト１０６のポスト・デプロイを含む。他のライフサイクルの段階は本発明の適用範囲内である。本発明はソフトウェア・プロダクト１０６の現在のライフサイクルの段階に対応する命令セット１１２にしたがってファイル１１０を適用する。したがって、本発明は、ソフトウェア・プロダクトのライフサイクルのいかなる段階、状態、または動作状況、若しくは操作環境でもサービスパッケージ１０４のインストールを可能にするただ一つのサービスパッケージ１０４を提供する。
【００１９】
一実施態様において、本発明はコンポーネント１０８に関連付けられた状態を決定し、決定された状態に基づいて命令セット１１２の一つにアクセスし、および選択し、並びに選択された命令セット１１２にしたがって１つ以上のファイル１１０をコンポーネント１０８に適用して、コンポーネント１０８を修正（例えば、コンポーネント、またはコンポーネント内のファイルを追加、または削除する）する。本発明は更新処理に関するデータを持つ更新されたコンポーネント１０８に関連付けられたマニフェストも更新する。管理者などのユーザは、各コンポーネント１０８に記憶されたマニフェストに問い合わせを行って、ソフトウェア・プロダクト１０６に行われた変更リストに加えてソフトウェア・プロダクト１０６にインストールされたすべてのコンポーネント１０８のすべてのバージョンのリストを取得する。
【００２０】
図１のシステムは、以下、より詳細に記述される。
【００２１】
（コンポーネント化されたソフトウェア・プロダクト）
次に、図２に言及すると、ブロック図は本発明の一実施形態にしたがって例示的なコンピュータ・デバイス２０１を説明する。コンピュータ・デバイス２０１は、オペレーティングシステム２０２、および一又は複数のアプリケーションプログラム２０４などのソフトウェア・プロダクトを有するものとして説明される。
【００２２】
オペレーティングシステム２０２は、コンピュータ・デバイス２０１にとって、基本的なソフトウェア制御プログラムであり、ユーザインターフェースを提供することを含む様々な機能を実行し、一又は複数のアプリケーション２０４の実行を管理し、並びに様々な入出力（Ｉ／Ｏ）装置に対するデータの入力、および、データの出力を制御する。アプリケーションプログラム２０４はコンピュータ・デバイス２０１上で実行される、一又は複数の幅広い種類のアプリケーションソフトウェアプログラムを表す。そのようなアプリケーションプログラム２０４の例は教育プログラム、リファレンスプログラム、生産性プログラム（例えば、ワープロ、表計算ソフト、データベース）、気晴らしのためのプログラム、ユーティリティープログラム（例えば、通信プログラム）などを含む。アプリケーションプログラム２０４はユーザによってコンピュータ・デバイス２０１にインストールされうるし、または、もう一つの方法として、コンピュータ・デバイス２０１の製造者および／または販売業者によってプリインストールされうる。
【００２３】
オペレーティングシステム２０２はその機能をコンポーネント＃１ないしコンポーネント＃Ｎなど、複数のコンポーネント２０６に分割する。各コンポーネント２０６は、マニフェスト＃１ないしマニフェスト＃Ｎなど、それぞれ対応するマニフェスト２０８を有する。コンポーネント２０６は、一又は複数のファイル（またはファイルの識別子）の集合を含む。そのファイルは、実行可能ファイル、ＤＬＬ（dynamic-link library）、ＣＯＭ（component object module）など、ソフトウェア命令を含むことができる。そのファイルは、一又は複数のコンポーネント２０６によって使用されるデータも含むだろう。一実施例においては、オペレーティングシステム２０２の特定の機能に対応するファイル（例えば、データおよび／または命令）は、同じコンポーネント２０６に集約される。例えば、ゲームのコンポーネント、通信のコンポーネント、およびファイルシステムのコンポーネントが存在する。コンポーネント分割（componentization）に結びつくファイルのグルーピングは、静的であるかもしれないし、あるいは次第に変化するかもしれない。一実施例では、オペレーティングシステム２０２を更新することは、あるコンポーネント２０６から選択したファイルが削除され、および他のコンポーネント２０６に追加される結果になるかもしれない。
【００２４】
各マニフェスト２０８は、対応するコンポーネント２０６について説明する情報を含む。対応するコンポーネント２０６に関係する幅広い種類のメタデータは各マニフェスト２０８に含まれるだろう。一実施形態では、マニフェスト２０８は、もしあれば、対応するコンポーネント２０６が依存している他のコンポーネント２０６がどれであるのかはもちろん、対応するコンポーネント２０６のバージョンも特定する。一例として、コンポーネント２０６の一又は複数のファイルを適切に実行するために、もう一つのコンポーネントからの一又は複数の他のファイル（例えば、ＤＬＬファイル）は、コンピュータ・デバイス２０１上にインストールされる必要があるだろう。この例では、マニフェスト２０８は、コンポーネント２０６が他のコンポーネントに依存していることを指し示すだろう。
【００２５】
一形態では、コンピュータ・デバイス２０１に関連付けられた一または複数のコンピュータ読み取り可能な媒体は、サービスパッケージ１０４などのサービスパッケージによりソフトウェア・プロダクト１０６（例えば、オペレーティングシステム２０２）を更新するためのコンピュータ実行可能モジュールを有する。コンピュータ実行可能モジュールは、コンポーネントインストーラ２１０として具体化される。コンポーネントインストーラ２１０は、設定モジュール２１２、インストールモジュール２１４、スクリプトモジュール２１６、レポートモジュール２１８、および依存モジュール２２０を含む。設定モジュール２１２は更新されるべきコンポーネント２０６に関連付けられた状態を決定し、および決定された状態に基づいて命令セットの１つを選択する。インストールモジュール２１４は、選択された命令セットにしたがって一又は複数のファイルをコンポーネント２０６に適用することによって、コンポーネント２０６を修正する。スクリプトモジュール２１６は、一又は複数のファイルを適用することに関するデータで、コンポーネント２０６に対するマニフェスト２０８を更新する。スクリプトモジュール２１６は、さらにコンポーネント２０６とともに、コンポーネント２０６に対する最新版のマニフェスト２０８を記憶する。レポートモジュール２１８は、ユーザから、マニフェスト２０８内のデータの要求を受け取る。レポートモジュール２１８は、問い合わせ結果を生成する受信した要求に応えてマニフェスト２０８にさらに問い合わせを行い、およびユーザに対して問い合わせ結果を提供する。依存モジュール２２０は、サービスパッケージ内のファイルとソフトウェア・プロダクト内のコンポーネント２０６の間の依存関係を解決する。当業者はモジュール２１２ないし２２０はコンポーネントインストーラ２１０の全ての部品とすることができ、または別々のアプリケーションプログラム、若しくは両者間の組み合わせの中に記憶することができることに気がつくだろう。さらに、モジュール２１２ないし２２０は、ローカルで、または遠隔で実行されて、その機能を提供するだろう。コンポーネントインストーラ２１０は追加の、または図示されているよりも少ない機能を含むことができ、および本明細書で説明される。
【００２６】
（コンポーネントソフトウェア・プロダクトの更新）
次に、図３に言及すると、ブロック図はコンポーネントに分割されたソフトウェア・プロダクトがどのように本発明の一実施形態にしたがって更新されるのかを例示する。図２に関して上記で述べられたように、コンピュータ・デバイス２０１などのコンピュータは、コンポーネントに分割されたオペレーティングシステム２０２を含むものとして説明される。サービスパッケージ３０２は、ネットワーク３１０などの連結器を介してコンピュータ・デバイス２０１に結合される。サービスパッケージ３０２は、磁気ディスク、光ディスク、フラッシュメモリ、および半導体ディスクなどの様々な情報源のいくつかを含むことができる。加えて、サービスパッケージ３０２はローカル（例えば、コンピュータ・デバイス２０１のディスクドライブによってアクセスされるディスク）、または遠隔（例えば、ネットワーク３１０を通してアクセスされるリモートサーバのディスク）にすることができる。当業者は、サービスパッケージ３０２とコンピュータ・デバイス２０１の間の実際の結合が、サービスパッケージ３０２の特徴に依存していることに気がつくだろう（例えば、その結合にはディスクドライブをコンピュータ・デバイス２０１に接続するバス、モデムと電話線、ネットワークアダプタとネットワーク、またはこれらのいくつかの組み合わせが含まれるだろう）。
【００２７】
サービスパッケージ３０２は複数のインストール命令セット３０４を含む。上記で述べたように、各命令セット３０４は、ソフトウェア・プロダクトのライフサイクルにおける、更新されるべきコンポーネント（例えば、コンポーネント２０６）の状態または段階に対応する。命令セット３０４は、コンピュータ実行可能命令（例えば、ソフトウェアコード、若しくはスクリプト）、または、図２における、更新処理中のコンポーネントインストーラ２１０などのアプリケーションプログラムに付随する宣言型のインストールステップを含む。サービスパッケージ３０２はさらに更新されたコンポーネント＃１ないし更新されたコンポーネント＃Ｍなどの、更新されたコンポーネント３０６を含む。サービスパッケージ３０２は、更新されたコンポーネント３０６に各々対応する、更新されたマニフェスト＃１ないし更新されたマニフェスト＃Ｍなどの更新されたマニフェスト３０８を記憶する。インストール命令セット３０４、更新されたコンポーネント３０６、および更新されたマニフェスト３０８は、サービスパッケージ３０２内に一緒に図示されているが、インストール命令セット３０４、更新されたコンポーネント３０６、および更新されたマニフェスト３０８の一又は複数は、あるいは、異なる場所（コンピュータ・デバイス２０１に対して遠隔に、あるいはローカル）に記憶されるだろう。
【００２８】
インストール命令セット３０４は、オペレーティングシステム２０２にとってのアップデート（例えば、コンポーネント３０６のバージョンを含む）であるコンポーネント３０６を特定する。更新処理の間、新しいコンポーネント３０６が、コンポーネント２０６の１つとしてまだインストールされていなかったと仮定すると、更新されたコンポーネント３０６および対応するマニフェスト３０８は、対応するコンポーネント２０６を置き換えまたは追加する。限定ではなく一例として、コンポーネント３０６は、コンポーネント２０６のより新しいバージョンである。この状況においては、コンポーネント３０６およびマニフェスト３０８は、オペレーティングシステム２０２内のコンポーネント２０６およびマニフェスト２０８をそれぞれ置き換えることができる。コンポーネント３０６は、コンポーネント２０６の一又は複数のファイルを、更新されたコンポーネント３０６の一又は複数のファイルにより、単に上書きすることによってコンポーネント２０６を置き換えることができる（上書きされたファイルを状況に応じて、上書きする前に他の場所に保存することができる）。同様の例で、マニフェスト３０８が、コンポーネント３０６がコンポーネント２０６内に現在存在するファイルを欠いていることを示す（例えば、マニフェスト２０８をレビューすることによって示すとき）ならば、そのファイルは、更新処理の間にオペレーティングシステム２０２を記録しているコンピュータ読み取り可能な媒体から削除される。
【００２９】
もう一つの実施形態では、更新されたコンポーネント３０６内のファイルは、単に他のファイルを参照するものであるかもしれない。例えば、サービスパッケージ３０２の大きさを最小化し、および最も最近に更新されたコンポーネント３０６がインストールされていることを保証するために、更新されたコンポーネント３０６は、インストールされるべき実際のファイルへのハイパーリンクを含むことができる。コンポーネントインストーラ２１０は、更新処理の間に更新されたコンポーネント３０６に関連付けられたファイルをダウンロードする。
【００３０】
オペレーティングシステム２０２は、幅広い様々な理由によって更新されるだろう。例えば、あるコンポーネントのあるファイルのバグフィックスを利用することができ、コンポーネント２０６の新しい機能（例えば、置換または追加ファイル）を利用することができ、または新しいコンポーネント３０６を利用することができる。
【００３１】
さらに、新しいコンポーネント３０６は、前のコンポーネント２０６の代わりというよりむしろ前のコンポーネント２０６に加えてオペレーティングシステム２０２の一部としてインストールされるだろう。この例においては、マニフェスト２０８は変更されて、新しいコンポーネント３０６および前のコンポーネント２０６の両方がインストールされていることを示す。これにより、異なるアプリケーションは、自らが選ぶ（または、使用することをプログラムされている）コンポーネント２０６、３０６のどちらのバージョンでも使用できるようになる。当業者は、一実施形態においては、命令セット３０４は各コンポーネントにとってのマニフェスト３０８の一部であることに気がつくだろう。この方法では、コンポーネントインストーラは、各マニフェスト３０８にアクセスし、それとともに関連付けられているコンポーネント３０６をインストールする方法を決定する。
【００３２】
（コンポーネントインストーラの動作）
次の図４に言及すると、例示的なフローチャートは、コンポーネントインストーラの動作を説明する。図４の処理は、コンピュータ・デバイス２０１などのコンピュータ上で、あるいはコンピュータに結合されたもう一つのコンピュータ上で実行されるであろうコンポーネントインストーラ２１０などのアプリケーションプログラムによって実行される。コンポーネントインストーラは、更新されるソフトウェア・プロダクト（例えば、オペレーティングシステム２０２）、または別のアプリケーションの一部とすることができる。図４の更新処理は、ソフトウェア、ハードウェア、ファームウェア、またはその組み合わせの中で実行することができる。
【００３３】
更新処理はサービスパッケージを受信し、４０２でコンポーネントに関連付けられた状態を決定し、４０４で決定された状態に基づいて命令セットの１つを選択し、および４０６で選択された命令セットにしたがって一又は複数のファイルをコンポーネントに適用することを含む。ファイルを適用することは、サービスパッケージの各ファイルを、コンポーネントを記憶するコンピュータ読み取り可能な媒体にコピーし、およびコピーされたファイルをコンポーネントに統合することを含む。代わりに、あるいは追加で、ファイルを適用することは、ファイルアクションおよび／またはデータアクションを実行することを含む。ファイルアクションを実行することは、ファイルをコピーすること、削除すること、および置き換えることを含む。データアクションを実行することはレジストリエントリなどのシステム設定を更新することを含む。
【００３４】
更新処理は、さらに、一又は複数のファイルを適用することに関するデータで、コンポーネントに対するマニフェストを更新すること、および４０８でコンポーネントに対する更新されたマニフェストをコンポーネントとともに記録することを含む。記録されたデータは、少なくとも以下のうち１つを含む：バージョンナンバー、更新時間、サービスパッケージの記述、コンポーネントになされた変更の記述、ソフトウェア・プロダクトの現在のライフサイクルの段階、およびコンポーネントの記憶場所。更新処理は、さらに、４１０でマニフェスト内のデータに対する要求をユーザから受信すること、４１２で問い合わせ結果を生成するために受信要求に応答するマニフェストに問い合わせること、および４１４で問い合わせ結果をユーザに提供することを含む。
【００３５】
更新処理は、ソフトウェア・プロダクト内の更新されたコンポーネントと現在のコンポーネントの間の従属関係も解決する。従属関係の解決は、選択された命令セットにアクセスして、最新版のコンポーネント上で、または更新されたコンポーネントによって依存する一又は複数の追加のコンポーネントを特定することを含む。従属関係の解決の結果として、コンポーネントインストーラは、追加のコンポーネントを必要に応じて要求し、および受信することができる。
【００３６】
一又は複数のコンピュータ読み取り可能な媒体は、図４で説明されている方法を実行するコンピュータ実行可能命令を有している。
【００３７】
（サービスパッケージの作成）
次に、図５に言及すると、例示的なフローチャートは、サービスパッケージの作成について説明する。相手先ブランド製品の製造者（ＯＥＭ）、ベンダー、システムアドミニストレータ、独立系ソフトウェアベンダー、または他のユーザは、コンピュータ読み取り可能な媒体上に、またはネットワーク上に配布用のサービスパッケージを作成する。その方法は、５０２でソフトウェア・プロダクトに関連づけられた一又は複数のファイルを選択すること、および５０４で選択されたファイルをコンピュータ読み取り可能な媒体上に記録することを含む。その方法は、５０６でコンピュータ読み取り可能な媒体上に複数のインストールスクリプトも記録する。各インストールスクリプトは、更新されるべきコンポーネントの状態の１つに対応する。インストールスクリプトは、記録され、選択されたファイルをソフトウェア・プロダクトに適用するためにコンポーネントの状態に基づいて実行される。一又は複数のコンピュータ読み取り可能な媒体は、図５において説明されている方法を実行するためのコンピュータ実行可能命令を有する。
【００３８】
（実行環境の例）
図６は、コンピュータ１３０の形態における汎用コンピュータ・デバイスの一例を示す。本発明の一実施形態において、コンピュータ１３０などのコンピュータは、本明細書で説明され、および記述される他の図における使用に適している。コンピュータ１３０は、一又は複数のプロセッサ、または処理装置１３２、およびシステムメモリ１３４を有する。説明された実施形態において、システムバス１３６は、システムメモリ１３４を含む様々なシステムコンポーネントを処理装置１３２に連結する。バス１３６は、メモリーバスまたはメモリーコントローラ、周辺機器のバス、ＡＧＰ（accelerated graphics port）、および様々なバスアーキテクチャーのいくつかを使用するプロセッサ、またはローカルバスを含む、一又は複数の様々な型のバス構造を表す。限定ではなく一例として、そのようなアーキテクチャーはＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカルバス、およびメザニンバスとしてもまた知られるＰＣＩ（Peripheral Component Interconnect）バスを含む。
【００３９】
コンピュータ１３０は通常、少なくともコンピュータ読み取り可能な媒体の形態をもつ。揮発性媒体および不揮発性媒体、取り外し可能な記録媒体および取り外し不能な記録媒体の両方を含むコンピュータ読み取り可能な媒体は、コンピュータ１３０によってアクセスされる使用可能な記録媒体であろう。限定ではなく一例として、コンピュータ読み取り可能な媒体は、コンピュータ記憶媒体および通信媒体を含む。コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報記憶のための方法または技術において実行される、揮発性および不揮発性、取り外し可能および取り外し不能な記録媒体を含む。例えば、コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他の記憶技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置や他の磁気記憶装置、あるいは欲しい情報を記録するために使用され、およびコンピュータ１３０によってアクセスできる他の記憶媒体を含む。通信媒体は通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または搬送波あるいは他の伝送機構などの変調されたデータ信号における他のデータを具体化し、および情報配信記録媒体を含む。当業者は変調されたデータ信号をよく知っており、それは信号内の情報をエンコードする方法で、一又は複数の特性を設定させ、または変更させる。有線ネットワーク、またはダイレクト有線接続などの有線媒体、および音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体は通信媒体の例である。上記のいくつかの組み合わせもまた、コンピュータ読み取り可能な媒体の範囲に含まれる。
【００４０】
システムメモリ１３４は、取り外し可能および／または取り外し不能、揮発性および／または不揮発性メモリの形態でのコンピュータ記録媒体を含む。説明されている実施形態では、システムメモリ１３４は、読み出し専用メモリ（ＲＯＭ）１３８、および、ランダムアクセスメモリ（ＲＡＭ）１４０を含む。スタートアップの際などの、コンピュータ１３０内部での要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム１４２（ＢＩＯＳ）は通常、ＲＯＭ１３８内に記録されている。ＲＡＭ１４０は通常、すぐにアクセスでき、および／または処理装置１３２によって現在稼動されているデータおよび／またはプログラムモジュールを含む。制限ではなく一例として、図６はオペレーティングシステム１４４、アプリケーションプログラム１４６、他のプログラムモジュール１４８、およびプログラムデータ１５０について説明する。
【００４１】
コンピュータ１３０は他の取り外し可能／取り外し不能、揮発性／不揮発性コンピュータ記憶媒体も含む。例えば、図６は、取り外し不能で不揮発性の磁気媒体に対する読み込み、または書き出しをするハードディスクドライブ１５４について説明する。図６は、取り外し可能で不揮発性の磁気ディスク１５８に対する読み込み、または書き出しをする磁気ディスクドライブ１５６、およびＣＤ−ＲＯＭまたは他の光記録媒体などの取り外し可能で不揮発性の光ディスク１６２に対する読み込み、または書き出しをする光ディスクドライブ１６０も示す。例示的な動作環境において使用される他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体は、以下のものに制限されるということではなく、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体のＲＡＭ、半導体のＲＯＭ、および同様のものを含む。ハードディスクドライブ１５４、磁気ディスクドライブ１５６、および光ディスクドライブ１６０は通常、インターフェース１６６などの不揮発性メモリインターフェースによってシステムバス１３６に接続される。
【００４２】
上記で記述し、および図６で説明したドライブ、または他のマスストレージデバイス、およびそれらの関連したコンピュータ記憶媒体は、コンピュータ１３０にコンピュータ読み取り可能な命令、データ構造、プログラムモジュール、および他のデータの記憶装置を提供する。例えば、図６においては、ハードディスクドライブ１５４は、オペレーティングシステム１７０、アプリケーションプログラム１７２、他のプログラムモジュール１７４、およびプログラムデータ１７６を記憶するものとして説明される。これらのコンポーネントは、オペレーティングシステム１４４、アプリケーションプログラム１４６、他のプログラムモジュール１４８、およびプログラムデータ１５０と同じものであるかもしれないし、または異なるものかもしれないということに気がつかれよう。オペレーティングシステム１７０、アプリケーションプログラム１７２、他のプログラムモジュール１７４、およびプログラムデータ１７６は、それらが最小限異なるコピーであることを説明するために本明細書では異なる番号が付与されている。
【００４３】
ユーザは、キーボード１８０、およびポインティングデバイス１８２（例えば、マウス、トラックボール、ペン、またはタッチパッド）などの入力装置、またはユーザインターフェース選択装置を通じて、コンピュータ１３０に、コマンドおよび情報を入力するだろう。他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナー、または同等のものを含むことができる。これらの、および他の入力装置は、パラレルポート、ゲームポート、ＵＳＢ（Universal Serial Bus）などの他のインターフェースおよびバス構造によって接続されているのではなくて、システムバス１３６に連結されているユーザ入力インターフェース１８４を通じて処理装置１３２に接続されている。モニタ１８８または他の種類の表示装置は、また、ビデオインターフェース１９０などのインターフェースを介してシステムバス１３６に接続されている。モニタ１８８に加えて、コンピュータは、出力用の周辺機器インターフェース（図示せず）を通して接続することができるプリンタ、スピーカーなどの他の周辺機器の出力装置（図示せず）を含むことが多い。
【００４４】
コンピュータ１３０は、リモートコンピュータ１９４などの一又は複数のリモートコンピュータへの論理結合を使用するネットワーク化された環境において動作することができる。リモートコンピュータ１９４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または、他の一般的なネットワーク・ノードになることができ、および通常コンピュータ１３０に関連して上記で述べられた多くの、または全ての要素を含む。図６に描かれる論理結合は、ローカルエリアネットワーク（ＬＡＮ）１９６、およびワイドエリアネットワーク（ＷＡＮ）１９８を含むが、他のネットワークも含むこともできる。ＬＡＮ１３６および／またはＷＡＮ１３８は、有線ネットワーク、無線ネットワーク、それらの組み合わせなどであるかもしれない。そのようなネットワーク環境はオフィス、企業規模のコンピュータネットワーク、イントラネット、および世界的なコンピュータネットワーク（例えば、インターネット）においては当たり前のことである。
【００４５】
ＬＡＮ環境で使用される場合、コンピュータ１３０は、ネットワークインターフェースまたはアダプタ１８６を通じてＬＡＮ１９６に接続される。ＷＡＮ環境で使用される場合、コンピュータ１３０は通常、モデム１７８またはインターネットなどのＷＡＮ１９８によって通信を確立する他の手段を含む。モデム１７８は、それが内蔵であっても、または外付けであっても、ユーザ入力インターフェース１８４、または他の適切なメカニズムを介してシステムバス１３６に接続される。ネットワーク化された環境においては、コンピュータ１３０に関連して描かれるプログラムモジュール、またはそれらの一部はリモートメモリ記憶装置（図示せず）に記憶されるだろう。制限ではなく一例として、図６は、リモートアプリケーションプログラム１９２をメモリ装置上に存在するものとして説明する。示されているネットワーク接続は例示的なものであり、そして、コンピュータ間の通信回線を確立する他の手段が使用される可能性があることは理解されよう。
【００４６】
一般的に、コンピュータ１３０のデータ処理装置は、コンピュータの様々なコンピュータ読み取り可能な記憶媒体において、異なる時に記憶された命令の手段によってプログラムされている。プログラムおよびオペレーティングシステムは通常、例えば、フロッピー（登録商標）ディスクまたはＣＤ−ＲＯＭで配布される。配布されたものから、プログラム、およびオペレーティングシステムは、インストールされ、またはコンピュータの二次メモリにロードされる。実行時において、プログラム、およびオペレーティングシステムは少なくとも部分的にコンピュータのメインメモリにロードされる。明細書に記述されている本発明は、これらのもの、および他のさまざまな種類のコンピュータ読み取り可能な記憶媒体を含む。その場合、そのような記録媒体は、マイクロプロセッサまたは他のデータプロセッサと結合して、以下で述べられるステップを実行する命令またはプログラムを含む。本発明は、明細書で記述されている手段および技術にしたがってプログラムされる場合、コンピュータ自身も含む。
【００４７】
説明ために、プログラムおよびオペレーティングシステムなどの他の実行可能なプログラム・コンポーネントは、別個のブロックとして本明細書では説明される。しかしながら、そのようなプログラムおよびコンポーネントは、様々な場合に、コンピュータ上の異なる記憶コンポーネントにおいて存在し、およびコンピュータのデータプロセッサによって実行されるということは認識されよう。
【００４８】
コンピュータ１３０を含む例示的なコンピュータシステム環境に関連して記述されているけれども、本発明は、多くの他の一般的な目的で、または特別の目的のコンピュータシステムの環境または設定で使用できる。そのコンピュータシステム環境は、本発明の使用または機能の範囲についてどんな制限も示唆することは意図されていない。さらに、そのコンピュータシステム環境は、例示的な動作環境において説明されるコンポーネントの１つまたは組み合わせに関連する従属関係または必要条件を有すると解釈されるべきでない。本発明の使用に適している可能性のある周知のコンピュータシステム、コンピュータ環境、および／またはコンピュータの設定の例は、制限するということではなく、パーソナルコンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セットトップボックス、プログラムで制御できる家庭用電化製品、携帯電話、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、上記のシステムまたは装置、および同種のものを含む分散コンピューティング環境を含む。
【００４９】
本発明は、一又は複数のコンピュータまたは他の装置によって実行されるプログラムモジュールなど、コンピュータ実行可能命令の一般的な文脈で記述されるだろう。一般的に、プログラムモジュールは、制限するということではなく、ルーチン、プログラム、オブジェクト、コンポーネント、および特定のタスクを実行し、または特定の抽象データ型を実行するデータ構造を含む。本発明は、タスクが通信ネットワークを通じてリンクされる遠隔の制御演算装置によって実行される分散コンピュータ環境においても実施されるだろう。分散コンピュータ環境においては、プログラムモジュールはメモリ記録装置を含むローカルおよび遠隔のコンピュータ記憶媒体の両方に置かれるだろう。
【００５０】
作動中、コンピュータ１３０は、ソフトウェア・プロダクトを更新するために図４で説明された動作などのコンピュータ実行可能命令を実行する。
【００５１】
（実施例）
以下の例は本発明をさらに説明する。以下にリストされている例示的なマニフェストは、インストールされているコンポーネントの現在の状況（例えば、ソース、または、ランタイム）に基づいて更新されるべきファイルの位置を、コンポーネントインストーラによって決定されたものと定義する。以下の例では、ＮｅｔｗｏｒｋＣｏｍｐｏｎｅｎｔは機能の集合を表す。さらに、ｖｅｒｓｉｏｎ１．１は、ＮｅｔｗｏｒｋＣｏｍｐｏｎｅｎｔのアップグレード版であること、すなわち、ｖｅｒｓｉｏｎ１．０に依存している、またはＣｏｒｅＯｐｅｒａｔｉｎｇＳｙｓｔｅｍＣｏｍｐｏｎｅｎｔよりも最近のものであることを示す。
【００５２】
<identity>
<name>NetworkingComponent<\name>
<version>1.1<\version>
<\identity>
<files>
fileA.dll
<\files>
<install>
<source>%sourcepath%fileA.dl_<\source>
<run-time>%rundir%/fileA.dll<\run-time>
<\install>
<dependencies>
CoreOperatingSystemComponent
Version>=1.0
<\dependencies>
【００５３】
当業者は、本明細書で説明され、および記述されている実行の順序、または方法の実行は、特別の定めのない限り、不可欠なものではないということに気がつくだろう。すなわち、方法の要素は、特別の定めのない限り、任意の順序で実行されること、および、方法が本明細書で開示されているものよりも多いまたは少ない要素を含むことは、発明者によって意図されている。
【００５４】
本発明の要素、または本発明の実施形態を紹介する場合、冠詞の“ａ”、“ａｎ”、“ｔｈｅ”、および“ｓａｉｄ”は、一又は複数の要素があることを意味することを目的としている。“ｃｏｍｐｒｉｓｉｎｇ”、“ｉｎｃｌｕｄｉｎｇ”、および“ｈａｖｉｎｇ”といった表現は、包括的であることを目的とし、およびリストに記載された要素以外の追加の要素がありうることを意味することを目的とする。
【００５５】
上記のことを考慮すると、本発明のいくつかの目的は一定の基準に達し、他の有利な結果が実現されていることが分かるだろう。
【００５６】
本発明の範囲から離れることなく、さまざまな変更が、上記の説明、プロダクト、および方法においてなされているので、上記の記述の中に含まれ、そして、添付図面に示されている全ての事柄は、制限の意味合いではなく、説明に役立つものとして解釈されるべきであろう。
【図面の簡単な説明】
【００５７】
【図１】コンピュータ・デバイス上に記憶されたソフトウェア・プロダクトに適用される、例示的なサービスパッケージを説明するブロック図である。
【図２】コンポーネントに分割されたオペレーティングシステムを有するコンピュータ・デバイスを説明する例示的なブロック図である。
【図３】図１のコンポーネントに分割されたオペレーティングシステムにおいて、コンポーネントを更新するアプリケーションを説明する例示的なブロック図である。
【図４】コンポーネントをインストールするアプリケーションプログラムの動作を説明する例示的なフローチャートである。
【図５】サービスパッケージの作成を説明する例示的なフローチャートである。
【図６】本発明が実施される可能性のある適切なコンピュータシステム環境の一例を説明するブロック図である。
【図１】
2007521529.tif 000003
【図２】
2007521529.tif 000004
【図３】
2007521529.tif 000005
【図４】
2007521529.tif 000006
【図５】
2007521529.tif 000007
【図６】
2007521529.tif 000008
【国際調査報告】
2007521529.tif 000009