(57)【要約】  プリヒート型ソフトウェアインストールのための方法及び装置の幾つかの実施形態が開示される。１つの実施形態において、コンピューティングシステムのコンピューティング環境の背景動作においてソフトウェアの更新のパッケージがリモートソースからコンピューティングシステムにダウンロードされる。更新のパッケージのインストールは、ソフトウェア更新にコミットすることなく分離された仕方で背景動作において自動的に開始される。【選択図】      図４
2013544416.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにより実行されたときに、データ処理システムが、
コンピューティングシステムのソフトウェアに対する更新のパッケージを、コンピューティングシステムのコンピューティング環境の背景動作においてリモートソースからコンピューティングシステムへダウンロードし、
前記更新のパッケージのインストールを、前記更新にコミットすることなく分離された仕方で前記背景動作において自動的に開始する、
ことを含む方法を遂行するようにさせる実行可能なプログラムインストラクションを記憶するコンピュータ読み取り可能な記憶媒体。
【請求項２】
前記方法は、更に、前記更新のユーザ承認の際に、前記更新のパッケージのインストールを完了させることにより前記ソフトウェア更新にコミットすることを含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３】
前記方法は、更に、
前記更新のユーザ拒絶の際に、それまでに遂行された更新のパッケージのインストールをアンドゥし、
前記ダウンロードされた更新のパッケージをコンピューティングシステムに保持する、
ことを含む請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４】
前記方法は、更に、
前記更新のパッケージを解凍し、
前記解凍されたパッケージを使用して前記コンピューティング環境の背景動作において一時的キャッシュを形成する、
ことを含む請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５】
前記更新のパッケージのインストールは、前記コンピューティングシステムのユーザに通知せずに開始される、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項６】
前記更新のパッケージのインストールは、前記コンピューティングシステムのソフトウェアの現在バージョンを妨げることなく開始される、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項７】
コンピューティングシステムで現在実行されているプロセスを妨げることなくコンピューティングシステムのソフトウェアに対する更新のセットのインストールの一部分のみを遂行し、
前記更新のセットのインストールの一部分を遂行した後にコンピューティングシステムのユーザに前記更新のセットを通知し、
ユーザが前記更新のセットを承認するまでコンピューティングシステムの前記更新の全セットのインストールの完了を延期する、
ことを含む、コンピュータで実施される方法。
【請求項８】
ユーザが、前記更新の全セットをインストールするのではなく、コンピューティングシステムにインストールすべき更新のセットのサブセットを選択するのを許し、
インストールすべき更新のセットのサブセットをユーザが選択するのに応答して、それまで遂行されたインストールをアンドゥし、
コンピューティングシステムで選択された更新のセットのサブセットのみを再インストールする、
ことを更に含む請求項７に記載の方法。
【請求項９】
ユーザが更新の全セットを拒絶する場合には、それまで遂行されたインストールをアンドゥする、ことを更に含む請求項７に記載の方法。
【請求項１０】
前記更新のセットのインストールの一部分を遂行することは、
前記コンピューティングシステムのコンピュータ読み取り可能な記憶装置の一時的エリアに前記更新のセットのためのシステムキャッシュを形成し、
前記形成されたシステムキャッシュを、ユーザに応答して前記コンピューティングシステムの現在システムキャッシュとスワップする、
ことを含む請求項７に記載の方法。
【請求項１１】
ユーザが更新の全セットを許すのに応答して、コンピューティングシステムの現在システムキャッシュに置き換わるように、形成されたシステムキャッシュをスワップする、ことを更に含む請求項１０に記載の方法。
【請求項１２】
前記ソフトウェアは、コンピューティングシステムの１つ以上のユーザアプリケーションを含む、請求項７に記載の方法。
【請求項１３】
ソフトウェアのインストラクション及びデータを記憶するためのコンピュータ読み取り可能な記憶装置と、
前記コンピュータ読み取り可能な記憶媒体に結合され、ネットワークを経てコンピューティングマシンに通信結合して、そのコンピューティングマシンからソフトウェアに対する更新をダウンロードするネットワークインターフェイスと、
前記ネットワークインターフェイスに結合され、ソフトウェアの既存のインストラクション及びデータにオーバーライトすることなく、コンピュータ読み取り可能な記憶装置の予約エリアに更新をプリインストールする処理装置と、
を備えた装置。
【請求項１４】
前記ダウンロードされた更新は、圧縮フォーマットの複数のパッケージを含み、前記処理装置は、前記複数のパッケージを解凍し、そして前記複数のパッケージをコンピュータ読み取り可能な記憶装置の予約エリアに記憶する、請求項１３に記載の装置。
【請求項１５】
前記処理装置は、更に、前記コンピュータ読み取り可能な記憶装置の予約エリアにおける複数のパッケージを使用して複数のシステムキャッシュを形成し、それら複数のシステムキャッシュの各々は、１つ以上の更新の所定の組み合わせに対応する、請求項１４に記載の装置。
【請求項１６】
ディスプレイ装置を更に備え、前記処理装置は、このディスプレイ装置により表示されるユーザインターフェイスを発生して、ユーザに更新を通知する、請求項１３に記載の装置。
【請求項１７】
更新のインストールを部分的又は全体的に承認するか或いは全ての更新を拒絶するユーザインストラクションを受け取るユーザ入力装置を更に備えた、請求項１６に記載の装置。
【請求項１８】
コンピューティングシステムの背景動作で実行されるプロセスを経てコンピューティングシステムのソフトウェアに対する更新を部分的にインストールし、
前記更新を部分的にインストールした後にコンピューティングシステムのユーザに前記更新を通知し、
ユーザが前記更新を承認するのに応答して、前記コンピューティングシステムの更新のインストールを完了する、
ことを含む、コンピュータで実施される方法。
【請求項１９】
前記更新を部分的にインストールすることは、
前記更新に関連したファイルを、リモートソースからダウンロードした複数のパッケージから抽出し、
前記コンピューティングシステムのソフトウェアの現在バージョンのファイルから分離された１つ以上のディレクトリを一時的エリアに生成し、前記１つ以上のディレクトリのハイアラーキーが前記ソフトウェアの現在バージョンのファイルのハイアラーキーを鏡像化するようにし、
前記更新に関連したファイルを前記１つ以上のディレクトリへコピーする、
ことを含む請求項１８に記載の方法。
【請求項２０】
ユーザが前記更新の少なくとも１つを拒絶するのに応答して、その拒絶された更新に関連したファイルの１つ以上を削除する、ことを含む請求項１９に記載の方法。
【請求項２１】
ユーザが前記更新の全部を拒絶するのに応答して、それらの更新に関連した全てのファイル及び１つ以上のディレクトリを削除する、ことを含む請求項１９に記載の方法。
【請求項２２】
ユーザが前記更新の全部を承認するのに応答して、１つ以上のディレクトリを、記憶された更新に関連したファイルと共に、コンピューティングシステムの活動中ファイルシステムへ移動して、コンピューティングシステムのソフトウェアの現在バージョンに置き換わることを更に含む、請求項１９に記載の方法。
【請求項２３】
コンピューティングシステムに利用できるようになるソフトウェアに対する更新を検出する手段と、
前記コンピューティングシステムのための更新を得る手段と、
前記コンピューティングシステムへの更新のインストールに対するユーザの認知時間を短縮する手段と、
を備えた装置。
【請求項２４】
コンピューティングシステムへの更新のインストールに対するユーザの認知時間を短縮する前記手段は、
コンピューティングシステムの背景動作中にコンピューティングシステムへ更新をプリインストールする手段と、
前記更新のプリインストールの後にコンピューティングシステムのユーザに更新を通知する手段と、
を含む請求項２３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにソフトウェアをインストールすることに関するもので、より詳細には、ソフトウェアの新規バージョンでコンピューティングシステムを更新することに関する。
【背景技術】
【０００２】
今日のコンピュータ社会では、コンピューティングシステム及び種々のソフトウェアアプリケーションに対する更新が実際上必要である。開発者は、我々が使用するコンピュータシステム及びアプリケーションのクオリティ、効率及びファンクションを改善するために研究を続けている。慣習的に、コンピューティングシステムに更新をインストールするには、時間がかかる。更に、更新をインストールする間に、コンピューティングシステムの他のアプリケーション又はプロセスが中断したり干渉を受けたりすることがある。従って、コンピューティングシステムのユーザは、仕事が長時間中断するのを回避するため、更新が促されたとき更新のインストールをしばしば延期する。
【発明の概要】
【０００３】
本発明の幾つかの実施形態は、ソフトウェアに対して利用可能な更新を自動的にダウンロードし、そしてそのダウンロードした更新のインストールを開始することを含む。１つの実施形態において、ソフトウェアに対する更新のパッケージが、コンピューティングシステムのコンピューティング環境の背景動作においてリモートソースからコンピューティングシステムへダウンロードされる。次いで、コンピューティングシステムをソフトウェア更新にコミットすることなく、背景において分離した仕方で、更新のパッケージのインストールが自動的に開始される。背景動作とは、最前のユーザインターフェイス要素（例えば、前部ウインドウ）をコントロールし且つ入力フォーカス（例えば、キーボード及びマウス又はタッチ入力は、ユーザが現在相互作用している最前のプロセスに向けられる）を有する他のプロセスと相互作用することがユーザに許される間に遂行される動作である。換言すれば、前景プロセス又は動作は、ユーザ入力（例えば、キーボード、マウス、タッチ入力、等）を受け取ることができる一方、背景動作は、そのようにならないが、ユーザにとって見ることができる。
【０００４】
本発明の幾つかの実施形態は、ソフトウェア更新をプリインストール(pre-installing)する方法を含む。１つの実施形態では、コンピューティングシステムのソフトウェアに対する更新のセットのインストールの一部分のみが、コンピューティングシステムで現在実行されているプロセスを妨げずに遂行される。次いで、コンピューティングシステムのユーザには、更新のセットが通知され、一方、更新の全セットのインストールの完了は、ユーザが更新の全セットを肯定的に許すか又は承認するまで延期される。
【０００５】
本発明の幾つかの実施形態は、ソフトウェア更新をプリインストールする装置を含む。１つの実施形態では、この装置は、ソフトウェアのインストラクション及びデータを記憶するためのコンピュータ読み取り可能な記憶装置と、ソフトウェアに対する更新をダウンロードするためにネットワークを経てコンピューティングマシンに通信結合するためのネットワークインターフェイスと、処理装置とを備えている。この処理装置は、ソフトウェアの既存のインストラクション及びデータにオーバーライトせずにコンピュータ読み取り可能な記憶装置の予約エリアに更新をプリインストールするように動作できる。
【０００６】
本発明の幾つかの実施形態は、ソフトウェア更新をプリインストールする方法を含む。１つの実施形態では、ソフトウェアに対する更新は、コンピューティングシステムの背景動作で実行されるプロセスを経てコンピューティングシステムに部分的にインストールされる。次いで、コンピューティングシステムのユーザには、更新が通知される。別の実施形態では、コンピューティングシステムは、背景動作の前又はその間に、背景動作をユーザに通知することができる。ユーザが更新を承認するのに応答して、コンピューティングシステムにおいて更新のインストールが完了となる。幾つかの実施形態では、ユーザは、更新の部分を承認する。それに応答して、更新をプリインストールするためにそれまで行われた作業は、アンドゥされ、承認された更新だけがインストールされる。
【０００７】
以上の方法の１つ以上を遂行する種々の装置、及び処理システムにより実行されたときにその処理システムがそれらの方法を遂行するようにさせるマシン読み取り可能な媒体についても説明する。
【０００８】
他の方法、装置及びコンピュータ読み取り可能な記憶装置についても説明する。
【０００９】
以下の説明は、本発明の実施形態の具現化を一例として示す添付図面の説明を含む。添付図面は、一例に過ぎず、それに限定されないことを理解されたい。ここに使用する１つ以上の「実施形態」とは、本発明の少なくとも１つの具現化に含まれる特定の特徴、構造又は特性を説明するものであると理解されたい。従って、ここに現れる「幾つかの実施形態」又は「別の実施形態」という句は、本発明の種々の実施形態及び具現化を説明するもので、必ずしも、全てが同じ実施形態を指すものではない。しかしながら、それらは、必ずしも相互に排他的でもない。
【図面の簡単な説明】
【００１０】
【図１Ａ】種々の実施形態に基づきコンピューティングシステムにおいてソフトウェア更新をプリヒート型インストールするプロセスを示すフローチャートである。
【図１Ｂ】種々の実施形態に基づきコンピューティングシステムにおいてソフトウェア更新をプリヒート型インストールするプロセスを示すフローチャートである。
【図２Ａ】種々の実施形態に基づきコンピューティングシステムにおいてソフトウェア更新をプリヒート型インストールするプロセスを示すフローチャートである。
【図２Ｂ】種々の実施形態に基づきコンピューティングシステムにおいてソフトウェア更新をプリヒート型インストールするプロセスを示すフローチャートである。
【図３Ａ】種々の実施形態に基づきコンピューティングシステムにおいてソフトウェア更新をプリヒート型インストールするプロセスを示すフローチャートである。
【図３Ｂ】種々の実施形態に基づきコンピューティングシステムにおいてソフトウェア更新をプリヒート型インストールするプロセスを示すフローチャートである。
【図４】プリヒート型ソフトウェアインストールに使用できるコンピューティングシステムにおけるコンピュータ読み取り可能な記憶装置の１つの実施形態を示すブロック図である。
【図５】本発明の幾つかの実施形態に使用できるコンピューティング装置の１つの実施形態を示す。
【発明を実施するための形態】
【００１１】
ここに述べる実施形態では、新規ソフトウェア及び／又はソフトウェアの更新がコンピューティングシステムに容易にインストールされる。説明を明瞭に且つ簡略にするため、ここに述べる実施形態は、ソフトウェア（例えば、オペレーティングシステム、ユーザアプリケーション、等）に対する更新をインストールすることをしばしば参照する。しかしながら、それら実施形態は、更新をインストールすることに限定されない。ここに述べる方法、技術、システム、コンポーネント、等は、新規なアプリケーションについても使用することができる。
【００１２】
幾つかの実施形態において、コンピューティングシステムのソフトウェアに対する更新をインストールするプロセスは、コンピューティングシステムのユーザに更新を通知又は知らせる前に、できるだけ、コンピューティングシステムのソフトウェアの現在バージョンを妨げずに、開始され実行される。従って、実行されるインストールプロセスの前記部分は、更新のプリインストール(pre-installation)又は更新のインストールのプリヒーティング(pre-heating)とも称される。更新のインストールをプリヒーティングした後に、ユーザには、更新が通知され、そしてユーザが更新を承認するかどうか尋ねられる。ユーザが更新を承認する場合には、更新をコンピューティングシステムにコミットするためにインストールプロセスが完了される。さもなければ、ユーザが更新を拒絶する場合には、プリヒーティング中に行われた作業がアンドゥされる。
【００１３】
幾つかの実施形態において、ユーザが幾つかの更新を承認するが残りの更新は拒絶する場合には、プリヒーティング中に行われた作業がアンドゥされ、そして承認された更新だけをインストールするためにインストールプロセスが再スタートされる。別の実施形態では、プリヒーティングは、多数の所定の更新組み合わせをプリインストールすることを含む。ユーザにより承認された更新の組み合わせが、これらの所定の組み合わせの１つである場合には、この更新組み合わせのインストールを、ユーザ承認時に完了させることができる。さもなければ、所定の更新組み合わせのプリインストール中に行われた作業がアンドゥされ、承認された更新のみをインストールするようにインストールプロセスが再スタートされる。
【００１４】
ユーザに更新を通知する前に更新のインストールの少なくとも一部分を実行することにより、更新のユーザ承認時に行われたままである更新インストールのための作業が著しく減少される。その結果、ユーザにより認知される更新のインストールに費やされる時間が著しく短くなり、更新インストールでのユーザ経験を改善する。更に、更新インストールにより生じるユーザへの中断が減少される。というのは、インストールプロセスの一部分又はほぼ全部が、コンピューティングシステムで実行される他のプロセス又はユーザの妨げとなることなく、背景動作で実行されるからである。ユーザ認知のインストール時間が短くなり且つユーザの中断が減少された状態では、ユーザがコンピューティングシステムにおけるソフトウェアに対する更新を承認する見込みが高くなる。
【００１５】
図１Ａ−１Ｂは、種々の実施形態に基づきコンピューティングシステムにおいてソフトウェア更新をプリヒート型インストールするプロセスを示すフローチャートである。このプロセスは、ソフトウェア、ハードウェア、ファームウェア、又はそれらのいずれかの組み合わせを含む処理ロジックにより遂行される。例えば、このプロセスは、以下に述べるように、図５に示すコンピューティング装置で具現化される処理ロジックにより遂行される。
【００１６】
図１Ａを参照すれば、処理ロジックは、コンピューティングシステムを、コンピューティングシステムの背景でのソフトウェアに対する更新のためにリモートソースに接続する（処理ブロック１１０）。リモートソースは、ワイヤレスネットワーク及び／又はワイヤードネットワークを経てコンピューティングシステムに接続されたサーバー、パーソナルコンピュータ、等の別のコンピューティング装置である。ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イーサネット（登録商標）、等を含む。ソフトウェアに対する更新は、ソフトウェア、ソフトウェアの新規バージョン、ソフトウェアのセキュリティパッチ、等に対するアップグレードを含む。処理ロジックは、コンピューティングシステムの背景において、ひいては、コンピューティングシステムで実行される現在プロセスを妨げることなく、コンピューティングシステムをリモートソースに接続することに注意されたい。それ故、コンピューティングシステムのユーザは、処理ロジックが何を行っているか気付かない。ある実施形態では、処理ロジックは、利用可能な更新を検出するためにリモート装置に周期的に問合せする。
【００１７】
リモートソースで得られる更新のメタデータに基づき、処理ロジックは、コンピューティングシステムにとってどの更新（１つ又は複数）が適切であるか決定する（処理ブロック１１２）。メタデータの幾つかの例は、バージョン番号、ライセンス又はエンタイトル情報、システム要件、等を含む。次いで、処理ロジックは、リモートソースからコンピューティングシステムへ適切な更新のパッケージをダウンロードする（処理ブロック１１４）。
【００１８】
幾つかの実施形態において、処理ロジックは、ダウンロードされたパッケージを、コンピューティングシステムのコンピュータ読み取り可能な記憶装置（例えば、ディスク）の一時的エリアにインストールし始める（処理ブロック１１６）。処理ロジックは、更新をインストールするためにディスク上のこの一時的エリアを予約している。更に、ディスク上のこの一時的エリアは、ディスクの他部分から分離されていて、この一時的エリアに部分的にインストールされる更新が、それら更新がコミットされる前にコンピューティングシステムのソフトウェアの現在バージョンにオーバーライトしたり又はそれを妨げたりしないようにする。従って、この一時的エリアは、サンドボックスと称され、そして部分的にインストールされた更新もサンドボックスと称される。インストールは、圧縮されたファイルをダウンロードして、これをインストールプロセスの一部分として解凍することを含み、更に、インストールプロセスは、実行可能なソフトウェアを含むファイルを、磁気ハードディスク又は不揮発性半導体メモリのような記憶装置に配列することも含む。又、インストールは、フォルダー又はディレクトリ、レジストリエントリー（例えば、マイクロソフトウインドウズの）、構成ファイルエントリー、リンク又はショートカット、及びそれらのアイテムのサブセットを生成し又は変更することも含む。処理ロジックは、一時的エリアにダウンロードされるパッケージを使用してシステムキャッシュを作り上げることができる（処理ブロック１１８）。幾つかの実施形態において、予め初期化された状態をコンポーズするコンピュータ読み取り可能な記憶装置のメモリのチャンクがセーブオフされ、次いで、読み戻され、そして早速使用することができる。ディスクへシリアル化されるメモリのこのチャンクは、キャッシュである。例えば、処理ロジックは、（圧縮され及び／又は暗号化された）更新のファイルをパッケージから抽出し、それらのファイルを必要に応じて解凍及び／又は解読し、次いで、それらのファイルを一時的エリアで所定のハイアラーキーに配列し、コンピューティングシステムに現在使用中のシステムキャッシュに同様のファイルのハイアラーキーを鏡像化する。
【００１９】
ある実施形態では、更新を必要とする２つの異なるキャッシュ、即ちカーネル／ケクスト(kext)キャッシュと、ディルド(dyld)共有キャッシュとがある。カーネル／ケクストキャッシュは、カーネルスペースで実行することが必要なドライバコード（コンピューティングシステムのオペレーティングシステムのベンダー及び／又は第三者によって与えられる）に関連している。ディルド共有キャッシュは、コンピューティングシステムのユーザスペースにおいてアプリケーションにより使用される共有コードライブラリに関連している。両キャッシュは、その後のブート又はアプリケーション起動サイクル中にシステムが従来の時間のかかる初期化プロセスを通して実行されるのを防止する。これらキャッシュに関する更なる詳細は、発明者ミッシェルスミス及びジョセフソコル二世による“Method for Booting an Operating System”と題する米国特許第７，６０７，０００号に見られ、これは、参考としてここにそのまま援用される。
【００２０】
次いで、処理ロジックは、利用可能な更新をコンピューティングシステムのユーザに通知する（処理ブロック１２０）。前記プロセスは、更新のプリインストール、又は更新のインストールのプリヒーティングと称される。幾つかの実施形態において、処理ロジックは、利用可能な更新をユーザに通知するメッセージを表示するためにユーザインターフェイス（例えば、グラフィックユーザインターフェイス）を発生する。このユーザインターフェイスは、更に、ユーザが利用可能な更新を承認するか拒絶するか指示できるようにする。幾つかの実施形態において、ユーザインターフェイスは、ユーザが利用可能な更新のサブセットを承認又は拒絶について選択できるようにするユーザインターフェイスコントロール（例えば、ボタン、チェックボックス、ドロップダウンメニュー、等）を含む。換言すれば、全ての利用可能な更新を承認又は拒絶するのではなく、ユーザは、インストールすべき更新のみを選択することによりプロセスをカスタマイズすることができる。
【００２１】
更新をプリインストールしそして利用可能な更新をユーザに通知した後に、処理ロジックは、更新に関するユーザ入力を待機する（処理ブロック１２２）。ブロック１２４において、処理ロジックは、ユーザ入力が受け取られたかどうか決定する。そうでなければ、処理ロジックは、ブロック１２２へ戻り、ユーザ入力を待機する。さもなければ、処理ロジックは、図１Ｂのブロック１２６へ移行する。
【００２２】
図１Ｂを参照すれば、処理ロジックは、ユーザが全ての利用可能な更新のインストールを承認するかどうかチェックする（処理ブロック１２６）。もしそうであれば、処理ロジックは、全ての更新をコミットする（処理ブロック１２８）。例えば、処理ロジックは、一時的エリアに作られたシステムキャッシュをファイルシステムへとスワップして現在システムキャッシュに置き換わることにより、更新のインストールを終了し又は完了する。幾つかの実施形態において、処理ロジックは、現在システムキャッシュを指すポインタを変化させて、一時的エリアに新たに作られたシステムキャッシュを指すようにし、そして現在システムキャッシュを削除する。幾つかの実施形態において、処理ロジックは、単一のアトミックオペレーション（例えば、ショーブ(shove)オペレーション）を遂行して、現在システムキャッシュを削除し、そして新たに作られたシステムキャッシュを現在システムキャッシュの位置へ移動して、現在システムキャッシュに置き換わるようにする。ソフトウェアインストールの完了に関する更なる詳細が、発明者ジャックＲ．マッシュー及びジョンＲ．チャン氏による２００８年９月３０日出願の“Installation of Software onto Computer”と題する米国特許出願第１２／２４２，３４８号に見られ、これは、参考としてここにそのまま援用される。任意であるが、処理ロジックは、更新を有効なものにするために必要に応じてコンピューティングシステムを再スタートする（処理ブロック１３０）。
【００２３】
幾つかの実施形態において、ユーザがブロック１２６において利用可能な全ての更新のインストールを承認しない場合には、処理ロジックは、ユーザが利用可能な更新のサブセットのインストールを承認するかどうか更にチェックする（処理ブロック１３２）。ユーザが利用可能な更新のサブセットのインストールを承認する場合には、処理ロジックは、形成されたシステムキャッシュをアンドゥする（処理ブロック１３４）。例えば、処理ロジックは、ディスクの一時的エリアに形成されたシステムキャッシュを単に削除する。次いで、処理ロジックは、ユーザがどの更新を承認するかに基づいてシステムキャッシュを再形成する（処理ブロック１３６）。次いで、処理ロジックは、ユーザにより承認された更新のみをコミットする（処理ブロック１３８）。幾つかの実施形態において、処理ロジックは、一時的エリアにおける新たに形成されたシステムキャッシュを指すように現在システムキャッシュを指すポインタを変更し、そして現在システムキャッシュを削除する。幾つかの実施形態において、処理ロジックは、単一のアトミックオペレーション（例えば、ショーブオペレーション）を遂行して、現在システムキャッシュを削除し、そして新たに形成されたシステムキャッシュを現在システムキャッシュの位置へ移動して、現在システムキャッシュに置き換わるようにする。任意であるが、処理ロジックは、更新を有効なものにするために必要に応じてコンピューティングシステムを再スタートする（処理ブロック１４０）。
【００２４】
ブロック１３２において、ユーザが利用可能な更新のサブセットすら承認せず、即ちユーザが利用可能な更新を全て拒絶することを処理ロジックが決定する場合には、処理ロジックは、形成されたシステムキャッシュをアンドゥする（処理ブロック１４２）。幾つかの実施形態において、処理ロジックは、ダウンロードされたパッケージを将来の使用のためにコンピューティングシステムに保持する（処理ブロック１４４）。例えば、処理ロジックは、更新を後で再びチェックし、そして更新の第２セットを見出す。更に、処理ロジックは、更新の第２セットをインストールするために、以前にダウンロードされたパッケージの幾つかが依然必要とされることを決定し、従って、これらの以前にダウンロードされたパッケージが使用される。
【００２５】
図２Ａ−２Ｂは、種々の実施形態に基づきコンピューティングシステムにおいてソフトウェア更新をプリヒート型インストールするプロセスを示すフローチャートである。前記プロセスと同様に、このプロセスも、ソフトウェア、ハードウェア、ファームウェア、又はその組み合わせを含む処理ロジックにより遂行される。例えば、このプロセスは、図５に示して以下に述べるコンピューティング装置で具現化される処理ロジックにより遂行される。
【００２６】
図２Ａを参照すれば、処理ロジックは、コンピューティングシステムの背景においてソフトウェアを更新するためにリモートソースにコンピューティングシステムを接続する（処理ブロック２１０）。リモートソースは、ワイヤレスネットワーク及び／又はワイヤードネットワークを経てコンピューティングシステムに接続されたサーバー、パーソナルコンピュータ、等の別のコンピューティング装置である。ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イーサネット（登録商標）、等を含む。ソフトウェアに対する更新は、ソフトウェア、ソフトウェアの新規バージョン、ソフトウェアのセキュリティパッチ、等に対するアップグレードを含む。処理ロジックは、コンピューティングシステムの背景において、ひいては、コンピューティングシステムで実行される現在プロセスを妨げることなく、コンピューティングシステムをリモートソースに接続することに注意されたい。それ故、コンピューティングシステムのユーザは、処理ロジックが何を行っているか気付かない。
【００２７】
リモートソースで得られる更新のメタデータに基づき、処理ロジックは、コンピューティングシステムにとってどの更新（１つ又は複数）が適切であるか決定する（処理ブロック２１２）。メタデータの幾つかの例は、前記で述べた。次いで、処理ロジックは、リモートソースからコンピューティングシステムへ適切な更新のパッケージをダウンロードする（処理ブロック２１４）。
【００２８】
幾つかの実施形態において、処理ロジックは、ダウンロードされたパッケージを、コンピューティングシステムのコンピュータ読み取り可能な記憶装置の一時的エリアにインストールし始める（処理ブロック２１６）。更新の考えられる組み合わせごとに、処理ロジックは、一時的エリアにダウンロードされサンドボックス化されたパッケージを使用してシステムキャッシュを作り上げる（処理ブロック２１８）。システムキャッシュの幾つかの実施形態の詳細は、前記で述べた。更新の各組み合わせに対して形成されるシステムキャッシュもサンドボックス化され、即ち、システムキャッシュは、一時的エリアに形成された他のシステムキャッシュから分離される。これらのシステムキャッシュがインストール時に形成されるとき、コンピューティングシステムは、動的なものにされることに注意されたい。換言すれば、異なる配備にわたって異なるカーネル拡張及びライブラリが存在し得る。例えば、同じオペレーティングシステムのコピーを各々有する２つのシステムがあるが、一方のコピーは、ハードウェア製品をサポートするために第三者カーネル拡張を有し、他方のコピーは、それを有しない。別の例では、異なるディルド共有キャッシュを要求する１つ以上の予め選択されたユーザアプリケーションで生じるシステム共有ライブラリの新たなバージョンを両方とも有する２つのコンピューティングシステムがある。
【００２９】
その後に、処理ロジックは、コンピューティングシステムのユーザに利用可能な更新を通知する（処理ブロック２２０）。前記プロセスは、更新のプリインストール又は更新のインストールのプリヒーティングとも称される。幾つかの実施形態において、処理ロジックは、利用可能な更新をユーザに通知するメッセージを表示するためにユーザインターフェイス（例えば、グラフィックユーザインターフェイス）を発生する。ユーザインターフェイスの幾つかの実施形態の詳細は、前記で述べた。
【００３０】
更新をプリインストールしそして利用可能な更新をユーザに通知した後に、処理ロジックは、更新に関するユーザ入力を待機する（処理ブロック２２２）。ブロック２２４において、処理ロジックは、ユーザ入力が受け取られたかどうか決定する。そうでなければ、処理ロジックは、ブロック２２２へ戻り、ユーザ入力を待機し続ける。さもなければ、処理ロジックは、図２Ｂのブロック２２６へ移行する。
【００３１】
図２Ｂを参照すれば、処理ロジックは、ユーザが全ての利用可能な更新のインストールを承認するかどうかチェックする（処理ブロック２２６）。もしそうであれば、処理ロジックは、全ての更新をコミットする（処理ブロック２２８）。例えば、処理ロジックは、一時的エリアに作られたシステムキャッシュをファイルシステムへとスワップして現在システムキャッシュに置き換わることにより、更新のインストールを終了し又は完了する。幾つかの実施形態において、処理ロジックは、現在システムキャッシュを指すポインタを変化させて、一時的エリアに新たに作られたシステムキャッシュを指すようにし、そして現在システムキャッシュを削除する。幾つかの実施形態において、処理ロジックは、単一のアトミックオペレーション（例えば、ショーブ(shove)オペレーション）を遂行して、現在システムキャッシュを削除し、そして新たに作られたシステムキャッシュを現在システムキャッシュの位置へ移動して、現在システムキャッシュに置き換わるようにする。任意であるが、処理ロジックは、更新を有効にするために必要に応じてコンピューティングシステムを再スタートする（処理ブロック２３０）。
【００３２】
幾つかの実施形態において、ユーザがブロック２２６において利用可能な全ての更新のインストールを承認しない場合には、処理ロジックは、ユーザが利用可能な更新のサブセットのインストールを承認するかどうか更にチェックする（処理ブロック２３２）。ユーザが利用可能な更新のサブセットのインストールを承認する場合には、処理ロジックは、ユーザにより承認された更新の組み合わせに一致する一時的エリアに形成されたシステムキャッシュを見出す（処理ブロック２３４）。次いで、処理ロジックは、現在システムキャッシュを、その見出したシステムキャッシュに置き換え、承認した更新の組み合わせをコミットする（処理ブロック２３６）。幾つかの実施形態において、処理ロジックは、一時的エリアにおいて見出したシステムキャッシュを指すように現在システムキャッシュを指すポインタを変更し、そして現在システムキャッシュを削除する。幾つかの実施形態において、処理ロジックは、単一のアトミックオペレーション（例えば、ショーブオペレーション）を遂行して、現在システムキャッシュを削除し、そして見出したシステムキャッシュを現在システムキャッシュの位置へ移動して、現在システムキャッシュに置き換わるようにする。処理ロジックは、更に、更新の他の組み合わせに対して一時的エリアに形成された残りのシステムキャッシュを削除し又は除去する。最終的に、処理ロジックは、更新を有効なものにするために必要に応じてコンピューティングシステムを再スタートする（処理ブロック２３８）。システムキャッシュは、更新をユーザに通知する前に推論的に形成されるので、ユーザ認知更新時間（ユーザが、選択された更新を承認するときから、選択された更新をコミットするときまで）は、従来の更新インストール時間よりも短い。更に、更新のプリインストール中に推論的に形成されるシステムキャッシュは、異なるカーネル拡張及びライブラリが異なる配備にわたって存在できるようにもする。
【００３３】
ブロック２３２において、ユーザが利用可能な更新を１つも承認せず、即ちユーザが利用可能な更新を全て拒絶することを処理ロジックが決定する場合には、処理ロジックは、形成されたシステムキャッシュをアンドゥする（処理ブロック２４２）。幾つかの実施形態において、処理ロジックは、ダウンロードされたパッケージを将来の使用のためにコンピューティングシステムに保持する（処理ブロック２４４）。例えば、処理ロジックは、更新を後で再びチェックし、そして更新の第２セットを見出す。更に、処理ロジックは、更新の第２セットをインストールするために、以前にダウンロードされたパッケージの幾つかが依然必要とされることを決定し、従って、これらの以前にダウンロードされたパッケージが使用される。
【００３４】
図３Ａ−３Ｂは、種々の実施形態に基づきコンピューティングシステムにおいてソフトウェア更新をプリヒート型インストールするプロセスを示すフローチャートである。前記プロセスと同様に、このプロセスも、ソフトウェア、ハードウェア、ファームウェア、又はその組み合わせを含む処理ロジックによって遂行される。例えば、このプロセスは、図５に示して以下に述べるコンピューティング装置で具現化される処理ロジックにより遂行される。
【００３５】
図３Ａを参照すれば、処理ロジックは、コンピューティングシステムの背景においてソフトウェアを更新するためにリモートソースにコンピューティングシステムを接続する（処理ブロック３１０）。リモートソースは、ワイヤレスネットワーク及び／又はワイヤードネットワークを経てコンピューティングシステムに接続されたサーバー、パーソナルコンピュータ、等の別のコンピューティング装置である。ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イーサネット（登録商標）、等を含む。ソフトウェアに対する更新は、ソフトウェア、ソフトウェアの新規バージョン、ソフトウェアのセキュリティパッチ、等に対するアップグレードを含む。処理ロジックは、コンピューティングシステムの背景において、ひいては、コンピューティングシステムで実行される現在プロセスを妨げることなく、コンピューティングシステムをリモートソースに接続することに注意されたい。それ故、コンピューティングシステムのユーザは、処理ロジックが何を行っているか気付かない。
【００３６】
リモートソースで得られる更新のメタデータに基づき、処理ロジックは、コンピューティングシステムにとってどの更新（１つ又は複数）が適切であるか決定する（処理ブロック３１２）。メタデータの幾つかの例は、前記で述べた。次いで、処理ロジックは、リモートソースからコンピューティングシステムへ適切な更新のパッケージをダウンロードする（処理ブロック３１４）。
【００３７】
幾つかの実施形態において、処理ロジックは、ダウンロードされたパッケージを、コンピューティングシステムのコンピュータ読み取り可能な記憶装置の一時的エリアにインストールし始める（処理ブロック３１６）。更新の考えられる組み合わせの所定セットごとに、処理ロジックは、一時的エリアにダウンロードされサンドボックス化されたパッケージを使用してそれら組み合わせの各々に対してシステムキャッシュを作り上げる（処理ブロック３１８）。システムキャッシュの幾つかの実施形態の詳細は、前記で述べた。典型的に、考えられる組み合わせの所定セットは、全ての適切な更新の組み合わせと、適切な更新の１つ以上の一般的な組み合わせとを含む。換言すれば、処理ロジックは、多数のシステムキャッシュを推論的に形成し、そして後でユーザにより承認される更新をコミットするためにそのうちの１つが選択される。更新の各組み合わせに対して形成されるシステムキャッシュもサンドボックス化され、即ち、システムキャッシュは、一時的エリアに形成された他のシステムキャッシュから分離される。次いで、処理ロジックは、コンピューティングシステムのユーザに利用可能な更新を通知する（処理ブロック３２０）。前記プロセスは、更新のプリインストール又は更新のインストールのプリヒーティングとも称される。幾つかの実施形態において、処理ロジックは、利用可能な更新をユーザに通知するメッセージを表示するためにユーザインターフェイス（例えば、グラフィックユーザインターフェイス）を発生する。ユーザインターフェイスの幾つかの実施形態の詳細は、前記で述べた。
【００３８】
更新をプリインストールしそして利用可能な更新をユーザに通知した後に、処理ロジックは、更新に関するユーザ入力を待機する（処理ブロック３２２）。ブロック３２４において、処理ロジックは、ユーザ入力が受け取られたかどうか決定する。そうでなければ、処理ロジックは、ブロック３２２へ戻り、ユーザ入力を待機し続ける。さもなければ、処理ロジックは、図３Ｂのブロック３２６へ移行する。
【００３９】
図３Ｂを参照すれば、処理ロジックは、ユーザが全ての利用可能な更新のインストールを承認するかどうかチェックする（処理ブロック３２６）。もしそうであれば、処理ロジックは、全ての更新をコミットする（処理ブロック３２８）。例えば、処理ロジックは、一時的エリアに作られたシステムキャッシュをファイルシステムへとスワップして現在システムキャッシュに置き換わることにより、更新のインストールを終了し又は完了する。幾つかの実施形態において、処理ロジックは、現在システムキャッシュを指すポインタを変化させて、一時的エリアに新たに作られたシステムキャッシュを指すようにし、そして現在システムキャッシュを削除する。幾つかの実施形態において、処理ロジックは、単一のアトミックオペレーション（例えば、ショーブオペレーション）を遂行して、現在システムキャッシュを削除し、そして新たに作られたシステムキャッシュを現在システムキャッシュの位置へ移動して、現在システムキャッシュに置き換わるようにする。任意であるが、処理ロジックは、更新を有効にするために必要に応じてコンピューティングシステムを再スタートする（処理ブロック３３０）。
【００４０】
幾つかの実施形態において、ユーザがブロック３２６において利用可能な全ての更新のインストールを承認しない場合には、処理ロジックは、ユーザが利用可能な更新のサブセットのインストールを承認するかどうか更にチェックする（処理ブロック３３２）。ユーザが利用可能な更新のサブセットのインストールを承認する場合には、処理ロジックは、その承認されたサブセットが所定の組み合わせの１つであるかどうかチェックする（処理ブロック３３３）。もしそうであれば、処理ロジックは、ユーザにより承認された更新の組み合わせに一致する一時的エリアに形成されたシステムキャッシュを見出す（処理ブロック３３４）。次いで、処理ロジックは、現在システムキャッシュを、その見出したシステムキャッシュに置き換え、承認した更新の組み合わせをコミットする（処理ブロック３３６）。幾つかの実施形態において、処理ロジックは、一時的エリアにおいて見出したシステムキャッシュを指すように現在システムキャッシュを指すポインタを変更し、そして現在システムキャッシュを削除する。幾つかの実施形態において、処理ロジックは、単一のアトミックオペレーション（例えば、ショーブオペレーション）を遂行して、現在システムキャッシュを削除し、そして見出したシステムキャッシュを現在システムキャッシュの位置へ移動して、現在システムキャッシュに置き換わるようにする。処理ロジックは、更に、更新の他の組み合わせに対して一時的エリアに形成された残りのシステムキャッシュを削除し又は除去する。最終的に、処理ロジックは、承認された更新を有効なものにするために必要に応じてコンピューティングシステムを再スタートする（処理ブロック３３８）。システムキャッシュは、更新をユーザに通知する前に推論的に形成されるので、ユーザ認知更新時間（ユーザが、選択された更新を承認するときから、選択された更新をコミットするときまで）は、従来の更新インストール時間よりも短い。更に、更新のプリインストール中に推論的に形成されるシステムキャッシュは、異なるカーネル拡張及びライブラリが異なる配備にわたって存在できるようにもする。
【００４１】
しかしながら、ブロック３３３において、承認されたサブセットが所定の組み合わせの１つでないと処理ロジックが決定する場合には、処理ロジックは、形成された全てのシステムキャッシュをアンドゥし（処理ブロック３３５）、ユーザがどの更新を承認するかに基づいてシステムキャッシュを再形成し（処理ブロック３３９）、そしてユーザにより承認された更新のみをコミットする（処理ブロック３４０）。最終的に、処理ロジックは、承認された更新を有効なものにするために必要に応じてコンピューティングシステムを再スタートする（処理ブロック３３８）。
【００４２】
ブロック３３２において、ユーザが利用可能な更新を１つも承認せず、即ちユーザが利用可能な更新を全て拒絶することを処理ロジックが決定する場合には、処理ロジックは、形成されたシステムキャッシュをアンドゥする（処理ブロック３４２）。幾つかの実施形態において、処理ロジックは、ダウンロードされたパッケージを将来の使用のためにコンピューティングシステムに保持する（処理ブロック３４４）。例えば、処理ロジックは、更新を後で再びチェックし、そして更新の第２セットを見出す。更に、処理ロジックは、更新の第２セットをインストールするために、以前にダウンロードされたパッケージの幾つかが依然必要とされることを決定し、従って、これらの以前にダウンロードされたパッケージが使用される。
【００４３】
図４は、本発明の幾つかの実施形態に基づきプリヒート型ソフトウェアインストールに使用できるコンピューティングシステムにおけるコンピュータ読み取り可能な記憶装置の１つの実施形態を示すブロック図である。コンピュータ読み取り可能な記憶装置４００は、コンピューティングシステムのハードディスクを備えている。コンピュータ読み取り可能な記憶装置４００は、コンピューティングシステムの現在ファイルシステム４１０を記憶する。更に、現在ファイルシステム４１０から分離された一時的エリア４２０は、更新をプリインストールするために予約される。更新のプリインストール中に、更新に関連したファイルをディレクトリのハイアラーキーにおいて編成し記憶して、現在ファイルシステム４１０のハイアラーキーを鏡像化することにより、一時的エリア４２０にシステムキャッシュ４２５を形成することができる。更新の異なる組み合わせに対して付加的なシステムキャッシュを一時的エリア４２０に形成することができる。
【００４４】
ユーザが全ての更新を承認する場合には、一時的エリア４２０に形成されたシステムキャッシュ４２５が現在ファイルシステム４１０へとスワップされる。ユーザが全ての更新を拒絶する場合には、形成されたシステムキャッシュ４２５が削除される。ユーザが更新のサブセットしか承認しない場合には、形成されたシステムキャッシュ４２５が削除され、そして更新の承認されたサブセットがスクラッチからインストールされる。更新の所定の組み合わせに対応する複数のシステムキャッシュが形成された幾つかの実施形態では、更新の承認されたサブセットが更新の所定の組み合わせの１つとなる場合に、形成されたシステムキャッシュの１つを使用して、更新の承認されたサブセットコミットする。ソフトウェア更新のプリインストールの幾つかの実施形態の詳細は、上述した。
【００４５】
図５は、ここに述べる種々の実施形態を具現化するための適当なコンピューティング環境を示すブロック図である。総体的に、これらのコンポーネントは、これに限定されないが、汎用コンピュータシステム（例えば、サーバー、パーソナルコンピュータ、ラップトップコンピュータ、等）、及び特殊なハンドヘルドコンピュータ装置（例えば、パーソナルデジタルアシスタント（ＰＤＡ）、スマートホン、等）を含むハードウェアシステムの広いカテゴリーを表わすことを意図している。
【００４６】
コンピューティングシステム５００は、プロセッサ５１０、Ｉ／Ｏ装置５４０、メインメモリ５２０、及びフラッシュメモリ５３０を備え、これらは、バス５８０を経て互いに結合される。システムメモリ（ＲＡＭ）及び不揮発性記憶装置（例えば、磁気又は光学ディスク）の１つ以上を含むメインメモリ５２０は、プロセッサ５１０により使用するためのインストラクション及びデータを記憶する。更に、ネットワークインターフェイス５７０及びデータ記憶装置５６０がバス５８０を経て互いに結合される。データ記憶装置５６０は、ここに述べる構造化データ（例えば、連絡先情報、カレンダー、等）を記憶する。
【００４７】
コンピューティングシステム５００の種々のコンポーネントは、種々の実施形態において再配列され、そして幾つかの実施形態は、全ての前記コンポーネントを要求もしないし含みもしない。更に、付加的なプロセッサ（例えば、デジタル信号プロセッサ、グラフィックプロセッサ、等）、記憶装置、メモリ、ネットワーク／通信インターフェイス、等の付加的なコンポーネントがシステム５００に含まれてもよい。
【００４８】
幾つかの実施形態において、上述した本発明によるプリヒート型ソフトウェアインストレーション又はソフトウェア更新のプリインストレーションのための方法及び装置は、図５のコンピューティングシステム５００により実行される一連のソフトウェアルーチンとして具現化される。これらのソフトウェアルーチンは、ハードウェアシステムの処理システム、例えば、プロセッサ５１０により実行される複数の又は一連のインストラクションを含む。最初に、一連のインストラクションがデータ記憶装置５６０、メモリ５２０及び／又はフラッシュ５３０に記憶される。
【００４９】
ここに述べる種々のコンポーネントは、ここに述べるファンクションを遂行する手段である。ここに述べる各コンポーネントは、ソフトウェア、ハードウェア、又はそれらの組み合わせを含む。コンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、特殊目的ハードウェア（例えば、特定用途向けハードウェア、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、等）、埋め込み型コントローラ、ハードワイヤード回路、等として具現化することができる。ソフトウェアコンテンツ（例えば、データ、インストラクション、構成、等）は、実行できるインストラクションを表わすコンテンツを与えるコンピュータ読み取り可能な媒体を含む製造物品を経て提供される。コンテンツは、コンピュータがここに述べる種々のファンクション／オペレーションを遂行するようにさせる。コンピュータ読み取り可能な（又はマシン読み取り可能な又は電子的にアクセス可能な）媒体は、コンピューティング装置（例えば、コンピュータ、ＰＤＡ、電子システム、等）によりアクセス可能な形態の情報を与える（即ち、記憶し及び／又は送信する）メカニズム、例えば、記録可能／記録不能な媒体（例えば、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置、等）を含む。コンテンツは、直接実行可能（「オブジェクト」又は「実行可能」な形態）なもの、ソースコード、等である。又、コンピュータ読み取り可能な媒体は、コンテンツをダウンロードできるところの記憶装置又はデータベースも含む。又、コンピュータ読み取り可能な媒体は、販売時又は納入時にコンテンツが記憶される装置又は製品も含む。従って、コンテンツが記憶された装置を納入すること、又は通信媒体を経てダウンロードするためのコンテンツを提供することは、ここに述べるコンテンツを製造物品に設けるものであると理解される。
【００５０】
以上に本発明を説明したが、ここに開示した本発明の実施形態及び具現化に対し本発明の範囲から逸脱せずに種々の変更がなされ得る。それ故、ここに述べた実施形態は、例示に過ぎず、それに限定されるものではない。本発明の範囲は、特許請求の範囲のみにより限定される。
【符号の説明】
【００５１】
４００：コンピュータ読み取り可能な記憶装置
４１０：現在ファイルシステム
４２０：一時的エリア
４２５：更新に対して形成されたシステムキャッシュ
５００：コンピューティングシステム
５１０：プロセッサ
５２０：メインメモリ
５３０：フラッシュ
５４０：Ｉ／Ｏ
５６０：データ記憶装置
５７０：ネットワークインターフェイス
５８０：バス
【図１Ａ】
2013544416.tif 000003
【図１Ｂ】
2013544416.tif 000004
【図２Ａ】
2013544416.tif 000005
【図２Ｂ】
2013544416.tif 000006
【図３Ａ】
2013544416.tif 000007
【図３Ｂ】
2013544416.tif 000008
【図４】
2013544416.tif 000009
【図５】
2013544416.tif 000010
【国際調査報告】
2013544416.tif 000011
2013544416.tif 000012
2013544416.tif 000013
2013544416.tif 000014
2013544416.tif 000015