(57)【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令セットを含むファイルのソースと複数のモバイルコンピューティングデバイスを含むネットワーク環境において、該モバイルコンピューティングデバイスの少なくとも１つがプロセッサと、該プロセッサにより実行されるインストーラおよびコンフィギュレーションマネージャが格納され、かつ前記ファイルを格納するためのメモリと、ユーザインタフェースと、ネットワーキングデバイスを含み、かつ前記コンフィギュレーションマネージャのセキュリティ機能を使用してコンピュータ実行可能命令セットを含む前記ファイルを前記ソースからインストールするための方法であって、該方法は、
前記モバイルコンピューティングデバイスにインストールしようとしている少なくとも１つの前記ファイルの少なくともあるバージョンに前記ネットワーキングデバイスを介してアクセスする前記インストーラを用いた前記プロセッサの実行によるステップと、
少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットの複数のインストール命令に前記ネットワーキングデバイスを介してアクセスする前記インストーラを用いた前記プロセッサの実行によるステップであって、該インストール命令は、前記ファイルに添付され、前記モバイルコンピューティングデバイスに関連する前記コンフィギュレーションマネージャによって直接に解釈可能であるフォーマットを有する、ステップと、
前記インストール命令を実行する前に、各前記インストール命令について、前記インストール命令の実行が許可されているかどうかを判断する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップと、
前記インストール命令が許可されているとの前記判断の結果に応じて、許可されていると判断した前記インストール命令を実行する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップと
を含むことを特徴とする方法。
【請求項２】
請求項１に記載の方法において、前記モバイルコンピューティングデバイスにインストールしようとしている少なくとも１つの前記ファイルの少なくともあるバージョンにアクセスする前記インストーラを用いた前記プロセッサの実行によるステップは、
前記モバイルコンピューティングデバイスにインストールしようとしている少なくとも１つの前記ファイルの圧縮バージョンにアクセスする前記インストーラを用いた前記プロセッサの実行によるステップと、
を含むことを特徴とする方法。
【請求項３】
請求項１に記載の方法において、前記モバイルコンピューティングデバイスにインストールしようとしている少なくとも１つの前記ファイルの少なくともあるバージョンにアクセスする前記インストーラを用いた前記プロセッサの実行による前記ステップは、
前記モバイルコンピューティングデバイスにインストールしようとしている少なくとも１つの前記ファイルの未圧縮バージョンにアクセスする前記インストーラを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項４】
請求項１に記載の方法において、少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットのインストール命令にアクセスする前記インストーラを用いた前記プロセッサの実行による前記ステップは、
前記コンフィギュレーションマネージャによって直接に解釈可能な特定のスキーマに準拠する構造になっているインストール命令にアクセスする前記インストーラを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項５】
請求項１に記載の方法において、少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットのインストール命令にアクセスする前記インストーラを用いた前記プロセッサの実行による前記ステップは、
拡張可能マークアップ言語 (eXtensible Markup Language − XML) に準拠する構造になっているインストール命令にアクセスする前記インストーラを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項６】
請求項１に記載の方法において、少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットのインストール命令にアクセスする前記インストーラを用いた前記プロセッサの実行による前記ステップは、
少なくとも１つの前記インストール命令にアクセスして、該インストール命令に応じて、前記ファイルの圧縮バージョンを抽出する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項７】
請求項１に記載の方法において、少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットのインストール命令にアクセスする前記インストーラを用いた前記プロセッサの実行による前記ステップは、
少なくとも１つの前記インストール命令にアクセスして、該インストール命令に応じて、前記ファイルを前記メモリ内のソースディレクトリロケーションからデスティネーションディレクトリロケーションに移動する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項８】
請求項１に記載の方法において、少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットのインストール命令にアクセスする前記インストーラを用いた前記プロセッサの実行による前記ステップは、
少なくとも１つの前記インストール命令にアクセスして、該インストール命令に応じて、前記ファイルを前記メモリ内のソースディレクトリロケーションからデスティネーションディレクトリロケーションにコピーする前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項９】
請求項１に記載の方法において、少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットのインストール命令にアクセスする前記インストーラを用いた前記プロセッサの実行による前記ステップは、
少なくとも１つの前記インストール命令にアクセスして、該インストール命令に応じて、前記ファイルを削除する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項１０】
請求項１に記載の方法において、少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットのインストール命令にアクセスする前記インストーラを用いた前記プロセッサの実行による前記ステップは、
少なくとも１つの前記インストール命令にアクセスして、該インストール命令に応じて、コンフィギュレーション設定値を変更する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項１１】
請求項１に記載の方法において、前記インストール命令を実行する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行による前記ステップは、
前記インストール命令の実行を他のプログラムモジュールに依頼せずに、前記コンフィギュレーションマネージャにより前記インストール命令を実行するステップを含むことを特徴とする方法。
【請求項１２】
請求項１に記載の方法において、前記インストール命令を実行する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行による前記ステップは、
前記インストール命令の実行を前記コンフィギュレーションマネージャとは異なる少なくとも１つの所定のプログラムモジュールに指示して実行させる前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項１３】
請求項１２に記載の方法において、前記インストール命令の実行を少なくとも１つの前記所定のプログラムモジュールに指示して実行させる前記コンフィギュレーションマネージャを用いた前記プロセッサの実行による前記ステップは、
前記インストール命令に含まれるファイルオペレーション命令を前記メモリに予め格納されている前記所定のプログラムモジュールとしてのファイルコンフィギュレーションサービスプロバイダに渡す前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含み、前記ファイルコンフィギュレーションサービスプロバイダは、受け取った前記ファイルオペレーション命令を実行するように構成されていることを特徴とする方法。
【請求項１４】
請求項１２に記載の方法において、前記インストール命令の実行を少なくとも１つの前記所定のプログラムモジュールに指示して実行させる前記コンフィギュレーションマネージャを用いた前記プロセッサの実行による前記ステップは、
前記インストール命令に含まれる前記コンフィギュレーションオペレーション命令を、前記メモリに予め格納されている前記所定のプログラムモジュールとしてのレジストリコンフィギュレーションサービスプロバイダに渡す前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含み、前記レジストリコンフィギュレーションサービスプロバイダは、受け取った前記コンフィギュレーションオペレーション命令を実行するように構成されていることを特徴とする方法。
【請求項１５】
請求項１に記載の方法において、前記インストール命令の少なくとも１つについて、前記インストール命令の実行が許可されているかどうかを判断する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行による前記ステップは、
前記コンピュータ実行可能命令セットに対応するロールマスクにアクセスする前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップであって、該ロールマスクは前記メモリに格納されている、ステップと、
前記インストール命令の実行が許可されているかどうかを、前記ロールマスクを使用して判断する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップと、
を含むことを特徴とする方法。
【請求項１６】
請求項１５に記載の方法において、前記インストール命令の実行が許可されているかどうかを、前記ロールマスクを使用して判断する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行による前記ステップは、
前記インストール命令の少なくとも１つの実行が無許可であると判断する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項１７】
請求項１６に記載の方法において、さらに、
前記インストール命令の少なくとも１つが無許可であると判断したあと、前記インストール命令を実行する前記ステップを中止または保留にする前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項１８】
コンピュータ実行可能命令セットを含むファイルのソースと複数のモバイルコンピューティングデバイスを含むネットワーク環境において、該モバイルコンピューティングデバイスの少なくとも１つがプロセッサと、該プロセッサにより実行されるインストーラおよびコンフィギュレーションマネージャが格納され、かつ前記ファイルを格納するためのメモリと、ユーザインタフェースと、ネットワーキングデバイスを含み、かつ前記コンフィギュレーションマネージャのセキュリティ機能を使用してコンピュータ実行可能命令セットを含む前記ファイルを前記ソースからインストールするための方法であって、該方法は、
前記モバイルコンピューティングデバイスにインストールしようとしている少なくとも１つの前記ファイルの少なくともあるバージョンに前記ネットワーキングデバイスを介してアクセスする前記インストーラを用いた前記プロセッサの実行による第１のステップと、
少なくとも１つの前記ファイルをインストールする前記コンフィギュレーションマネージャを用いた前記プロセッサの実行による第２のステップを含み、
前記第１のステップは、
少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットの複数のインストール命令に前記ネットワーキングデバイスを介してアクセスする前記インストーラを用いた前記プロセッサの実行によるステップを含んでいて、該インストール命令は、前記ファイルに添付され、前記モバイルコンピューティングデバイスに関連するコンフィギュレーションマネージャによって直接に解釈可能であるフォーマットを有し、
前記第２のステップは、
各前記インストール命令の実行が許可されているかどうかを判断することを含む前記コンフィギュレーションマネージャのセキュリティ機能を使用して、少なくとも１つの前記ファイルを条件付きでインストールする前記コンフィギュレーションマネージャを用いた前記プロセッサの実行による第３のステップ
を含むことを特徴とする方法。
【請求項１９】
請求項１８に記載の方法において、
前記第３のステップは、
前記インストール命令の少なくとも１つについて、該インストール命令の実行が許可されているかどうかを判断する前記コンフィギュレーションマネージャを用いた前記プロセッサの実行によるステップを含むことを特徴とする方法。
【請求項２０】
コンピュータ実行可能命令セットを含むファイルを持つソースと複数のモバイルコンピューティングデバイスとを含むネットワーク環境において、該モバイルコンピューティングデバイスの少なくとも１つに、該モバイルコンピューティングデバイスのメモリに格納され、前記モバイルコンピューティングデバイスのプロセッサにより実行されるコンフィギュレーションマネージャのセキュリティ機能を使用して、コンピュータ実行可能命令セットを含む前記ファイルを前記ソースからインストールするための前記プロセッサにより実行されるコンピュータプログラムであって、
前記コンピュータプログラムは、コンピュータ読み取り可能な記録媒体に格納され、
前記モバイルコンピューティングデバイスにインストールしようとしている少なくとも１つの前記ファイルの少なくともあるバージョンに前記モバイルコンピューティングデバイスのネットワーキングデバイスを介してアクセスするためのコンピュータ実行可能命令と、
少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットの複数のインストール命令に前記ネットワーキングデバイスを介してアクセスするためのコンピュータ実行可能命令であって、該インストール命令は、前記ファイルに添付され、前記モバイルコンピューティングデバイスに関連するコンフィギュレーションマネージャによって直接に解釈可能であるフォーマットを有する、コンピュータ実行可能命令と、
前記インストール命令を実行する前に、各前記インストール命令について前記インストール命令の実行が許可されているかどうかを判断するためのコンピュータ実行可能命令と、
前記インストール命令が許可されているとの前記判断の結果に応じて、許可されていると判断した前記インストール命令を実行するためのコンピュータ実行可能命令と
を含むことを特徴とするコンピュータプログラム。
【請求項２１】
請求項２０に記載のコンピュータプログラムにおいて、前記インストール命令の実行が許可されているかどうかを判断するためのコンピュータ実行可能命令は、
前記コンピュータ実行可能命令セットに対応するロールマスクにアクセスするためのコンピュータ実行可能命令と、
前記インストール命令の実行が許可されているかどうかを、前記ロールマスクを使用して判断するためのコンピュータ実行可能命令と、
を含むことを特徴とするコンピュータプログラム。
【請求項２２】
請求項２０に記載のコンピュータプログラムにおいて、前記インストール命令の実行が許可されているかどうかを判断するための前記コンピュータ実行可能命令は、
前記インストール命令の少なくとも１つのインストール命令の実行が無許可であると判断するためのコンピュータ実行可能命令を含むことを特徴とするコンピュータプログラム。
【請求項２３】
請求項２２に記載のコンピュータプログラムにおいて、前記コンピュータプログラムには、さらに、
前記インストール命令の少なくとも１つのインストール命令の実行が無許可であると判断したあと、前記インストール命令を実行する前記コンフィギュレーションマネージャの行為を中止するためのコンピュータ実行可能命令が含まれていることを特徴とするコンピュータプログラム。
【請求項２４】
コンピュータ実行可能命令セットを含むファイルのソースと複数のモバイルコンピューティングデバイスを含むネットワーク環境において、該モバイルコンピューティングデバイスの少なくとも１つに、該モバイルコンピューティングデバイスのメモリに格納され、前記モバイルコンピューティングデバイスのプロセッサにより実行されるコンフィギュレーションマネージャのセキュリティ機能を使用して、コンピュータ実行可能命令セットを含むファイルを前記ソースからインストールするための、前記プロセッサにより実行されるコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータプログラムは、
前記モバイルコンピューティングデバイスにインストールしようとしている少なくとも１つの前記ファイルの少なくともあるバージョンに前記モバイルコンピューティングデバイスのネットワーキングデバイスを介してアクセスするためのコンピュータ実行可能命令と、
少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットの複数のインストール命令に前記ネットワーキングデバイスを介してアクセスするためのコンピュータ実行可能命令であって、該インストール命令は、前記ファイルに添付され、前記モバイルコンピューティングデバイスに関連する前記コンフィギュレーションマネージャによって直接に解釈可能であるフォーマットを有する、コンピュータ実行可能命令と、
前記インストール命令を実行する前に、各前記インストール命令について前記インストール命令の実行が許可されているかどうかを判断するためのコンピュータ実行可能命令と、
前記インストール命令が許可されているとの前記判断の結果に応じて、許可されていると判断した前記インストール命令を実行するためのコンピュータ実行可能命令と
を含むことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２５】
請求項２４に記載のコンピュータ読み取り可能な記録媒体において、
前記コンピュータ読み取り可能な記録媒体は、前記コンピュータプログラムを実行するためのデータ構造をさらに有し、
該データ構造は、
前記モバイルコンピューティングデバイスにインストールしようとしている少なくとも１つの前記ファイルの少なくともあるバージョンを少なくとも表しているフィールドと、
少なくとも１つの前記ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義している前記コンピュータ実行可能命令セットのインストール命令であって、該インストール命令は、前記モバイルコンピューティングデバイスに関連するコンフィギュレーションマネージャによって直接に解釈可能であるフォーマットを有する前記コンピュータ実行可能命令セットのインストール命令をさらに含み、
前記フィールドは、インストールしようとする前記少なくとも１つのファイルの圧縮バージョンを含むことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項２６】
請求項２４に記載のコンピュータ読み取り可能な記録媒体において、前記インストール命令は、拡張可能マークアップ言語 (eXtensible Markup Language − XML) 規格に準拠する構造になっていることを特徴とするピュータ読み取り可能な記録媒体。
【請求項２７】
コンピュータ実行可能命令セットを含むファイルを有するソースと複数のモバイルコンピューティングデバイスとを含むネットワーク環境で使用されるシステムであって、
前記システムは、前記モバイルコンピューティングデバイスのメモリに格納されたコンフィギュレーションマネージャのセキュリティ機能を使用して前記ソースから前記コンピュータ実行可能命令を含む前記ファイルを該モバイルコンピューティングデバイスにインストールするためのものであり、該システムは、
前記コンピュータ実行可能命令セットを解析（パース）して、インストールしようとする１つまたは２つ以上の前記ファイルと、該ファイルを前記モバイルコンピューティングデバイスにどのようにインストールするかを定義しているインストール命令とを抽出するように構成されたインストーラと、
該インストーラから前記インストール命令を受け取るように構成されたコンフィギュレーションマネージャと、
該インストール命令のうち、ファイルオペレーションまたはディレクトリオペレーションを表しているものを、前記コンフィギュレーションマネージャから受け取るように構成されていると共に、該ファイルオペレーションまたはディレクトリオペレーションを実行する前に、該ファイルオペレーションまたはディレクトリオペレーションの実行が許可されているかどうかを判断し、前記ファイルオペレーションまたはディレクトリオペレーションが許可されていると判断した場合は、前記ファイルオペレーションまたはディレクトリオペレーションを実行するように構成されたファイルコンフィギュレーションサービスプロバイダと、
前記インストール命令のうち、コンフィギュレーション設定オペレーションを表しているものを、前記コンフィギュレーションマネージャから受け取るように構成されていると共に、該コンフィギュレーション設定オペレーションを実行する前に、該コンフィギュレーション設定オペレーションの少なくとも１つについて実行が許可されているかどうかを判断し、前記コンフィギュレーション設定オペレーションの実行が許可されていると判断した場合は、許可されていると判断した前記コンフィギュレーション設定オペレーションを実行するように構成されたレジストリコンフィギュレーションサービスプロバイダと、を備え、
前記インストーラ、前記コンフィギュレーションマネージャ、前記ファイルコンフィギュレーションサービスプロバイダ、および前記レジストリコンフィギュレーションサービスプロバイダは前記モバイルコンピューティングデバイスの前記メモリに予め格納され、前記モバイルコンピューティングデバイスのプロセッサにより実行されることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアインストールテクノロジの分野に関する。具体的には、本発明は、コンフィギュレーション（環境設定）マネージャのセキュリティ機能を使用してモバイルコンピューティングデバイスにソフトウェアをインストールするための方法、システム、コンピュータプログラムおよびデータ構造に関する。
【背景技術】
【０００２】
コンピュータは、われわれの生活様式に革新をもたらした。汎用コンピューティングデバイスの機能コンポーネントは、大別すると、２つのカテゴリに分けることができる。すなわち、ハードウェアとソフトウェアである。ハードウェアの例としては、１つまたは２つ以上のプロセッサ、種々タイプのメモリ（例えば、RAM、ROM、FLASH、ハードドライブ、CD-ROMなど）、ユーザインタフェース（例えば、モニタ、キーボード、マウス、スピーカ、プリンタ、スキャナなど）、およびネットワーキングデバイス（例えば、モデム、ネットワークインタフェースカード、アンテナなど）がある。ソフトウェアは、プロセッサによって実行されたとき、ハードウェアが一定のタスクを遂行するような形でやりとりするように、ハードウェアの種々のオペレーションを制御する命令から構成されている。代表的なコンピューティングデバイスには、広範囲にわたる機能性を助長する種々のソフトウェアがインストールされている。
【０００３】
コンピューティングデバイスのオペレーション上の能力をさらに向上するためには、望ましい方法として、別のソフトウェアをコンピューティングデバイスに追加することがよく行われている。そのソフトウェアをインストールするには、コンピューティングデバイスは、インストールファイル (installation file) へのアクセス権を取得する。インストールファイルは、いくつかの圧縮ファイルを収めているのが代表的であり、これらの圧縮ファイルは、最終的には、抽出して、コンピューティングデバイス上の適当なディレクトリロケーションに格納しておく必要がある。インストールファイルは一連の命令も収めており、抽出されたファイルが、その命令に従って正しくインストールされるようにしている。このような命令の例としては、ファイルを抽出し、ファイルを移動し、ファイルをコピーし、ファイルを削除し、コンフィギュレーション情報を設定することを、コンピューティングデバイスに指示するものがある。
【０００４】
代表的なインストールプロセス (installation process) は、基本的には、コンピューティングデバイスのユーザによって開始されている。例えば、ユーザは、ハードディスク、CDROMなどのコンピュータ読取可能媒体に入っているソフトウェアを購入する場合もあれば、おそらくは、ネットワークを利用してソフトウェアをダウンロードする場合もある。しかし、モバイルコンピューティングデバイスでは、比較的新しいインストールの形体が定着しつつある。具体的には、新ソフトウェアが発表されたとの通知をモバイルコンピューティングデバイスが受け取ると、その新ソフトウェアを受け取るかどうかの選択は、ユーザに任されているのが代表的である。受け取ることを選択すると、そのソフトウェアは、それがインストールされるモバイルコンピューティングデバイスにダウンロードされることになる。
【０００５】
従来の汎用コンピュータ用のオペレーティングシステムによれば、プロセスや個人がある種のファイルに対して、およびある種のディレクトリ内で実行できるオペレーションのタイプが、プロセスと個人に応じて制限されるような形である程度のセキュリティレベルが得られるようにしているのが代表的である。しかるに、モバイルデバイス用のオペレーティングシステムは、ラップトップやデスクトップコンピュータに比べてメモリと処理能力が相対的に制限されているため、機能性が縮小されていることがある。
【０００６】
【特許文献１】米国特許出願公開第2002/0144151号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そのようなオペレーティングシステムは、上記のように処理とメモリに制約があるため、セキュリティ制御のタイプが相対的に制限されていることがよくある。それにもかかわらず、ソフトウェアプロバイダの信頼性は、非同期通知に応答してインストールファイルをモバイルコンピューティングデバイスにダウンロードするときに問題となることが多くなっている。そのため、処理能力とメモリ容量が制限されているような環境でソフトウェアをインストールするとき、セキュリティが得られるようにするシステム、方法、コンピュータプログラム、およびデータ構造が要望されている。
【０００８】
さらに、インストールプロセスは、何らかの理由で失敗することがある。例えば、コンピューティングシステムがクラッシュすることもあれば、あるいはインストールソフトウェアが、その操作権限をもたないファイル、ディレクトリ、またはコンフィギュレーション設定値 (configuration settings) を操作しようとすることもある。ソフトウェアインストールが失敗したとき、オペレーティングシステムは、ソフトウェアインストールが正常に行われることを前提とする、誤ったコンフィギュレーション設定値をストアしてしまうことがある。さらに、インストールの一部であったファイルが、インストールが中断した以後無用になった場合でも、コンピューティングデバイスにストアされることがある。これらの誤ったコンフィギュレーション設定値は、コンピューティングデバイスの正しいオペレーションに影響することになる。さらに、無用なファイルが貴重なメモリスペースを占有することになり、これは、モバイルコンピューティングデバイスのような、メモリに制約のある環境では特に好ましくない。そのために、モバイルコンピューティング環境でインストールが失敗した場合、インストールの効果を逆戻り (reverse) させるようなシステム、方法、コンピューティングプログラムプログラムおよびデータ構造が、さらに要望されている。
【０００９】
本発明は、上述の課題を解決するためになされたもので、その目的は、モバイルコンピューティングデバイスがコンフィギュレーションマネージャを使用してソフトウェアをインストールすることを可能にし、コンフィギュレーションマネージャのセキュリティ機能がインストールプロセス期間に使用できるようにする方法、システム、コンピュータプログラムおよびデータ構造を提供することにある。
【課題を解決するための手段】
【００１０】
本発明によれば、セキュリティ機能を使用すると、オペレーション期間にどのディレクトリとファイルに対してどのオペレーションを実行できるかを、正しくアクセス制御することが可能になる。
【００１１】
一例を挙げると、これらのロールバック機能とセキュリティ機能は、コンフィギュレーションマネージャを使用してコンフィギュレーション情報を設定するという情況では、すでに実行されている。コンフィギュレーションを設定するという情況だけでなく、ディレクトリとファイルをオペレーションするという情況においても、この機能をインストールに適用すると、ロールバック機能とセキュリティ機能をインストールプロセスに適用するときのメモリと処理オーバヘッドが最小限になる。これが、セルラ電話 (cellular telephone) やパーソナルデジタルアシスタント (Personal Digital Assistant − PDA) のような、モバイルコンピューティングデバイスの情況で特に重要であるのは、モバイルコンピューティングデバイスは、ラップトップやデスクトップコンピュータに比べて、処理能力とメモリ能力が相対的に制限されているのが代表的であるからである。
【００１２】
本発明は、新しいアプリケーションやパッチ (patch) などの、ソフトウェアをインストールするとき使用できるインストールファイルが置かれているようなネットワーク環境で実現することができる。ネットワークには、モバイルコンピューティングデバイスも含まれている。例えば、ネットワーク環境には、セルラ電話ネットワークを利用してインストールファイルをセルラ電話にダウンロードするサーバを置いておくことが可能である。また、ネットワークには、ドッキングクレードル (docking cradle) 経由でインストールファイルをPDAに転送するデスクトップパーソナルコンピュータを置いておくことも可能である。
【００１３】
本発明によれば、モバイルコンピューティングデバイスは、少なくとも、インストールの一部としてモバイルコンピューティングデバイスにインストールしようとしている１つまたは２つ以上のファイルのバージョンにアクセスする。例えば、これらのファイルは、ネットワークバンド幅の使用効率を高めるために圧縮形式になっていることもあれば、未圧縮のままになっていることもある。
【００１４】
モバイルコンピューティングデバイスは、ファイルをどのようにモバイルコンピューティングデバイスにインストールさせるかを定義しているコンピュータ実行可能命令にもアクセスする。このような命令としては、例えば、ファイルをコピー、移動または削除する指示 (directive) のほかに、コンフィギュレーション情報を設定する指示などがある。インストールされるファイルは、そのインストールを指示する命令と一緒に、単一のインストールファイルにその一部として入れておくことができる。
【００１５】
コンピュータ実行可能命令は、モバイルコンピューティングデバイスに関連するコンフィギュレーションマネージャ (configuration manager) によって直接に解釈することができる。例えば、コンピュータ実行可能命令は、例えば、拡張可能マークアップ言語 (eXtensible Markup Language − XML) 規格によって定義されている言語を使用して、特定のスキーマに準拠した構造にすることができる。この特定スキーマはルールの集まりにすることができ、そこでは、構造内の値の意味は、構造内の値のコンテキストから求められるようしている。
【００１６】
そのあと、コンフィギュレーションマネージャは、コンピュータ実行可能命令を実行させる。例えば、コンフィギュレーションマネージャは、命令を直接に実行することもできるが、別のコンポーネント（コンフィギュレーションサービスプロバイダなど）にある種の命令を実行させることもある。例えば、コンフィギュレーションマネージャは、ファイルオペレーション命令をファイルコンフィギュレーションサービスプロバイダによって実行させることもあれば、ファイルオペレーション命令をレジストリサービスプロバイダによって実行させることある。
【００１７】
コンフィギュレーションマネージャは、ロールバック機能とセキュリティ機能を実行することができる。ロールバック機能によると、なんらかの理由でインストールが失敗したとき、あるいはインストールが必要でなくなったとき、インストールの効果を逆戻りさせることができる。
【発明の効果】
【００１８】
従って、インストールが正常に行われることを前提とする、望ましくないコンフィギュレーション設定値の変更は行われていない。従って、モバイルコンピューティングデバイスの処理は、正しくないコンフィギュレーション設定値によって妨げられることはない。さらに、インストールが正常に行われることを目的にインストールされたファイルの中には、無用な散在ファイルは存在しない。従って、モバイルコンピューティングデバイスのメモリは、インストールが失敗したときの無用な情報をストアしないで済むことになる。このことが特に利点があるのは、処理能力とメモリ容量が相対的に制限されているモバイルコンピューティングデバイスの情況においてである。
【００１９】
コンフィギュレーションマネージャは、インストール命令を実行する前に、各インストール命令の実行が許可されているかどうかをチェックして判断することによってセキュリティを実現するためにも使用できる。このようにすると、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイス全体にとって支障となるインストールオペレーションを、新ソフトウェアのプロバイダが悪意にまたは不注意に実行することから保護されることになる。
【００２０】
本発明のその他の特徴と利点は、以下の説明の中で明らかにされるが、その一部は説明から自明のものと、本発明を実施することによって知得されるものとがある。本発明の特徴と利点は、特許請求の範囲の請求項に具体的に記載されている手段および組み合わせによって実現し、取得することができる。本発明の上記特徴およびその他の特徴は、以下の説明の中で明らかにされるが、以下に説明するように本発明を実施することによって知得することも可能である。
【発明を実施するための最良の形態】
【００２１】
本発明の上述した利点およびその他の利点がどのようにして得られるかを説明するために、以下では、要約して上述した本発明を、添付図面に図示されている具体的実施形態、実施例を参照してもっと具体的に説明することにする。これらの図面は、本発明の代表的な実施形態を示したにすぎず、従って本発明の範囲を限定するものではないとの了解の下で、以下では、本発明は、添付図面を使用してさらに具体的にかつ詳細に説明されている。
【００２２】
本発明は、コンフィギュレーションマネージャのセキュリティ機能がインストールプロセス期間に使用できるように、コンフィギュレーションマネージャを使用してソフトウェアをインストールするための方法、システム、コンピュータプログラムおよびデータ構造に係わるものである。セキュリティ機能を使用すると、インストールが行われるとき、どのディレクトリやファイルに対してどのオペレーションが実行できるかに対して適切なアクセス制御を行うことができる。
【００２３】
モバイルコンピューティングデバイスはインストールファイル (installation file) にアクセスする。インストールファイルは、モバイルコンピューティングデバイスにインストールしようとしている１つまたは２つ以上のファイル（以下では、「インストールするファイル」とも呼ばれる）を収めているほかに、これらのファイルをインストールするためのコンピュータ実行可能命令（以下では、インストール命令 (installation instruction) とも呼ばれる）も収めている。インストーラ (installer) は、インストール命令をコンフィギュレーションマネージャ (configuration manager) に渡し、インストールするファイルを抽出する。インストール命令は、コンフィギュレーションマネージャによって直接に解釈できるフォーマットになっている。そのあと、コンフィギュレーションマネージャは、例えば、インストール命令を解析 (parse) し、その命令を該当するコンフィギュレーションサービスプロバイダに渡すことによって、インストール命令を実行させる。
【００２４】
ロールバック機能を実現するために、コンフィギュレーションマネージャはロールバックドキュメントを構築する。インストールが最終的に正常に行われると、そのインストールは、シングルトランザクションとしてコミットされる。他方、インストールが失敗すると、そのインストールプロセスは、ロールバックドキュメントを実行することによって逆戻りされる。一実施形態では、トランザクションに関するステート（状態）情報は、持続性メモリに保存されている。従って、モバイルコンピューティングデバイスに電源障害（停電）が発生しても、トランザクションのステートは残っているので、電源回復時にトランザクションを再開することができる。従って、トランザクションは電源中断から生き残ることになる。
【００２５】
コンフィギュレーションマネージャは、インストール命令の実行時に、各インストール命令の実行が許可されているかどうかをチェックして判断することにより、セキュリティを実現するためにも使用できる。具体的には、インストールファイルが受け取られると、そのインストールファイルには、インストールファイルに付与された認証 (credential) に依存するロールマスク (role mask) が割り当てられる。ロールマスクは、どのファイルや設定値 (settings) に対してどのインストールオペレーションをモバイルコンピューティングデバイスで実行できるかを定義するために使用される。インストール命令が無許可オペレーションを表していれば、コンフィギュレーションマネージャは、インストールが行われないこと、およびモバイルコンピューティングデバイスがインストール前のステートのままになっていることを確かめる。そのようにすると、モバイルコンピューティングデバイスは、新ソフトウェアのプロバイダがモバイルコンピューティングデバイスにとって支障となるインストールオペレーションを実行することから保護されることになる。
【００２６】
本発明の実施形態は、以下で詳しく説明するように、種々のコンピュータハードウェアを装備している特殊目的または汎用コンピューティングデバイスを備えることが可能になっている。本発明の範囲に属する実施形態には、コンピュータ実行可能命令やデータ構造を搬送するための、あるいはこれらがそこに格納されているコンピュータ読取可能媒体も含まれている。そのようなコンピュータ読取可能媒体としては、汎用または特殊目的コンピュータによってアクセス可能な媒体であれば、どのような媒体でも利用可能である。そのようなコンピュータ読取可能媒体の例を挙げると、RAM、ROM、EEPROM、CD-ROMなどの物理ストレージ媒体や他の光ディスクストレージ、磁気ディスクストレージや他の磁気ストレージデバイス、必要とするプログラムコード手段をコンピュータ実行可能命令の形で搬送または格納するために使用でき、汎用または特殊目的コンピュータによってアクセス可能である他の媒体などがあるが、これらに限定されない。
【００２７】
情報がネットワークまたは別の通信コネクション（ハードワイヤド(有線)、ワイヤレス（無線）、またはハードワイヤドとワイヤレスを組み合わせたもの）を利用してコンピュータに転送または提供されるとき、コンピュータからは、そのコネクションはコンピュータ読取可能媒体のように見えるのは当然である。従って、かかるコネクションは、当然のことながら、コンピュータ読取可能媒体と名づけられている。上記を組み合わせたものも、当然にコンピュータ読取可能媒体の範囲に含まれるものである。コンピュータ実行可能命令には、例えば、汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理デバイスにある種の機能（関数）または機能（関数）群を実行させる命令とデータが含まれている。
【００２８】
必ずしもその必要はないが、本発明は、プログラムモジュールのように、コンピューティングデバイスによって実行されるコンピュータ実行可能命令という広い意味で説明されている。一般的に、プログラムモジュールの中には、特定のタスクを実行し、あるいは特定の抽象データ型を実装しているルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれている。コンピュータ実行可能命令、関連データ構造、およびプログラムモジュールは、ここに開示されている方法のステップを実行するためのプログラムコード手段の例を表している。このような実行可能命令または関連データ構造の特定シーケンスは、上記ステップに記載されている機能（関数）を実現するための対応する行為の例を表している。
【００２９】
この分野の精通者ならば理解されるように、本発明は、多数のタイプのコンピュータシステム構成が置かれているネットワークコンピューティング環境で実施することが可能であり、その中には、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどが含まれている。また、本発明は、通信ネットワークを通して（ハードワイヤドリンク、ワイヤレスリンク、またはハードワイヤドリンクとワイヤレスリンクを組み合わせたものによって）リンクされているローカルとリモートの処理デバイスによってタスクが実行されるような、分散型コンピューティング環境で実施することも可能である。分散型コンピューティング環境では、プログラムモジュールは、ローカルとリモートの両方のメモリストレージデバイスに置いておくことが可能である。
【００３０】
図１は、インストールファイルをモバイルコンピューティングデバイスに配信することができるネットワーク環境１００を示す図である。主に、ネットワーク環境１００には、ワイヤレスネットワーク１０３を利用してモバイルコンピューティングデバイス１０２と通信するサーバ１０１が含まれている。
【００３１】
サーバ１０１は、パブリックワイヤレスサービスプロバイダ（例えば、セルラキャリア）またはプライベートワイヤレス通信ネットワーク（例えば、企業通信ネットワーク）のように、モバイルコンピューティングデバイス１０２の主要コネクティビティポイントなることができる。また、サーバ１０１は、主要コネクティビティポイントと協力し合う専用サーバとなることもできる。
【００３２】
以下では、図２と図３を参照して、モバイルコンピューティングデバイス１０２を図示し、詳しく説明する。要約して説明すると、モバイルコンピューティングデバイス１０２は、モバイル電話の機能と代表的なパーソナルデジタルアシスタント (Personal Digital Assistant − PDA) の機能を兼ね備えたハンドヘルドコンピューティングデバイスである。
【００３３】
サーバ１０１とモバイルコンピューティングデバイス１０２は、ワイヤレスリンク１０３を利用して相互に通信するが、このワイヤレスリンクは、無線周波数リンクなどのように、どのようなワイヤレスコミュニケーション手段であってもよい。例えば、サーバ１０１は、モバイルコンピューティングデバイス１０２にインストールできる新ソフトウェア（例えば、新アプリケーション、更新、またはパッチ）が存在することを検出することができる。そのことを検出すると、サーバ１０２は、ワイヤレスリンク１０３を利用してインストール通知をモバイルコンピューティングデバイス１０２に送り、新ソフトウェアが利用可能であることをモバイルコンピューティングデバイス１０２に通知することができる。この通知は、図１に第１矢印で示されている。この通知は、ワイヤレスアプリケーションプロトコル (Wireless Application Protocol − WAP) プッシュ通知、ハイパテキスト転送プロトコル (Hypertext Transport Protocol − HTTP) プッシュ通知、または現存しているか、開発中であるかに関係なく、他の可能な通知方法を使用して、ワイヤレス電話ネットワークを利用して行うことができる。
【００３４】
このような通知方法には、さまざまなものがある。例えば、ユーザは、モバイルコンピューティングデバイス１０２のブラウザを使用して、企業ネットワークまたはインターネット (the Internet) をナビゲートしていって、ダウンロードサイトを見つけることがある。ユーザは、インストールファイルに対応するリンクを選択することによって、インストールすることに同意する。この同意を受けて、ブラウザは、インストールファイルの要求（例えば、HTTP Getコマンド）を送付すると、インストールファイルは自動的にダウンロードされる。
【００３５】
別の方法として、モバイルコンピューティングデバイス１０２は、ユニバーサルシリアルバス (Universal Serial Bus − USB) またはシリアルケーブルでデスクトップコンピュータまたはラップトップコンピュータに結合されたクレードル (cradle) にドッキング (dock) にしておくこともできる。デスクトップコンピュータは、同期化ソフトウェア（例えば、ActiveSync）を使用して、インストールファイルをモバイルコンピューティングデバイスにダウンロードすることができる。ユーザは、インストールファイルをモバイルコンピューティングデバイス１０２にダウンロードさせることによって、インストールすることに同意する。
【００３６】
別の例では、インストールファイルは、アタッチメントとして、あるいはリンクとして、モバイルコンピューティングデバイス１０２に送信されるＥメールまたは短テキストメッセージの中に収められている。この場合は、ユーザは、アタッチメントまたはリンクを選択することによって、インストールすることに同意することになる。
【００３７】
キャリアは、サービスインディケーション (Service Indication − SI) メッセージとサービスローディング (Service Loading − SL) メッセージを、プッシュプロキシゲートウェイ (Push Proxy Gateway − PPG) 経由でモバイルコンピューティングデバイス１０２に送信することもできる。モバイルコンピューティングデバイス１０２は、これらの特殊目的短テキストメッセージサービス (Short test Message Service − SMS) メッセージをインボックスに入れておくように構成することができる。SIメッセージの場合には、ユーザは、メッセージの中のリンクを選択することによって、インストールすることに同意する。SLメッセージの場合には、デバイス自身がインストールファイルをインストールすることを試みる。
【００３８】
インストールファイルは、マルチメディアカード (MultiMediaCard − MMC) メモリカードにストアしておくこともできる。MMCは、ＭＭＣカードにAutorun（オートラン）ファイルが入っていて、Autorunがモバイルコンピューティングデバイス１０２で使用可能になっていれば、インストールスクリプトを自動的に開始することもできる。その場合には、ユーザは、MMCデバイスをプラグインすることによって、インストールすることに同意する。
【００３９】
モバイルコンピューティングデバイス１０２がインストールすることに同意するときは、モバイルコンピューティングデバイス１０２は、新ソフトウェアに関連するインストールファイルの要求を送付する。これは、HTTP Get要求の形にすることができ、図１に第２矢印で示されている。そのあと、インストールファイル１０５は、モバイルコンピューティングデバイス１０２にダウンロードされる。例えば、インストールファイル１０５は、HTTP Get要求に対する同一セッション応答の形でダウンロードすることができる。インストールファイル１０５のダウンロードは、図１に第３矢印で示されている。そのあと、モバイルコンピューティングデバイス１０２は、図３乃至図５を参照して以下に詳しく説明されているように、インストールファイル１０５を使用して新ソフトウェアをインストールする。
【００４０】
ここでは、主にインストールファイル１０５がワイヤレスリンク１０３を利用してモバイルコンピューティングデバイス１０２に配信されるものとして説明されているが、当然に理解されるように、これは、インストールファイル１０５をダウンロードするときの一実施形態にすぎない。インストールファイル１０５をモバイルコンピューティングデバイス１０２に配信する方法をいくつか上述したが、その方法の中には、ネットワーク向き (network-oriented) のものと、そうでないものとがある。従って、図１の第２矢印と第３矢印は、ユーザがインストールすることに同意し、インストールファイルがモバイルコンピューティングデバイス１０２で実行されるときの、任意のコミュニケーション形体を表すことができる。
【００４１】
図２は、モバイルコンピューティングデバイス１０２を示す詳細図である。モバイルコンピューティングデバイス１０２は、ユーザが入力ユーザインタフェース２０３を通して情報を入力し、出力ユーザインタフェース２０２から提示された情報をレビューできるようにするユーザインタフェース２０１を備えている。例えば、出力ユーザインタフェース２０２としては、オーディオ情報をユーザに提示するスピーカ２０４のほかに、ビジュアル情報をユーザに提示するディスプレイ２０５がある。モバイルコンピューティングデバイス１０２は、ワイヤレスリンク１０３を利用してサーバ１０１とワイヤレス通信するためのアンテナ２０９も備えている。
【００４２】
入力ユーザインタフェース２０３としては、オーディオ情報を電子形体に変換するマイクロホン２０６がある。さらに、入力ユーザインタフェース２０３としては、12個のボタンで表されたダイアリングコントロール２０７がある。ユーザは、このコントロールから電話番号をダイアルすることも、テキストメッセージを入力することも、データメッセージを送信することをモバイルコンピューティングデバイス１０２に指示することもできる。さらに、入力ユーザインタフェース２０３としては、ユーザがディスプレイ２０５から表示される種々のエントリとオプションをナビゲートしていくのを支援するナビゲーションコントロールボタン２０８がある。
【００４３】
モバイルコンピューティングデバイス１０２はモバイル電話の外観をしているが、モバイルコンピューティングデバイス１０２は、複雑で、フレキシブルな汎用処理能力を可能にする、目に見えない特徴を備えている。例えば、モバイルコンピューティングデバイス１０２はプロセッサ２１１とメモリ２１２も装備し、これらは相互に接続されると共に、バス２１０を介してユーザインタフェース２０１にも接続されている。歴史的に、セルラ電話やPDAのようなモバイルコンピューティングデバイス１０２の処理能力とメモリ容量は、ラップトップやデスクトップパーソナルコンピュータに比べると、相対的に制限されている。メモリ２１２として採用できるものには、広い意味で、広範囲にわたる揮発性および/または不揮発性メモリがある。どのタイプのメモリがモバイルコンピューティングデバイス１０２で使用されるかは、本発明にとっては重要でない。
【００４４】
１つまたは２つ以上のプログラムモジュールを構成するプログラムコード手段は、メモリ２１２にストアしておくことができる。１つまたは２つ以上のプログラムモジュールの内容としては、オペレーティングシステム２１３、１つまたは２つ以上のアプリケーションプログラム２１４、他のプログラムモジュール２１５、およびプログラムデータ２１６がある。図２に示す環境は単なる例示であり、本発明の原理を実現することができる種々のモバイルコンピューティングデバイスの一部を示すものではない。
【００４５】
図３は、モバイルコンピューティングデバイス１０２によって実現することができるアーキテクチャ３００を示す概略図である。具体的には、図２に示すコンポーネントとしては、スケジューラ３０１、インストーラ３０２、コンフィギュレーションマネージャ３０３、パーサ (parser) ３０４、ロールバックドラフタ (rollback drafter) ３０５、アンインストーラ３０６、セキュリティモジュール３０７、ファイルコンフィギュレーションサービスプロバイダ (Configuration Service Provider − CSP)、およびレジストリCSP ３０９のように、いくつかの機能コンポーネントがある。これらの機能コンポーネントは、例えば、アプリケーションプログラム２１４の１つ、プログラムモジュール、またはモバイルコンピューティングデバイス１０２のオペレーティングシステム２１３の一部にすることができる。ロールバックドキュメント３１０は、例えば、モバイルコンピューティングデバイス１０２のプログラムデータ２１６の一部にすることができる。
【００４６】
インストールファイル１０５の配信がネットワークを利用して行われる場合は、スケジューラ３０１はインストール通知１０４を受け取り、オプションとして、サーバ１０１からインストールファイルを取り出す。そのあと、スケジューラ３０１は、インストールファイル１０５を使用して新ソフトウェアをインストールするようにインストーラ３０２をトリガする。図３のアーキテクチャ３００は、図４の方法を採用できるので、コンフィギュレーションマネージャのロールバック機能とセキュリティ機能を使用して新ソフトウェアをインストールするようにしている。従って、図３のアーキテクチャの残り部分（基本的には、スケジューラ３０１を除くすべてのコンポーネント）は、図４を頻繁に参照して説明されている。
【００４７】
図４の方法４００を参照して説明すると、モバイルコンピューティングデバイス１０２は、新ソフトウェアのインストールの一部として、モバイルコンピューティングデバイスにインストールしようとする１つまたは２つ以上のファイルの少なくともバージョンにアクセスする（行為４０１）。例えば、これらのファイルは、ネットワークバンド幅の利用を効率化するために圧縮形式にすることができ、その場合は、モバイルコンピューティングデバイスは、これらファイルの圧縮バージョンにアクセスすることになる。しかし、インストールファイルには、ファイル自体を未圧縮のままで収めておくことも可能である。
【００４８】
モバイルコンピューティングデバイス１０２は、ファイルをモバイルコンピューティングデバイスにどのようにインストールするかを定義しているコンピュータ実行可能命令にもアクセスする（行為４０４）。そのような命令の例としては、ファイルをコピー、移動、または削除する指示のほかに、コンフィギュレーション情報を設定する指示がある。
【００４９】
インストールしようとするファイルとインストール命令は、一緒に、インストールファイル１０５の一部として収めておくことができる。その場合、インストールしようとするファイルにアクセスする行為（行為４０１）とインストール命令にアクセスする行為（行為４０４）は、インストーラ３０２が、インストールファイル１０５のような、シングルインストールファイルにアクセスするだけで行うことができる。図５は、インストールファイル１０５のデータ構造５００を示す概略図である。データ構造５００には、ファイル５０３ａ乃至５０３ｄのように、インストールされる複数のファイル５０３が収められている。また、データ構造５００には、ファイル５０３をモバイルコンピューティングデバイス１０２にどのようにインストールするかを指示しているインストール命令も収められている。
【００５０】
インストール命令５０１は、コンフィギュレーションマネージャ３０３によって直接に解釈可能になっている。例えば、インストール命令５０１は、特定のスキーマに準拠する構造にすることができる。インストール命令５０１がそのスキーマに準拠していることは、インストール命令５０１を、図５にスキーマ５０２と名づけた太線で強調することにより示されている。拡張可能マークアップ言語 (eXtensible Markup Language − XML) 規格を使用するスキーマに準拠するインストール命令の例は、以下に詳しく説明されている。以下の説明および請求項において、「スキーマ(schema)」とは、データ構造を編成するときのルールの集まりであり、構造内の値の意味は、構造内の値のコンテキストによって求められるようにしている。
【００５１】
従来のアプローチでは、インストール命令は、専用インストーラによって直接に実行されている。しかるに、本発明によれば、インストーラ３０２は、インストールプロセスを支援するだけである。具体的には、インストーラ３０２は、インストールしようとするファイル５０３を抽出し（ファイルは圧縮形式にあるものと想定する）、それらをメモリ２１２にストアしておく。また、インストーラ３０２はインストール命令をコンフィギュレーションマネージャに渡す。いくつかの実施形態では、コンフィギュレーションマネージャ３０３は、インストール命令を直接に実行できるようになっている。しかし、ここで説明している実施形態では、コンフィギュレーションマネージャ３０３は、パーサ３０４を使用してインストール命令を解析していき、該当するインストール命令を他の該当するコンポーネントに転送する。例えば、コンフィギュレーションマネージャ３０３は、ファイルオペレーション命令（例えば、ファイルの移動、ファイルのコピー、またはファイルの削除）をファイルコンフィギュレーションサービスプロバイダ３０８によって実行させ、コンフィギュレーションオペレーション命令をレジストリコンフィギュレーションサービスプロバイダ３０９によって実行させることができる。
【００５２】
従来は、コンフィギュレーションマネージャ３０３は、コンフィギュレーションサービスプロバイダを使用して、コンフィギュレーション設定値を変更し、さもなければ、管理することだけを受け持っていた。しかるに、本発明の原理によれば、インストールオペレーション全体を監視する責任はコンフィギュレーションマネージャ３０３にも任されている。従って、コンフィギュレーションマネージャ３０３が従来から備えていたコンフィギュレーション情報の設定機能は、ファイルオペレーションにも適用可能になっている。ファイルオペレーションとコンフィギュレーション設定命令は、コンフィギュレーションマネージャ３０３が準拠するスキーマに準拠する構造になっている。従って、コンフィギュレーションマネージャ３０３は、コンフィギュレーションマネージャ３０３のオペレーションとコーディングを最小限に変更するだけで、コンフィギュレーション設定命令だけでなく、ファイルオペレーション命令も解析することができる。最低限の条件として、コンフィギュレーションマネージャ３０３はファイルオペレーション命令を認識し、そのファイルオペレーション命令を、ファイルオペレーションの能力を持つコンポーネント（例えば、ファイルCSP ３０８）に渡すだけで済むことになる。
【００５３】
以上のようにすると、コンフィギュレーション情報を設定するというコンフィギュレーションマネージャ３０３の機能は、インストール処理にも拡張することができる。例えば、行為４０５でインストール命令を実行するとき、コンフィギュレーションマネージャは、ロールバック機能とセキュリティ機能を果たすことができる。ロールバック機能によると、何らかの理由でインストールが失敗したとか、インストールが必要でなくなったとき、インストールの効果を逆戻りさせることができる。以下では、まず、インストールプロセスのロールバック機能について説明し、その次に、インストールプロセスのセキュリティ機能について説明することにする。
【００５４】
図３を参照して説明すると、コンフィギュレーションマネージャ３０３のロールバック機能は、コンフィギュレーションマネージャ３０３によって直接にまたは間接にアクセス可能である、ロールバックドラフタ３０５、ロールバックドキュメント３１０、およびアンインストーラ３０６によってサポートされている。
【００５５】
以下では、図４を参照してロールバックオペレーションについて簡単に説明する。図４は、コンフィギュレーションマネージャ３０３を使用してトランザクションの形で新ソフトウェアをインストールするときのステップを示している（ステップ４０２）。このステップは、対応する行為４０６と４０７に加えて、前述した対応する行為４０４と４０５を含んでいる。
【００５６】
具体的に説明すると、コンフィギュレーションマネージャ３０３は、ロールバックドキュメント３１０を構築させる（行為４０６）。インストールの一部として、モバイルコンピューティングデバイス１０２は、プロビジョニングドキュメント (provisioning document) を受け取ることができ、これはインストールファイル１０５である場合と、そこにインストールファイル１０５が含まれている場合とがある。プロビジョニングドキュメントは、インストールを行うためにどのコンフィギュレーションサービスプロバイダが必要であるかの情報を含んでおり、従って、どのコンフィギュレーションサービスプロバイダをインスタンス化 (instantiate) する必要があるかを示している。コンフィギュレーションマネージャ３０３は、この情報に基づいてファイルCSP３０８とレジストリCSP３０９（他に必要とされるCSPがあれば、それも）をインスタンス化する。
【００５７】
次に、コンフィギュレーションマネージャ３０３は、インストールを行えば、どのファイルおよび/または他のデータアイテムが変更されるかどうかを判別する。例えば、コンフィギュレーションマネージャ３０３は、インストールの一部として変更されるファイルがあれば、そのカレントステートを得るためにファイルCSP３０８にクエリ（照会、問合せ）し、インストールの一部として変更されるコンフィギュレーション変更があれば、そのカレントステートを得るためにレジストリCSP３０９にクエリする。そのあと、コンフィギュレーションマネージャ３０３は、カレントステートをコンパイルしてロールバックドキュメント３１０に入れる。従って、ロールバックドキュメント３１０は、インストールを行えば変更される可能性のあるアイテムに関して、インストール前のモバイルコンピューティングデバイスのステートを表している。
【００５８】
次に、コンフィギュレーションマネージャ３０３は、インストールが正常に行われるかどうかを判断する（行為４０７）。例えば、コンフィギュレーションマネージャ３０３は、当該命令を当該CSPに渡し、その当該命令を実行すれば、インストールが正常に行われるかどうかを当該各CSPに質問する。CSPのいずれかが、インストールが失敗すると示していれば、コンフィギュレーションマネージャ３０３は、インストールは失敗すると、インストール命令の実行前に、判断する（判定ブロック４０７でNOと判断する）。例えば、あるCSPは、インストールファイルのIDが与えられているとき、インストール命令の１つまたは２つ以上は、実行の権限がないことを検出していたかも知れない。一実施形態では、これは、インストールファイルに割り当てられたロールマスク (role mask) を使用して行われる。CSPがロールマスクをどのように使用してセキュリティを実現するかの詳細は、以下に説明されている。インストール命令の実行前にインストールが失敗すると判断されたときは、行為４１０でロールドキュメントを実行しないで済むことになる。その代わりに、コンフィギュレーションマネージャ３０３は、インストールを行うことを拒否するだけでよい。
【００５９】
インストールが正常に行われる可能性があると、このクエリプロセスで判断されたときは（判定ブロック４０７でYESと判断する）、コンフィギュレーションマネージャ３０３はトランザクションをコミットする（行為４０９）。具体的には、コンフィギュレーションマネージャ３０３は、それぞれに対応するインストール命令を実行するようにCPSの各々に指示する。予備的クエリにもかかわらず、何らかの理由でインストールが失敗したときは、コンフィギュレーションマネージャ３０３は、インストールは失敗したものと判断する（判定ブロック４０７’でNOと判断する）。そのNOの判断時にはインストール命令はすでに実行されているので、コンフィギュレーションマネージャ３０３は、ロールバックドキュメント３１０を使用して、モバイルコンピューティングデバイス１０２をそのインストール前のステートに戻すことになる（行為４１０）。以上により、新ソフトウェアをトランザクションの形でインストールするステップは完了する（ステップ４０２）。
【００６０】
従って、インストールが失敗すると、モバイルコンピューティングデバイス１０２は、元のステートに戻される。インストールが正常に行われることを前提とする、望ましくないコンフィギュレーション設定値の変更は行われていない。従って、モバイルコンピューティングデバイス１０２の処理は、正しくないコンフィギュレーション設定値によって妨げられることはない。さらに、インストールが正常に行われることを目的にインストールされた、無用な散在ファイルが存在することもない。従って、モバイルコンピューティングデバイス１０２のメモリは、インストールが失敗したとき、無用な情報をストアしないで済むことになる。
【００６１】
図３に示すアーキテクチャ３００は、新ソフトウェアがトランザクションの形でインストールされることを想定しているだけでなく、コンフィギュレーションマネージャ３０３が備えているセキュリティ機能を使用して新ソフトウェアが条件付きでインストールされることも想定している。具体的には、セキュリティモジュール３０７はこれらのセキュリティ機能をサポートし、セキュリティモジュール３０７は、コンフィギュレーションマネージャ３０３から直接にまたは間接にアクセス可能になっている。コンフィギュレーションマネージャがコンフィギュレーション情報を設定するとき、どのようにセキュリティを行うかの詳細は、共有に係る、係属中の米国特許出願公開公報に記載されている（特許文献１参照）。なお、その内容全体は、引用により本明細書の一部になっている。
【００６２】
図４を参照して説明すると、図示のステップは、コンフィギュレーションマネージャ３０３のセキュリティ機能を使用して新ソフトウェアを条件付きでインストールするためのものである（ステップ４０３）。このステップには、対応する行為４０８のほかに、前述した行為４０４と４０５が含まれている。具体的に説明すると、コンフィギュレーションマネージャ３０３は、それぞれに対応するインストール命令を実行できるかどうかについてCPSの各々にクエリする。その応答として、CPSは、各インストール命令が許可されているかどうかをチェックして判断する（行為４０８）。CSPは、インストールファイルに割り当てられたロールマスクを使用して、これを行うことができる。このロールマスクは、クエリと一緒に各CSPにすでに渡されていることがある。
【００６３】
ロールマスクがどのように割り当てられ、使用されるかは、以下で説明する。インストールファイルが初めて作成されるとき、そのインストールファイルは署名されている場合と、未署名の場合とがある。インストールファイルの署名は、例えば、Microsoft（登録商標）Authenticode（登録商標）などの、ソフトウェアを使用してインストールファイルに証明書 (certificate) を含めることによって行うことができる。そのあと、モバイルコンピューティングデバイス１０２は、その証明書を対応するロールマスクと突き合わせる。各ロールマスクは、該当証明書と対応付けることができる。次に、モバイルコンピューティングデバイス１０２は、そのロールマスクを対応するインストールファイルに割り当てる。インストールファイルが未署名であるか、証明書がロールマスクと一致していなかったときは、インストールファイルのソースが未認証であるときの、該当セキュリティ特権に対応するデフォルトロールマスクが割り当てられる。ケースによっては、このことは、セキュリティ特権がまったくないことを意味する場合もある。
【００６４】
ロールマスクが与えられているとき、インストール命令のいずれかが許可されていないときは、コンフィギュレーションマネージャ３０３は、上述したようにインストールを保留にすることができる。このようにすると、モバイルコンピューティングデバイス１０２は、新ソフトウェアのプロバイダが、モバイルコンピューティングデバイス１０２全体にとって支障となるインストールオペレーションを、悪意にまたは不注意に実行することから保護されることになる。
【実施例】
【００６５】
以下では、XMLベースのインストール命令５０１の例について説明する。以下に示すXMLは、次のように例示XMLドキュメントの中の最高レベルのネストされたタグを示している。
1.        <?xml version="1 .0" encoding="UTF-8"?> 
2.        <wap-provisioningdoc>
3-47          [Content]
48       </wap-provisioningdoc>
【００６６】
XMLコードの各行の左側の数字は、例示XMLドキュメントの中の行順序番号を示している。このコード例に示すように、XMLドキュメントは48行になっている。行1、2および48だけは、ネスト（組み込み）されたXMLコードの最高レベルを示している。従って、行1、2および48だけは、明示的に上記にリストされている。XMLコードの下位レベルは、"[Content]"という用語で総称的に示されており、これは、XMLドキュメントの行3から行47までに対応している。"[Content]"という用語が指定されている個所では、そのことは、XMLドキュメントの中の対応する行の正確なコンテンツは、以下で詳しく説明されていることを示している。
【００６７】
XMLドキュメントオーサリング (document authoring) 分野の精通者に周知であるように、行1は、XMLドキュメントのXMLバージョンとXMLドキュメントのテキスト符号化フォーマットを示している。ここでは、行1は、XMLバージョンがバージョン1.0であり、テキストがUTF-8テキスト符号化フォーマットを使用して符号化されていることを示している。
【００６８】
行2と行48は、それぞれ開始タグと終了タグであり、その間の内容（つまり、"[Content]"と示された行3 − 47）は、WAPプロビジョニングドキュメントであることを示している。コンフィギュレーションマネージャ３０３は、WAPプロビジョニングドキュメントを、コンフィギュレーション命令を含むドキュメントタイプであるものと認識する。しかし、ソフトウェアをインストールする場合は、WAPプロビジョニングドキュメントはファイル命令を含むこともできる。
【００６９】
次は、WAPプロビジョニングドキュメント内のエレメントを示し、これは、XMLドキュメントの行3から行7までに対応している。
【００７０】
【数１】
0004565032.tif 000002
このエレメント全体は、あるオペレーションが"Registry"で行われることを示しているので（行3参照）、このことは、そのエレメントがコンフィギュレーション命令であることを示している。コンフィグレーションロケーションは、
【００７１】
【数２】
0004565032.tif 000003
で定義されたディレクトリ構造の中にある（行4参照）。コンフィギュレーション設定値は、"Filename"コンフィギュレーション設定値であり、そこには、値 "newgame" が入ることになっている（行5参照）。なお、値"newgame"の意味は、XMLドキュメント内のそのコンテキストによって判断することができる。
【００７２】
しかし、XML WAPプロビジョニングドキュメントは、コンフィギュレーション設定命令を収めているだけでなく、実際のファイルオペレーション命令も収めている。次のXMLドキュメントは、XMLドキュメントのファイルオペレーションエレメントであるコードの領域を定義している。
8           <characteristic type="FileOperation">
9-46                 [Content]
47          </characteristic> 
行8と行47は、それぞれ開始タグと終了タグであり、行9から行46までのコンテンツはファイルオペレーションを表していることを示している。次のXMLコードは、そのコンテンツの一部を構成するエレメントを表している。
【００７３】
【数３】
0004565032.tif 000004
行9はコメントコードであり、これは実行されない。行9は、ディレクトリ
【００７４】
【数４】
0004565032.tif 000005
でファイルオペレーションが行われることを示している。行10は、行25の終了タグに対応する開始タグであり、行11から行24までのコンテンツがそのディレクトリに適用されることを示している。
【００７５】
コメント行11が示すように、行12と行13は、それぞれ開始タグと終了タグであり、ディレクトリ
【００７６】
【数５】
0004565032.tif 000006
を作成する。なお、テキスト"%CE1%"は、テキスト"Program Files"を符号化したものである。コメント行14が示すように、行15から行19までは、インストールしようとするファイル５０３の１つで、"CAB 00hpopen.001"と名づけたファイルの圧縮バージョンから、"hpopen.txt"と名づけたファイルを抽出する。コメント行20が示すように、行21から行24までは、インストールしようとするファイル５０３の１つで、"CAB 00hpopen.002"と名づけたファイルの圧縮バージョンから、"AirSync.txt"と名づけたファイルを抽出する。抽出されたファイルの各々のデスティネーション（宛先）は、ディレクトリ
【００７７】
【数６】
0004565032.tif 000007
である。
【００７８】
次のXMLエレメントは、ファイルコピーオペレーションを示している。
【００７９】
【数７】
0004565032.tif 000008
このエレメントは、"email.bmp"と名づけたファイルを、一時ディレクトリ
【００８０】
【数８】
0004565032.tif 000009
からデスティネーションディレクトリ
【００８１】
【数９】
0004565032.tif 000010
にコピーする。
【００８２】
次のXMLエレメントは、ファイル移動オペレーションであることを示している。
【００８３】
【数１０】
0004565032.tif 000011
このエレメントは、"profile_move.bmp"と名づけたファイルを、一時ディレクトリ
【００８４】
【数１１】
0004565032.tif 000012
から新しいファイル名"profile.bmp"でデスティネーションディレクトリ
【００８５】
【数１２】
0004565032.tif 000013
に移動する。
【００８６】
次のXMLエレメントは、ファイル削除オペレーションであることを示している。
【００８７】
【数１３】
0004565032.tif 000014
このエレメントは、"email.bmp"ファイルを一時ディレクトリ
【００８８】
【数１４】
0004565032.tif 000015
から削除する。
【００８９】
なお、インストールは、モバイルコンピューティングデバイスの既存コンポーネントに作用を及ぼす (leverage) ことによって行われる。コンフィギュレーションマネージャ３０３に要求されることは、ファイルオペレーションエレメントを認識し、解析したあと、それがファイルCSP３０８であるか、レジストリCSP３０９であるかに関係なく、命令を該当コンフィグレーションサービスプロバイダに渡すだけである。従って、新ソフトウェアをインストールするために要求される増加処理オーバヘッドは、コンフィギュレーション設定値を用意するだけの場合に比べて、最小限になる。従って、本発明の原理によると、新ソフトウェアをモバイルコンピューティングデバイスにインストールすることが効率化される一方で、インストールプロセス期間にロールバックとセキュリティが保証されることになる。
【００９０】
本発明は、本発明の精神または基本的特徴から逸脱しない限り、他の具体的形態で具現化することが可能である。上述した実施形態、実施例は、すべての点で単なる例示であり、これらに限定されるものではない。従って、本発明の範囲は、上述した説明からではなく、特許請求の範囲の請求項に記載されている内容によって判断されるものである。請求項の意味と等価範囲に属するすべての変更は、本発明の範囲内に含まれるものである。
【図面の簡単な説明】
【００９１】
【図１】インストールファイルをモバイルコンピューティングデバイスに配信するために使用できるネットワーク環境の例を示す図である。
【図２】本発明の原理に従って新ソフトウェアをインストールすることができるモバイルコンピューティングデバイスの動作可能コンポーネントを示す図である。
【図３】新ソフトウェアをモバイルコンピューティングデバイスにインストールするために使用できる種々コンポーネントのアーキテクチャを示す図である。
【図４】コンフィギュレーションマネージャのロールバック機能とセキュリティ機能を使用して新ソフトウェアをモバイルコンピューティングデバイスにインストールするための方法のフローチャートを示す図である。
【図５】インストールしようとするファイルが、そのインストールを指示する命令セクションと共に含まれているインストールファイルのデータ構造を示す図である。
【符号の説明】
【００９２】
１００  ネットワーク環境
１０１  サーバ
１０２  モバイルコンピューティングデバイス
１０３  ワイヤレスリンク
１０４  インストール通知
１０５  インストールファイル
２０１  ユーザインタフェース
２０２  出力ユーザインタフェース
２０３  入力ユーザインタフェース
２０４  スピーカ
２０５  ディスプレイ
２０６  マイクロホン
２０７  ダイアリングコントロール
２０８  ナビゲーションコントロール
２０９  アンテナ
２１０  バス
２１１  プロセッサ
２１２  メモリ
２１３  オペレーティングシステム
２１４  アップリケーションプログラム
２１５  プログラムモジュール
２１６  プログラムデータ
３００  アーキテクチャ
３０１  スケジューラ
３０２  インストーラ
３０３  コンフィギュレーションマネージャ
３０４  パーサ
３０５  ロールバックドラフタ
３０６  アンインストーラ
３０７  セキュリティモジュール
３０８  ファイルCSP
３０９  レジストリCSP
３１０  ロールバックドキュメント
５００  データ構造
５０１  インストール命令
５０２  スキーマ
５０３  インストールされるファイル
【図１】
0004565032.tif 000016
【図２】
0004565032.tif 000017
【図３】
0004565032.tif 000018
【図４】
0004565032.tif 000019
【図５】
0004565032.tif 000020