(57)【要約】【課題】 パッケージとそのパッケージの依存関係の展開を提供する。【解決手段】 インタフェースはパッケージのコンポーネントを公開しその依存関係を判定するよう動作する。動作中、コンポーネントが依存するこれらの要素を特定するためにパッケージコンポーネントに対してスキャンが行われる。このスキャンの結果は展開されるべきパッケージに見つけられるコンポーネントに対する依存関係のリストである。例示的なインタフェースはコンポーネントのすべてと展開用パッケージのそれらコンポーネントの依存関係を統合しマージするようさらに動作する。展開された後でパッケージを拡張しコンポーネントおよびそれらの依存関係を新しい環境に置くために、新しく展開された環境でインタフェースが実行される。パッケージアセンブリおよび展開の一部として判定された依存関係を使用してインタフェースはコンポーネントが適切に展開され、適切に動作することを保証する。【選択図】 図４
2005011359.tif 000002
【特許請求の範囲】
【請求項１】
コンポーネントを展開する方法であって、
それ自体の依存関係を協働インタフェースに公開するコンポーネントにより依存関係を定義するステップと、
定義された依存関係のリストを生成するステップと、
前記定義された依存関係に関連付けられたファイルを特定するステップと、
展開可能バンドルを生成するために前記依存関係のリストと特定されたファイルを処理するステップと
を備えることを特徴とする方法。
【請求項２】
前記展開可能バンドルを協働環境に伝達するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記展開可能バンドルを生成するために、前記依存関係リスト、前記特定されたファイル、およびデフォルトのコンポーネント要素をマージするステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
デフォルトの要素およびデフォルトでない要素を特定するために前記コンポーネントをスキャンするステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記展開可能バンドルに含めるためにインストーラコンポーネントを提供するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記展開可能バンドルをコンピューティング環境にインストールすることにより前記展開可能バンドルを確認するステップ
をさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記展開可能バンドルに含めるために構成ファイルを提供するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記処理するステップは、前記展開可能バンドルを生成するために前記依存関係リスト、前記特定されたファイル、およびデフォルトのコンポーネント要素をマージするステップをさらに含む
ことを特徴とする請求項１に記載の方法。
【請求項９】
前記展開可能バンドルを生成するために前記依存関係リスト、前記特定されたファイル、およびデフォルトのコンポーネント要素の前記マージを実行するためのマージモジュールを提供するステップ
をさらに備えることを特徴とする請求項８に記載の方法。
【請求項１０】
それ自体の依存関係を協働インタフェースに公開するコンポーネントにより依存関係を定義し、
定義された依存関係のリストを生成し、
前記定義された依存関係に関連付けられたファイルを特定し、
展開可能バンドルを生成するために前記依存関係のリストと特定されたファイルを処理する
ためのコンピュータ可読命令を有する
ことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１１】
展開用パッケージの作成に使用するためのデータ構造であって、
パッケージのコンポーネントを表すデータを含んでいるデータフィールドと、
前記パッケージコンポーネントが依存するアイテムを特定するために第１のフィールドをスキャンすることによって前記パッケージの前記コンポーネントを表す前記データを含んでいる前記フィールドから導いた依存関係データを含んでいるデータフィールドと、
前記データ構造の終わりを区切るよう機能するフィールドと
を備えたことを特徴とするデータ構造。
【請求項１２】
前記パッケージコンポーネントを表すデータと前記コンポーネントの依存関係をマージすることによって依存関係を含んでいる前記データフィールドから導いたフィールド
をさらに備えたことを特徴とする請求項１１に記載のデータ構造。
【請求項１３】
前記マージしたデータを含んでいる前記フィールドは、前記パッケージを展開する方法に関する構成情報を表すデータを含んでいる
ことを特徴とする請求項１２に記載のデータ構造。
【請求項１４】
前記パッケージをインストールするためのインストールプログラムを命令するためのフィールド
をさらに備えたことを特徴とする請求項１１に記載のデータ構造。
【請求項１５】
依存関係を有するパッケージを展開するシステムであって、
前記パッケージのコンポーネントの前記依存関係を表す依存関係データと、
展開可能バンドルを生成するために前記依存関係データを前記パッケージの前記コンポーネントとマージするよう動作するマージモジュールと
を備えたことを特徴とするシステム。
【請求項１６】
前記展開可能バンドルを生成するために前記マージモジュールによってマージされているインストーラ
をさらに備えたことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記展開可能バンドルを生成するために前記マージモジュールによってマージされている構成情報
をさらに備えたことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記展開可能バンドルを生成するために前記マージモジュールによってマージされているデフォルトパッケージコンポーネント
をさらに備えたことを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記展開可能バンドルを協働コンピューティング環境の伝達に使用するための通信手段
をさらに備えたことを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記パッケージの前記適切な展開を確認するための確認手段
をさらに備えたことを特徴とする請求項１９に記載のシステム。
【請求項２１】
依存関係を有するコンポーネントの展開に使用するためのシステムであって、
コンポーネントの前記依存関係を判定するための手段であって、該コンポーネントによって前記依存関係を公開される手段と、
展開可能バンドルを生成するために前記コンポーネントの前記依存関係を前記コンポーネントとマージするための手段と
を備えたことを特徴とするシステム。
【請求項２２】
前記展開可能バンドルをインストールするための前記マージする手段と協働するインストール手段
をさらに備えたことを特徴とする請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンポーネントを展開する方法に関する。より詳細には、一般に、コンピューティングアプリケーションコンポーネントの展開（deployment）に関し、適切な動作を保証するためにパッケージの関連コンポーネント群が同時に展開されるように依存関係を使用するパッケージの展開に係る、コンポーネントを展開する方法、記録媒体、データ構造、依存関係を有するパッケージを展開するシステム、および依存関係を有するコンポーネントの展開に使用するためのシステムに関する。
【背景技術】
【０００２】
コンピューティングおよび通信技術の発達により、これまでも、またこれからも市場はグローバル化し、民間事業と政府事業は共に拡大する。広範囲にわたるデータと情報の共用が地理的に制限されたことは昔の話になりつつある。さらに、これらの技術的な発達により、かつてスタンドアロンマシンで使用する予定であったコンピューティングアプリケーションは、しばしば、大規模なコンピューティング環境ネットワークおよびプラットフォーム全体に展開されている。より多くのデータおよびコンピューティングアプリケーションが共用されるようになると、保全性と再利用性を保証するために、このデータとアプリケーションの展開を管理し、制御する必要性が生じてくる。
【０００３】
多くの組織は、企業の意思決定を改善するためにデータを集中化することを必要とする。しかし、これら組織のデータは様々なフォーマットで別々の位置に記憶される場合がある。データ変換サービス（ＤＴＳ；Data Transformation Service）は、異種のソースからＤＴＳ接続がサポートする単一または複数の宛先へのデータの抽出、変換、および統合を可能にする一組のツールを提供することにより、この重要な業務上の必要性に対応する。ＤＴＳパッケージを図形的に構築するためにＤＴＳツールを使用することにより、またはＤＴＳオブジェクトモデルを使用してパッケージをプログラミングすることにより、組織の専門化した事業上の必要性に合わせて調整された、カスタムデータ移動ソリューションを作成することができる。
【０００４】
ＤＴＳパッケージは、ＤＴＳツールにより、またはプログラム上で、様々な協働コンピューティングアプリケーションに、または構造化されたストレージファイルに組み立てられた、接続と、ＤＴＳタスクと、ＤＴＳ変換と、ワークフロー制約との系統立った集合体である。一般に、各パッケージは、パッケージの実行時に、連続して、または並列で実行される１つまたは複数のステップを含んでいる。実行されたとき、パッケージは正確なデータソースに接続し、データおよびデータベースオブジェクトをコピーし、データを変換し、他のユーザまたはプロセスにイベントを通知する。パッケージは編集し、パスワード保護し、実行をスケジュール管理し、バージョンごとに取り出すことができる。
【０００５】
複数企業間では、パッケージが絶えず移動されていることは驚くべきことではない。パッケージが移動されるとき、大抵の場合は、システムに対するアップグレード、または開発マシンからテストマシンへ、システムへの移動が必要となる。かつてこのようなプロセスは、たくさんの試行錯誤なしに達成に成功することは困難であった。具体的には、ＤＴＳはプラグ可能なコンポーネントアーキテクチャであり、サードパーティは、コンポーネントを作成することができ、どのコンポーネントがどのパッケージに属するかを即座に確認することが困難になる。さらに、ＤＴＳセットアップの現在の実施態様は、デフォルトコンポーネントしかインストールせず、したがって、パッケージが依存している項目のすべてを確認し、展開することが困難になる。
【０００６】
現在、パッケージを展開することを希望する人は、所与のパッケージのコンポーネントすべてに対して依存関係すべてを手作業で集めるしかない。このようなプロセスは、パッケージを展開する人が特定のパッケージについてコンポーネントすべてを特定し、次いでファイル、テーブル、他のタスク、および／または任意の特定コンポーネントが依存する他のパッケージのすべてを特定する必要があるので、時間も労力もかかる。欠落している要素（すなわち、見過ごされた依存関係）がある場合、展開されたパッケージは新しく展開された環境で適切に動作しないので、このような情報はパッケージの正常な展開には非常に重要である。収集され、収集された後で、パッケージを組み立て展開する人はコンポーネントすべて（例えば、タスク、ファイル、テーブル、および他の依存関係）を展開用のパッケージにマージしなければならない。展開された後で、パッケージが適切に動作することを保証するために、同じプロセスを逆方向で新しく展開された環境で実行しなければならない。簡単に言えば、既存の手法は効率が悪く、エラーが導入され伝播される可能性のあるかなりの余地を残している。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来のシステムには上述したような種々の問題があり、従来技術を克服するシステムおよび方法が求められており、さらなる改善が望まれている。
【０００８】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、依存関係をベースとしたパッケージ展開のための、コンポーネントを展開する方法を提供することにある。
【課題を解決するための手段】
【０００９】
パッケージの展開およびそれらの依存関係が提供される。例示の実施態様では、インタフェースはパッケージのコンポーネントを公開し、コンポーネントの依存関係を判定するよう動作する。動作中、コンポーネントが依存するこれらの要素を特定するためにパッケージコンポーネントに対してスキャンが行われる。このスキャンの結果は、展開されるべきパッケージ内で見つけられたコンポーネントに関する依存関係のリストである。インタフェース例は、コンポーネントのすべてと展開用パッケージのそれらコンポーネントの依存関係を統合し、マージするようさらに動作する。展開された後で、パッケージを拡張し、コンポーネントおよびそれらの依存関係を新しい環境に置くために、新しく展開された環境でインタフェースが実行される。パッケージアセンブリおよび展開の一部として判定された依存関係を使用して、インタフェースはコンポーネントとコンポーネントが適切に展開され、適切に動作することを保証する。
【００１０】
本発明の他の態様を以下で説明する。
【発明の効果】
【００１１】
本発明によれば、依存関係をベースとしたパッケージ展開が可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。依存関係をベースとしたパッケージ展開のためのシステムおよび方法を、添付の図面を参照してさらに説明する。
【００１３】
概要
しばしば、データ変換を使用すると、依存パッケージは、特に１つのマシンから別のマシンに展開することが困難である。これは主として、そのパッケージが依存する項目がそのパッケージとともに移動された場合と移動されない場合とがあるからである。本明細書に記載のシステムおよび方法は、依存パッケージの展開を提供する。動作中、パッケージコンポーネントは、正常に実行することをコンポーネントが要求するファイルのすべてを列挙するインタフェースを利用することができる。展開中にコンポーネントとそれらコンポーネントの依存関係をマージするために使用されるマージモジュールも提供される。展開中、パッケージは、関連するマージモジュールを探してマージモジュールキャッシュを調べる。この情報を使用して、当該パッケージの依存先であるコンポーネントを展開バンドルまたはセットアップファイルに入れて、マージモジュールを含むセットアップバンドルが構築される。実際には、展開された環境にパッケージをインストールすることができるように、展開された環境にセットアップが伝達される。
【００１４】
本明細書に記載のシステムおよび方法は依存パッケージの展開の状況で説明するが、提供した例の範囲外の様々な方法で展開技術を利用することができるということが理解されよう。
【００１５】
Ａ．コンピューティング環境例
図１は、本発明を実施することのできる適切なコンピューティングシステム環境１００の一例を示している。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に関していかなる制限をも示唆するものではない。また、コンピューティング環境１００は、動作環境例であるコンピューティングシステム環境１００に示されているコンポーネントのどれか１つまたはこれらのいかなる組み合わせに関するいかなる依存または要件をも有するものと解釈されるべきではない。
【００１６】
本発明は、多くの他の汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明の使用に適している可能性のある周知のコンピューティングシステム、環境、および／または構成の例は、限定はしないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ（personal computer）、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのどれかを含む分散型コンピューティング環境などを含む。
【００１７】
本発明は、コンピュータが実行中の、プログラムモジュールのようなコンピュータ実行可能命令の一般的な状況で説明することができる。一般に、プログラムモジュールは、特定タスクを実行するかまたは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は、通信ネットワークまたは他のデータ伝送媒体を介してリンクされるリモート処理装置によってタスクが実行される分散型コンピューティング環境で実行することもできる。分散型コンピューティング環境では、プログラムモジュールおよび他のデータは、メモリストレージデバイスを含めてローカルおよびリモートのコンピュータ記憶媒体の両方に置くことができる。
【００１８】
図１を参照すると、本発明を実施するためのシステム例は、コンピュータ１１０の形式の汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントは、限定はしないが、プロセッサ１２０、システムメモリ１３０、およびシステムメモリを含めて様々なシステムコンポーネントをプロセッサ１２０に結合するシステムバス１２１を含むことができる。システムバス１２１は、メモリバスまたはメモリコントローラ、周辺機器バス、および様々なバスアーキテクチャのどれかを使用するローカルバスを含めて複数のタイプのバス構造のどれであってもよい。限定ではなく一例として、このようなアーキテクチャは、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バス（Ｍｅｚｚａｎｉｎｅバスとしても知られる）を含む。
【００１９】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセス可能ないかなる使用可能な媒体であってもよく、揮発性／不揮発性媒体、リムーバブル／ノンリムーバブル媒体の両方を含む。限定ではなく一例として、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータのような情報を記憶するためのいかなる方法または技術でも実施される揮発性／不揮発性のリムーバブル／ノンリムーバブル媒体の両方を含む。コンピュータ記憶媒体は、限定はしないが、ＲＡＭ（random access memory）、ＲＯＭ（read only memory）、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、フラッシュメモリまたは他のメモリ技術、ＣＤ（compact disc）−ＲＯＭ、ＤＶＤ（Digital Versatile Disc）または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、または所望の情報を記憶するために使用することができ、コンピュータ１１０がアクセスすることのできる他のいかなる媒体をも含む。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波または他のトランスポート機構のような変調されたデータ信号形式の他のデータを具体化し、いかなる情報搬送媒体をも含む。「変調されたデータ信号」という用語は、情報を信号に符号化するような方法でその特徴の１つまたは複数が設定または変更された信号を意味する。限定ではなく一例として、通信媒体は、有線ネットワークまたは直接配線接続のような有線媒体、および音響、ＲＦ（radio frequencies）、赤外線、および他の無線媒体のような無線媒体を含む。上記のどの組み合わせも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００２０】
システムメモリ１３０は、ＲＯＭ１３１およびＲＡＭ１３２のような揮発性および／または不揮発性メモリの形式のコンピュータ記憶媒体を含む。起動時などにコンピュータ１１０内の要素間で情報を転送することに役立つ基本ルーチンを含んでいるＢＩＯＳ（Basic Input/Output System）１３３は、通常、ＲＯＭ１３１に記憶される。ＲＡＭ１３２は、通常、プロセッサ１２０によって即座にアクセス可能であり、かつ／または現在操作中のデータおよび／またはプログラムモジュールを含んでいる。限定ではなく一例として、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００２１】
コンピュータ１１０は、他のリムーバブル／ノンリムーバブル揮発性／不揮発性コンピュータ記憶媒体も含むことができる。一例としてのみ、図１は、ノンリムーバブル不揮発性磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ１４０、リムーバブル不揮発性磁気ディスク１５２から読み取りまたはそれに書き込む磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭまたは他の光媒体のようなリムーバブル不揮発性光ディスク１５６から読み取りまたはそれに書き込む光ディスクドライブ１５５を示している。オペレーティング環境例で使用することのできる他のリムーバブル／ノンリムーバブル揮発性／不揮発性コンピュータ記憶媒体は、限定はしないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどを含む。ハードディスクドライブ１４１は、通常、インタフェース１４０のようなノンリムーバブルメモリインタフェースを介してシステムバス１２１に接続されており、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インタフェース１５０のようなリムーバブルメモリインタフェースによってシステムバス１２１に接続されている。
【００２２】
上記で説明し、図１に示したドライブおよびそれらの関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージをコンピュータ１１０に提供する。図１では、例えばハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶しているように示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても異なっていてもよいということに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、少なくともこれらが別物であることを示すために本明細書では異なる番号を付した。ユーザは、キーボード１６２および一般にマウス、トラックボール、またはタッチパッドと称されるポインティングデバイス１６１のような入力装置によってコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含むことができる。これらおよび他の入力装置は、システムバスに結合されているが、パラレルポート、ゲームポート、またはＵＳＢ（Universal Serial Bus）のような他のインタフェースおよびバス構造によって接続することのできるユーザ入力インタフェース１６０を介してプロセッサ１２０に接続されていることがしばしばである。モニタ１９１または他のタイプの表示装置も、ビデオインタフェース１９０のようなインタフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、出力周辺インタフェース１９５を介して接続することのできるスピーカ１９７およびプリンタ１９６のような他の周辺出力装置も含むことができる。
【００２３】
コンピュータ１１０は、リモートコンピュータ１８０のような１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードであってよく、通常は、コンピュータ１１０に関して上記で説明した要素の多くまたはすべてを含むが、但し、図１にはメモリストレージデバイス１８１しか示していない。図示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１および広域ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーク接続環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットでは一般的なものである。
【００２４】
ＬＡＮネットワーク接続環境で使用される場合、コンピュータ１１０はネットワークインタフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク接続環境で使用される場合、コンピュータ１１０は、通常、モデム１７２、またはインターネットのようなＷＡＮ１７３経由の通信を確立するための他の手段を含む。内蔵型であっても外付けであってもよいモデム１７２は、ユーザ入力インタフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク接続環境では、コンピュータ１１０に関して示したプログラムモジュールまたはその一部は、リモートメモリストレージデバイスに記憶することができる。限定ではなく一例として、図１は、メモリデバイス１８１に常駐するようにリモートアプリケーションプログラム１８５を示している。図示したネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用することができるということを理解されたい。
【００２５】
Ｂ．ネットワーク接続コンピューティング環境例
上記のコンピュータ環境１００は、コンピュータネットワークの一部として展開することができる。一般に、コンピュータに関する上記の説明は、ネットワーク環境に展開されたサーバコンピュータとクライアントコンピュータの両方に適用される。図２は、本発明を利用することのできる、サーバがネットワークを介してクライアントコンピュータと通信しているネットワーク環境例を示している。図２に示すように、複数のサーバ１０ａ、１０ｂなどは、通信ネットワーク１４（ＬＡＮ、ＷＡＮ、イントラネット、インターネットまたは他のコンピュータネットワークでよい）を介して複数のクライアントコンピュータ１１０ａ、１１０ｂ、１１０ｃ、または携帯電話１５、陸線電話（不図示）、およびＰＤＡ（Personal Digital Assistant）１７のようなコンピューティングデバイスと相互接続される。通信ネットワーク１４が例えばインターネットであるネットワーク環境では、サーバ１０ａ、１０ｂは、任意の数のＨＴＴＰ（HyperText Transport Protocol）またはＷＡＰ（Wireless Application Protocol）のような周知のプロトコルを介してクライアント１１０ａ、１１１０ｂ、１１０ｃが通信するウェブサーバであってよい。各クライアントコンピュータ１１０ａ、１１１０ｂ、１１０ｃには、サーバ１０ａ、１０ｂに対するアクセスを得るためにブラウザ（コンピューティングアプリケーション１８０ａ）を装備することができる。同様に、ＰＤＡ１７にはブラウザ（コンピューティングアプリケーション１８０ｂ）を装備することができ、携帯電話１５には様々なデータを表示し受信するためにブラウザ（コンピューティングアプリケーション１８０ｃ）を装備することができる。
【００２６】
動作中、ユーザ（図示せず）は、依存関係をベースとしたパッケージ展開を実行しているクライアントコンピューティングデバイスで実行中のコンピューティングアプリケーションと対話することができる。その報告は、サーバコンピュータに記憶し、クライアントコンピューティングデバイスを介して通信ネットワーク１４経由で協働ユーザに伝達することができる。
【００２７】
したがって、本発明は、ネットワークにアクセスしこれと対話するためのクライアントコンピューティングデバイス、およびクライアントコンピュータと対話するためのサーバコンピュータを有するコンピュータネットワーク環境で利用することができる。しかし、本明細書に記載のシステムおよび方法は、様々なネットワークベースのアーキテクチャで実施することができ、したがって、図示した例に限定されるべきではない。次に、本明細書にて説明されるシステムおよび方法を、現在例示している実施態様を参照してより詳細に説明する。
【００２８】
Ｃ．パッケージ展開  −  依存関係ベース  −  マージモジュール
依存関係をベースとしたパッケージ展開は、コンポーネントがそのファイルに依存している記述を規定し、したがってこれらのファイルはパッケージと一緒に移動することができる。実際には、コンポーネントは、当該コンポーネントが正常に実行することを必要とするファイルすべてを列挙するインタフェースを実装することができる。実際には、依存ファイルと展開用パッケージのコンポーネントをマージするためにマージモジュールが使用される。具体的には、マージモジュールは、再利用可能なセットアップコンポーネントの作成を可能にする。マージモジュールは、協働インストーラ間のセットアップコードの共用を可能にする。
【００２９】
特定の実施態様では、マージモジュール（．ｍｓｍ  ｆｉｌｅ）は、コンポーネントをインストールするためのファイル、リソース、レジストリエントリ、およびセットアップロジックを含んでいる単一パッケージである。動作中、マージモジュールは、一般に、単独ではインストールできないが、インストーラ（．ｍｓｉ）ファイルのコンテキスト内で使用される。マージモジュールは、正確なバージョンをインストールすることを保証して、特定コンポーネントに関する依存関係のすべてを捕らえることを可能にする。マージモジュールは分配された後で修正されず、代わりに新しいマージモジュールがコンポーネントのそれぞれの連続したバージョンに対して作成されるので、マージモジュールは強力である。
【００３０】
比較すると、別のコンピュータにアプリケーションおよびファイルをインストールするためにインストーラが使用され、複数のアプリケーションによって共用されるコンポーネントをインストールするためにマージモジュールが使用される。一般に、これら２つのタイプの間の主な違いはターゲットオーディエンスである。アプリケーションのエンドユーザによって直接に使用されることになるものはどれでも（実行ファイル、文書、ＨＴＭＬページ）、インストーラにパッケージすべきである。開発者しか使用することのできないものはどれでも（ＤＬＬ、コントロール、リソース）、マージモジュールにパッケージされ、これは次いでエンドユーザに分配するために開発者によってインストーラにパッケージすることができる。さらに、複数のアプリケーションによって共用される（または、共用される可能性を有する）コンポーネントはそのコンポーネント独自のマージモジュールに展開される。
【００３１】
図３は、パッケージ展開の概念の一例を示すブロック図である。図に示すように、第１のコンピューティング環境は、説明のための例のパッケージ３１０を含んでいる。パッケージ３１０内には、タスク３２５、カスタムファイルのＤＴＳ．ＤＬＬ３１５、単層（flat）ファイル３２０、ｆｔｐファイルのＦＴＰ．ＤＬＬ３３０、およびＤＴＳファイルのＤＴＳ．ＤＬＬ３３５がある。点線で示すように、パッケージおよびそのパッケージのコンポーネントは統合され、次いで矢印で示すように第２のコンピューティング環境に伝達される。考慮される本発明では、パッケージは、タスクとそのタスクのコンポーネントとの間の依存関係のリストを維持する。この情報は（矢印で示すように）展開の一部として伝達され、したがって、このパッケージは第２のコンピューティング環境で正常に実行され、操作される。
【００３２】
この例では、提供されたタスク３２５は、会社の売上高を計算し、追跡し、管理し、記憶し、伝達するために使用する会計タスクを含むことができる。したがって、タスク３２５には、単層ファイル３２０内で見つけることのできる売上高履歴情報を使用することを要求することができる。さらに、タスク３２５は、ＤＴＳ．ＤＬＬ３３５を使用してデータ記憶パッケージのような他のパッケージと協働することができる。
【００３３】
さらに、タスク３２５には、売上高を計算し、様々な国際通貨用にその売上高を換算することを要求することができる。この状況では、タスク３２５は、このような動作を実行するためにＣｕｓｔ．ＤＬＬ３１５のようなカスタマイズされたファイルを要求することができる。最後に、タスク３２５には、ファイル転送プロトコル（ｆｔｐ）（または他の通信プロトコル）を使用してその売上高情報を第２のコンピューティング環境に伝達することを要求することができる。この状況では、タスク３２５は、ｆｔｐタイプの通信のためにＦＴＰ．ＤＬＬ３３０を要求する。
【００３４】
理解されるように、その多くの機能を実行するタスク３２５は他のファイル、テーブル、およびコンポーネントに依存している。これもまた理解されるだろうが（点線で囲んで示したように）、パッケージ３１０用のファイル、テーブル、およびコンポーネントは、タスク３２５によってのみ使用されるようには作成されておらず、第１のコンピューティング環境で他のコンポーネント、パッケージ、タスクによって使用することができる。共用を行うと、パッケージ作成における混乱を緩和し、エラーを低減するために依存関係の適切な識別が望ましくなる。
【００３５】
理解されるだろうが、パッケージ例は、特定の依存関係を有する特定コンポーネントを含むように説明しているが、このような説明は説明を目的としたものに過ぎず、本明細書に記載の発明の概念は、様々な構成、コンポーネント、およびコンポーネント依存関係を有する様々なパッケージの作成に適用することができる。
【００３６】
図４は、依存関係パッケージ展開システム４００のブロック図を示している。図に示すように、依存関係パッケージ展開システム４００はマージモジュール４２５を含んでいる。マージモジュールは、ストックインストーラ４２０、パッケージ４３０、構成ファイル４３５、マージベースのテーブルおよびファイル４１０、およびファイル４１５と協働する。マージベースのテーブルおよびファイル４１０、およびファイル４１５は、ブロック４０５で実行される既存のマージベースのテーブルおよびファイルのスキャンから得られる。マージモジュール４２５は、矢印で示すように第２の環境に展開できる、依存をポピュレートしたパッケージャーリストおよびセットアップ実行可能ファイル４４０を生成するために、ストックインストーラ４２０、パッケージ４３０、構成ファイル４３５、マージベースのテーブルおよびファイル４１０、およびファイル４１５と協働する。
【００３７】
動作中、パッケージ４３０のコンポーネントがパッケージ４３０に追加すべき依存関係を有するか否かを判定するために、既存のマージベースのテーブルおよびファイルがスキャンされる。このスキャンにより、マージベースのテーブルおよびファイル４１０と他の依存関係のファイル４１５が得られる。マージベースのテーブルおよびファイルならびに他の依存関係ファイルのリストは、マージモジュール４２５への１つの入力として機能する。マージモジュール４２５は、パッケージャーリストおよびセットアップ実行可能ファイル４４０を生成するために、パッケージコンポーネントのすべてと、それらの依存関係ファイルおよびテーブルを統合し、それらをストックインストーラ４２０といくつかの構成ファイル４３５にマージするよう機能する。パッケージャーリストおよびセットアップ実行可能ファイル４４０は、第２の環境で実行された場合、パッケージ４３０にそれらの全ての依存ファイルおよびコンポーネントを提供する。
【００３８】
考慮される実施態様では、依存パッケージ展開システム４００は、パッケージャーリストおよびセットアップ実行可能ファイル４４０を作成する際に、ＭＩＣＲＯＳＯＦＴ（登録商標）Ｖｉｓｕａｌ  Ｓｔｕｄｉｏのマージモジュール依存関係アーキテクチャ（例えば、マージモジュールおよび関連ファイル）を利用する。具体的には、この状況では、パッケージ４３０はデフォルトＤＴＳコンポーネントを含んでいる。パッケージ４３０のデフォルトでない（例えば、サードパーティが作成した）コンポーネントのファイルおよびテーブル依存関係を判定するために、既存のＭＳＭテーブル（マージベースのテーブル）およびファイルのスキャンがブロック４０５で実行される。このようなプロセスは、パッケージタスクがその依存関係を公開し、タスクがそのような依存関係を公開するためにインタフェースに伝達することのできる、プロセスの結果であるということが理解されよう。Ｖｉｓｕａｌ  Ｓｔｕｄｉｏの状況では、インタフェースは、パッケージを組み立て、展開するために使用されるパッケージ展開ウィザードである。特定されたＭＳＭ（マージベースのテーブルおよびファイル４１０）および他のファイル４１５は、ＭＳＩリスト（パッケージャーリスト）およびセットアップ実行可能ファイル４４０を作成するために、Ｖｉｓｕａｌ  Ｓｔｕｄｉｏの標準マージモジュールによりストックＭＳＩインストーラ、パッケージ定義（例えば、デフォルトパッケージコンポーネント）、および構成ファイル４３５とマージされる。
【００３９】
図５は、パッケージおよびそのパッケージの依存関係を作成し展開する際に実行される処理を示している。図に示すように、処理はブロック５００から始まり、ブロック５０５に進み、そこでパッケージタスクはその依存関係を協働（cooperating）インタフェースに公開する。そこから処理はブロック５１０に進み、公開された依存関係が統合される。次いでブロック５１５で、依存関係が展開用デフォルトパッケージコンポーネントとマージされる。次いでブロック５２０でパッケージが展開され、さらにブロック５２５で処理が終了する。
【００４０】
図６は、展開された環境にパッケージが展開される際に実行される処理を示している。図に示すように、処理はブロック６００から始まり、ブロック６０５に進み、そこで伝達されたセットアップファイル（展開されたパッケージとその依存関係を含んでいる）が実行される。次いでセットアップファイル内で見つけられたパッケージがブロック６１０で拡張される。次いでパッケージ依存関係はブロック６１５で展開され、ブロック６２０で適切な展開を確認するためにパッケージタスクが実行される。そこから処理はブロック６２５で終了する。
【００４１】
Ｄ．結論
要約すると、本明細書に記載のシステムおよび方法は、依存関係をベースとしたパッケージ展開を提供する。しかし、本発明は、様々な修正形態および代替構成を可能とすることが理解されよう。本発明を本明細書に記載の具体的な構成に限定することを意図するものではない。反対に、本発明は、本発明の範囲および趣旨に含まれるすべての修正形態、代替構成、および等価形態を対象とするものである。
【００４２】
また、本発明は、（非無線および無線コンピュータ環境の両方を含む）様々なコンピュータ環境、部分的なコンピューティング環境、およびリアルワールド環境で実施することができるということも留意されたい。本明細書に記載の様々な技術は、ハードウェアまたはソフトウェア、もしくはこれらの組み合わせで実施することができる。好ましくは、これらの技術は、それぞれがプロセッサ、プロセッサによって可読の記憶媒体（揮発性／不揮発性メモリおよび／または記憶要素を含めて）、少なくとも１つの入力装置、少なくとも１つの出力装置を含むプログラム可能なコンピュータで実行中のコンピュータプログラム形式で実施される。プログラムコードは、上記の機能を実行し、出力情報を生成するために入力装置を使用して入力されたデータに適用される。出力情報は１つまたは複数の出力装置に適用される。各プログラムは、コンピュータシステムと通信するために、高レベル手順またはオブジェクト指向プログラミング言語で実施されることが好ましい。しかし、プログラムは、適宜、アセンブリ言語またはマシン語で実施することができる。いずれの場合も、この言語は、コンパイラ型言語またはインタプリタ型言語であってよい。そのようなコンピュータプログラムのそれぞれは、上記の手順を実行するためにコンピュータが記憶媒体またはデバイスを読み取る際に、そのコンピュータを構成し動作させるための、汎用または専用のプログラム可能コンピュータによって可読の、記憶媒体またはデバイス（例えば、ＲＯＭまたは磁気ディスク）に記憶されることが好ましい。このシステムは、このように構成された記憶媒体がコンピュータを固有の所定の方法で動作させる場合、コンピュータプログラムによって構成されたコンピュータ可読記憶媒体として実施されるものと見なすこともできる。
【００４３】
以上、本発明の実施態様を詳細に説明したが、当業者には、本発明の新規の教示および利点を著しく逸脱せずにこれらの実施形態に多くの追加の修正形態が可能であるということが容易に理解されよう。したがって、これらおよびすべてのこのような修正形態は、本発明の範囲内に含まれるものである。本発明は、特許請求の範囲によってさらによく定義することができる。
【図面の簡単な説明】
【００４４】
【図１】本発明を適用できる実施形態のコンピューティング環境例を示す略図である。
【図２】本発明を適用できる実施形態のコンピューティング環境例を示す、ネットワーク接続されたコンピューティング環境例を示す略図である。
【図３】本発明を適用できる実施形態のシステムおよび方法による依存関係をベースとしたパッケージ展開を利用したコンピューティング環境例を示すブロック図である。
【図４】本発明を適用できる実施形態の依存関係をベースとしたパッケージ展開を実行する際のデータフロー例を示すブロック図である。
【図５】本発明を適用できる実施形態の展開用にパッケージを準備するために実行される処理例の流れ図である。
【図６】本発明を適用できる実施形態のかつて展開されたパッケージを拡張するために実行される処理例の流れ図である。
【符号の説明】
【００４５】
１０ａ  サーバコンピュータ
１０ｂ  サーバコンピュータ
１４  通信ネットワーク
１１０ａ  クライアントコンピュータ
１１０ｂ  クライアントコンピュータ
１１０ｃ  クライアントコンピュータ
１８０ａ  コンピューティングアプリケーション
１８０ｂ  コンピューティングアプリケーション
１８０ｃ  コンピューティングアプリケーション
３１０  パッケージ
３２０  単層ファイル
３２５  タスク
３４０  第２のコンピューティング環境
４０５  既存のマージベースのテーブルおよびファイルのスキャン
４１０  マージベースのテーブルおよびファイル
４１５  ファイル
４２０  ストックインストーラ
４２５  マージ
４３０  パッケージ
４３５  構成ファイル
４４０  パッケージャーリストおよびセットアップ実行可能
【図１】
2005011359.tif 000003
【図２】
2005011359.tif 000004
【図３】
2005011359.tif 000005
【図４】
2005011359.tif 000006
【図５】
2005011359.tif 000007
【図６】
2005011359.tif 000008