(57)【要約】【課題】ソフトウェア配布方法（３００ｂ）および対応するシステムを提供すること。【解決手段】ソフトウェア配布アプリケーションでは、選択されたソフトウェア製品をインストールまたは除去するために各ターゲット・コンピュータで実行されるアクションを指定する命令を含むパッケージが、中央サイトで作成される。通常、これらのアクションは、ターゲット・コンピュータのハードウェア構成に対して条件付けられる。各パッケージが、ターゲット・コンピュータに送信され、対応する命令が解釈されて、ターゲット・コンピュータの現在の構成に合った所望のソフトウェア製品が有効にされる。本発明の解決策では、どんなハードウェアの更新も検出する（３３７）ように、ターゲット・コンピュータの構成をモニタする。それに応答して、新しい構成にもはや合わなくなったソフトウェア製品を除去するためのアクション・リストと、新しい構成に現在合ったソフトウェア製品をインストールするためのアクション・リストとをターゲット・コンピュータが生成する（３３９〜３５１）。これらのリストは、中央サイトに送信され（３５７）、リストにより対応する差分パッケージの構築がトリガ（３６０）される。次いで、差分パッケージがターゲット・コンピュータに配布され、したがってターゲット・コンピュータにインストールされたソフトウェア製品がそのハードウェア構成と常に整合することができる。
2005522757.tif 000002
【特許請求の範囲】
【請求項１】
対応するソフトウェア機能を有効にするために複数のターゲット・コンピュータのそれぞれで実行され、その少なくとも１つがターゲット・コンピュータの構成に対して条件付けられているアクションの指示を含むパッケージをソース・コンピュータ上で提供するステップ（３０６）と、
パッケージをソース・コンピュータからターゲット・コンピュータに送信するステップ（３１２）と、
ターゲット・コンピュータの構成に合ったアクションを実行するステップ（３１５〜３３３）とを含み、
ターゲット・コンピュータの新しい構成をもたらす変更を検出するステップ（３３７）と、
新しい構成に合ったソフトウェア機能を有効にするための訂正アクションを決定するステップ（３３９〜３５１）と、
訂正アクションを実行するステップ（３５７〜３６３）と
を特徴とするソフトウェア配布方法（３００ａ、３００ｂ）。
【請求項２】
パッケージが、ターゲット・コンピュータの少なくとも１つの構成パラメータに基づく少なくとも１つの条件の指示をさらに含み、各条件が少なくとも１つのアクションに関連しており、
ターゲット・コンピュータの構成に合ったアクションを実行するステップ（３１５〜３３３）が、ターゲット・コンピュータの構成に従って、各条件の第１の評価を実行するステップ（３１８）と、第１の評価に対応する結果が肯定であるとき、条件に関連する少なくとも１つのアクションを実行するステップ（３２４〜３３０）とを含み、
訂正アクションを決定するステップ（３３９〜３５１）が、変更によって影響を受ける少なくとも１つの構成パラメータに基づいて条件を識別するステップ（３３９）と、新しい構成に従って、識別された各条件の第２の評価を実行するステップ（３４２）と、第１の評価に対応する結果が否定であり、第２の評価に対応する結果が肯定であるとき、識別された条件に関連する少なくとも１つのアクションを選択するステップ（３４５）とを含む、請求項１に記載の方法（３００ａ、３００ｂ）。
【請求項３】
ターゲット・コンピュータで第１の評価に対応する結果と共に、アクションの指示および少なくとも１つの条件の指示を記憶するステップ（３２１）をさらに含む、請求項２に記載の方法（３００ａ、３００ｂ）。
【請求項４】
少なくとも１つの訂正アクションが、ターゲット・コンピュータにおける対応するエンティティのインストールを含むものであり、ソース・コンピュータに各エンティティを要求するステップ（３５７）をさらに含む、請求項３に記載の方法（３００ａ、３００ｂ）。
【請求項５】
訂正アクションを決定するステップ（３３９〜３５１）が、第１の評価に対応する結果が肯定であり第２の評価に対応する結果が否定であったとき、識別された条件ごとに識別された条件に関連する少なくとも１つのアクションを取り消すために、少なくとも１つの取り消しアクションを定義するステップ（３５１）をさらに含む、請求項２ないし４のいずれかに記載の方法（３００ａ、３００ｂ）。
【請求項６】
実行されたアクションによって影響を受けるターゲット・コンピュータで各既存エンティティのバックアップ・コピーを作成するステップ（３２７）をさらに含み、少なくとも１つの取り消しアクションが、対応する実行されたアクションによって影響を受ける各既存エンティティのバックアップ・コピーの復元に関するものである、請求項５に記載の方法（３００ａ、３００ｂ）。
【請求項７】
訂正アクションを実行するステップ（３５７〜３６３）が、
ソース・コンピュータに訂正アクションの指示を送信するステップ（３５７）と、
ターゲット・コンピュータで訂正アクションを実行させる他のパッケージを構築するステップ（３６０）と、
他のパッケージをターゲット・コンピュータに送信するステップ（３６３）とを含む、請求項１ないし６のいずれかに記載の方法（３００ａ、３００ｂ）。
【請求項８】
データ処理システム（１００）で走らせたとき請求項１ないし７のいずれかに記載の方法を実行するための、データ処理システムの作業メモリ（１４０）に直接ロード可能なコンピュータ・プログラム・アプリケーション（２１０、２２５、２３５、２５０）。
【請求項９】
請求項８のプログラム・アプリケーション（２１０、２２５、２３５、２５０）が記憶されるコンピュータ可読媒体を含むプログラム・アプリケーション製品（１６０）。
【請求項１０】
ターゲット・コンピュータ（１２５）でプログラムを走らせたときにソフトウェア配布方法（３００ａ、３００ｂ）を実行するための、ターゲット・コンピュータ（１２５）の作業メモリ（１４０）に直接ロード可能なコンピュータ・プログラム（２３５、２５０）であって、対応するソフトウェア機能を有効にするためにターゲット・コンピュータで実行されるアクションの指示を含むパッケージを提供するソース・コンピュータ（１０５）とターゲット・コンピュータが結合され、少なくとも１つのアクションが、ターゲット・コンピュータの構成に対して条件付けられ、
方法が、
ソース・コンピュータからパッケージを受信するステップ（３１２）と、
ターゲット・コンピュータの構成に合ったアクションを実行するステップ（３１５〜３３３）とを含み、
ターゲット・コンピュータの新しい構成をもたらす変更を検出するステップ（３３７）と、
新しい構成に合ったソフトウェア機能を有効にするための訂正アクションを決定するステップ（３３９〜３５１）と、
訂正アクションを実行するステップ（３５７〜３６３）と
を特徴とするコンピュータ・プログラム（２３５、２５０）。
【請求項１１】
請求項１０のプログラム（２３５、２５０）が記憶されているコンピュータ可読媒体を含むプログラム製品（１６０）。
【請求項１２】
ソース・コンピュータ（１０５）と、複数のターゲット・コンピュータ（１２５）とを含み、ソース・コンピュータが、対応するソフトウェア機能を有効にするためにターゲット・コンピュータのそれぞれで実行されるアクションの指示を含むパッケージを提供する手段を有し、少なくとも１つのアクションが、ターゲット・コンピュータの構成に対して条件付けられ、パッケージをソース・コンピュータからターゲット・コンピュータに送信する手段（２２０、２３０）をさらに含み、ターゲット・コンピュータが、ターゲット・コンピュータの構成に合ったアクションを実行する手段（２３５）を含んでいるソフトウェア配布システム（１００）であって、
ターゲット・コンピュータが、ターゲット・コンピュータの新しい構成をもたらす変更を検出する手段（２５０）と、新しい構成に合ったソフトウェア機能を有効にするための訂正アクションを決定する手段（２５０）と、訂正アクションを実行する手段（２３５）とをさらに含むことを特徴とするソフトウェア配布システム（１００）。
【請求項１３】
ソフトウェア配布システム（１００）中で使用されるターゲット・コンピュータ（１２５）であって、システムが、対応するソフトウェア機能を有効にするためにターゲット・コンピュータで実行されるアクションの指示を含むパッケージを提供する手段（２１０）を有するソース・コンピュータ（１０５）を含み、少なくとも１つのアクションが、ターゲット・コンピュータの構成に対して条件付けられ、ターゲット・コンピュータが、パッケージをソース・コンピュータから受信する手段（２３０）と、ターゲット・コンピュータの構成に合ったアクションを実行する手段（２３５）とを含んでおり、
ターゲット・コンピュータが、ターゲット・コンピュータの新しい構成をもたらす変更を検出する手段（２５０）と、新しい構成に合ったソフトウェア機能を有効にするための訂正アクションを決定する手段（２５０）と、訂正アクションを実行する手段（２３５）とをさらに含むことを特徴とする、ターゲット・コンピュータ（１２５）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関し、より詳細にはソフトウェア配布方法および対応するシステムに関する。
【背景技術】
【０００２】
（新しいソフトウェア製品など）ソフトウェア機能の配布は、時間のかかる作業であり、特にソフトウェア製品を配布する必要があるターゲット・コンピュータが多数含まれるシステムにおける場合はそうである。例えば、これは何千ものワークステーションを含む大組織では当たり前の作業であり、そこではソフトウェア製品が情報技術開発に遅れないようにあるいは組織的な変更に適合するように定期的に更新される。
【０００３】
システム管理者がシステムの中央サイトからソフトウェア製品の展開を効率よく管理するのを支援するためのソフトウェア配布アプリケーションがここ数年の間に提案されてきた。ソフトウェア配布アプリケーションは、選択されたソフトウェア製品をインストールしまたは除去するためにターゲット・コンピュータ上で実行されるアクションを指定する命令を含むパッケージの構築を制御する。さらに、各パッケージには、ターゲット・コンピュータ上にインストールすべきソフトウェア製品のコピーが組み込まれている。このパッケージは各ターゲット・コンピュータに送信され、対応する命令が解釈されて、所望のソフトウェア製品が有効にされる。
【０００４】
ソフトウェア配布アプリケーションの柔軟性を高めるために、通常、その命令はターゲット・コンピュータの（例えば、一連のハードウェア・パラメータによって定義される）構成に対して条件付けられる。パッケージは、様々なハードウェア構成を有するターゲット・コンピュータに対して汎用性があるように構成され、したがってシステム管理者側でメンテナンスの必要性が少なくてすむようになる。
【０００５】
当技術分野で周知のソフトウェア配布アプリケーションは、強制モデルに基づいており、すべての動作はシステムの中央サイトから管理され、中央サイトとターゲット・コンピュータの間のどんな種類の協調もサポートしていない。この協調の欠如により、いくつかのシナリオ中で不整合を引き起こす。
【０００６】
具体的には、ターゲット・コンピュータのハードウェアの更新により、パッケージ中で定義された条件の評価結果が変わることもあり得る。言い換えると、配布時に真であった条件が、偽になることもあり、その反対もあり得る。その結果として、ターゲット・コンピュータにインストールされたソフトウェア製品が、もはやそのハードウェアの構成と整合しなくなる。最善でも、ターゲット・コンピュータのハードウェア資源の利用度が下がる。しかし、これらの不整合が、（例えば、メモリの割振りを誤ることにより）実行時エラーを起こすことがある。最悪では、（例えば、ターゲット・コンピュータ上にインストールされたソフトウェア製品のバージョンがそのハードウェアと互換性がないとき）ターゲット・コンピュータ全体の動作を損なうこともあり得る。
【０００７】
これらの欠点は、ターゲット・コンピュータのハードウェア構成がしばしば変更される高度に動的な環境では特に重大である。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の一目的は、中央サイトとターゲット・コンピュータの間のある種の協調をサポートするソフトウェア配布方法および対応するシステムを提供することである。
【０００９】
本発明の他の目的は、ターゲット・コンピュータ中での不整合を避けることである。
【００１０】
本発明の他の目的は、ターゲット・コンピュータの動作がその構成と互換性のないソフトウェア機能によって損なわれないようにすることである。
【課題を解決するための手段】
【００１１】
これらのおよび他の関連する目的は、対応するソフトウェア機能を有効にするために複数のターゲット・コンピュータのそれぞれで実行され、その少なくとも１つがターゲット・コンピュータの構成に対して条件付けられているアクションの指示を含むパッケージをソース・コンピュータ上で提供するステップと、パッケージをソース・コンピュータからターゲット・コンピュータに送信するステップと、ターゲット・コンピュータの構成に合ったアクションを実行するステップと、ターゲット・コンピュータの新しい構成をもたらす変更を検出するステップと、新しい構成に合ったソフトウェア機能を有効にするための訂正アクションを決定するステップと、その訂正アクションを実行するステップとを含むソフトウェア配布方法によって達成される。
【００１２】
本発明はまた、この方法を実施するためのコンピュータ・プログラム・アプリケーション、およびこのプログラム・アプリケーションが記憶されている製品を提供する。さらに、本発明は、対応するソフトウェア配布システムも提供する。
【００１３】
本発明の一態様によれば、ターゲット・コンピュータ上で走らせたときにソフトウェア配布方法を実行するための、ターゲット・コンピュータの作業メモリに直接ロード可能なコンピュータ・プログラムであって、対応するソフトウェア機能を有効にするためにターゲット・コンピュータ上で実行されるアクションの指示を含むパッケージを提供するソース・コンピュータとターゲット・コンピュータが結合されており、少なくとも１つのアクションが、ターゲット・コンピュータの構成に対して条件付けられており、その方法が、ソース・コンピュータからパッケージを受信するステップと、ターゲット・コンピュータの構成に合ったアクションを実行するステップと、ターゲット・コンピュータの新しい構成をもたらす変更を検出するステップと、新しい構成に合ったソフトウェア機能を有効にするための訂正アクションを決定するステップと、その訂正アクションを実行するステップとを含む、コンピュータ・プログラムを提供する。
【００１４】
本発明はまた、プログラムが記憶されている製品、およびソフトウェア配布システムで使用するための対応するターゲット・コンピュータを提供する。
【００１５】
本発明の特徴であると考えられる新規性のある特徴は、添付の特許請求の範囲に記載されている。しかし、本発明それ自体、ならびに本発明のこれらのおよび他の関連する目的および利点は、以下の詳細な説明を参照し添付の図面を併せて読めば最もよく理解されよう。
【発明を実施するための最良の形態】
【００１６】
具体的に図１を参照すると、分散型アーキテクチャを有するデータ処理システム１００が示されている。ホスト・コンピュータ１０５は、システム１００を介して配布されるソフトウェア製品を準備しかつ試験するための中央サイトとして動作する。この（ソース）ホスト１０５は、ソフトウェア配布プロセスを管理するためのサーバ・コンピュータ１１０に接続されている。１つまたは複数のゲートウェイ・コンピュータ１１５が、サーバ１１０を、通常インターネット・ベースのネットワーク・インフラストラクチャ１２０と結合している。複数のエンドポイント・コンピュータ１２５が、ネットワーク・インフラストラクチャ１２０にアクセスし、各エンドポイント１２５がソフトウェア配布プロセスのターゲットを定義する。
【００１７】
エンドポイント１２５は、ＴＣＰ／ＩＰなどのピア・ツー・ピア・プロトコルを介して対応するゲートウェイ１１５と通信する。サーバ１１０とゲートウェイ１１５の間の通信は、サーバとクライアントの間のミドルウェアとして動作するＣＯＲＢＡプログラミング・モデル中のコンポーネントであるＯＲＢを介して確立される。各エンドポイント１２５は、関連するゲートウェイ１１５上の対応するオブジェクトを介してサーバ１１０によってアクセスされ、したがって、サーバ１１０はエンドポイント１２５を直接アドレスすることができる。このようにして、サーバ１１０は、エンドポイント１２５に常駐するアプリケーション上のメソッドを呼び出すことができる。
【００１８】
図２に示すように、本システムの汎用コンピュータは、通信バス１３０に並列に接続されたいくつかのユニットで形成されている。詳細には、ＣＰＵ（中央処理装置）１３５はコンピュータの動作を制御し、ＲＡＭ１４０は作業メモリとしてＣＰＵ１３５によって直接使用され、ＲＯＭ１４５は、コンピュータのブート・ストラップ用の基本プログラムを記憶している。いくつかの周辺ユニットがさらにバス１３０に（それぞれのインターフェースによって）接続されている。具体的には、大容量メモリは、磁気ハードディスク１５０およびＣＤ−ＲＯＭ１６０を読取るためのドライバ１５５からなる。さらに、このコンピュータは、（例えば、キーボードとマウスからなる）入力装置１６５および（例えば、モニタとプリンタからなる）出力装置１７０を含む。ＮＩＣ１７５は、ネットワーク通信を制御するのに使用される。
【００１９】
システムが、他のトポロジを有する場合、複数のソース・ホストおよび／またはサーバが提供される場合、ソース・ホストおよびサーバが単一コンピュータに組み込まれている場合、エンドポイントが別の方法でサーバに結合されている場合、等価なソース・コンピュータおよびターゲット・コンピュータが提供される場合、コンピュータが異なった構造を有するかまたは異なったユニットを含む場合などにも、同様な考慮が適用される。
【００２０】
次に図３では、ソース・ホストおよび汎用エンドポイントの作業メモリの部分的内容が示されている。情報（プログラムおよびデータ）は、通常それぞれのハードディスクに記憶され、そのプログラムが走る際にオペレーティング・システムおよび他のアプリケーション・プログラム（図示せず）と共に作業メモリに（少なくとも部分的に）ロードされる。プログラムは、最初はＣＤ−ＲＯＭからハードディスクにインストールされる。
【００２１】
具体的には、ソース・ホストは、ソフトウェアをエンドポイントに配布するのに使用されるパッケージ２０５を記憶する。各パッケージ２０５は、命令セクション２０５ｉおよびデータ・セクション２０５ｄからなる。データ・セクション２０５ｄは、各エンドポイント上にインストールされるエンティティを組み込んでおり、一方、命令セクション２０５ｉは、エンドポイント上で実行すべき一連のアクションの定義を含み、各アクションは、そのアクションをいつ実行できるかを指定する可能な条件に関連付けられている。
【００２２】
より具体的には図４で示すように、パッケージ２０５は、ルート・ノードから始まる階層構造に論理的に編成される。階層構造の各リーフ・ノードは、アクションに対応する。いくつかのアクションは自己完結型であるが、他のアクションはインストール可能オブジェクトと呼ばれる対象を扱う。インストール可能オブジェクトとは、エンドポイントに追加されるエンティティまたはそこから除去されるエンティティを言う。例えば、自己完結型アクションは、エンドポイントの再始動を指定し、一方、インストール可能オブジェクトを含むアクションは、ファイル、アイコンなどの追加または除去を指定する。階層構造の分岐ノードは、コンテナのデフォルトを共用する子アクションの集合体を含むコンテナからなる。
【００２３】
クラスは、階層構造の各ノードによってインスタンス化される。（追加または除去すべき）インストール可能オブジェクトを含まないアクションは、総称ACTIONクラス２０５ｐを拡張したクラスに対応する。ACTIONクラス２０５ｐは、真であると評価されたときにアクションを実行させる条件を指定する一連の属性を公開する。例えば、アクションは、エンドポイントの異なったハードウェア・パラメータ（ＣＰＵモデルやＲＡＭサイズなど）やエンドポイントにインストールされたオペレーティング・システムなどに対して条件付けられる。その条件を定義するために、比較演算子、ブール演算子、定数、および変数が利用できる。ACTIONクラス２０５ｐはさらに、アクションをエンドポイントで実行できるかどうか検証できるCAN_EXECUTEメソッドを公開する。次いで、DO_EXECUTEメソッドがこのアクションを実行するのに使用される。CAN_EXECUTEメソッドとDO_EXECUTEメソッドは共に（アクションを実行するための）EXECUTE操作または（アクションを取り消すための）REVERSE操作を指定するために呼び出される。
【００２４】
エンドポイントから除去すべきエンティティを指定するインストール可能オブジェクトを含むアクションは、REMOVE_OBJECTクラス２０５ｒをインスタンス化する。REMOVE_OBJECTクラス２０５ｒは、ACTIONクラス２０５ｐを拡張し、したがってREMOVE_OBJECTクラス２０５ｒは、ACTIONクラス２０５ｐのすべての属性を継承する。他方、エンドポイントに追加すべきエンティティを指定するアクションは、同様にACTIONクラス２０５ｐを拡張するADD_OBJECTクラス２０５ａをインスタンス化する。ADD_OBJECTクラス２０５ａは、エンティティのバージョン制御の目的で一連の属性（その値は、パッケージ２０５の作成中に設定される）を公開する。例えば、REPLACE_IF_EXISTING属性は、既存のエンティティが置き換えできることを指定し、REPLACE_IF_NEWER属性は、古いエンティティだけが置き換えできることを指定し、REMOVE_IF_MODIFIED属性は、既存のエンティティが修正されたときは除去される必要があることを指定する。
【００２５】
ADD_OBJECTクラス２０５ａおよびREMOVE_OBJECTクラス２０５ｒは、（追加または除去すべき）各エンティティに対応した一つの関連するINSTALLABLE_OBJECTクラス２０５ｏを有する。INSTALLABLE_OBJECTクラス２０５ｏは、そのエンティティを複数のパッケージで共用できるとき有効にされる属性IS_SHAREDを公開する。
【００２６】
コンテナは、ACTIONクラス２０５ｐを拡張するCONTAINERクラス２０５ｃに対応する。CONTAINERクラス２０５ｃは、他の属性STOP_ON_FAILURE（その値は、パッケージの作成中に設定される）を公開する。この属性により、あるアクションの結果がその子アクションの実行を条件付けることができる。
【００２７】
図３に戻って、モジュールの集合体２１０がパッケージ２０５を作成するために使用される。詳細には、集合体２１０は、操作者がグラフィカル・インターフェースを使用してパッケージを定義できるようにするエディタを含む。パッケージ自体は、第一のアクションとして定義される。次いで、オペレータは、まずパッケージの名前属性およびバージョン属性を入力するよう指示される。子アクションは、可能な選択肢のメニューから追加され、それらの属性がダイアログ・ボックスを介して設定される。
【００２８】
パッケージの階層構造が定義された後に、パッケージの命令セクション２０５ｉが生成される。命令セクション２０５ｉは、階層構造を２進表現に直列化するファイル（ソフトウェア・パッケージ・ファイルと呼ばれる）からなる。この目的で、エディタは階層構造をトップダウンで全探索し、各アクションに関連するＥＮＣＯＤＥメソッドを呼び出す。呼び出されたメソッドは、対応するクラスを識別する一義的な名前をそれぞれ与えられた一連のレコードを生成する。レコードは、クラスの属性に対して設定された値、各条件の定義、および（もしあれば）それに依存する子供のリストを含む。
【００２９】
あるいは、パッケージはプレーン・テキスト・ファイル（ソフトウェア・パッケージ定義ファイルと呼ばれる）によって記述される。テキスト・ファイルの構文は、パッケージに対応する最上位のスタンザから始まる一連のスタンザに基づいている。各スタンザはアクションを表す。スタンザはネストすることもでき、その場合、スタンザはコンテナを表す他のスタンザを含む。集合体２１０の変換モジュールは、従来の構文解析技法でこのテキスト・ファイルを解釈することにより命令セクション２０５ｉを生成する。
【００３０】
パッケージ２０５（ソフトウェア・パッケージ・ブロックと呼ばれる）は、命令セクション２０５ｉから構築される。パッケージ２０５は、命令セクション２０５ｉの追加先である圧縮アーカイブ・ファイルからなる。次いで、命令セクション２０５ｉが復号される。この目的で、命令セクション２０５ｉが読み取られ、各レコードに割り当てられた名前が、対応するクラスを指定するルックアップ・テーブルにアクセスするために使用される。クラスがインスタンス化された後、関連するDECODEメソッドが呼び出される。呼び出されたメソッドは、そのパッケージの、対応する階層構造を生成する。次いで、この階層構造が全探索され、各クラス上にBUILDメソッドが呼び出される。これらのメソッドは、（例えば、ファイル、ライブラリなどを記憶する）リポジトリ２１５からエンドポイントにインストールすべきエンティティを取得する。次いで、取得されたエンティティがパッケージ２０５に追加される。
【００３１】
パッケージ２０５は、異なる２つのフォーマットで作成することができる。BUILTフォーマットでは、エンドポイントにインストールすべきエンティティは、作成時にリポジトリ２１５から収集され、パッケージのデータ・セクション２０５ｄにインポートされる。このようにして、エンティティはフリーズされ、すべてのエンドポイントでいつでもパッケージ２０５の同じコピーを受け取るようになる。逆に、NON_BUILTフォーマットでは、パッケージを配布する必要のあるときだけエンティティが収集される（したがって、エンドポイントはいつも各エンティティの最新版を受け取る）。
【００３２】
NON_BUILTフォーマットはまた、すでに同じパッケージを受け取っているエンドポイントに修復モードでパッケージを配布するために使用される。（対応するオプション・フラグで識別された）このパッケージは、各クラス上のメソッドを呼び出して各エンティティが正しくエンドポイントにインストールされているかどうか検証するために、各エンドポイントに対応する階層構造を全探索させる。（例えば、欠けているため、または誤ったバージョンであるため）修復すべきエンティティのリストが生成されソース・ホストに戻される。次いで、ソース・ホストは、エンドポイントに正しいエンティティをインストールするための、対応する（差分）パッケージを構築する。この技法は、通常、（例えば、間違えて、あるいは他のソフトウェア製品をインストール中に）エンドポイントのユーザによって削除または更新されたエンティティに起因する、エンドポイント中の不整合を検出し修復するために使用される。最後の配布プロセス以後に修正されたエンティティを配布するためだけにも同じ技法が使用される。
【００３３】
さらに、集合体２１０はパッケージ２０５の自動生成を可能にするツールを含む。具体的には、このツールは、ソフトウェア製品の配布先であるエンドポイントに対応する初期状態のワークステーション（またはその選択された部分）のスナップショットを取ることによって動作する。次いで、ソフトウェア製品が、そのワークステーションにインストールされ、新しいスナップショットが取られる。ツールは、対応するパッケージ２０５を生成するために、２つのスナップショット間の差を検出する。その結果得られたパッケージの命令セクション２０５ｉを復号して、望ましくないアクションがないか調べるとともによい状態で構築するために検査することが好ましい。
【００３４】
通信サービス２２０は、パッケージ２０５にアクセスするためのインターフェースを提供する。サービス２２０はさらに、エンドポイントから受け取った対応する要求に応答して差分パッケージ２０５を構築し配布することを制御する、修復モジュール２２５と結合している。
【００３５】
エンドポイントにある他の通信サービス２３０は、ソフトウェア配布プロセスを管理する。サービス２３０は、エンドポイントでソース・ホストから受け取ったパッケージを有効にするエンジン２３５と通信する。エンジン２３５は、エンドポイントの現在のハードウェア構成を記憶しているリポジトリ２３７にアクセスする。構成リポジトリ２３７は、（ＣＰＵモデルやＲＡＭサイズなど）対応するハードウェア・パラメータの値をそれぞれが指定する一連のレコードを含む。エンジン２３５は、ソフトウェア配布プロセスのログ２４０を管理する。ログ２４０は、エンドポイントに配布されたパッケージごとにアクションの定義および対応する条件の定義を記憶するカタログからなる。さらに、配布時における各条件の評価結果を示すためにフラグが使用される。さらに、エンジン２３５は、配布プロセスの結果として更新されたエンティティまたはエンドポイントから除去されたエンティティのバックアップ・コピー２４５を作成する。
【００３６】
エンドポイントにエンティティを追加するためのアクション・リスト２４７ａおよびエンドポイントからエンティティを除去するためのアクション・リスト２４７ｒは、修復モードで配布されたパッケージに応答してエンジン２３５によって生成される。さらに、パッケージ・カタログ２４０はモニタ２５０によってアクセスされる。モニタ２５０は、構成リポジトリ２３７を介して（エンドポイントの新しい構成をもたらす）どんな変更も検出する。したがって、モニタ２５０は、エンドポイントの新しい構成に現在合っているエンティティを追加するためのアクション・リスト２４７ａ、および新しい構成にもはや合っていないエンティティを除去するためのアクション・リスト２４７ｒを生成する。追加アクション・リスト２４７ａおよび除去アクション・リスト２４７ｒは、対応する差分パッケージの構築をトリガするために、（サービス２３０を介して）ソース・ホストに通知される。
【００３７】
アプリケーション全体および対応するデータが違った構造になっている場合、パッケージが他の構造を有する場合（例えば、ユーザごとのアクションの概念がサポートされている場合）、（マルチメディア作品などの）等価なソフトウェア機能が配布される場合、異なったモジュールおよび機能が提供される場合（例えば、ソース・ホストが、切断されたコンピュータ上でパッケージをテストするためのモジュールを記憶している場合）も同様な考慮が適用される。あるいは、パッケージが異なった方法で作成される、構成リポジトおよび／またはパッケージ・カタログが等価のメモリ構造で置き換えられる、（ハードウェアまたはソフトウェアの）他のパラメータがエンドポイントの構成を定義するために使用される、エンドポイントの構成の変更が異なった方法で検出される（例えば、エンドポイントの電源投入時ごとにその構成がチェックされる）、追加アクション・リストおよび除去アクション・リストが等価な情報で置き換えられるなどの場合もそれぞれ同様な考慮が適用される。
【００３８】
次に図５では、パッケージの展開に対応するロジック・フローが方法３００ａとして示されている。この方法は、ブロック３０３から開始する。ブロック３０６で、パッケージは、エンドポイントで実行されるアクション、およびその各条件を定義することによって作成される。次いで、エンドポイントにインストールされるエンティティがパッケージ中に組み込まれる。ブロック３０９に移ると、操作者がサーバに配布要求をサブミットする。配布要求はソース・ホストに送られ、ソース・ホストはサーバに識別コードを戻して、操作者が配布プロセスをモニタしかつ制御できるようにする。操作者が配布プロセスを休止または取り消すことができるようにするコマンドも利用できる。追加のコマンドを用いて、操作者は配布プロセスの完了後に詳細なレポートを要求することができる。
【００３９】
次に、ブロック３１２を参照すると、パッケージがエンドポイントに送信される。配布プロセスは、エンドポイントに達する前に、ゲートウェイの階層を横切って行われる。ゲートウェイは、リピータ（またはデポ）として動作し、パッケージがそこにロードされ記憶される。エンドポイントのエンジンは、パッケージのラベルを与えられる。次いで、エンドポイントは、同期多重化技法を使用して直接パッケージをダウンロードするために、最も近いゲートウェイへの通信チャネルを開く。パッケージの命令セクションがエンドポイントで受信される最初のファイルである。ブロック３１５で、エンドポイントの作業メモリ中でパッケージの階層構造を作成するために、命令セクションを読み取ると同時に復号する。
【００４０】
エンジンは、このようにして得られた階層構造を読み取り、トップダウンで全探索する（階層最上位でパッケージのインスタンス上の所望のメソッドを呼び出し、次にこのメソッドが子供の同じメソッドを呼び出すことによって）。ブロック３１８で、エンジンは、エンドポイントの構成が関連する条件に合っているかどうかアクションごとに検査する。アクションが実行できない場合、方法はブロック３２１（後述する）に進む。逆に、エンドポイントの構成がアクションに関連する条件に合った場合、方法はブロック３２４に進む。アクションが、エンドポイントの既存エンティティの更新（例えば、ファイルの消去または置換）を含む場合は、ブロック３２７で、エンティティのバックアップ・コピーが行われる。次いで、方法はブロック３３０に進む。さもなければ（例えば、アクションが新ファイルの追加に関するものであるとき）、方法はブロック３３０に直接進む。
【００４１】
ブロック３３０で、アクションが実行される。アクションが、インストール可能オブジェクトを指定した場合、エンドポイントにそのエンティティが追加されるか、エンドポイントからエンティティが除去される。エンティティが複数のパッケージ内で共用されている場合、いくつのパッケージがそのエンティティを使用しているかを示すために、エンジンはカウンタをエンティティと関連付ける。共用エンティティを追加するとカウンタは増加し、一方、除去するとカウンタは減少する。エンティティは、カウンタがゼロ（つまり、当該エンティティを使用しているパッケージが他にない）になったときだけエンドポイントから物理的に除去される。次いで、方法はブロック３２１に進む。
【００４２】
次に、ブロック３２１では、各条件を含むアクションおよびその評価結果がパッケージ・カタログ中にログされる。ブロック３３３で、パッケージの最後のアクションが処理されたかどうか判定するためのテストが行われる。処理されていない場合、ブロック３１８に戻って、新しいアクションを検証し多分実行する。逆に、パッケージの最後のアクションが処理されていたとき、最終ブロック３３５で、この配布プロセスは終了する。
【００４３】
次に図６に移ると、エンドポイント上で走るモニタは、ブロック３３５から開始する他の方法３００ｂを実行する。ブロック３３７で、モニタはイベントが生じるのを待つループに入る。エンドポイントの構成の変更が検出されると、ステップ３３９〜３６３が実行される。逆に、エンドポイントがシャットダウンされた場合、最終ブロック３６９でこの方法は終了する。
【００４４】
次に、ブロック３３９では、エンドポイントの新しい構成をもたらす（ハードウェアの更新などの）どんな変更が起きても、それはそれぞれのリポジトリに記録される。これにより、モニタはハードウェア・パラメータおよび関係する新しい値のリストの変更を検出することができる。これに応答して、モニタは、更新によって修正された１つまたは複数のハードウェア・パラメータに基づく条件を有するすべてのアクションを識別するために、パッケージ・カタログの走査をトリガする。
【００４５】
ブロック３４２で、これらのアクションごとに、対応する条件が再度評価される。条件が新しい構成中で有効になった場合、ブロック３４５で、そのアクションが追加アクション・リスト中に挿入され、方法はブロック３４８（後述する）に進む。条件が新しい構成中でもはや有効ではない場合、ブロック３５１で、そのアクションは除去アクション・リストに挿入され、方法はブロック３４８に進む。評価結果が変わらなかった場合（つまり、条件が有効または無効のままである場合）、方法はブロック３４８に直接進む。判断ブロック３４８で、最後のアクションが処理されたかどうか判定するためのテストが行われる。処理されていない場合は、この方法は、次のアクションに関連する条件を評価するためにブロック３４２に戻る。
【００４６】
すべてのアクションが処理されるとすぐに方法はブロック３５７に進み、追加アクション・リストおよび除去アクション・リストがソース・ホストに通知される。ブロック３６０で、これに応答して対応する差分パッケージが構築される。差分パッケージの命令セクションは、追加アクション・リストのアクションにより要求されるエンティティのインストール、および除去アクション・リストのアクションの取り消しを指定する。差分パッケージのデータ・セクションは、エンドポイントにインストールすべき（追加アクション・リストによって識別される）エンティティを組み込む。次にブロック３６３を参照すると、差分パッケージがエンドポイントに配布され（上記の操作が繰り返され）る。その結果、追加アクション・リストに関連したエンティティは、エンドポイントにインストールされる。同時に、除去アクション・リストに関連したエンティティは（エンドポイントに追加されていた場合）除去され、あるいは（すでに除去されまたは別のバージョンと置き換えられていた場合は）バックアップ・コピーから復元される。次いで、方法はブロック３３７に戻り、新しいイベントが生じるのを待つ。
【００４７】
例えば、それぞれの条件を含む以下のアクションを指定するパッケージの配布を検討する。
ACTION_1:Add File_1 if CPU=Model_1
ACTION_2:Remove File_2 if RAM≦64Mbytes
ACTION_3:Add File_3 if RAM≦64Mbytes
ACTION_4:Add File_4 if RAM>64Mbytes
Model_1と異なるＣＰＵおよび３２メガバイトのＲＡＭを有するエンドポイントにパッケージが配布されたと仮定すると、ACTION_2とACTION_3に関連する条件だけが真である。したがって、エンジンは、（バックアップ・コピーの作成後に）File_2を除去し、次いで、File_3をインストールする（一方、File_1とFile_4は、エンドポイントへの転送さえも行われない）。
【００４８】
ハードウェアの更新がエンドポイントで実行される。更新には、Model_1タイプの新しいＣＰＵのインストール、およびＲＡＭサイズを１２８メガバイトに増やすいくつかのメモリ・モジュールのインストールが含まれる。これらの変更は、ACTION_1とACTION_4の条件を有効にするが、ACTION_2とACTION_3の条件はもはや有効ではない。それに応答して、ACTION_1、ACTION_4を実行しかつACTION_2、ACTION_3を取り消すための要求がソース・ホストに送信される。ソース・ホストは、対応する差分パッケージをそれに従って構築し、次いで、その差分パッケージがエンドポイントに配布される。その結果、File_2が（そのバックアップ・コピーから）復元され、File_3が除去される。同時に、File_1とFile_4がエンドポイントで受信され、インストールされる。
【００４９】
（例えば、エンドポイントの障害のあとに再始動または再ブートできるようにするために、ソフトウェア配布プロセス中に定期的に書き込まれるチェック・ポイントを用いた）等価な方法が実行される場合、異なる技法によってパッケージが展開される場合、パッケージが、（各アクションをまず作成し、次いでコミットし、作成段階で不具合が生じた場合に整合性のある状態にロールバックできるようにする）トランザクション・モードで配布される場合なども同様な考慮が適用される。
【００５０】
より一般的には、本発明は、ソフトウェア配布方法を提案する。この方法は、対応するソフトウェア機能を有効にするために、複数の各ターゲット・コンピュータで実行されるアクションの指示を含むパッケージを提供する（ソース・コンピュータで実行される）ステップから開始する。１つまたは複数のアクションが、ターゲット・コンピュータの構成に対して条件付けられる。パッケージは、ソース・コンピュータからターゲット・コンピュータに送信され、ターゲット・コンピュータの構成に合ったアクションが実行される。本発明の方法では、ターゲット・コンピュータの新しい構成をもたらす変更が検出される。新しい構成に合ったソフトウェア機能を有効にするための訂正アクションが決定される。次いで、その訂正アクションが実行される。
【００５１】
提案の解決策は、ソース・コンピュータとターゲット・コンピュータの間の協調をサポートするモデルに基づいている。
【００５２】
本発明の方法は、ターゲット・コンピュータ中での不整合を回避する。
【００５３】
具体的には、考案した解決策は、ターゲット・コンピュータの構成と互換性のないソフトウェア機能によりターゲット・コンピュータの動作が損なわれないようにする。
【００５４】
本発明の方法は、（ターゲット・コンピュータの構成がしばしば変更される）高度に動的な環境で特に有利であり、異なるアプリケーションでの使用が排除されない場合であってもそうである。
【００５５】
上記の本発明の好ましい実施形態は、さらに利点を提供する。
【００５６】
具体的には、エンドポイントに配布された各パッケージは、その構成の変更によって影響を受けるすべての条件を識別するために走査される。これらの条件は再度評価され、エンドポイントの新しい構成に現在合った対応するアクションが実行される。
【００５７】
このようにして、パッケージのすべての条件の再評価を必要とせずに、訂正アクションが非常に簡単に決定される。
【００５８】
配布時に、パッケージのすべてのアクションおよび条件を、対応する評価結果と一緒にパッケージ・カタログ中にログすることが好ましい。
【００５９】
考案した解決策は、ソフトウェア配布プロセスの有効性を改善する。
【００６０】
有利には、新しい構成のためにエンドポイントにインストールされるエンティティが、ソース・ホストに要求される。
【００６１】
提案の機能は、エンドポイントにおけるメモリ空間の浪費を回避する。
【００６２】
しかし、本発明の解決策は、異なる方法で条件を定義する、新しい構成中で各パッケージのすべての条件を評価する、様々な情報をログする、パッケージ全体をエンドポイントに記憶する、ソース・ホストの制御下で実行すべきアクションを決定するなども実施可能である。
【００６３】
訂正アクションは、エンドポイントの新しい構成にもはや合わなくなった実行済みアクションの取り消しをさらに指定することが好ましい。
【００６４】
この追加のステップは、（新しい構成で必要なすべてのエンティティと共に）エンドポイントにおける整合条件の復元を可能にする。
【００６５】
他の改良として、実行されたアクションによって影響を受けたエンティティが、そのバックアップ・コピーから復元される。
【００６６】
したがって、配布プロセス中に削除または更新されたどんなエンティティもその元のバージョンに復元することができる。
【００６７】
代替として、どんなバックアップ・コピーも必要とせずにアクションが取り消され、バックアップ・コピーが他の場所に記憶され、エンティティは復元することができず、またはアクションは取り消し可能な方法では実行されない。
【００６８】
本発明の好ましい実施形態では、追加アクション・リストおよび除去アクション・リストがソース・ホストに送信され、それに従って、対応する訂正アクションを実行させる差分パッケージをソース・ホストが構築する。
【００６９】
提案の解決策は、エンドポイントで実行される任意のアクションの中央制御を提供する。差分パッケージの使用により、（追加アクション・リストおよび除去アクション・リストのすべてアクションを確実に実行して）エンドポイント中のどんな不整合も阻止することが可能になる。さらに、この機能は、ソース・ホストですでに利用可能な修復モジュールを活用して実装することができる。
【００７０】
しかし、本発明の方法は、異なる方法で訂正アクションを行い、除去アクション・リストのアクションをエンドポイントで直接取り消し、さらにはソース・ホストで差分パッケージを構築するための専用モジュールを提供することによって実施するのにも適している。
【００７１】
本発明による解決策を、ＣＤ−ＲＯＭで提供されるコンピュータ・プログラム・アプリケーションで実装すると有利である。
【００７２】
アプリケーションは、クライアント・サーバ・アーキテクチャを有する。具体的には、アプリケーションは、ソース・ホストにインストールされたプログラム、および各エンドポイントにインストールされたプログラムからなる。さらに、エンドポイントのプログラムは、別個に実装し、スタンドアロン製品として市販するのにも適していることに留意されたい。
【００７３】
代替として、このプログラムは、フロッピー（Ｒ）・ディスクで提供され、ハードディスクにプリロードされ、もしくは他の任意のコンピュータ可読媒体に記憶され、ネットワーク（通常はインターネット）を介してコンピュータに送られ、ブロードキャストされ、またはより一般的に、コンピュータの作業メモリに直接ロード可能な任意の他の形式で提供される。しかし、本発明による方法は、異なるアーキテクチャを有するアプリケーション、さらには（例えば、半導体材料の１つまたは複数のチップに集積化された）ハードウェア構造を使用しても実施することができる。
【００７４】
ローカルなおよび固有の要件を満たすために、当業者なら上記の解決策に多くの修正および改変を適用できようが、それらはすべて添付の特許請求の範囲によって定義される本発明の保護の範囲内に含まれることは当然である。
【図面の簡単な説明】
【００７５】
【図１】本発明の方法が使用できるシステムの概略のブロック図である。
【図２】本システムの汎用コンピュータの機能ブロック図である。
【図３】本システムのソース・ホストの作業メモリおよびエンドポイントの作業メモリの部分的な内容を示す図である。
【図４】ソフトウェア配布プロセス中で用いられるパッケージの階層構造を示す図である。
【図５】ソフトウェア配布プロセスの様々な段階のロジックを説明する図である。
【図６】ソフトウェア配布プロセスの様々な段階のロジックを説明する図である。
【図１】
2005522757.tif 000003
【図２】
2005522757.tif 000004
【図３】
2005522757.tif 000005
【図４】
2005522757.tif 000006
【図５】
2005522757.tif 000007
【図６】
2005522757.tif 000008
【国際調査報告】
2005522757.tif 000009
2005522757.tif 000010
2005522757.tif 000011