(57)【特許請求の範囲】
【請求項１】
アプリケーションのためのアプリケーション復元ポイントを作成して、コンピューティング・システムの前記アプリケーション及び関連部分を、前記アプリケーション復元ポイントに存在した状態に復元する方法であって、
インストール・パッケージを前記アプリケーションに適用するように構成されたインストーラ・プロセスを呼び出すことと、
新しいコンポーネントのリストと、前記インストーラ・プロセスによって前記インストール・パッケージが適用されたときに変更される、前記アプリケーションの１つ又は複数のコンポーネントの各々の未変更コピーとを格納するように構成されたアプリケーション復元ポイント・データ構造体を生成することと、
前記インストーラ・プロセスによって前記インストール・パッケージが適用されたときに、
前記インストーラ・プロセスによって変更される前記アプリケーションの各々のコンポーネントに対して、前記コンポーネントの未変更コピーを前記アプリケーション復元ポイント・データ構造体内に格納し、前記インストーラ・プロセスによって前記コンピューティング・システムに付加された各々の新しいコンポーネントに対して、前記新しいコンポーネントへの参照を前記新しいコンポーネント・リストに付加することと、
前記新しいコンポーネント・リストを、前記アプリケーション復元ポイント・データ構造体内に格納することと、
を含み、
コピー・オン・ライト機構を用いて、前記インストーラ・プロセスによって変更された前記アプリケーションの各コンポーネントを識別し、前記インストーラ・プロセスと関連したプロセスＩＤ（ＰＩＤ）を用いて、前記コンポーネントを識別する、方法。
【請求項２】
前記インストーラ・プロセスを呼び出して、前記アプリケーションのインストール、前記アプリケーションのアップグレード、前記アプリケーションへのパッチ適用、及び前記アプリケーションの削除のうちの１つを実行する、請求項１に記載の方法。
【請求項３】
前記変更されたコンポーネント、及び、前記コンピューティング・システムに付加された前記新しいコンポーネントの１つ又は複数は、ファイル・システム内の指定した場所に格納されたファイルである、請求項１又は請求項２に記載の方法。
【請求項４】
前記新しいコンポーネント・リストは、前記コンピューティング・システム内の前記新しいコンポーネント・リスト上のそれぞれのファイルのファイル名のリストと、パスの場所のリストとを含む、請求項１、請求項２、又は請求項３のいずれか１項に記載の方法。
【請求項５】
前記インストーラ・プロセスは、ファイル・システム機構にアクセスして、前記インストーラ・プロセスによって変更された各々のコンポーネントを識別し、かつ、各々の変更されたコンポーネントの前記未変更コピーを得るように構成される、請求項１に記載の方法。
【請求項６】
前記コンピューティング・システムのスナップショットを作成することと、
前記スナップショットから、前記インストール・パッケージを適用することによって変更されるコンポーネントの各々の未変更コンポーネントを得ることと、
前記インストーラ・プロセスの完了時に、前記作成されたスナップショットを削除することと、
をさらに含む、請求項１から５までのいずれか１項に記載の方法。
【請求項７】
前記インストール・パッケージを適用することの一部として、前記インストーラ・プロセスによって最初にインストールされ、その後に削除されたコンポーネントに対応する前記新しいコンポーネント・リストから、少なくとも１つのエントリを削除すること、
をさらに含む、請求項１から６までのいずれか１項に記載の方法。
【請求項８】
プロセッサと、
前記プロセッサによる実行時に、アプリケーションのためのアプリケーション復元ポイントを作成して、コンピューティング・システムの前記アプリケーション及び関連部分を、前記アプリケーション復元ポイントに存在した状態に復元するための動作を実行するように構成されたアプリケーション・インストーラ・プロセスを格納するメモリと、
を含み、前記動作は、
インストール・パッケージを前記アプリケーションに適用するように構成されたインストーラ・プロセスを呼び出すことと、
新しいコンポーネント・リストと、前記インストーラ・プロセスによって前記インストール・パッケージが適用 されたときに変更される、前記アプリケーションの１つ又は複数のコンポーネントの各々の未変更コピーとを格納するように構成されたアプリケーション復元ポイント・データ構造体を生成することと、
前記インストーラ・プロセスによって前記インストール・パッケージが適用されたときに、
（ｉ）前記インストーラ・プロセスによって変更された前記アプリケーションの各々のコンポーネントに対して、前記コンポーネントの未変更コピーを前記アプリケーション復元ポイント・データ構造体内に格納することと、
（ｉｉ）前記インストーラ・プロセスによって前記コンピューティング・システムに付加された各々の新しいコンポーネントに対して、前記新しいコンポーネントへの参照を前記新しいコンポーネント・リストに付加することと、
前記新しいコンポーネント・リストを、前記アプリケーション復元ポイント・データ構造体内に格納することと、
を含み、
コピー・オン・ライト機構を用いて、前記インストーラ・プロセスによって変更された前記アプリケーションの各コンポーネントを識別し、前記インストーラ・プロセスと関連したプロセスＩＤ（ＰＩＤ）を用いて、前記コンポーネントを識別する、システム。
【請求項９】
前記インストーラ・プロセスを呼び出して、前記アプリケーションのインストール、前記アプリケーションのアップグレード、前記アプリケーションへのパッチ適用、及び前記アプリケーションの削除のうちの１つを実行する、請求項８に記載のシステム。
【請求項１０】
前記変更されたコンポーネント、及び、前記コンピューティング・システムに付加された前記新しいコンポーネントの１つ又は複数は、ファイル・システム内の指定した場所に格納されたファイルである、請求項８又は請求項９に記載のシステム。
【請求項１１】
前記新しいコンポーネント・リストは、前記コンピューティング・システム内の前記新しいコンポーネント・リスト上のそれぞれのファイルのファイル名のリストと、パスの場所のリストとを含む、請求項８、請求項９、又は請求項１０のいずれか１項に記載のシステム。
【請求項１２】
前記インストーラ・プロセスは、ファイル・システム機構にアクセスして、前記インストーラ・プロセスによって変更された各々のコンポーネントを識別し、かつ、各々の変更されたコンポーネントの前記未変更コピーを得るように構成される、請求項８に記載のシステム。
【請求項１３】
前記動作は、
前記コンピューティング・システムのスナップショットを作成することと、
前記スナップショットから、前記インストール・パッケージを適用することによって変更されるコンポーネントの各々の未変更コンポーネントを得ることと、
前記インストーラ・プロセスの完了時に、前記作成されたスナップショットを削除することと、
をさらに含む、請求項８から請求項１２までのいずれか１項に記載のシステム。
【請求項１４】
前記動作は、
前記インストール・パッケージを適用することの一部として、前記インストーラ・プロセスによって最初にインストールされ、その後に削除されたコンポーネントに対応する前記新しいコンポーネント・リストから、少なくとも１つのエントリを削除すること、
をさらに含む、請求項８から請求項１３までのいずれか１項に記載のシステム。
【請求項１５】
請求項１から請求項７までのいずれか１項に記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般に、コンピューティング・システムにおけるアプリケーションのバックアップ及び復元に関し、より具体的には、アプリケーション復元ポイント（application restore point）を用いて、アプリケーション（又は、オペレーティング・システム・コンポーネント）を、アプリケーションをインストール（又は、アップグレード）する前に存在した状態に復元することに関する。
【背景技術】
【０００２】
新しいアプリケーションのインストール、及び、既存のアプリケーション又はオペレーティング・システムの更新は、一般的に行なわれるプロセスである。例えば、アプリケーション（及びオペレーティング・システム）の供給業者は、アプリケーションを更新し、「バグ」又はセキュリティ上の問題を修正するパッチを頻繁にリリースする。しかしながら、新しいアプリケーションのインストール、又は既存のアプリケーションのアップグレードにより、コンピュータ・システムに問題が生じることがある。つまり、アップグレードが、アプリケーション（又は、システム上で実行されている他のアプリケーション）を「破壊する」ことがある。例えば、アップグレード・プロセスが成功裏に完了しなかった場合、アプリケーションは正常に機能することができず、及び／又は、データが失われることがある。同様に、アップグレードされたアプリケーションが、他のシステム・アプリケーションが正常に機能するのを妨げるといった、予期せぬ方法で、他のシステム・アプリケーションに影響を及ぼすこともある。従って、場合によっては、アプリケーション又はアップグレードを削除(remove）して、コンピューティング・システムが正常に機能するのを再開できるようにする必要があることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
アプリケーションのアップグレードを削除する１つの手法は、アプリケーションをインストールする（又は、アップグレードする）前に、コンピューティング・システムの完全なイメージを作成し、次に、必要に応じて、そのイメージを復元することである。しかしながら、この手法は、多くの場合、かなりのストレージ・リソースを必要とする。さらに、アプリケーションをアップグレード前の状態に復元するには、アップグレード・プロセスを開始する前に、コンピューティング・システムのユーザが、忘れずにシステム・イメージを作成する必要がある。さらに、この手法は、バックアップ・プロセス中、インストーラ・プロセス中、又は、システムの復元にイメージが用いられる場合には復元プロセス中、かなりのダウンタイム（downtime）をもたらすことが多い。
【課題を解決するための手段】
【０００４】
第１の態様によれば、インストール・パッケージをアプリケーションに適用するように構成されたインストーラ・プロセスを呼び出すことと、新しいコンポーネントのリストと、インストーラ・プロセスによってインストール・パッケージが適用されたときに変更される、アプリケーションの１つ又は複数のコンポーネントの各々の未変更コピーとを格納するように構成されたアプリケーション復元ポイント・データ構造体を生成することと、インストーラ・プロセスによってインストール・パッケージが適用されたときに、インストーラ・プロセスによって変更されるアプリケーションの各々のコンポーネントに対して、該コンポーネントの未変更コピーをアプリケーション復元ポイント・データ構造体内に格納し、インストーラ・プロセスによってコンピューティング・システムに付加された各々の新しいコンポーネントに対して、該新しいコンポーネントへの参照を新しいコンポーネント・リストに付加することとを含む、アプリケーションのためのアプリケーション復元ポイントを作成するコンピュータ実装方法が提供される。この方法は、新しいコンポーネント・リストを、アプリケーション復元ポイント・データ構造体内に格納することをさらに含む。
【０００５】
第２の態様によれば、インストール・パッケージをアプリケーションに適用するように構成されたインストーラ・プロセスを呼び出すことと、新しいコンポーネント・リストと、インストーラ・プロセスによってインストール・パッケージが適用されたときに変更される、アプリケーションの１つ又は複数のコンポーネントの各々の未変更コピーとを格納するように構成されたアプリケーション復元ポイント・データ構造体を生成することと、インストーラ・プロセスによってインストール・パッケージが適用されたときに、インストーラ・プロセスによって変更されたアプリケーションの各々のコンポーネントに対して、該コンポーネントの未変更コピーをアプリケーション復元ポイント・データ構造体内に格納し、インストーラ・プロセスによってコンピューティング・システムに付加された各々の新しいコンポーネントに対して、該新しいコンポーネントへの参照を新しいコンポーネント・リストに付加することとを含む、実行時に、アプリケーションのためのアプリケーション復元ポイントを作成するための動作を実行するプログラムを含むコンピュータ可読ストレージ媒体が提供される。この動作は、新しいコンポーネント・リストを、アプリケーション復元ポイント・データ構造体内に格納することをさらに含む。
【０００６】
第３の態様によれば、プロセッサと、プロセッサによる実行時に、アプリケーションのためのアプリケーション復元ポイントを作成するための動作を実行するように構成されたアプリケーション・インストーラ・プロセスを格納するメモリとを含み、この動作は、インストール・パッケージをアプリケーションに適用するように構成されたインストーラ・プロセスを呼び出すことと、新しいコンポーネント・リストと、インストーラ・プロセスによってインストール・パッケージが適用されたときに変更される、アプリケーションの１つ又は複数のコンポーネントの各々の未変更コピーとを格納するように構成されたアプリケーション復元ポイント・データ構造体を生成することと、インストーラ・プロセスによってインストール・パッケージが適用されたときに、（ｉ）インストーラ・プロセスによって変更されたアプリケーションの各々のコンポーネントに対して、該コンポーネントの未変更コピーをアプリケーション復元ポイント・データ構造体内に格納し、（ｉｉ）インストーラ・プロセスによってコンピューティング・システムに付加された各々の新しいコンポーネントに対して、該新しいコンポーネントへの参照を新しいコンポーネント・リストに付加することとを含む、システムが提供される。この動作は、新しいコンポーネント・リストを、アプリケーション復元ポイント・データ構造体内に格納することをさらに含む。
【０００７】
ここで本発明の実施形態を、ほんの一例として及び以下の図面を参照して説明する。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態による、コンピューティング・システムを示すブロック図である。
【図２】本発明の一実施形態による、アプリケーション復元ポイントを示す。
【図３】本発明の一実施形態による、アプリケーション復元ポイントを作成するための方法のフローチャートを示す。
【図４】本発明の一実施形態による、アプリケーション復元ポイントに基づいてアプリケーションを復元するための方法のフローチャートを示す。
【発明を実施するための形態】
【０００９】
本発明の実施形態は、アプリケーションをインストールしたとき、更新したとき、又はこれにパッチを適用した（patch）ときに、アプリケーション復元ポイントを作成するための技術を提供する。必要なときに、アプリケーション復元ポイントを用いて、コンピューティング・システムのアプリケーション及び関連部分を、アプリケーション復元ポイントに存在した状態に復元することができる。一実施形態において、アプリケーション復元ポイントは、アプリケーションをインストールする（アップグレードする）間、アプリケーション及び／又はアプリケーションを実行しているコンピューティング・システムのどのコンポーネント、ファイル又は他の要素が、変更され、作成され、又は削除されるかについての情報を獲得する。重要なことに、作成及び復元プロセスは、コンピューティング・システム上で実行されている他のアプリケーションに問題を生じさせることはない。言い換えれば、アプリケーションを復元するために（即ち、インストール又はパッチの適用を効果的に取り消す（undo）ために）、アプリケーション復元ポイントが作成される又は使用される間、コンピューティング・システムの他のコンポーネント及びアプリケーションを使用することができる。さらに、作成及び復元プロセスは、本来、インストーラ・プロセスに必要なファイルを含んでいるので、コンピューティング・システムのリソースが節約され、それを異なる目的のために利用することができる。
【００１０】
一実施形態において、ユーザは、コンピュータ・システムにおいて、インストーラ・プロセスを呼び出して、アプリケーションをインストールし、更新し、又はこれにパッチを適用する。インストーラ・プロセスは、アプリケーションのためのアプリケーション復元ポイントを作成する。インストーラ・プロセスの実行中、コンピューティング・システムの幾つかのファイルを変更する必要があること、及び／又は、新しいファイルを作成する必要があることがある。インストーラ・プロセスによってファイルが変更される場合、ファイルのオリジナル・コピー（即ち、インストーラ・プロセスによって変更される前の状態にあるファイルのコピー）が、アプリケーション復元ポイント内に入れられる。インストーラ・プロセスによってファイルが作成された場合、こうしたファイルへの参照が、アプリケーション復元ポイント内に含められる。このように、インストーラ・プロセスが、アプリケーションのインストール、更新、又はこれへのパッチ適用を成功裏に終えても又はそれらが不成功に終わっても、アプリケーション復元ポイントは、インストーラ・プロセスによって変更された（又は、削除された）各々のファイルのオリジナル・コピーと、インストーラ・プロセスによって作成されたファイル（即ち、新しいファイル）のリストとを含む。従って、コンピューティング・システムのアプリケーション及び対応する部分を、インストーラ・プロセスが何らかの変更を行なう前の状態に復元するために、新しいファイル・リスト内に含まれるコンピューティング・システムのファイルを削除し、インストーラによって変更されたファイルを、インストール（又は、更新）プロセス中に獲得された未変更バージョン（即ち、オリジナル・コピー）のものと置き換える。
【００１１】
以下では、本発明の実施形態を参照する。しかしながら、本発明は、特定の説明された実施形態に限定されないことを理解すべきである。寧ろ、本発明を実施及び実行するために、異なる実施形態に関連するか否かに関わらず、以下の特徴及び要素の任意の組み合わせが考慮される。さらに、種々の実施形態において、本発明は、従来技術よりも優れた多くの利点を提供する。しかしながら、本発明の実施形態は、他の可能な解決策及び／又は従来技術よりも優れた利点を達成し得るものではあるが、所与の実施形態によって特定の利点が達成されるかどうかは、本発明を限定するものではない。従って、以下の態様、特徴、実施形態及び利点は、単に例証的なものであり、特許請求の範囲において明確に記載される場合を除いて、添付の特許請求の範囲の要素又は限定であると考えるべきではない。同様に、「本発明」に対する言及は、本明細書で開示されるいずれかの本発明の対象物の一般化として解釈されるべきではなく、特許請求の範囲において明確に記載される場合を除いて、添付の特許請求の範囲の要素又は限定であると考えるべきではない。
【００１２】
本発明の一実施形態は、コンピューティング・システムで用いるためのプログラム製品として実装される。プログラム製品の１つ又は複数のプログラムは、（本明細書で説明される方法を含む）実施形態の機能を定め、様々なコンピュータ可読ストレージ媒体上に収容することができる。例証的なコンピュータ可読ストレージ媒体は、これらに限定されるものではないが、（ｉ）情報を恒久的に格納する書き込み不可能なストレージ媒体（例えば、ＣＤ−ＲＯＭドライブによって読み出し可能なＣＤ−ＲＯＭディスクといった、コンピュータ内部の読み出し専用メモリ・デバイス）、及び（ｉｉ）可変情報を格納する書き込み可能なストレージ媒体（例えば、ディスケット・ドライブ又はハードディスク・ドライブ内部のフロッピー・ディスク）を含む。こうしたコンピュータ可読ストレージ媒体は、本発明の機能を指示するコンピュータ可読命令を伝えるときは、本発明の実施形態を表す。他の媒体は、例えばコンピュータ・ネットワーク又は電話ネットワークなどを通じて、無線通信ネットワークを含む、コンピュータに情報を伝達する通信媒体を含む。後者の実施形態は、具体的には、インターネット及び他のネットワークとの間で情報を伝送することを含む。こうした通信媒体は、本発明の機能を指示するコンピュータ可読命令を伝えるときは、本発明の実施形態を表す。大まかに言うと、本明細書ではコンピュータ可読ストレージ媒体及び通信媒体を、コンピュータ可読媒体と呼ぶことができる。
【００１３】
一般に、本発明の実施形態を実施するために実行されるルーチンは、オペレーティング・システム又は特定のアプリケーションの一部、コンポーネント、プログラム、モジュール、オブジェクト、又は命令のシーケンスとすることができる。本発明のコンピュータ・プログラムは、典型的には、ネイティブ・コンピュータによって機械可読形式、従って実行可能命令に変換される多数の命令から構成される。また、プログラムは、プログラムに局所的に存在するか、又は、メモリ内若しくはストレージ・デバイス上に見出される、変数及びデータ構造体から構成される。さらに、以下に説明される種々のプログラムは、本発明の特定の実施形態においてそのプログラムが実装されるアプリケーションに基づいて識別することができる。しかしながら、以下のいずれかの特定のプログラム用語は、単に便宜的に用いられるものであることを認識すべきであり、従って、本発明は、そのような用語によって識別及び／又は暗示されるいずれかの特定のアプリケーションにおける用途のみに限定されるべきではない。
【００１４】
図１は、本発明の一実施形態による、コンピューティング・システム１００の例を示すブロック図である。示されるように、コンピューティング・システム１００は、キーボード及びマウス・ポインティング・デバイスのような入力装置１１０と、ＣＲＴ又はＬＣＤディスプレイ・モニタのようなディスプレイ装置１２０と、コンピュータ・システム１３０とを含む。例示的に、コンピュータ・システム１３０は、バス・インターフェース１３４によって互いに結合された、１つ又は複数の中央処理ユニット（「ＣＰＵ」）１３２と、メモリ１４０と、ストレージ１５０とを含む。ＣＰＵ１３２は、コンピュータにおける全ての命令、論理及び数学的処理を実行する１つ又は複数のプログラム可能論理デバイスを表す。例えば、ＣＰＵ１３２は、単一のＣＰＵ、複数のＣＰＵ、複数の処理コアを有する単一のＣＰＵ等を表すことができる。メモリ１４０は、必要なプログラミング及びデータ構造体を保持するのに十分に大容量のランダム・アクセス・メモリを含む、メモリ・デバイスの１つ又は組み合わせとすることができる。ストレージ１５０は、これらに限定されるものではないが、物理的ディスク・ドライブ、フラッシュ・メモリ・デバイス等を含むストレージ・デバイスの１つ又は組み合わせ、並びに、ネットワーク接続された（network attached）ストレージ・デバイス、及びネットワークを通じて実装されたストレージ・ボリュームとすることができる。
【００１５】
コンピュータ・システム１３０は、例えば、デスクトップ・コンピュータ、サーバ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ等の既存のコンピュータ・システムを表すように含められる。しかしながら、図１に示されるサーバ・システム１３０は、コンピューティング・システムの一例にすぎない。コンピューティング・システムが、高速ネットワーク、シングルユーザ・ワークステーション、又は不揮発性ストレージをもたないネットワーク・アプライアンスによって接続された個々のコンピュータのクラスタのような複雑なマルチユーザ・コンピューティング・システムであるかどうかに関わらず、他のコンピューティング・システムを用いて、本発明の実施形態を実施することができる。さらに、本明細書で説明されたソフトウェア・アプリケーションは、既存のコンピュータ・システム上で実行されるコンピュータ・ソフトウェア・アプリケーションを用いて実施することができる。しかしながら、本明細書で説明されたソフトウェア・アプリケーションは、現在のところ存在するいずれかのコンピューティング環境又はプログラミング言語に限定されるものではなく、新しいコンピュータ・システムが利用できるようになったとき、それらを利用するように適合させることができる。
【００１６】
示されるように、メモリ１４０は、インストーラ１４２、アプリケーション・アップグレード・コンポーネント１４４、及びコンピューティング・システム１００上で実行されるように構成されたアプリケーション１４６を含む。インストーラ１４２、アプリケーション・アップグレード・コンポーネント１４４及びアプリケーション１４６は、一般に、同じくメモリ１４０内に常駐するオペレーティング・システム（図示せず）によってサポートされる。オペレーティング・システムの例は、ＩＢＭ（登録商標）ＡＩＸ（登録商標）、ＵＮＩＸ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）及びＬｉｎｕｘ（登録商標）オペレーティング・システムのディストリビューション等を含む。より一般的には、本明細書で説明される機能をサポートすることができる任意のオペレーティング・システムを用いることができる。
【００１７】
ＩＢＭ及びＡＩＸは、米国、他の国々、又はその両方におけるＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの商標であり、ＵＮＩＸは、米国及び他の国々におけるＴｈｅ  Ｏｐｅｎ  Ｇｒｏｕｐの登録商標であり、Ｍｉｃｒｏｓｏｆｔ及びＷｉｎｄｏｗｓは、米国、他の国々、又はその両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標であり、Ｌｉｎｕｘは、米国、他の国々、又はその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標である。
【００１８】
一般に、アプリケーション・アップグレード・コンポーネント１４４を用いて、コンピューティング・システム１００において、アプリケーション１４６をインストール、アップグレードし、これにパッチを適用し、及び／又はこれを削除するために、インストーラ１４２を用いることができる。こうしたプロセスの間、１つ又は複数のファイル１５４及び復元ポイント１５２を作成し、変更し、又は削除することができる。ファイル１５４及び復元ポイント１５２は、ストレージ１５０内にある。より具体的には、ファイル１５４は、アプリケーション１４６のアップグレード中にインストーラ・プロセス１４２によって変更される、アプリケーション１４６及び／又はコンピューティング・システム１００のファイル、コンポーネント、又は他の要素を含む。各々のアプリケーション復元ポイント１５２は、インストーラ１４２によってインストールされたアプリケーション・アップグレードに対応するデータ構造体を提供する。一実施形態においては、アプリケーション１４６をアップグレードする間、少なくとも１つのアプリケーション復元ポイント１５２が作成される。必要に応じて、後でこうしたアプリケーション復元ポイント１５２を用いて、アプリケーション１４６及び／又はコンピューティング・システム１００のファイル、コンポーネント及び／又は他の要素を復元することができる。
【００１９】
図２は、本発明の一実施形態による、例示的なアプリケーション復元ポイント１５２を示す。一般に、アプリケーション復元ポイント１５２は、対応するアプリケーションの可能な復元に関連する情報を格納するデータ構造体である。示されるように、アプリケーション復元ポイント１５２は、アプリケーション名２０５；プロセスが実行された日時、どのタイプのプロセスが実行されたか（例えば、インストール、アップグレード、パッチの適用等）といった、アプリケーション上で実行された特定のプロセスを指定することができるインストール／アップグレード日時２１０のような、アプリケーション復元ポイントと関連付けられた特定のアプリケーションを識別する情報を含む。アプリケーション復元ポイント１５２は、各々が、インストーラ・プロセスがファイルを変更する前にアプリケーション復元ポイントによって獲得された、インストーラ・プロセスによって変更されたファイルのコピーである１つ又は複数のオリジナル・ファイル２２０１−２２０Ｍ（まとめてファイル２２０と呼ばれる）、並びに、新しいファイル２３０１−２３０Ｎのような、インストーラ・プロセスによって作成された新しいファイルのリストを含む。
【００２０】
下記により詳細に説明されるように、一実施形態においては、コピー・オン・ライト（copy-on-write）プロセスを用いて、インストーラ１４２によってそのファイルが変更される前の未変更のファイル・コピーを獲得することができる。さらに、ファイルを変更しているプロセスのプロセスｉｄとインストーラ・プログラム（又は、チャイルド・プロセス）のプロセスｉｄを照合することによって、コピー・オン・ライト機構を介してアプリケーション復元ポイントに保存されたファイルを、復元ポイントに適用可能であるように識別することができる。このように、インストール又はアップグレード中、同様に実行されている、アプリケーションによって変更された他のファイルは、復元ポイントに付加されない。ファイルのリストは、アプリケーション復元ポイント１５２に復元するときに、オリジナル・ファイルを復元する（又は、新しくインストールされたファイルを削除する）ために必要とされる他のあらゆる情報と共に、各々の新しく作成されたファイルの名前及びその場所といった、作成されたファイルの識別情報を含むことができる。
【００２１】
図３は、本発明の一実施形態による、アプリケーション復元ポイントを作成するための方法３００のフローチャートを示す。述べられたように、復元ポイント１５２のようなアプリケーション復元ポイントは、インストール又はアップグレード・プロセスによってもたらされる、アプリケーションを含むコンピューティング・システムの要素、即ちファイル１５４の変更についての情報を獲得し、格納する。こうした情報を格納するために、ステップ３０５において、アプリケーション復元ポイントのデータ構造体が作成され、及び／又は初期化される。
【００２２】
ステップ３１０において、図１に示されるインストーラ１４２のようなインストーラ・プロセスを呼び出して、コンピューティング・システム１００上で実行されるように適合されたアプリケーション１４６をアップグレードする（又は、インストールする）。一般に、インストーラ・プロセス１４２は、アプリケーション・アップグレード・コンポーネント１４４を用いて、アプリケーション１４６をアップグレードし、アップグレードする間、アップグレード・プロセスによりもたらされる変更を監視するように構成される。変更を識別すると、インストーラ・プロセス１４２は、どのような変更が生じたかを示す情報をアプリケーション復元ポイント１５２内に格納する。一実施形態において、インストーラ・プロセス１４２は、パッケージ管理システム（即ち、プログラムをインストールし、アップグレードし、構成し、コンピューティング・システムから削除するプロセスを自動化するために用いられるシステム・ツール）のコンポーネントとして実装される。このような場合、インストーラ・プロセスを初期化して、アプリケーションのコンポーネント（又は、アプリケーション自体）をインストールし、アップグレードし、又は削除する。さらに、いずれかのこうした行為の実行の一部として、インストーラ・プロセス１４２は、アップグレード、パッチの適用、又はインストールのどれが実行されても対応するアプリケーション復元ポイント１５２を作成することができる。
【００２３】
ステップ３１５において、インストーラ・プロセス１４２によるアップグレード中に変更された各々のファイルについて、未変更ファイル（即ち、オリジナル・ファイル２２０）のコピーを、アプリケーション復元ポイントに付加する。一実施形態においては、同じファイルがアップグレード・プロセス中に何度も変更された場合、例えば、ファイルが初めて変更されたときに、オリジナル・ファイルの１つのコピーだけが保存される。このように、インストーラ・プロセスが完了したとき、アプリケーション復元ポイントは、インストーラ・プロセス中にコンピューティング・システム内で変更された（又は、削除された）あらゆるファイルのオリジナル・コピーを含む。
【００２４】
幾つかのインストール又はアップグレード・プロセスは、コンピューティング・システム内に新しいファイルを作成することができる。従って、インストーラ・プロセスによってもたらされた変更を削除するために、こうした新しいファイルを削除すべきである。こうしたファイルを常時監視するために、ステップ３２０において、インストーラ・プロセス１４２によってアップグレード中に作成された各ファイルが、新しいファイル２３０として、アプリケーション復元ポイント内に列挙される。作成されたファイルの一部は、アップグレード・プロセスの間にだけ作成された一時ファイルであり得ることに留意されたい。一実施形態においては、インストーラ・プロセス１４２は、こうした一時ファイルを新しいファイルのリスト内には入れない。代替的に、インストーラ・プロセス１４２は、一時ファイルを識別せず、ファイルを削除する必要があるとき、そのファイルが新しいファイルのリストにあるかどうかをチェックする。リストにある場合には、次に、そのファイルを新しいファイル・リストから削除し、ファイルのコピーは作成しない。このように、インストーラ・プロセス１４２がインストーラ・プロセスを成功裏に（又は、不成功に）完了したとき、アプリケーション復元ポイント１５２は、インストーラ・プロセスによってアップグレード・プロセス中に作成されたファイルへの参照を含む。インストーラ・プロセス１４２は、種々のツールを利用して、ステップ３１５及び３２０を実行し、特定のインストーラ・プロセス中に変更されたファイルのみを識別することができる。例えば、一実施形態においては、ジャーナリング（journaling）又は追跡ファイル・システムによって提供されるツールが使用される。ジャーナリング・ファイル・システムの変更は、コミットされる前にジャーナル内にログ記録される。従って、インストーラ・プロセス１４２は、こうしたログを用いて、そうした変更がコミットされる前に、アップグレード・プロセスによってもたらされたファイルの変更を検出することができる。例えば、「コピー・オン・ライト」プロセスを用いることができる。周知のように、「コピー・オン・ライト」プロセスにより、アプリケーション（実際には、複数のアプリケーション）がファイルにアクセスすることが可能になる。アプリケーションがファイルに書き込みを行なった（即ち、ファイルを変更した）場合には、コピー・オン・ライト・プロセスは、アプリケーションが書き込みを行なったファイルのコピーを作成する。一実施形態においては、インストーラ・プロセスに「コピー・オン・ライト」コピーを提供するのではなく、単にこうしたコピーをアプリケーション復元ポイントに付加するだけであり、インストーラ・プロセス１４２によって、実際のファイル・コピーに書き込みが行なわれる。このように、インストーラ・プロセス１４２は、ファイルがアプリケーションのインストール（又は、アップグレード、パッチの適用）の一部として変更又は削除される前に、ファイルのオリジナル・コピーを保存する。
【００２５】
別の実施形態においては、アップグレード・プロセスを初期化する直前に、インストーラ・プロセス１４２が、例えば、周知のＬｉｎｕｘ（登録商標）Ｌｏｇｉｃａｌ  Ｖｏｌｕｍｅ  Ｍａｎａｇｅｒパッケージにより提供されるツールを用いて、コンピューティング・システム１００のスナップショット（コンピューティング・システム・ファイルの読み出し専用コピーのような）を作成する。次いで、インストーラ・プロセス１４２が関連ファイルの変更を検出したときに、スナップショットから、ファイルの未変更バージョンを得る。アップグレード・プロセスの完了時に、インストーラ・プロセス１４２は、スナップショットを削除することができる。
【００２６】
一実施形態においては、ユーザが、インストーラ・プロセス１４２を呼び出して、アプリケーション１４６をアップグレードするとき、インストーラ・プロセス１４２は、アプリケーション復元ポイント１５２を自動的に生成し、上述したステップ３０５、３１５及び３２０を実行する。従って、ユーザは、アップグレード・プロセスの前にデータをバックアップする必要がない。どちらかと言えば、ユーザがインストーラ・プロセスを用いてアプリケーションをアップグレードする度に、それぞれのアプリケーション復元ポイントが作成され、これにより、ユーザが、必要なときに、アップグレード・プロセス中に及びアップグレード・プロセスによって変更されたファイルを、こうしたプロセスが実行される前の状態に復元することが可能になる。随意的に、異なる段階のアップグレード・プロセス中に複数のアプリケーション復元ポイントを作成するように、インストーラ・プロセスを構成することもできる。
【００２７】
図４は、本発明の一実施形態による、復元ポイントを用いてアプリケーションを復元するための方法４００のフローチャートを示す。ステップ４０５において、アプリケーション復元ポイントの選択を受け取る。一実施形態においては、アプリケーションを、多数のアプリケーション復元ポイントと関連付けることができる。既に述べたように、各々のアプリケーション復元ポイントは、パッチ、アップグレード、又はアプリケーション自体のインストールによって変更されたアプリケーション及び関連要素（ファイル、レジストリ・キー等のような）の特定の状態を表す。例えば、アプリケーション復元ポイントは、アプリケーションをインストールする前の多数のファイルの状態、インストーラ・プロセス中の特定のポイント以前の関連ファイルの状態、アプリケーションが１つのバージョンにアップグレードされる前の関連ファイルの状態、アプリケーションが別のバージョンにアップグレードされる前の関連ファイルの状態等を獲得することができる。一実施形態においては、ユーザが所望のアプリケーション復元ポイントを選択するのを可能にするインターフェースが、ユーザに与えられ。
【００２８】
随意的に、復元プロセスを取り消す機会をユーザに与えるために、ステップ４１０において、復元プロセスによって作成されるファイルへの参照、及び、復元プロセスによって変更又は削除されたファイルのコピーが、取り消し（undo）アプリケーション復元ポイントに保存され、格納される。一実施形態において、こうしたファイルは、選択されたアプリケーション復元ポイント内に含まれる情報を用いて決定される。つまり、アプリケーション復元ポイントを復元するプロセスは、それ自体をアップグレードと見なすことができ、そのために、対応するアプリケーション復元ポイントを生成することができる。既に述べたように、アプリケーション復元ポイント内の新しいファイルとして列挙されたファイルは、インストーラ・プロセスによって作成されたファイルであり、従って、復元プロセス中に削除する必要がある。従って、こうしたファイルのコピーは、取り消しアプリケーション復元ポイント内に保存される。ファイルが、アプリケーション復元ポイント内に格納された対応するオリジナル・コピーを有する場合には、ファイルは、インストーラ・プロセスによって変更されるか又は削除されるかのいずれかであり、従って、現在のファイルのコピー（復元プロセスを初期化する前の状態の）が、取り消しアプリケーション復元ポイント内に保存される。ファイルが存在しないとき、取り消しアプリケーション復元ポイントの新しいファイルのリスト内に、ファイルへの参照が含められる。別の実施形態においては、インストーラ・プロセスがアプリケーションのための復元プロセスを実行する図３に関連して上述したような、アプリケーション復元ポイントを作成するための方法を用いて、取り消しアプリケーション復元ポイントが生成される。
【００２９】
方法４００のステップ４１５において、新しいファイルとしてアプリケーション復元ポイント内に列挙された各ファイルを削除することができる。上述のように、ファイルが、アプリケーション復元ポイント内に新しいものとして列挙された場合には、この特定のアプリケーション復元ポイントが作成されたとき、インストーラ・プロセスによって、こうしたファイルを最初に作成した。従って、インストーラ・プロセスの影響を受けたコンピュータ・システムのアプリケーション及び部分を、選択されたアプリケーション復元ポイントにおいて獲得された状態に復元するために、アプリケーション復元ポイント内に列挙された新しいファイルが削除される。アプリケーション復元ポイントは、コンピュータ・システムにおけるこうしたファイルを見つけるのに必要な、例えばパス名及びファイル名といった情報を含むことに留意されたい。
【００３０】
ステップ４２０において、インストーラ・プロセス中に変更された各ファイルは、復元されるアプリケーション復元ポイント内に格納されたオリジナル・コピーと置き換えられる。上述のように、アプリケーション復元ポイントは、インストーラ・プロセス中に変更又は削除されたファイルのオリジナル・コピーを含む。従って、インストーラ・プロセスに影響を受けたコンピューティング・システムのアプリケーション及び部分を、アプリケーション復元ポイントが表す状態に復元するように、アプリケーション復元ポイント内に格納されたオリジナル・コピーが復元される。より具体的には、インストーラ・プロセスによってファイルが変更された以降にファイルが削除された場合、こうしたファイルは復元され、例えば、アプリケーション復元ポイント内に格納されたファイルのオリジナル・コピーが、コンピューティング・システム内に入れられる。インストーラ・プロセスによって変更されたコンピューティング・システムのファイルが、コンピューティング・システム内に依然として存在する場合には、次に、コンピューティング・システムからその現在のバージョンが削除され、アプリケーション復元ポイント内に格納されたファイルのオリジナル・コピーが、コンピューティング・システム内に入れられる。一実施形態においては、ファイルごとにステップ４２０が実行される。代替的に、アプリケーション復元ポイント内に含まれる全てのオリジナル・コピーを、コンピューティング・システム内にコピーし、既存のファイルと置き換える。
【００３１】
ステップ４１５及びステップ４２０が、アプリケーション復元ポイントにおいて識別された全てのファイルの復元を完了すると、方法４００は完了する。随意的には、方法４００の完了時に、方法によって用いられたアプリケーション復元ポイントが削除される。
【００３２】
有利なことに、本明細書で述べられるように、本発明の実施形態は、アプリケーションがインストールされたとき、更新されたとき、又はこれにパッチが適用されたときにアプリケーション復元ポイントを作成すること、及び、必要なときに、コンピューティング・システムのアプリケーション及び関連部分を、アプリケーション復元ポイントにおいて獲得された状態に復元することを可能にする。例えば、インストーラ・プロセスを監視し、インストーラ・プロセスによって及びインストーラ・プロセス中に変更されたファイルのような関連データだけを保存することによって、作成及び復元プロセスが、コンピューティング・システム上で実行される他のアプリケーションに問題を生じさせることはない。さらに、作成及び復元プロセスは、本来、インストーラ・プロセスに必要なファイルを含むので、コンピューティング・システムのリソースが節約され、それを異なる目的のために用いることができる。
【００３３】
上記は、本発明の実施形態に向けられるが、本発明の基本的な範囲から逸脱することなく、本発明の他の及びさらに別の実施形態を考案することができ、本発明の範囲は、以下の特許請求の範囲によって決定される。
【符号の説明】
【００３４】
１００：コンピューティング・システム
１１０：入力装置
１２０：ディスプレイ装置
１３０：コンピュータ・システム
１３２：中央処理ユニット（ＣＰＵ）
１３４：バス・インターフェース
１４０：メモリ
１４２：インストーラ
１４４：アプリケーション・アップグレード・コンポーネント
１４６：アプリケーション
１５０：ストレージ
１５２：アプリケーション復元ポイント
１５４：ファイル
２０５：アプリケーション名
２１０：インストール／アップグレード日時
２２０：オリジナル・ファイル
２３０：新しいファイル
【図１】
0005444368.tif 000002
【図２】
0005444368.tif 000003
【図３】
0005444368.tif 000004
【図４】
0005444368.tif 000005