(57)【特許請求の範囲】
【請求項１】
ソフトウェア製品を更新するためのコンピュータ実装方法であって、前記方法の少なくとも一部が、少なくとも１つの処理装置を備える計算デバイスによって実施され、
第１のバージョンのソフトウェア製品に第２のバージョンのソフトウェア製品を上書きしてインストールすることを求める要求を受信するステップと、
前記第１のバージョンのソフトウェア製品が動作しているままで安全にインストールできるコンポーネントを識別するリストを読み取ることによって、前記第１のバージョンのソフトウェア製品の実行に影響を及ぼさない前記第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントをインストールし、インストールされると前記第１のバージョンのソフトウェア製品の実行に影響を及ぼすことになる前記第２のバージョンのソフトウェアの１つまたは複数のコンポーネントのインストールを見合わせることによって、前記第１のバージョンのソフトウェア製品が動作しているままで、前記第２のバージョンのソフトウェア製品を休止状態でインストールするステップと、
前記第２のバージョンのソフトウェア製品を作動させ、前記第１のバージョンのソフトウェア製品を作動停止させることによって、前記第１のバージョンと第２のバージョンのソフトウェア製品をスワップするステップと
を含む方法。
【請求項２】
前記第１および第２のバージョンのソフトウェア製品がインストールされた計算システムの第１のリブートを行うステップと、
前記第１のリブート中、前記第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントを前記第２のバージョンのソフトウェア製品向けに更新する実行モードアプリケーションを動作させるステップと、
前記第１のリブート後、前記第１のバージョンのソフトウェア製品からのセキュリティドライバを動作させるステップと
をさらに含む請求項１に記載の方法。
【請求項３】
前記第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントが更新された後に、１）第２のリブート後に無効化するように第１のバージョンのソフトウェア製品を設定し、かつ２）前記第２のリブート後に有効化するように第２のバージョンのソフトウェア製品を設定するステップと、
前記実行モードアプリケーションによって前記第２のリブートを強制するステップとをさらに含み、
前記第２のリブート後まで前記第１のバージョンのソフトウェア製品が引き続き動作する
請求項２に記載の方法。
【請求項４】
前記第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントを前記第２のバージョンのソフトウェア製品向けに更新する実行モードアプリケーションを動作させるステップが、前記コンポーネントの現行のインスタンスに影響を及ぼすことなくコンポーネントの１つへのポインタを変更するステップを含む請求項３に記載の方法。
【請求項５】
前記第２のバージョンのソフトウェア製品が作動されるまで、前記計算システムのネットワークアダプタを無効化しておくステップをさらに含み、前記第２のバージョンのソフトウェア製品が、前記計算システムの前記ネットワークアダプタが有効化される前に前記第１のリブート中に作動される
請求項２に記載の方法。
【請求項６】
前記第２のバージョンのソフトウェア製品をインストールするステップが、
前記第２のバージョンのソフトウェア製品の１つまたは複数のファイルをインストールするステップと、
ブートプロセス中に必要とされる前記第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントをインストールするステップと
を含む請求項１に記載の方法。
【請求項７】
前記第２のバージョンのソフトウェア製品をインストールするステップが、前記第１のバージョンのソフトウェア製品の１つまたは複数の設定を保存するステップを含み、
前記第１のバージョンと第２のバージョンのソフトウェア製品をスワップするステップが、前記第１のバージョンのソフトウェア製品の１つまたは複数の設定を前記第２のバージョンのソフトウェア製品にインポートするステップを含む
請求項１に記載の方法。
【請求項８】
前記第２のバージョンのソフトウェア製品をインストールするステップが、前記第１のバージョンのソフトウェア製品と前記第２のバージョンのソフトウェア製品の１組の相違を識別するステップを含み、
前記第１のバージョンと第２のバージョンのソフトウェア製品をスワップするステップが、前記第２のバージョンのソフトウェア製品において使用できるように前記第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントを更新するために、前記１組の相違を使用するステップを含む
請求項１に記載の方法。
【請求項９】
前記第２のバージョンのソフトウェア製品をインストールするステップが、前記第１のバージョンのソフトウェア製品が１つまたは複数のコンポーネントを利用しているかどうか判断することによって、安全にインストールできる前記第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントを自動的に識別するステップを含む請求項１に記載の方法。
【請求項１０】
セキュリティソフトウェア製品を更新するためのコンピュータ実装方法であって、前記方法の少なくとも一部が、少なくとも１つの処理装置を備える計算デバイスによって実施され、
第１のバージョンのセキュリティソフトウェア製品に第２のバージョンのセキュリティソフトウェア製品を上書きしてインストールすることを求める要求を受信するステップと、
前記第１のバージョンのソフトウェア製品が動作しているままで安全にインストールできるコンポーネントを識別するリストを読み取ることによって、前記第１のバージョンのセキュリティソフトウェア製品の実行に影響を及ぼさない前記第２のバージョンのセキュリティソフトウェア製品の１つまたは複数のコンポーネントをインストールし、インストールされると前記第１のバージョンのセキュリティソフトウェア製品の実行に影響を及ぼすことになる前記第２のバージョンのセキュリティソフトウェアの１つまたは複数のコンポーネントのインストールを見合わせることによって、前記第１のバージョンのセキュリティソフトウェア製品が動作しているままで、前記第２のバージョンのセキュリティソフトウェア製品を休止状態でインストールするステップと、
前記第１および第２のバージョンのセキュリティソフトウェア製品がインストールされた計算システムをリブートするステップと、
前記第２のバージョンのセキュリティソフトウェア製品を作動させ、前記第１のバージョンのセキュリティソフトウェア製品を作動停止させることによって、前記第１のバージョンと第２のバージョンのソフトウェア製品をスワップするステップと
を含むコンピュータ実装方法。
【請求項１１】
前記第２のバージョンのセキュリティソフトウェア製品をインストールするステップが、
前記第２のバージョンのセキュリティソフトウェア製品の１つまたは複数のファイルをインストールするステップと、
ブートプロセス中に必要とされる前記第２のバージョンのセキュリティソフトウェア製品の１つまたは複数のコンポーネントをインストールするステップと
を含む請求項１０に記載の方法。
【請求項１２】
少なくとも１つの処理装置と、
第１のバージョンのソフトウェア製品に第２のバージョンのソフトウェア製品を上書きしてインストールすることを求める要求を受信するように前記処理装置に命令するようにプログラムされたインターフェースモジュールと、
前記第１のバージョンのソフトウェア製品が動作しているままで安全にインストールできるコンポーネントを識別するリストを読み取ることによって、前記第１のバージョンのソフトウェア製品の実行に影響を及ぼさない前記第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントをインストールし、インストールされると前記第１のバージョンのソフトウェア製品の実行に影響を及ぼすことになる前記第２のバージョンのソフトウェアの１つまたは複数のコンポーネントのインストールを見合わせることによって、前記第１のバージョンのソフトウェア製品が動作しているままで、前記第２のバージョンのソフトウェア製品を休止状態でインストールするように前記処理装置に命令するようにプログラムされたインストールモジュールと、
前記第２のバージョンのソフトウェア製品を作動させ、前記第１のバージョンのソフトウェア製品を作動停止することによって、前記第１のバージョンと第２のバージョンのソフトウェア製品をスワップするように前記処理装置に命令するようにプログラムされたスワッピングモジュールと
を備えるシステム。
【請求項１３】
前記スワッピングモジュールが、前記第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントの状態を、前記第１および第２のバージョンのソフトウェア製品がインストールされた計算システムのリブート後に前記１つまたは複数のコンポーネントが再始動しないように変更することによって、前記第１のバージョンのソフトウェア製品を作動停止させるように前記処理装置に命令するようにプログラムされた請求項１２に記載のシステム。
【請求項１４】
前記インストールモジュールが、
前記第２のバージョンのソフトウェア製品の１つまたは複数のファイルをインストールするステップと、
ブートプロセス中に必要とされる前記第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントをインストールするステップと
によって、前記第２のバージョンのソフトウェア製品をインストールするように前記処理装置に命令するようにプログラムされた請求項１２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
企業および個人は、計算システムを保護するセキュリティソフトウェア製品を定期的に更新または交換する。セキュリティソフトウェア製品を更新および交換するために様々な従来の技術を使用することができる。残念ながら、ＭＩＣＲＯＳＯＦＴ  ＩＮＳＴＡＬＬＥＲ（「ＭＳＩ」）およびＭＩＣＲＯＳＯＦＴ  ＰＡＴＣＨ（「ＭＳＰ」）技術など、セキュリティソフトウェア製品を更新および交換するための従来の技術は、セキュリティ製品が動作していない期間中にコンピュータシステムを脆弱にすることがある。
【背景技術】
【０００２】
ＭＳＩによるセキュリティ製品の交換は、しばしば、既存のセキュリティ製品をアンインストールし、そのセキュリティ製品がインストールされていた計算システムをリブートし、新規のセキュリティ製品をインストールすることを含む。計算システムは、古いセキュリティ製品がアンインストールされた時から、新規のセキュリティ製品がインストールされて作動される時まで、保護されていないことがある。
【０００３】
ＭＳＰによるセキュリティ製品の更新は、第１のバージョンのセキュリティ製品を第２のバージョンのセキュリティ製品に変換することができる。更新中、セキュリティ製品のプロセスの動作は、停止され、更新され、次いで再始動されることがある。したがって、セキュリティ製品によって保護されているシステムは、セキュリティ製品が更新されている間、脆弱になることがある。したがって、必要なのは、ソフトウェア製品を交換および／または更新するためのより効果的な方法である。
【発明の概要】
【課題を解決するための手段】
【０００４】
以下でより詳細に説明するように、本開示は、一般に、ソフトウェア製品を更新するためのシステムおよび方法に関する。本明細書で使用するとき、語句「ソフトウェア製品を更新する」は、一般に、既存のソフトウェア製品を更新および／または交換することを表す。いくつかの実施形態では、方法が、第１のバージョンのソフトウェア製品に第２のバージョンのソフトウェア製品を上書きしてインストールすることを求める要求を受信するステップと、第１のバージョンのソフトウェア製品が動作しているままで、第２のバージョンのソフトウェア製品を休止状態でインストールするステップと、第２のバージョンのソフトウェア製品を作動させ、第１のバージョンのソフトウェア製品を作動停止させることによって、第１のバージョンと第２のバージョンのソフトウェア製品をスワップするステップとを含み得る。ソフトウェア製品は、セキュリティソフトウェア製品を含み得る。例えば、第１のバージョンのソフトウェア製品は、第１のバージョンのアンチウイルスアプリケーションを含むことがあり、第２のバージョンのソフトウェア製品は、第２のバージョンのアンチウイルスアプリケーションを含み得る。
【０００５】
いくつかの実施形態では、この方法は、第１および第２のバージョンのソフトウェア製品がインストールされた計算システムをリブートするステップを含み得る。リブートは、第２のバージョンのソフトウェア製品をインストールした後であって第２のバージョンのソフトウェア製品を作動させる前に行われることがある。様々な実施形態によれば、第２のバージョンのソフトウェア製品は、計算システムのネットワークアダプタが有効化される前にリブートプロセス中に作動されることがある。この方法は、第２のバージョンのソフトウェア製品が有効化されるまで、ネットワークアダプタを無効化しておくステップを含み得る。
【０００６】
様々な実施形態によれば、第２のバージョンのソフトウェア製品をインストールするステップは、第２のバージョンのソフトウェア製品の１つまたは複数のファイルをインストールするステップと、ブートプロセス中に必要とされる第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントをインストールするステップとを含み得る。いくつかの実施形態では、第１のバージョンのソフトウェア製品の実行に影響を及ぼさない第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントをインストールし、インストールされると第１のバージョンのソフトウェア製品の実行に影響を及ぼすことになる第２のバージョンのソフトウェアの１つまたは複数のコンポーネントのインストールを見合わせることによって、第２のバージョンのソフトウェア製品を一部インストールするステップを含み得る。
【０００７】
１つまたは複数の実施形態では、第２のバージョンのソフトウェア製品を作動停止させるステップは、第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントの状態を、それら１つまたは複数のコンポーネントがリブート後に再始動しないように変更するステップを含み得る。様々な実施形態によれば、第２のバージョンのソフトウェア製品をインストールするステップは、第１のバージョンのソフトウェア製品の１つまたは複数の設定を保存するステップを含むことがあり、第１のバージョンと第２のバージョンのソフトウェア製品をスワップするステップは、第１のバージョンのソフトウェア製品の１つまたは複数の設定を第２のバージョンのソフトウェア製品にインポートするステップを含み得る。
【０００８】
いくつかの実施形態によれば、第２のバージョンのソフトウェア製品をインストールするステップは、第１のバージョンのソフトウェア製品と第２のバージョンのソフトウェア製品の１組の相違を識別するステップを含むことがあり、第１のバージョンと第２のバージョンのソフトウェア製品をスワップするステップは、第２のバージョンのソフトウェア製品において使用できるように第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントを更新するために、１組の相違を使用するステップを含み得る。様々な実施形態において、第１のバージョンと第２のバージョンのソフトウェア製品をスワップするステップは、第１のバージョンのソフトウェア製品が作動停止されて第２のバージョンのソフトウェア製品が作動された後に、第１のバージョンのソフトウェア製品をアンインストールするステップを含み得る。少なくとも１つの実施形態では、この方法は、少なくとも１つのコンピュータ可読記憶媒体上でのコンピュータ実行可能命令として有形に具現化されることがある。
【０００９】
いくつかの実施形態では、方法が、第１のバージョンのセキュリティソフトウェア製品に第２のバージョンのセキュリティソフトウェア製品を上書きしてインストールすることを求める要求を受信するステップを含み得る。また、この方法は、第１のバージョンのセキュリティソフトウェア製品の実行に影響を及ぼさない第２のバージョンのセキュリティソフトウェア製品の１つまたは複数のコンポーネントをインストールし、インストールされると第１のバージョンのセキュリティソフトウェア製品の実行に影響を及ぼすことになる第２のバージョンのセキュリティソフトウェアの１つまたは複数のコンポーネントのインストールを見合わせることによって、第１のバージョンのセキュリティソフトウェア製品が動作しているままで、第２のバージョンのセキュリティソフトウェア製品を休止状態でインストールするステップを含むこともある。
【００１０】
この方法はさらに、第１および第２のバージョンのセキュリティソフトウェア製品がインストールされた計算システムをリブートするステップと、第２のバージョンのセキュリティソフトウェア製品を作動させ、第１のバージョンのセキュリティソフトウェア製品を作動停止させることによって、第１のバージョンと第２のバージョンのセキュリティソフトウェア製品をスワップするステップとを含み得る。いくつかの実施形態によれば、この方法は、第２のバージョンのセキュリティソフトウェア製品の１つまたは複数のファイルをインストールするステップと、ブートプロセス中に必要とされる第２のバージョンのセキュリティソフトウェア製品の１つまたは複数のコンポーネントをインストールするステップとを含み得る。この方法は、追加または代替として、第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントの状態を、計算システムをリブートした後にそれら１つまたは複数のコンポーネントが再始動しないように変更するステップを含み得る。
【００１１】
いくつかの実施形態では、システムが、少なくとも１つの処理装置と、第１のバージョンのソフトウェア製品に第２のバージョンのソフトウェア製品を上書きしてインストールすることを求める要求を受信するように処理装置に命令するようにプログラムされたインターフェースモジュールと、第１のバージョンのソフトウェア製品が動作しているままで、第２のバージョンのソフトウェア製品を休止状態でインストールするように処理装置に命令するようにプログラムされたインストールモジュールと、第２のバージョンのソフトウェア製品を作動させ、第１のバージョンのソフトウェア製品を作動停止することによって、第１のバージョンと第２のバージョンのソフトウェア製品をスワップするように処理装置に命令するようにプログラムされたスワッピングモジュールとを備えることがある。
【００１２】
いくつかの実施形態では、第１のバージョンのソフトウェア製品は、第１のバージョンのアンチウイルスアプリケーションを含むことがあり、第２のバージョンのソフトウェア製品は、第２のバージョンのアンチウイルスアプリケーションを含み得る。様々な実施形態によれば、スワッピングモジュールは、１つまたは複数のコンポーネントがリブート後に再始動しないように第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントの状態を変更することによって、第１のバージョンのソフトウェア製品を作動停止するように処理装置に命令するようにプログラムされることがある。少なくとも１つの実施形態では、インストールモジュールは、第２のバージョンのソフトウェア製品の１つまたは複数のファイルをインストールし、および／またはブートプロセス中に必要とされる第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントをインストールすることによって、第２のバージョンのソフトウェア製品をインストールするように処理装置に命令するようにプログラムされることがある。
【００１３】
上述した任意の実施形態からの特徴を、本明細書で述べる一般的な原理に従って互いに組み合わせて使用することができる。これらおよび他の実施形態、特徴、および利点は、添付図面および特許請求の範囲に関連付けて以下の詳細な説明を読めば、より完全に理解されよう。
【００１４】
添付図面は、いくつかの例示的実施形態を示し、本明細書の一部である。これらの図面は、以下の説明と共に、本開示の様々な原理の実例を挙げて説明する。
【図面の簡単な説明】
【００１５】
【図１】ソフトウェア製品を更新するための例示的なシステムのブロック図である。
【図２】ソフトウェア製品を更新するための別の例示的なシステムのブロック図である。
【図３】ソフトウェア製品を更新するための例示的な方法の流れ図である。
【図４】ソフトウェア製品を更新するための別の例示的な方法の別の流れ図である。
【図５】本願で説明および／または図示する実施形態の１つまたは複数を実施することができる例示的な計算システムのブロック図である。
【図６】本願で説明および／または図示する実施形態の１つまたは複数を実施することができる例示的なコンピューティングネットワークのブロック図である。
【００１６】
図面全体を通して、同一の参照符号および説明は、同様の要素を示すが、必ずしも同一の要素ではない。本明細書で述べる例示的実施形態は、様々な修正形態および代替形態が可能であるが、特定の実施形態を例として図面に示し、本明細書で詳細に説明する。しかし、本明細書で述べる例示的実施形態は、開示する特定の形態に限定されるものとは意図されていない。そうではなく、本開示は、添付の特許請求の範囲の範囲内に入るすべての修正形態、均等形態、および代替形態を網羅する。
【発明を実施するための形態】
【００１７】
以下でより詳細に説明するように、本開示は、一般に、ソフトウェア製品を更新するためのシステムおよび方法に関する。本開示の実施形態は、インストールプロセス中に既存の製品をアンインストールする必要なく新規の製品を上書きインストールすることができる。例えば、計算システムは、第１のバージョンのソフトウェア製品が動作しているままで、第２のバージョンのソフトウェア製品を休止状態でインストールすることができ、第２のバージョンのソフトウェア製品を作動させ、第１のバージョンのソフトウェア製品を作動停止させることによって第１のバージョンと第２のバージョンのソフトウェア製品をスワップすることができる。
【００１８】
本開示の実施形態は、一般に、あるソフトウェア製品が別のソフトウェア製品に上書きしてインストールされる状況（すなわち、一度にただ１つのバージョンのソフトウェア製品しか動作することができない状況）に当てはまる。そのような状況では、従来のインストールツールは、典型的には既存のソフトウェア製品をアンインストールしてから新規のソフトウェア製品をインストールし、そのため、いずれのソフトウェア製品も動作していない期間が生じることがある。アンチウイルスやデータ保護製品などセキュリティソフトウェア製品に関して、既存の製品によって保護されている計算システムは、既存の製品がアンインストールされて新規の製品がインストールされる間、脆弱になることがある。本開示の実施形態は、既存のバージョンのソフトウェア製品がまだ動作しているままで新規のバージョンのソフトウェア製品をインストールすることによって、ソフトウェアのダウンタイムをなくす、および／または最小限にすることができる。また、本開示の実施形態は、様々な他の特徴および利点も提供する。
【００１９】
以下、図１および図２を参照して、ソフトウェア製品を更新するための例示的なシステムを詳細に説明する。また、それに対応するコンピュータ実装方法を、図３および図４に関連付けて詳細に説明する。さらに、本明細書で述べる１つまたは複数の実施形態を実装することができる例示的な計算システムおよびネットワークアーキテクチャを、それぞれ図５７および図６に関連付けて詳細に説明する。
【００２０】
図１は、ソフトウェア製品を更新するための例示的なシステム１００のブロック図である。この図に示されるように、例示的なシステム１００は、１つまたは複数のタスクを実施するための１つまたは複数のモジュール１０２を含み得る。例えば、以下でより詳細に説明するように、例示的なシステム１００は、第１のバージョンのソフトウェア製品に第２のバージョンのソフトウェア製品を上書きしてインストールすることを求める要求を受信するようにプログラムされたインターフェースモジュール１０４を含み得る。また、例示的なシステム１００は、第１のバージョンのソフトウェア製品が動作しているままで、第２のバージョンのソフトウェア製品を休止状態でインストールするようにプログラムされたインストールモジュール１０６を含むこともある。
【００２１】
さらに、以下でより詳細に説明するように、例示的なシステム１００は、第１のバージョンのソフトウェア製品を作動停止させて第２のバージョンのソフトウェア製品を作動させることによって、第１のバージョンと第２のバージョンのソフトウェア製品をスワップするようにプログラムされたスワッピングモジュール１０８を含むこともある。別個の要素として図示されているが、図１のモジュール１０２の１つまたは複数が、単一のモジュールまたはアプリケーションの一部を表すこともある。
【００２２】
いくつかの実施形態では、図１のモジュール１０２の１つまたは複数は、計算装置によって実行されたときに計算装置に１つまたは複数のタスクを実施させることができる１つまたは複数のソフトウェアアプリケーションまたはプログラムを表すことがある。例えば、以下でより詳細に説明するように、モジュール１０２の１つまたは複数は、図２に示される装置（例えば計算装置２０２および／またはサーバ２０６）、図５の計算システム５１０、および／または図６の例示的なネットワークアクチュエータ６００の一部など、１つまたは複数の計算装置に記憶され、そこで実行されるように構成されたソフトウェアモジュールを表すことがある。また、図１のモジュール１０２の１つまたは複数は、１つまたは複数のタスクを実施するように構成された１つまたは複数の専用コンピュータの全体または一部を表こともある。
【００２３】
図１に示されるように、例示的なシステム１００は、１つまたは複数のデータベース１２０を含むこともある。データベース１２０は、単一のデータベースもしくは計算デバイスの一部、または複数のデータベースもしくは計算デバイスを表すことがある。一実施形態では、例示的なシステム１００は、第１のバージョンのソフトウェア製品と第２のバージョンのソフトウェア製品の相違を記憶するための相違データベース１２２を含み得る。また、例示的なシステム１００は、第１のバージョンのソフトウェア製品から第２のバージョンのソフトウェア製品に移行すべき１つまたは複数の設定を記憶するための設定データベース１２４を含むこともある。
【００２４】
図１のデータベース１２０は、１つまたは複数の計算デバイスの一部を表すことがある。例えば、データベース１２０は、図２のサーバ２０６の一部、図５の計算システム５１０、および／または図６の例示的なネットワークアーキテクチャ６００の一部を表すことがある。あるいは、図１のデータベース１２０は、図２のサーバ２０６、図５の計算システム５１０、および／または図６の例示的なネットワークアーキテクチャ６００の一部などの計算デバイスがアクセスすることができる１つまたは複数の物理的に別個のデバイスを表すことがある。
【００２５】
図１の例示的なシステム１００は、様々な方法で展開することができる。例えば、例示的なシステム１００の全体または一部が、図２に示される例示的なシステム２００などクラウドコンピューティング環境またはネットワークベース環境の一部を表すことがある。クラウドコンピューティング環境は、インターネットを介して様々なサービスおよびアプリケーションを提供することができる。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど）は、ウェブブラウザまたは他の遠隔インターフェースを介してアクセス可能になることがある。本明細書で述べる様々な機能は、遠隔のデスクトップ環境または任意の他のクラウドベースのコンピューティング環境によって提供することができる。
【００２６】
図２に示されるように、システム２００は、ネットワーク２０４を介してサーバ２０６と通信する計算デバイス２０２を含み得る。一実施形態では、計算デバイス２０２は、１つまたは複数のモジュール１０２および／または１つまたは複数のデータベース１２０を含み得る。また、計算デバイス２０２は、第１のバージョンのソフトウェア製品２２０と第２のバージョンのソフトウェア製品２２２を含むこともある。計算デバイス２０２は、１つまたは複数のモジュール１０２を実行することがあり、第１のバージョンのソフトウェア製品２２０に第２のバージョンのソフトウェア製品２２２を上書きするためのプロセスで１つまたは複数のデータベース１２０を使用することがある。いくつかの実施形態では、計算デバイス２０２は、エンタープライズソフトウェア展開の一部として、サーバ２０６から第２のバージョンのソフトウェア製品２２２を受信することがある。あるいは、第２のバージョンのソフトウェア製品２２２は、計算デバイス２０２で直接開始されるインストールの一部として、第１のバージョンのソフトウェア製品２２０に上書きされることがある。例えば、第２のバージョンのソフトウェア製品２２２は、ＣＤ、ＤＶＤ、ＢＬＵＥＲＡＹディスク、ＵＳＢデバイス、インターネット、および／またはローカルネットワークを含めた任意の適切な搬送メカニズムによって提供されることがある。
【００２７】
計算デバイス２０２は、コンピュータ実行可能命令を読み取ることができる任意の種類または形態の計算デバイスを全般的に表す。計算デバイス２０２の例としては、限定はしないが、ラップトップコンピュータ、デスクトップコンピュータ、サーバ、セルラ電話、個人用携帯情報端末（ＰＤＡ）、マルチメディアプレーヤ、組み込みシステム、それらのうちの１つまたは複数の組合せ、図５における例示的な計算システム５１０、または任意の他の適切な計算デバイスが挙げられる。
【００２８】
サーバ２０６は、ソフトウェア製品を展開することができる任意の種類または形態の計算デバイスを全般的に表す。サーバ２０６の例としては、限定はしないが、様々なデータベースサービスを提供する、および／または何らかのソフトウェアアプリケーションを動作させるように構成されたアプリケーションサーバおよびデータベースサーバが挙げられる。
【００２９】
ネットワーク２０４は、通信またはデータ転送を容易くすることができる任意の媒体またはアーキテクチャを全般的に表す。ネットワーク２０４の例としては、限定はしないが、イントラネット、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、インターネット、電力線通信（ＰＬＣ）、セルラネットワーク（例えばＧＳＭネットワーク）、図６の例示的なネットワークアーキテクチャ６００などが挙げられる。ネットワーク２０４は、無線または有線接続を使用して通信またはデータ転送を容易くすることができる。一実施形態では、ネットワーク２０４は、計算装置２０２およびサーバ２０６の間の通信を容易くすることができる。
【００３０】
図３は、ソフトウェア製品を更新するための例示的なコンピュータ実装方法３００の流れ図である。図３に示されるステップは、任意の適切なコンピュータ実行可能コードおよび／または計算システムによって実施することができる。いくつかの実施形態では、図３に示されるステップは、図１のシステム１００および／または図２のシステム２００の構成要素の１つまたは複数によって実施することができる。例えば、ステップ３０２で、インターフェースモジュール１０４が、計算デバイス２１０の一部として、第１のバージョンのソフトウェア製品に第２のバージョンのソフトウェア製品を上書きしてインストールすることを求める要求を受信することがある。いくつかの実施形態では、この要求は、遠隔アプリケーションから受信されることがある。例えば、第２のバージョンのソフトウェア製品を展開するサーバが、ソフトウェア製品のインストールを要求することがある。また、この要求は、第２のバージョンのソフトウェア製品を含むインストールパッケージからの要求であることもある。追加または代替として、この要求は、情報技術（「ＩＴ」）管理者または他のユーザから受信されることがある。
【００３１】
本明細書で使用するとき、語句「ソフトウェア製品」は、計算システム上にインストールされて実行されるようにプログラムされた任意のソフトウェアアプリケーション、実行可能なファイル、インストールパッケージ、または他のコンピュータ実行可能コードを表す。ソフトウェア製品としては、限定はしないが、ワードプロセッサ、スプレッドシート、生産性向上ソフトウェア、セキュリティソフトウェア（アンチウイルスプログラム、ファイアウォール、ペアレンタルコントロールソフトウェア、データ損失防止ソフトウェアなど）、および様々な他のタイプのソフトウェアプログラムが挙げられる。語句「第１のバージョンのソフトウェア製品」および「第２のバージョンのソフトウェア製品」は、同じ会社からの同じソフトウェアプログラムのより古いバージョンおよびより新しいバージョンをそれぞれ表すことがある。例えば、第１のバージョンのソフトウェア製品は、２００８年版のアンチウイルスプログラムであることがあり、第２のバージョンのソフトウェア製品は、２００９年版の同じプログラムであることがある。
【００３２】
あるいは、第１のバージョンと第２のバージョンのソフトウェア製品は、同様の機能を実施する異なるプログラムでもよい。例えば、第１のバージョンのソフトウェア製品は、第１のソフトウェア会社によって開発されたファイアウォールアプリケーションであることがあり、第２のバージョンのソフトウェア製品は、第２のソフトウェア会社によって開発されたファイアウォールアプリケーションであることがある。他の実施形態では、第１のバージョンと第２のバージョンのソフトウェア製品は、同じ会社からの異なるが関連したプログラムでよい。例えば、第１のバージョンのソフトウェア製品は、基本機能を備えたベーシックコンピュータセキュリティプログラム（例えばアンチウイルスプログラム）であることがあり、第２のバージョンのソフトウェア製品は、より高度な機能を備えた高度なコンピュータセキュリティプログラム（例えばプログラムのインターネットセキュリティスイート）であることがある。
【００３３】
本明細書で使用するとき、「第１のバージョンのソフトウェア製品に第２のバージョンのソフトウェア製品を上書きしてインストールする」は、一般に、１つのバージョンのソフトウェア製品を別のバージョンのソフトウェア製品に上書きインストールすることを意味する。上書きインストールとは、一般に、１つのバージョンのソフトウェアアプリケーションをインストールし、前のバージョンのソフトウェアアプリケーションを消去するためのインストールプロセスを表す。対照的に、他のインストールプロセスは、１つのバージョンの製品を別のバージョンの製品と置き換えることを含まないことがある。そのようなインストールプロセスは、既存のソフトウェア製品用のパッチをインストールし、２つのバージョンのソフトウェア製品を並行してインストールすることを含む。上書きインストールは、これらのパッチインストールおよび並行インストールは表さない。
【００３４】
上書きインストールプロセスは、一度に１つしかソフトウェア製品のインスタンスを動作させることができない状況で使用されることがある。例えば、多くの計算システムは、一度に１つのファイアウォールソフトウェアプログラムしか動作させないことがある。インスタンスを１つしか動作させることができない他のインストール状況としては、２つの同様のソフトウェア製品のインストールが、システムを不安定にすることがある競合および／または他の問題を生じることがあるような状況が挙げられる。
【００３５】
図３に戻ると、ステップ３０４で、インストールモジュール１０６が、計算デバイス２１０の一部として、第１のバージョンのソフトウェア製品が動作しているままで、第２のバージョンのソフトウェア製品を休止状態でインストールすることがある。インストールモジュール１０６は、以下でより詳細に説明する様々な方法で第２のバージョンをインストールすることができる。本明細書で使用するとき、語句「休止状態」は、少なくとも一部インストールされているが実行されていないソフトウェア製品を表す。インストールモジュール１０６は、第１のバージョンのソフトウェア製品が動作しているときに第１のバージョンのソフトウェア製品と干渉しないように第２のバージョンのソフトウェア製品をインストールすることによって、第２のバージョンのソフトウェア製品を休止状態でインストールすることがある。
【００３６】
いくつかの実施形態では、インストールモジュール１０６は、第２のバージョンのソフトウェア製品の１つまたは複数のファイルをインストールすることによって、第２のバージョンのソフトウェア製品をインストールすることがある。例えば、インストールモジュール１０６は、第２のバージョンのソフトウェア製品の１つまたは複数の実行可能なファイルおよび／または他のコードをインストールすることがある。また、インストールモジュール１０６は、第２のバージョンのソフトウェア製品の１つまたは複数の他のコンポーネントをインストールすることもある。例えば、インストールモジュール１０６は、第２のバージョンのソフトウェア製品の１つまたは複数のサービス、ドライバ、レジストリキー、および／または他のコンポーネントをインストールすることがある。
【００３７】
インストールモジュール１０６は、第１のバージョンのソフトウェア製品の実行に影響を及ぼさない第２のバージョンソフトウェア製品のファイルおよび他のコンポーネントのみをインストールし、インストールされると第１のバージョン製品の実行に影響を及ぼすことがある第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントのインストールを見合わせることによって、第２のバージョンのソフトウェア製品を一部インストールすることがある。インストールモジュール１０６は、様々な方法で、第１のバージョンのソフトウェア製品の実行に影響を及ぼさない第２のバージョンのソフトウェア製品のコンポーネントを識別することができる。いくつかの実施形態では、インストールモジュール１０６は、第１のバージョンのソフトウェア製品が動作しているままで安全にインストールできるコンポーネントを識別するリストまたは他のデータベースを読み取ることによって、そのようなコンポーネントを識別することがある。
【００３８】
他の実施形態では、インストールモジュール１０６は、新規のコンポーネントに対応するコンポーネントを第１のバージョンのソフトウェア製品が利用しているかどうか判断することによって、安全にインストールできる第２のバージョンのソフトウェア製品の１つまたは複数のコンポーネントを自動的に識別することがある。例えば、インストールモジュール１０６は、第１のバージョンのソフトウェア製品によって現在使用されているドライバの上書きを見合わせることがある。
【００３９】
いくつかの実施形態によれば、インストールモジュール１０６は、第１のバージョンと第２のバージョンのソフトウェア製品の１組の相違を識別することがある。１組の相違は、第１のバージョンと第２のバージョンのソフトウェア製品の１つまたは複数の相違を識別するリスト、差分ファイル、命令セット、および／または任意の他の情報セットであることがある。１組の相違は、１つまたは複数のレジストリキー、１つまたは複数のサービス、１つまたは複数のショートカット、および／または第１のバージョンと第２のバージョンのソフトウェア製品をスワップするために後の時点で（例えばリブート後に）行う必要がある１つまたは複数のアクションを識別することがある。１組の相違は、追加または代替として、１つまたは複数のレジストリキー、１つまたは複数のサービス、１つまたは複数のショートカット、および／または第１のバージョンのソフトウェア製品が動作しているままで行うことができる１つまたは複数のアクション（すなわち、前述したように、第１のバージョンのソフトウェア製品の実行に影響を及ぼさないアクション）を識別することがある。
【００４０】
インストールモジュール１０６は、第１のバージョンのソフトウェア製品の１つまたは複数の設定を保存することができる。例えば、インストールモジュール１０６は、第１のバージョンのソフトウェア製品の１つまたは複数の設定を読み取って、それらの設定を、設定データベース１２４などのデータベースに保存することができる。次いで、スワッピングモジュール１０８が、データベースからそれらの設定を読み取って、第２のバージョンのソフトウェア製品にインポートすることができる。したがって、第１のバージョンのソフトウェア製品の１つまたは複数の設定、例えばユーザ定義設定および／または他の設定を、第２のバージョンのソフトウェア製品で保つことができる。
【００４１】
インストールの完了後（またはインストール前もしくはインストール中）、インストールモジュール１０６が、第１のバージョンと第２のバージョンのソフトウェア製品をスワップするサービスを登録することがある。スワッピングモジュール１０８を含み得る登録されるサービスは、実行モードプロセス（すなわちｃｈｋｄｓｋプロセス）、カーネルドライバ、システムサービス、および／または任意の他の適切なサービスでよい。
【００４２】
ステップ３０６で、スワッピングモジュール１０８が、計算デバイス２１０の一部として、第１のバージョンと第２のバージョンのソフトウェア製品をスワップすることがある。スワッピングモジュール１０８は、様々な方法で第１のバージョンと第２のバージョンのソフトウェア製品をスワップすることができる。例えば、スワッピングモジュール１０８は、第２のバージョンのソフトウェア製品を作動させ、第１のバージョンのソフトウェア製品を作動停止させることによって、第１のバージョンと第２のバージョンのソフトウェア製品をスワップすることができる。本明細書で使用するとき、語句「第２のバージョンのソフトウェア製品を作動させる」は、第２のバージョンのソフトウェア製品の１つまたは複数のプロセスを動作させる、および／または第２のバージョンのソフトウェア製品の１つまたは複数のプロセスが動作するように準備する任意の手順を全般的に表す。逆に、語句「第１のバージョンのソフトウェア製品を作動停止させる」は、第１のバージョンのソフトウェア製品の１つまたは複数のプロセスの実行を停止させる、第１のバージョンのソフトウェア製品の実行を終了する準備をする、および／または第１のバージョンのソフトウェア製品が終了後に再始動しないように第１のバージョンのソフトウェア製品を変更する任意の手順を全般的に表す。
【００４３】
いくつかの実施形態では、スワッピングモジュール１０８は、第１のバージョンのソフトウェア製品が動作しているままで、第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントの状態を、それら１つまたは複数のコンポーネントがリブート後に再始動しないように変更することがある。例えば、スワッピングモジュール１０８は、第１のバージョンのソフトウェア製品での１つまたは複数のサービスおよび／またはドライバの状態を、それらがシステムリブート後に動作しないように変更することがある。
【００４４】
スワッピングモジュール１０８は、第２のバージョンのソフトウェア製品において使用できるように第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントを更新するために、事前に識別されている第１のバージョンと第２のバージョンのソフトウェア製品の１組の相違を使用することがある。例えば、スワッピングモジュール１０８は、（例えば、新規のキーを追加する、古いキーを削除する、および／または既存のキーを変更することによって）第２のバージョンのソフトウェア製品の１つまたは複数のレジストリキーを更新することがある。追加または代替として、スワッピングモジュール１０８は、第２のバージョンのソフトウェア製品のいくつかまたはすべてのサービスおよび／またはドライバを更新（例えば追加、削除、および／または変更）することがある。また、スワッピングモジュール１０８は、第２のバージョンのソフトウェア製品の１つまたは複数のショートカット（シンボリックリンクを含む）を更新することもある。さらに、スワッピングモジュール１０８は、インストールプロセス外で計算システムを修正することができるカスタム実行可能ファイルなど、１つまたは複数のカスタムアクションを動作させることもある。
【００４５】
いくつかの実施形態によれば、スワッピングモジュール１０８は、第１のバージョンのソフトウェア製品が作動停止されて第２のバージョンのソフトウェア製品が作動された後に、第１のバージョンのソフトウェア製品をアンインストールおよび／またはその他の方法でクリーンアップすることがある。例えば、スワッピングモジュール１０８は、第１のバージョンのソフトウェア製品と関連付けられる任意のファイルおよび他のデータを消去することがある。
【００４６】
図４は、セキュリティソフトウェア製品を更新するための別の例示的なコンピュータ実装方法の流れ図であり、そのようなソフトウェア製品は、例えば、アンチウイルスアプリケーション、ファイアウォールアプリケーション、データ損失防止アプリケーション、および／または、計算システムを保護するためおよび／または計算システム上に記憶されたデータを保護するための任意の他のアプリケーションである。図４に示されるステップは、任意の適切なコンピュータ実行可能コードおよび／または計算システムによって実施することができる。いくつかの実施形態では、図４に示されるステップは、図１のシステム１００および／または図２のシステム２００の構成要素の１つまたは複数によって実施することができる。例えば、ステップ４０２で、インターフェースモジュール１０４が、計算デバイス２１０の一部として、第１のバージョンのセキュリティソフトウェア製品に第２のバージョンのセキュリティソフトウェア製品を上書きしてインストールすることを求める要求を受信することがある。ステップ４０４で、インストールモジュール１０６が、第１のバージョンのセキュリティソフトウェア製品の実行に影響を及ぼさない第２のバージョンのセキュリティソフトウェア製品の１つまたは複数のコンポーネントをインストールすることがある。ステップ４０２および４０４は、ステップ３０２および３０４と同様であり、図３で説明した方法の１つまたは複数で行うことができる。
【００４７】
ステップ４０６で、インストールモジュール１０６が、第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントの状態を、それら１つまたは複数のコンポーネントがリブート後に再始動しないように変更することがある。例えば、インストールモジュール１０６は、第１のバージョンのソフトウェア製品の１つまたは複数のサービスおよび／またはドライバを、それらがシステムリブート後に動作しないように変更することがある。そのようなプロセスは、アンロードおよび／または停止することができないサービスおよび／またはドライバに特に有用であることがある。あるいは、リブート後にサービスおよびドライバが始動を許される前に、実行モードプロセスを使用してサービスおよびドライバが更新される場合には、リブート前にサービスおよびドライバを変更する必要はないことがある。
【００４８】
ステップ４０８で、インストールモジュール１０６が、第１のバージョンのソフトウェア製品によって保護されている計算システムをリブートさせることがある。いくつかの実施形態では、リブートは、第２のバージョンのソフトウェア製品をインストールした後であって第２のバージョンのソフトウェア製品を作動させる前に行われることがある。いくつかの実施形態では、セキュリティ脅威から計算システムを保護するために、第２のバージョンのソフトウェア製品は、計算システムの１つまたは複数のネットワークアダプタが有効化される前にリブートプロセス中に作動されることがある。例えば、スワッピングモジュール１０８が、第２のバージョンのソフトウェア製品を、ブートプロセスにおいて早期に（すなわちネットワークアダプタが作動される前に）作動させることがある。あるいは、スワッピングモジュール１０８は、第２のバージョンのソフトウェア製品が有効化されるまで、計算システムの１つまたは複数のネットワークアダプタを無効化しておくことがある。また、スワッピングモジュール１０８は、第１のバージョンと第２のバージョンのソフトウェア製品がスワップされる間に、計算システムを保護するための任意の他の適切なアクションを行うこともある。
【００４９】
いくつかの実施形態では、第１のバージョンのソフトウェア製品は、リブートの直後には無効化されないことがある。例えば、第１のリブート後に、第１のバージョンのソフトウェア製品からのセキュリティドライバ（例えばアンチウイルスおよび／またはファイアウォールドライバなど）が動作することがある。第１のリブート中、実行モードアプリケーションが動作することがあり、これは、第１のバージョンのソフトウェア製品の１つまたは複数のコンポーネントを第２のバージョンのソフトウェア製品向けに更新することができる。例えば、実行モードアプリケーションは、それらの現行のインスタンスに影響を及ぼすことなくポイント変更することができる。計算システムのオペレーティングシステムが、完全には機能しない（すなわち第１のリブート後に完全にはロードされていない）ことがある。また、ソフトウェア製品も、このリブート後に完全にはロードされていないことがある。第１のバージョンのソフトウェア製品のコンポーネントが更新された後、第１のバージョンのソフトウェア製品は、無効化されるように設定されることがあり、第２のバージョンのソフトウェア製品は、第２のリブート後に動作するように有効化されるように設定されることがある。この時点で、実行モードアプリケーションが第２のリブートを強制することがある。そのような状況では、第１のバージョンのソフトウェア製品は、第２のリブート後まで動作し続けることができる。
【００５０】
ステップ４１０で、スワッピングモジュール１０８が、第１のバージョンと第２のバージョンのセキュリティソフトウェア製品をスワップすることがある。ステップ４１０は、図３のステップ３０６と同様である。したがって、ステップ３０６の論述で開示したプロセスの１つまたは複数を、ステップ４１０を実施するためにも使用することができる。
【００５１】
本開示の実施形態は、計算システムが脆弱になることがないように、既存のバージョンのセキュリティ製品に新規のバージョンのセキュリティ製品を上書きしてインストールすることを可能にすることができる。例えば、本明細書に記載するインストールプロセスは、第１のセキュリティソフトウェアアプリケーションの作動停止と第２のセキュリティソフトウェアアプリケーションの作動との間のダウンタイムがないように実施することができる。
【００５２】
図５は、本願で説明および／または図示する実施形態の１つまたは複数を実施することができる例示的な計算システム５１０のブロック図である。計算システム５１０は、コンピュータ可読命令を実行することができる任意のシングルプロセッサまたはマルチプロセッサ計算装置またはシステムを広範に表す。計算システム５１０の例としては、限定はしないが、ワークステーション、ラップトップコンピュータ、クライアント側の端末、サーバ、分散コンピューティングシステム、ハンドヘルド装置、または任意の他の計算システムもしくは装置が挙げられる。その最も基本的な構成では、計算システム５１０は、少なくとも１つのプロセッサ５１４と、システムメモリ５１６とを含むことができる。
【００５３】
処理装置５１４は、データを処理することができる、または命令を解釈および実行することができる任意の種類または形態の処理ユニットを全般的に表す。いくつかの実施形態では、処理装置５１４は、ソフトウェアアプリケーションまたはモジュールから命令を受信することがある。これらの命令は、本願で説明および／または図示する１つまたは複数の例示的実施形態の機能を処理装置５１４に実施させることができる。例えば、処理装置５１４は、単独で、または他の要素と組み合わせて、本明細書で述べる受信、インストール、スワッピング、リブート、無効化、見合わせ、変更、および／またはアンインストールステップの１つまたは複数を実施することができ、および／またはそれらを実施するための手段であってよい。また、処理装置５１４は、本願で説明および／または図示する任意の他のステップ、方法、またはプロセスを実施することもでき、および／またはそれらを実施するための手段であってもよい。
【００５４】
システムメモリ５１６は、データおよび／または他のコンピュータ可読命令を記憶することができる任意の種類または形態の揮発性または不揮発性記憶装置または媒体を全般的に表す。システムメモリ５１６の例としては、限定はしないが、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ、または任意の他の適切なメモリ装置が挙げられる。必ずそうである必要はないが、いくつかの実施形態では、計算システム５１０は、揮発性メモリユニット（例えばシステムメモリ５１６など）と不揮発性メモリ装置（例えば以下で詳細に説明する主記憶装置５３２など）の両方を含むこともある。一例では、図１からのモジュール１０２の１つまたは複数をシステムメモリ５１６にロードすることができる。
【００５５】
いくつかの実施形態では、例示的な計算システム５１０は、プロセッサ５１４およびシステムメモリ５１６に加えて、１つまたは複数の構成要素または要素を含むこともできる。例えば、図５に示されるように、計算システム５１０は、メモリコントローラ５１８と、入出力（Ｉ／Ｏ）制御装置５２０と、通信インターフェース５２２とを含むことがあり、これらはそれぞれ通信インフラストラクチャ５１２を介して相互接続されることがある。通信インフラストラクチャ５１２は、計算装置の１つまたは複数の構成要素間の通信を容易くすることができる任意の種類または形態のインフラストラクチャを全般的に表す。通信インフラストラクチャ５１２の例としては、限定はしないが、通信バス（ＩＳＡ、ＰＣＩ、ＰＣＩｅ、または同様のバスなど）およびネットワークが挙げられる。
【００５６】
メモリ制御装置５１８は、メモリもしくはデータを取り扱うことができる、または計算システム５１０の１つまたは複数の構成要素間の通信を制御することができる任意の種類または形態のデバイスを全般的に表す。例えば、いくつかの実施形態では、メモリ制御装置５１８は、通信インフラストラクチャ５１２を介する処理装置５１４と、システムメモリ５１６と、Ｉ／Ｏ制御装置５２０との間の通信を制御することができる。いくつかの実施形態では、メモリ制御装置は、単独で、または他の要素と組み合わせて、受信、インストール、スワッピング、リブート、無効化、見合わせ、変更、および／またはアンインストールなど、本願で説明および／または図示するステップまたは機能の１つまたは複数を実施することができ、および／またはそれらを実施するための手段であってよい。
【００５７】
Ｉ／Ｏ制御装置５２０は、計算デバイスの入出力機能を調整および／または制御することができる任意の種類または形態のモジュールを全般的に表す。例えば、いくつかの実施形態では、Ｉ／Ｏ制御装置５２０は、処理装置５１４、システムメモリ５１６、通信インターフェース５２２、ディスプレイアダプタ５２６、入力インターフェース５３０、および記憶インターフェース５３４など、計算システム５１０の１つまたは複数の要素間でのデータの転送を制御する、または容易くすることができる。Ｉ／Ｏ制御装置５２０は、単独で、または他の要素と組み合わせて、本明細書で述べる受信、インストール、スワッピング、リブート、無効化、自制、変更、および／またはアンインストールステップの１つまたは複数を実施するために使用することができ、および／またはそれらを実施するための手段であってよい。また、Ｉ／Ｏ制御装置５２０は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および／またはそれらを実施するための手段であってもよい。
【００５８】
通信インターフェース５２２は、例示的な計算システム５１０と１つまたは複数の追加の装置との間の通信を容易くすることができる任意の種類または形態の通信装置またはアダプタを広範に表す。例えば、いくつかの実施形態では、通信インターフェース５２２は、計算システム５１０と、追加の計算システムを含むプライベートネットワークまたはパブリックネットワークとの間の通信を容易くすることができる。通信インターフェース５２２の例としては、限定はしないが、有線ネットワークインターフェース（ネットワークインターフェースカードなど）、無線ネットワークインターフェース（無線ネットワークインターフェースカードなど）、モデム、および任意の他の適切なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース５２２は、インターネットなどのネットワークへの直接のリンクを介して遠隔サーバへの直接的な接続を提供することができる。また、通信インターフェース５２２は、そのような接続を、例えばローカルエリアネットワーク（イーサネットネットワークなど）、パーソナルエリアネットワーク、電話もしくはケーブルネットワーク、セルラ電話接続、衛星データ接続、または任意の他の適切な接続を介して間接的に提供することもできる。
【００５９】
いくつかの実施形態では、通信インターフェース５２２は、外部バスまたは通信チャネルを介する計算システム５１０と１つまたは複数の追加のネットワークまたは記憶デバイスとの間の通信を容易くするように構成されたホストアダプタを表すこともある。ホストアダプタの例としては、限定はしないが、ＳＣＳＩホストアダプタ、ＵＳＢホストアダプタ、ＩＥＥＥ１３９４ホストアダプタ、ＳＡＴＡおよびｅＳＡＴＡホストアダプタ、ＡＴＡおよびＰＡＴＡホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネットアダプタなどが挙げられる。また、通信インターフェース５２２は、計算システム５１０が分散コンピューティングまたは遠隔コンピューティングに従事できるようにすることもある。例えば、通信インターフェース５２２は、命令を実行するために、遠隔デバイスから命令を受信する、または遠隔デバイスに命令を送信することがある。いくつかの実施形態では、通信インターフェース５２２は、単独で、または他の要素と組み合わせて、本明細書で開示する受信、インストール、スワッピング、リブート、無効化、自制、変更、および／またはアンインストールステップの１つまたは複数を実施することができ、および／またはそれらを実施するための手段であってよい。また、通信インターフェース５２２は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および／またはそれらを実施するための手段であってもよい。
【００６０】
図５に示されるように、計算システム５１０は、ディスプレイアダプタ５２６を介して通信インフラストラクチャ５１２に結合された少なくとも１つのディスプレイ装置５２４を含むこともある。ディスプレイ装置５２４は、ディスプレイアダプタ５２６によって転送された情報を視覚的に表示することができる任意の種類または形態の装置を全般的に表す。同様に、ディスプレイアダプタ５２６は、ディスプレイ装置５２４上に表示するために通信インフラストラクチャ５１２から（または当技術分野で知られているフレームバッファから）グラフィック、テキスト、および他のデータを転送するように構成された任意の種類または形態の装置を全般的に表す。
【００６１】
図５に示されるように、例示的な計算システム５１０は、入力インターフェース５３０を介して通信インフラストラクチャ５１２に結合された少なくとも１つの入力デバイス５２８を含むこともある。入力デバイス５２８は、コンピュータまたは人によって生成された入力を例示的な計算システム５１０に提供することができる任意の種類または形態の入力デバイスを全般的に表す。入力デバイス５２８の例としては、限定はしないが、キーボード、ポインティングデバイス、音声認識デバイス、または任意の他の入力デバイスが挙げられる。少なくとも１つの実施形態では、入力デバイス５２８は、単独で、または他の要素と組み合わせて、本明細書で開示する受信、インストール、スワッピング、リブート、無効化、自制、変更、および／またはアンインストールステップの１つまたは複数を実施することができ、および／またはそれらを実施するための手段であってよい。また、入力デバイス５２８は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および／またはそれらを実施するための手段であってもよい。
【００６２】
図５に示されるように、例示的な計算システム５１０は、記憶インターフェース５３４を介して通信インフラストラクチャ５１２に結合された主記憶装置５３２およびバックアップ記憶装置５３３を含むこともできる。記憶装置５３２および５３３は、データおよび／または他のコンピュータ可読命令を記憶することができる任意の種類または形態の記憶装置または媒体を全般的に表す。例えば、記憶装置５３２および５３３は、磁気ディスクドライブ（例えばいわゆるハードドライブ）、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどでよい。記憶インターフェース５３４は、記憶装置５３２および５３３と計算システム５１０の他の構成要素との間でデータを転送するための任意の種類または形態のインターフェースまたは装置を全般的に表す。一例では、図１からのデータベース１２０が主記憶装置５３２に記憶されることがある。
【００６３】
いくつかの実施形態では、記憶装置５３２および５３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成された着脱可能な記憶ユニットからの読み出しおよび／またはそのような記憶ユニットへの書き込みを行うように構成されることがある。適切な着脱可能な記憶ユニットの例としては、限定はしないが、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリ装置などが挙げられる。また、記憶装置５３２および５３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読命令を計算システム５１０にロードできるようにするための他の同様の構造または装置を含むこともできる。例えば、記憶装置５３２および５３３は、ソフトウェア、データ、または他のコンピュータ可読情報の読み出しおよび書き込みを行うように構成されることがある。また、記憶装置５３２および５３３は、計算システム５１０の一部でもよく、または他のインターフェースシステムによってアクセスされる別個の装置でもよい。
【００６４】
いくつかの実施形態では、記憶デバイス５３２および５３３は、例えば、単独で、または他の要素と組み合わせて、本明細書で開示する受信、インストール、スワッピング、リブート、無効化、自制、変更、および／またはアンインストールステップの１つまたは複数を実施するために使用することができ、および／またはそれらを実施するための手段であってよい。また、記憶デバイス５３２および５３３は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および／またはそれらを実施するための手段であってもよい。
【００６５】
多くの他の装置またはサブシステムを計算システム５１０に接続することができる。逆に、図５に示される構成要素および装置は、本願で説明および／または図示する実施形態を実施するためにすべて揃っていなければならないわけではない。また、上で言及した装置およびサブシステムは、図５に示されるのとは異なる方法で相互接続されることもある。また、計算システム５１０は、任意の数のソフトウェア、ファームウェア、および／またはハードウェア構成を採用することができる。例えば、本明細書で開示する例示的実施形態の１つまたは複数を、コンピュータ可読媒体上にコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御論理とも呼ぶ）として符合化することができる。語句「コンピュータ可読媒体」は、コンピュータ可読命令を記憶または担持することができる任意の形態の装置、担体、または媒体を全般的に表す。コンピュータ可読媒体の例としては、限定はしないが、搬送波など伝送型媒体や、物理的媒体、例えば磁気記憶媒体（例えばハードディスクドライブおよびフロッピーディスク）、光記憶媒体（例えばＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭ）、電子記憶媒体（例えばソリッドステートドライブおよびフラッシュ媒体）、および他の配信システムが挙げられる。
【００６６】
コンピュータプログラムを含むコンピュータ可読媒体は、計算システム５１０にロードすることができる。次いで、コンピュータ可読媒体に記憶されたコンピュータプログラムの全体または一部を、システムメモリ５１６、および／または記憶装置５３２および５３３の様々な部分に記憶することができる。プロセッサ５１４によって実行されるとき、計算システム５１０にロードされたコンピュータプログラムは、本願で説明および／または図示する１つまたは複数の例示的実施形態の機能をプロセッサ５１４に実施させることができ、および／またはプロセッサ５１４を、そのような機能を実施するための手段にすることができる。追加または代替として、本願で説明および／または図示する例示的実施形態の１つまたは複数は、ファームウェアおよび／またはハードウェアの形で実装することができる。例えば、計算システム５１０は、本明細書で開示する例示的実施形態の１つまたは複数を実装するように適合された特定用途向け集積回路（ＡＳＩＣ）として構成することができる。
【００６７】
図６は、クライアントシステム６１０、６２０、および６３０、ならびにサーバ６４０および６４５をネットワーク６５０に結合させることができる例示的なネットワークアーキテクチャ６００のブロック図である。クライアントシステム６１０、６２０、および６３０は、図５の例示的な計算システム５１０など、任意の種類または形態の計算装置またはシステムを全般的に表す。一例では、クライアントシステム６１０は、図１からのシステム１００を含むことができる。
【００６８】
同様に、サーバ６４０および６４５は、様々なデータベースサービスを提供するように、および／または何らかのソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバやデータベースサーバなどの計算装置またはシステムを全般的に表す。ネットワーク６５０は、例えばイントラネット、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、またはインターネットを含めた任意の遠隔通信ネットワークまたはコンピュータネットワークを全般的に表す。
【００６９】
図６に示されるように、１つまたは複数の記憶装置６６０（１）〜（Ｎ）をサーバ６４０に直接取り付けることができる。同様に、１つまたは複数の記憶装置６７０（１）〜（Ｎ）をサーバ６４５に直接取り付けることができる。記憶装置６６０（１）〜（Ｎ）および６７０（１）〜（Ｎ）は、データおよび／または他のコンピュータ可読命令を記憶することができる任意の種類または形態の記憶装置または媒体を全般的に表す。いくつかの実施形態では、記憶装置６６０（１）〜（Ｎ）および記憶装置６７０（１）〜（Ｎ）は、ＮＦＳ、ＳＭＢ、またはＣＩＦＳなど様々なプロトコルを使用してサーバ６４０および６４５と通信するように構成されたネットワークアタッチストレージ（ＮＡＳ）装置を表すことがある。
【００７０】
また、サーバ６４０および６４５が、ストレージエリアネットワーク（ＳＡＮ）ファブリック６８０に接続されることもある。ＳＡＮファブリック６８０は、複数の記憶デバイス間の通信を容易くすることができる任意の種類または形態のコンピュータネットワークまたはアーキテクチャを全般的に表す。ＳＡＮファブリック６８０は、サーバ６４０および６４５と複数の記憶デバイス６９０（１）〜（Ｎ）および／またはインテリジェント記憶アレイ６９５との間の通信を容易くすることができる。また、ＳＡＮファブリック６８０は、ネットワーク６５０ならびにサーバ６４０および６４５を介するクライアントシステム６１０、６２０、および６３０と記憶デバイス６９０（１）〜（Ｎ）および／またはインテリジェント記憶アレイ６９５との間の通信を容易くすることもでき、それにより、デバイス６９０（１）〜（Ｎ）およびアレイ６９５は、クライアントシステム６１０、６２０、および６３０へのローカル接続デバイスのように見える。記憶デバイス６６０（１）〜（Ｎ）および記憶デバイス６７０（１）〜（Ｎ）と同様に、記憶デバイス６９０（１）〜（Ｎ）およびインテリジェント記憶アレイ６９５は、データおよび／または他のコンピュータ可読命令を記憶することができる任意の種類または形態の記憶デバイスまたは媒体を全般的に表す。
【００７１】
いくつかの実施形態では、図５の例示的な計算システム５１０を参照すると、図５の通信インターフェース５２２などの通信インターフェースを使用して、各クライアントシステム６１０、６２０、および６３０とネットワーク６５０の間の接続性を提供することができる。クライアントシステム６１０、６２０、および６３０は、例えばウェブブラウザや他のクライアントソフトウェアを使用してサーバ６４０および６４５上の情報にアクセスすることができることがある。そのようなソフトウェアは、クライアントシステム６１０、６２０、および６３０が、サーバ６４０、サーバ６４５、記憶デバイス６６０（１）〜（Ｎ）、記憶デバイス６７０（１）〜（Ｎ）、記憶デバイス６９０（１）〜（Ｎ）、またはインテリジェント記憶アレイ６９５によってホストされたデータにアクセスできるようにすることがある。図６は、データを交換するための（インターネットなどの）ネットワークの使用を示すが、本願で説明および／または図示する実施形態は、インターネットまたは任意の特定のネットワークベース環境に限定されない。
【００７２】
少なくとも１つの実施形態では、本明細書で開示した１つまたは複数の例示的実施形態の全部または一部をコンピュータプログラムとして符合化し、サーバ６４０、サーバ６４５、記憶デバイス６６０（１）〜（Ｎ）、記憶デバイス６７０（１）〜（Ｎ）、記憶デバイス６９０（１）〜（Ｎ）、インテリジェント記憶アレイ６９５、またはそれらの任意の組合せにロードし、それらによって実行することができる。また、本明細書で開示する１つまたは複数の例示的実施形態の全部または一部をコンピュータプログラムとして符合化し、サーバ６４０に記憶し、サーバ６４５によって動作させ、ネットワーク６５０を介してクライアントシステム６１０、６２０、および６３０に分散することもできる。したがって、ネットワークアーキテクチャ６００は、単独で、または他の要素と組み合わせて、本明細書で開示する受信、インストール、スワッピング、リブート、無効化、自制、変更、および／またはアンインストールステップの１つまたは複数を実施することができ、および／またはそれらを実施するための手段であってよい。また、ネットワークアーキテクチャ６００は、本開示に記載する他のステップおよび機能を実施するために使用することもでき、および／またはそれらを実施するための手段であってもよい。
【００７３】
上で詳述したように、計算システム５１０、および／またはネットワークアーキテクチャ６００の１つまたは複数の構成要素は、単独で、または他の要素と組み合わせて、ソフトウェア製品を更新するための例示的な方法の１つまたは複数のステップを実施することができ、および／またはそれらを実施するための手段であってよい。
【００７４】
前述の開示では、特定のブロック図、流れ図、および例を使用して様々な実施形態を記載してきたが、本願で説明および／または図示した各ブロック図の構成要素、流れ図のステップ、操作、および／または構成要素は、多様なハードウェア構成、ソフトウェア構成、またはファームウェア構成（またはそれらの任意の組合せ）を使用して、個別に、および／またはまとめて実装することができる。さらに、他の構成要素に含まれた構成要素の開示はどれも、同じ機能を実現するために多くの他のアーキテクチャを実装することができるので、例示的な性質のものとみなすべきである。
【００７５】
本願で説明および／または図示したプロセスパラメータおよびステップのシーケンスは、単に例として提示したものであり、望みに応じて変えることができる。例えば、本明細書で図示および／または説明したステップは、特定の順序で図示または論述していることがあるが、これらのステップは、必ずしも図示または論述した順序で行う必要はない。また、本願で説明および／または図示した様々な例示的な方法は、本願で説明または図示したステップの１つまたは複数を省くこともでき、あるいは開示したステップに加えて追加のステップを含むこともできる。
【００７６】
様々な実施形態を、完全に機能する計算システムの文脈で本願で説明および／または図示してきたが、これらの例示的実施形態の１つまたは複数は、実際に分散を行うために使用されるコンピュータ可読媒体の特定の種類には関係なく多様な形態でプログラム製品として分散させることができる。また、本明細書で開示する実施形態は、特定のタスクを実施するソフトウェアモジュールを使用して実装することもできる。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上または計算システム内に記憶されることがあるスクリプト、バッチ、または他の実行可能なファイルを含み得る。いくつかの実施形態では、これらのソフトウェアモジュールは、本明細書で開示する例示的実施形態の１つまたは複数を実施するように計算システムを構成することができる。
【００７７】
さらに、本明細書で述べるモジュールの１つまたは複数は、データ、物理的デバイス、および／または物理的デバイスの表現を、ある形態から別の形態に変えることができる。例えば、１つまたは複数のモジュール１０２が、第１のバージョンのソフトウェア製品を第２のバージョンのソフトウェア製品に変換することができる。
【００７８】
前述の説明は、本明細書に開示する例示的実施形態の様々な態様を当業者が最も良く利用できるように提示した。この例示的な説明は、網羅的なものとは意図されておらず、また開示した任意の厳密な形態に限定されるものとも意図されていない。本開示の精神および範囲から逸脱することなく、多くの修正形態および変形形態が可能である。本明細書で開示した実施形態は、すべての点で例示とみなされるべきであり、限定とみなされるべきではない。本開示の範囲を決定するに当たっては、添付の特許請求の範囲およびそれらの均等箇所を参照すべきである。
【００７９】
特に断りのない限り、本明細書および特許請求の範囲で使用する単数形は、「少なくとも１つ」を意味するものと解釈すべきである。さらに、使いやすいように、本明細書および特許請求の範囲で使用する語「含む」および「有する」は、語「備える」と同義語であり、同じ意味を有するものとする。
【図１】
0005646629.tif 000002
【図２】
0005646629.tif 000003
【図３】
0005646629.tif 000004
【図４】
0005646629.tif 000005
【図５】
0005646629.tif 000006
【図６】
0005646629.tif 000007