(57)【要約】【課題】アプリケーションの機能に対して更新または追加を容易に提供するためのダウンロードする方法およびシステムを提供する。【解決手段】ソリューションプロパティが文書に添付され、文書が遠隔位置にあるソリューションを探し出すことができるようにソリューション位置が文書に添付される。ソリューションおよびソリューションを構成する複数のソフトウェアコンポーネントは、ソフトウェアコンポーネントのマニフェストに列挙（ｌｉｓｔ）される。このマニフェストは、文書がアクセスすることのできる遠隔サーバ上のソフトウェアコンポーネントの遠隔ライブラリに格納される。【選択図】　　　　図１
2004013903.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションおよび文書機能に更新または追加を提供するために、ソフトウェアアプリケーションに遠隔ソースからソフトウェアコンポーネントをダウンロードする方法において、
文書に対する許容データ内容と、データ型と、データ構造とを定義するスキーマを前記文書に添付するステップと、
前記文書を前記スキーマに関連付けるように前記文書を構成するステップと、
ソリューションを前記文書の構造に関連付けるステップと、
前記文書から遠隔の位置に前記ソリューションを含んでいる複数のソフトウェアコンポーネントをアセンブルするステップと、
前記複数のソフトウェアコンポーネントが提供する機能を入手するために前記文書が前記ソリューションを呼び出すことを可能にするステップと、
前記文書に前記機能を提供するために前記複数のソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップと
を含むことを特徴とする方法。
【請求項２】
前記複数のソフトウェアコンポーネントが提供する機能を入手するために前記文書が前記ソリューションを呼び出すことを可能にするステップが、
前記文書を前記ソリューションに向けるためにソリューションプロパティを前記文書に添付するステップと、
前記文書が前記遠隔位置にある前記ソリューションを探し出すことを可能にするためにソリューション位置を前記文書に添付するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ソリューション位置が前記ソリューションのユニフォームリソースロケータ（ＵＲＬ）を含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記ソリューションプロパティを前記文書に添付するステップが、前記ソリューションの複数のサブセットを前記文書の特定部分に関連付けるために複数のソリューションプロパティを前記文書に添付するステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項５】
ソフトウェアコンポーネントのマニフェストに前記ソリューションと前記複数のソフトウェアコンポーネントとを列挙するステップと、
前記マニフェストを、前記文書がアクセス可能な遠隔サーバのソフトウェアコンポーネントの遠隔ライブラリに格納するステップと
をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記マニフェストの許容データ内容と、データ型と、データ構造とを定義し、前記ソリューションを前記文書に関連付けるために前記マニフェストにスキーマを添付するステップ
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップに先立って、
前記ソリューションを提供するための前記複数のソフトウェアコンポーネントがソフトウェアコンポーネントのローカルライブラリに存在するか否かを判定するステップと、
前記複数のソフトウェアコンポーネントがソフトウェアコンポーネントの前記ローカルライブラリに存在しない場合、前記ソリューションを入手するためにソフトウェアコンポーネントの前記遠隔ライブラリの前記マニフェストを呼び出すステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記ソリューションを提供するための前記複数のソフトウェアコンポーネントがソフトウェアコンポーネントのローカルライブラリに存在するか否かを判定するステップに先立って、前記文書が複数のソリューションを示すソリューションプロパティを含むか否かを判定するステップをさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記文書が複数のソリューションを示すソリューションプロパティを含む場合、前記遠隔サーバからダウンロードするために、前記複数のソリューションの１つに関連付けられたソフトウェアコンポーネントを選択するステップを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップに先立って、前記複数のソフトウェアコンポーネントがダウンロードされるべきか否かを判定するためにクエリを受信するステップを含むことを特徴とする請求項７に記載の方法。
【請求項１１】
前記複数のソフトウェアコンポーネントがダウンロードされるべきか否かを判定するためにクエリを受信するステップが、前記複数のソフトウェアコンポーネントが前記遠隔サーバで更新されているという通知を受信するステップを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記複数のソフトウェアコンポーネントのどれかに更新が行われた際に、前記通知を前記マニフェストから送信させるステップ
をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記通知を前記マニフェストから規定の頻度で送信させるステップ
をさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記規定の頻度が前記マニフェストの前記作成者によって設定されることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記複数のソフトウェアコンポーネントがダウンロードされるべきか否かを判定するためにクエリを受信するステップが、前記遠隔サーバに格納されている前記複数のソフトウェアコンポーネントに追加のソフトウェアコンポーネントが既に追加されているという通知を受信するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記複数のソフトウェアコンポーネントがダウンロードされるべきか否かを判定するためにクエリを受信するステップが、前記複数のソフトウェアコンポーネントを前記アプリケーションに最後にダウンロードした時点から設定時間が既に経過したという通知を受信するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１７】
前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップに先立って、前記アプリケーションに前記ソフトウェアコンポーネントをダウンロードするための、前記アプリケーションからのコマンドを前記遠隔サーバで受信するステップをさらに含むことを特徴とする請求項５に記載の方法。
【請求項１８】
前記アプリケーションに前記ソフトウェアコンポーネントをダウンロードするための、前記アプリケーションからのコマンドが、前記アプリケーションのユーザによって開始されることを特徴とする請求項１０に記載の方法。
【請求項１９】
前記アプリケーションから前記ソフトウェアコンポーネントをダウンロードするステップに先立って、前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップをさらに含むことを特徴とする請求項７に記載の方法。
【請求項２０】
前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップが、インターネットを介して前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップが、イントラネットを介して前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２２】
前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップが、分散型コンピュータ環境を介して前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップを含むことを特徴とする請求項１９に記載の方法。
【請求項２３】
前記分散型コンピュータ環境が、有線遠隔通信ネットワークを含むことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記分散型コンピュータ環境が、無線遠隔通信ネットワークを含むことを特徴とする請求項２２に記載の方法。
【請求項２５】
前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップが、ローカルエリアネットワークを介して前記ソフトウェアアプリケーションを前記遠隔サーバに接続することを特徴とする請求項１９に記載の方法。
【請求項２６】
前記ソフトウェアコンポーネントを前記文書にダウンロードするステップに先立って、前記マニフェストのセキュリティをチェックすることを特徴とする請求項７に記載の方法。
【請求項２７】
前記マニフェストの前記セキュリティをチェックすることができない場合、前記ソフトウェアコンポーネントを前記文書にダウンロードするステップを阻止するステップを含むことを特徴とする請求項２６に記載の方法。
【請求項２８】
前記マニフェストの前記セキュリティをチェックするステップが、前記マニフェストが信頼ある遠隔サイトで見つかったか否かを判定するステップを含むことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記マニフェストの前記セキュリティをチェックするステップが、前記マニフェストが信頼あるイントラネットからのものであるか否かを判定するステップを含むことを特徴とする請求項２７に記載の方法。
【請求項３０】
前記マニフェストの前記セキュリティをチェックするステップが、前記マニフェストに付けられたデジタル署名が信頼あるデジタル署名と一致するか否かを判定するステップを含むことを特徴とする請求項２７に記載の方法。
【請求項３１】
前記マニフェストに付けられた前記デジタル署名が、前記マニフェストに含まれる複数のファイルのそれぞれに付けられた特定のデジタル署名を含むことを特徴とする請求項３０に記載の方法。
【請求項３２】
前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップの後に、
前記マニフェストの内容を表すチェックサム値を入手するステップと、
前記マニフェストの内容を表す前記チェックサム値を、前記アプリケーションによって既に受信された後であり、前記アプリケーションによって使用されるためにインストールされる前の前記マニフェストの内容を表すチェックサム値と比較するステップと、
前記マニフェストの内容を表す前記チェックサム値が、前記アプリケーションによって受信された後の前記マニフェストを表す前記チェックサム値と異なる場合、前記ソフトウェアコンポーネントを前記文書にダウンロードするステップを阻止するステップと
をさらに含むことを特徴とする請求項１９に記載の方法。
【請求項３３】
前記ソフトウェアアプリケーションを前記遠隔サーバに接続した後であって、前記文書に前記機能を提供するために前記アプリケーションに前記複数のソフトウェアコンポーネントをダウンロードする前に、前記ソリューションプロパティによって示されたソリューションを提供するために前記アプリケーションによって前記複数のコンポーネントのどのコンポーネントが要求されるかを決定するステップを含むことを特徴とする請求項１９に記載の方法。
【請求項３４】
前記アプリケーションによって前記複数のコンポーネントのどのコンポーネントが要求されるかを決定するステップが、
前記アプリケーションによって要求された前記マニフェストに存在するコンポーネントを、ソフトウェアコンポーネントの前記ローカルライブラリに存在するコンポーネントと比較するステップと、
前記アプリケーションによって要求された前記マニフェストに存在するコンポーネントが、前記ローカルライブラリに存在するコンポーネントに付加される場合、前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップと、
前記文書によって要求された前記マニフェストに存在するコンポーネントは、前記ローカルライブラリに存在するコンポーネントと同じであり、前記文書によって要求された前記マニフェストに存在するコンポーネントは、前記ローカルライブラリに存在するコンポーネントよりも新しいバージョンである場合、前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップと
をさらに含むことを特徴とする請求項３３に記載の方法。
【請求項３５】
前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードした後に、前記文書に機能を提供するために前記アプリケーションによって使用されるために前記ダウンロードしたコンポーネントをインストールするステップを含むことを特徴とする請求項７に記載の方法。
【請求項３６】
アプリケーションおよび文書機能に更新または追加を提供するために遠隔ソースからソフトウェアアプリケーションにソフトウェアコンポーネントをダウンロードする方法において、
前記文書に対する許容データ内容と、データ型と、データ構造とを定義する拡張可能マークアップ言語（ＸＭＬ）スキーマを前記文書に添付するステップと、
前記スキーマによって定義されたような前記文書の特定部分に対する許容データ内容と、前記許容データ型と、前記許容データ構造に関連付けられたＸＭＬ構造によって前記文書の前記特定部分に注釈を付けるステップと、
ソリューションを、前記ＸＭＬ構造を構成するＸＭＬ要素と関連付けるステップと、
前記文書から遠隔の位置にある前記ソリューションを構成する複数のソフトウェアコンポーネントをアセンブルするステップと、
前記複数のソフトウェアコンポーネントによって提供される機能を入手するために前記文書が前記ソリューションを呼び出すことを可能にするステップと、
前記文書に前記機能を提供するために、前記複数のソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップと
を含むことを特徴とする方法。
【請求項３７】
前記文書が前記複数のソフトウェアコンポーネントによって提供される機能を入手するために前記ソリューションを呼び出すことを可能にするステップが、
前記文書を前記ソリューションに向けるために前記文書にソリューションプロパティを添付するステップと、
前記文書が前記遠隔位置にある前記ソリューションを探し出すことを可能にするために、前記文書にソリューション位置を添付するステップと
を含むことを特徴とする請求項３６に記載の方法。
【請求項３８】
前記ソリューション位置が前記ソリューションのユニフォームリソースロケータ（ＵＲＬ）を含むことを特徴とする請求項３７に記載の方法。
【請求項３９】
前記ソリューションが、前記アプリケーションによって前記文書にヘルプ目次と文書アクションとを提供する複数のソフトウェアコンポーネントを含むことを特徴とする請求項３６に記載の方法。
【請求項４０】
前記文書が前記複数のソフトウェアコンポーネントによって提供される機能を入手するために前記ソリューションを呼び出すことを可能にするステップが、特定のソリューションに関連付けられたＸＭＬ要素内で前記文書の編集を開始するにあたって、前記文書が前記複数のソフトウェアコンポーネントを呼び出すことを可能にするステップを含むことを特徴とする請求項３６に記載の方法。
【請求項４１】
ソフトウェアコンポーネントのマニフェストにある前記ソリューションおよび前記複数のソフトウェアコンポーネントを列挙するステップと、
前記マニフェストを、前記文書がアクセス可能な遠隔サーバのソフトウェアコンポーネントの遠隔ライブラリに格納するステップと
をさらに含むことを特徴とする請求項３７に記載の方法。
【請求項４２】
前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップに先立って、前記複数のソフトウェアコンポーネントがダウンロードされるべきか否かを判定するために前記文書に関してユーザに照会するステップをさらに含むことを特徴とする請求項４１に記載の方法。
【請求項４３】
前記ソフトウェアコンポーネントを前記文書にダウンロードするステップに先立って、
前記マニフェストが信頼ある遠隔サイトで見つかったか否かを判定するステップと、
前記マニフェストが信頼ある遠隔サイトで見つけられない場合、前記複数のソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップを阻止するステップと
を含むことを特徴とする請求項４１に記載の方法。
【請求項４４】
前記文書に前記機能を提供するために、前記複数のソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップの前に、
前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップと、
前記ソリューションプロパティが示すソリューションを提供するために、前記複数のコンポーネントのどのコンポーネントが前記アプリケーションによって要求されているかを決定するステップと、
前記アプリケーションによって要求された前記マニフェストに存在するコンポーネントを、ソフトウェアコンポーネントの前記ローカルライブラリに存在するコンポーネントと比較するステップと、
前記アプリケーションによって要求された前記マニフェストに存在するコンポーネントが、前記ローカルライブラリに存在するコンポーネントに付加される場合、前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップと、
前記文書によって要求された前記マニフェストに存在するコンポーネントは、前記ローカルライブラリに存在するコンポーネントと同じであり、前記文書によって要求された前記マニフェストに存在するコンポーネントは、前記ローカルライブラリに存在するコンポーネントよりも新しいバージョンである場合、前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップと
をさらに含むことを特徴とする請求項４１に記載の方法。
【請求項４５】
コンピュータ実行可能命令を格納しているコンピュータ可読媒体において、コンピュータによって実行される場合に、
文書に対する許容データ内容と、データ型と、データ構造とを定義する拡張可能マークアップ言語（ＸＭＬ）スキーマを前記文書に添付するステップと、
前記スキーマによって定義されたような前記文書の特定部分に対する許容データ内容と、前記許容データ型と、前記許容データ構造に関連付けられたＸＭＬ構造によって前記文書の前記特定部分に注釈を付けるステップと、
ソリューションを、前記ＸＭＬ構造を構成するＸＭＬ要素と関連付けるステップと、
前記文書から遠隔の位置にある前記ソリューションを構成する複数のソフトウェアコンポーネントをアセンブルするステップと、
前記文書が前記複数のソフトウェアコンポーネントによって提供される機能を入手するために前記ソリューションを呼び出すことを可能にするステップと、
前記文書に前記機能を提供するために、前記複数のソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップと
を実行することを特徴とするコンピュータ可読媒体。
【請求項４６】
コンピュータによって実行される場合に、
前記文書が前記複数のソフトウェアコンポーネントによって提供される機能を入手するために前記ソリューションを呼び出すことを可能にするステップが、前記文書を前記ソリューションに向けるために前記文書にソリューションプロパティを添付するステップと、
前記文書に前記遠隔位置の前記ソリューションを探し出すことを可能にするために、前記文書にソリューション位置を添付するステップと
をさらに実行するコンピュータ実行可能命令を格納していることを特徴とする請求項４５に記載のコンピュータ可読媒体。
【請求項４７】
前記ソリューション位置が前記ソリューションのユニフォームリソースロケータ（ＵＲＬ）を含むことを特徴とする請求項４６に記載のコンピュータ可読媒体。
【請求項４８】
前記ソリューションが、前記アプリケーションによって前記文書にヘルプ目次と文書アクションとを提供する複数のソフトウェアコンポーネントを含むことを特徴とする請求項４６に記載のコンピュータ可読媒体。
【請求項４９】
前記文書が前記複数のソフトウェアコンポーネントによって提供される機能を入手するために前記ソリューションを呼び出すことを可能にするステップが、特定のソリューションに関連付けられたＸＭＬ要素内で前記文書の編集を開始するにあたって、前記文書が前記複数のソフトウェアコンポーネントを呼び出すことを可能にするステップを含むことを特徴とする請求項４５に記載のコンピュータ可読媒体。
【請求項５０】
コンピュータによって実行される場合に、
ソフトウェアコンポーネントのマニフェストにある前記ソリューションおよび前記複数のソフトウェアコンポーネントを列挙するステップと、
前記マニフェストを、前記文書がアクセス可能な遠隔サーバのソフトウェアコンポーネントの遠隔ライブラリに格納するステップと
をさらに実行するコンピュータ実行可能命令を格納していることを特徴とする請求項４６に記載のコンピュータ可読媒体。
【請求項５１】
コンピュータによって実行される場合に、前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップに先立って、
前記文書を開くステップと、
コンピュータのカーソルを前記文書の特定位置に置くステップと、
前記カーソルの位置を取り囲むようにしてＸＭＬ要素のリストを生成するステップと、
前記文書を前記ソリューションに向けるソリューションプロパティが、ＸＭＬ要素の前記リストに関連付けられているか否かを判定するステップと、
前記ソリューションを提供するための前記複数のソフトウェアコンポーネントがソフトウェアコンポーネントのローカルライブラリに存在するか否かを判定するステップと、
前記複数のソフトウェアコンポーネントがソフトウェアコンポーネントの前記ローカルライブラリに存在しない場合、前記ソリューションを入手するためにソフトウェアコンポーネントの前記遠隔ライブラリの前記マニフェストを呼び出すステップと
をさらに実行するコンピュータ実行可能命令を格納していることを特徴とする請求項４９に記載のコンピュータ可読媒体。
【請求項５２】
前記文書を前記ソリューションに向けるソリューションプロパティがＸＭＬ要素の前記リストに関連付けられているか否かを判定するステップが、任意の使用可能なヘルプ目次または文書アクションがＸＭＬ要素の前記リストにある任意のＸＭＬ要素に関連付けられているか否かを判定するために、ソリューションの参照テーブルを構文解析するステップをさらに含むことを特徴とする請求項５１に記載のコンピュータ可読媒体。
【請求項５３】
前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップに先立って、前記複数のソフトウェアコンポーネントがダウンロードされるべきか否かを判定するために、前記文書に関してユーザに照会するステップをさらに含むことを特徴とする請求項５０に記載のコンピュータ可読媒体。
【請求項５４】
前記ソフトウェアコンポーネントを前記文書にダウンロードするステップに先立って、
前記マニフェストが信頼ある遠隔サイト上に位置するか否かを判定するステップと、
前記マニフェストが信頼ある遠隔サイトで見つけられない場合、前記複数のソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップを阻止するステップと
をさらに含むことを特徴とする請求項５０に記載のコンピュータ可読媒体。
【請求項５５】
前記文書に前記機能を提供するために、前記複数のソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップの前に、
前記ソフトウェアアプリケーションを前記遠隔サーバに接続するステップと、前記ソリューションプロパティが示すソリューションを提供するために、前記複数のコンポーネントのどのコンポーネントが前記アプリケーションによって要求されているかを決定するステップと、
前記アプリケーションによって要求された前記マニフェストに存在するコンポーネントを、ソフトウェアコンポーネントの前記ローカルライブラリに存在するコンポーネントと比較するステップと、
前記アプリケーションによって要求された前記マニフェストに存在するコンポーネントが、前記ローカルライブラリに存在するコンポーネントに付加される場合、前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップと、
前記文書によって要求された前記マニフェストに存在するコンポーネントは、前記ローカルライブラリに存在するコンポーネントと同じであり、前記文書によって要求された前記マニフェストに存在するコンポーネントは、前記ローカルライブラリに存在するコンポーネントよりも新しいバージョンである場合、前記ソフトウェアコンポーネントを前記アプリケーションにダウンロードするステップと
をさらに含むことを特徴とする請求項５０に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェアアプリケーションが使用するために遠隔ソースからソフトウェアコンポーネントをダウンロードするためのメカニズムに関する。
【０００２】
【従来の技術】
コンピュータソフトウェアアプリケーションによって、ユーザは仕事、教育、およびレジャーでユーザを支援する様々な文書を作成することができる。例えば、普及しているワードプロセッシングアプリケーションによって、ユーザは、手紙、記事、書籍、覚書などを作成することができる。スプレッドシートアプリケーションによって、ユーザは、様々な英数字データを格納し、操作し、印刷し、表示することができる。このようなアプリケーションは、リッチ編集、書式設定、印刷、計算およびオフライン編集を含むいくつかのよく知られた長所を有する。
【０００３】
現代のコンピュータソフトウェアアプリケーションの大半は、アプリケーション起動時にソフトウェアアプリケーションの機能を提供するために必須のプログラミングをすべて含んでいるわけではない。コンピュータソフトウェアアプリケーションの大半は、既にコンパイルされてソフトウェアアプリケーションに動的にリンクされており、ソフトウェアアプリケーションによって「呼び出された」際にソフトウェアアプリケーションまたはそのソフトウェアアプリケーションの他のコンポーネントと共に使用される準備のできたいくつかの別個のコンポーネントまたは個々のモジュラールーチンに関連付けられている。このようなコンポーネントは、ソフトウェアアプリケーションとは別個に格納されている実行可能なファイルまたはルーチンであり、必要な場合にだけソフトウェアアプリケーションによってロードされるダイナミックリンクライブラリ（ｄｌｌ）として知られているコンポーネントを含めて、様々な形式を取る。
【０００４】
必要に応じてさらに大きなソフトウェアアプリケーションにプラグインまたはアンプラグすることのできる個々のモジュラールーチンからソフトウェアアプリケーションを構築することを可能にする、いわゆるコンポーネントオブジェクトモデルすなわちＣＯＭなどの個々のモジュラーソフトウェアルーチンを使用するための様々なソフトウェア開発モデルが既に開発されている。
【０００５】
このようなシステムは、個々のモジュラーソフトウェアルーチンが不要なメモリおよび処理時間を消費しないように、必要になるまでそれらを記憶装置に保持することができる。このようなソフトウェアシステムの他の利点には、ソフトウェア開発者が、個々のコンポーネントに関連付けられたプログラム全体には影響を与えずに、個々のコンポーネントに対して変更または訂正を加えることができるということが含まれる。さらに、ソフトウェアアプリケーションを構築するためにコンポーネントオブジェクトモデリングシステム（ｃｏｍｐｏｎｅｎｔ　ｏｂｊｅｃｔ　ｍｏｄｅｌｉｎｇ　ｓｙｓｔｅｍ）を使用することによって、ソフトウェア開発者は、複数のソフトウェアアプリケーションにある個々のソフトウェアコンポーネントを使用することができる。
【０００６】
個々のコンポーネントの一例としては、ツールバーなどのグラフィカルユーザインターフェースを描くことを担当するコンポーネント、例えば複数のソフトウェアアプリケーションに同じツールバーを描くために使用することができるコンポーネントがある。他の例としては、拡張可能マークアップ言語（ＸＭＬ）プログラム、拡張可能マークアップ言語変換プログラム、またはある種のサポートまたは機能を提供することができるソフトウェアアプリケーションにダウンロードする、およびそれに関連付けることができる任意のサブルーチンがある。
【０００７】
【発明が解決しようとする課題】
様々なモジュラーソフトウェアルーチンまたはコンポーネントを使用するソフトウェアアプリケーションの典型的な実施態様は、エンドユーザのローカルコンピュータにダウンロードするために、すべての必要とされるコンポーネントと共にソフトウェアアプリケーションをエンドユーザ向けに出荷することを必要とする。ソフトウェアアプリケーション開発者が、後で個々のコンポーネントのプログラミングにエラーを発見した場合、典型的には、ユーザは、そのコンポーネントのプログラミングのエラーを修復するためにエンドユーザのコンピュータにインストールしなければならない修復または「パッチ」をソフトウェア開発者から受け取る必要がある。残念ながら、修復または「パッチ」は、欠陥のあるコンポーネントを使用するソフトウェアアプリケーションを購入し、ダウンロードし、かつ／またはインストールしたすべてのユーザに送信しなければならない。
【０００８】
モジュラーソフトウェアルーチンを使用したソフトウェアアプリケーションの別の典型的な実施態様には、文書に特別の機能、すなわち「スマートな」機能を追加するためにそれらのモジュラールーチンの機能を使用することができる文書が含まれる。例えば、ユーザは、文書を作成し、編集するために使用しているアプリケーションの既存の機能にヘルプ目次または追加の文書アクション（ｄｏｃｕｍｅｎｔ　ａｃｔｉｏｎ）を追加するために、１つの追加のソフトウェアコンポーネントまたはコンポーネントのセットを必要とする場合がある。残念ながら、複数の追加のコンポーネントまたはコンポーネントのセットを追加するには、ユーザが、新しい機能、すなわち強化された機能を追加するためにインストールパッケージ（ｉｎｓｔａｌｌａｔｉｏｎ　ｐａｃｋａｇｅ）を受け取り、新しいコンポーネントをインストールすることが必要となる。
【０００９】
これは、本発明が行ったこれらの考慮すべき点および他の考慮すべき点に関するものである。
【００１０】
【課題を解決するための手段】
本発明は、アプリケーションの機能に更新または追加を提供するために遠隔ソースからソフトウェアアプリケーションに対してソフトウェアコンポーネントをダウンロードするための方法およびシステムを提供する。一般的に、スキーマは、文書から許容データ内容、データ型、およびデータ構造を定義する文書に添付される。文書は、その文書自体をスキーマに関連付けるように構成されている。ソリューションは文書の構造に関連付けられている。例えば、文書の構造に関連付けられたソリューションは、費用レポートの文書構造に関連付けられたヘルプツールを含むことができ、またはこの費用レポートの構造は、通貨兌換ソリューションに関連付けられたコストセクション（ｃｏｓｔ　ｓｅｃｔｉｏｎ）（構造）を含むことができる。このソリューションを構成する複数のソフトウェアコンポーネントは、文書から遠隔の位置でアセンブルされる。この文書は、複数のソフトウェアコンポーネントによって提供される機能を入手するためにソリューションを呼び出すことができる。文書に機能を提供するために複数のソフトウェアコンポーネントがアプリケーションによって要求されていると判断された場合、その複数のソフトウェアコンポーネントはそのアプリケーションにダウンロードされる。アプリケーションにソフトウェアコンポーネントをダウンロードする前に、そのソフトウェアアプリケーションは遠隔サーバに接続される。この接続は、インターネットやイントラネットなどの分散型コンピュータ環境経由であっても、ローカルエリアネットワークあるいは有線または無線の遠隔通信ネットワーク経由であってもよい。
【００１１】
文書をソリューションに向けるためにソリューションプロパティが文書に添付され、文書が遠隔位置にあるソリューションを探し出すことができるようにソリューション位置が文書に添付される。ソリューションおよびソリューションを構成する複数のソフトウェアコンポーネントは、ソフトウェアコンポーネントのマニフェストに列挙（ｌｉｓｔ）される。このマニフェストは、文書がアクセスすることのできる遠隔サーバ上のソフトウェアコンポーネントの遠隔ライブラリに格納される。
【００１２】
ソフトウェアコンポーネントをアプリケーションにダウンロードするに先立って、ソリューションを提供するための複数のソフトウェアコンポーネントがソフトウェアコンポーネントのローカルライブラリに存在するか否かに関して判定が行われる。複数のソフトウェアコンポーネントがソフトウェアコンポーネントのローカルライブラリに存在しない場合、そのソリューションを入手するためにソフトウェアコンポーネントの遠隔ライブラリのマニフェストが呼び出される。ソフトウェアコンポーネントをアプリケーションにダウンロードするに先立って、その複数のソフトウェアコンポーネントをダウンロードすべきか否かを判定するためにユーザにクエリを提示することができる。このクエリは、そのソフトウェアコンポーネントが遠隔サーバで更新されている、または複数のソフトウェアコンポーネントに追加ソフトウェアコンポーネントが追加されているという通知を含むことができる。さらに、ユーザは、ソフトウェアコンポーネントをアプリケーションに最後にダウンロードした時点から設定時間が経過したという通知を受け取ることができる。
【００１３】
ソフトウェアコンポーネントを文書にダウンロードするに先立って、マニフェストのセキュリティがチェックされる。マニフェストのセキュリティは、そのマニフェストが信頼あるサイトに位置するか否かを判定するか、またはそのマニフェストが信頼あるイントラネットのサイトから探し出されたか否かを判定することによってチェックされる。さらに、マニフェストのセキュリティは、マニフェストに含まれているファイルにそのファイルの作成者または管理者が添付したデジタル署名を、信頼あるデジタル署名リストと照合することによって判定することができる。いずれの場合でも、マニフェストのセキュリティを保証することができない場合には、その複数のソフトウェアコンポーネントをアプリケーションにダウンロードすることは阻止される。代わりに、複数のソフトウェアコンポーネントをアプリケーションにダウンロードした後であって、そのコンポーネントをアプリケーションおよび文書が使用するためにインストールする前に、遠隔サーバのサイトにあるマニフェストの内容を表しているチェックサム値を入手することができ、そのチェックサム値を、内容をダウンロードした後のマニフェストの内容を表している第２のチェックサム値と照合することができる。第２のチェックサム値が第１のチェックサム値と異なる場合、アプリケーションが使用するためにそのソフトウェアコンポーネントをインストールすることは阻止される。
【００１４】
マニフェストのセキュリティのチェック後、マニフェストの内容に対して更新または追加が行われたか否かを判定するために、マニフェストの内容がローカルライブラリにあるソフトウェアコンポーネントと比較される。そのマニフェストの内容に対して更新または追加が行われていた場合、アプリケーションが使用するためにその内容を遠隔サーバからダウンロードすることを進めることができる。ソフトウェアコンポーネントは、アプリケーションにダウンロードされた後、そのダウンロードされたソフトウェアコンポーネントに関連付けられた機能をアプリケーションおよび文書に提供するためにインストールされる。
【００１５】
本発明の別の態様によれば、文書の許容データ内容、データ型、およびデータ構造を定義するために、拡張可能マークアップ言語（ＸＭＬ）スキーマが文書に添付される。文書の特定部分には、スキーマに関連付けられたＸＭＬ構造によって注釈が付けられる。複数のソフトウェアコンポーネントを含んでいるソリューションは、そのＸＭＬ構造を構成しているＸＭＬ要素に関連付けられる。その文書は、特定のソリューションに関連付けられたＸＭＬ要素内でその文書の編集を開始するにあたって、複数のソフトウェアコンポーネントによって提供される機能を入手するためにソリューションを呼び出すことができる。
【００１６】
文書が開かれ、その文書の特定部分内にコンピュータのカーソルが置かれると、カーソルの位置を取り囲むようにしてＸＭＬ要素のリストが生成される。その文書をソリューションに向けるソリューションプロパティがＸＭＬ要素のリストに関連付けられているか否かに関して判定がなされる。そのソリューションを提供する複数のソフトウェアコンポーネントがソフトウェアコンポーネントのローカルライブラリにあるか否かに関して判定がなされ、その複数のソフトウェアコンポーネントがソフトウェアコンポーネントのローカルライブラリにない場合、そのソリューションを入手するために遠隔ライブラリのマニフェストが呼び出される。
【００１７】
本発明のこれらおよび他の機能、利点、および態様は、開示された実施形態の以下の詳細な説明を検討することにより、また添付の図面および首記の特許請求の範囲を参照することにより、さらに明瞭に理解し認識することができる。
【００１８】
【発明の実施の形態】
複数の図面で類似の番号が類似の部分またはコンポーネントを示す図面を参照する。図１は、本発明の一実施形態に関連して使用するためのクライアント−サーバアーキテクチャを示す簡約化されたブロック図である。ソフトウェアアプリケーション１１０に使用可能な機能またはソリューションを動作させ、またはこれを完全に実施するために必須のすべてのコンポーネントおよびファイルが示されており、これらはスキーマライブラリ１０５のソフトウェアコンポーネントのローカルライブラリ上でアセンブルされる。
【００１９】
アプリケーション１１０に使用可能な機能を更新または追加するために利用することができるすべてのコンポーネントおよびファイルが示されており、これらはユーザがユーザのコンピュータ２０によってアクセス可能な遠隔ウェブサーバ４９上のソフトウェアコンポーネントの遠隔ライブラリに位置することができるマニフェスト３８上でアセンブルされる。ユーザのクライアントサイドのコンピュータ２０上のコンポーネントが更新されるべきであること、または既存のコンポーネントに対する訂正または改善が可能であること、またはユーザの既存のアプリケーション１００および文書１１０を「スマートな」アプリケーションおよび「スマートな」文書に変換することのできる新しい機能が入手可能であることがユーザに伝達された場合、そのユーザは必要なコンポーネントをダウンロードするためにインターネット５１またはイントラネット５２を介してウェブサーバ４９に接続することができる。代わりに、ユーザがマニフェスト３８からファイルをダウンロードするためにウェブサーバ４９に接続することを可能にする有線および無線遠隔通信ネットワークを含めて、任意の適切な分散型コンピュータ環境を介して、ユーザはウェブサーバ４９に接続することができる。
【００２０】
マニフェスト３８は、ソフトウェアアプリケーションが適切に動作するために必要となる、またはソフトウェアアプリケーション１００に対する機能を改善または追加するために必要とされるｄｌｌ、コンポーネントアドイン、拡張可能マークアップ言語（ＸＭＬ）、スキーマファイルおよびすべての関連付けられたＸＭＬファイルを含めてすべてのコンポーネントを含むことができる。本発明の一実施形態によれば、マニフェスト３８は、ダウンロードされたコンポーネントをインストールするためにエンドユーザまたはエンドユーザのコンピュータに対する有益な情報を含むこともできる。例えば、マニフェスト３８は、クライアントサイドのコンピュータ２０が、ｄｌｌを適切に登録するための固有のレジストリキーに対するいかなるニーズをも含めてｄｌｌを適切に登録することができるように、所与のダイナミックリンクライブラリ（ｄｌｌ）に対するタイプを指定する情報を含むことができる。
【００２１】
スキーマは、必要なコンポーネントをダウンロードして入手するためにマニフェスト３８を呼び出すことができるファイル、文書、およびアプリケーションにマニフェスト３８を関連付けるために、またマニフェスト３８の許容データ内容、データ型、およびデータ構造を定義するために、マニフェスト３８に１つのファイルとして添付することができる。本明細書で説明している本発明を限定するためではなく、例示するために、以下に、必要なコンポーネントをダウンロードして入手するためにマニフェスト３８を呼び出すことができるファイル、文書、およびアプリケーションにマニフェストを関連付けるために、マニフェスト３８に添付することができるＸＭＬベースのスキーマの一例を示す。
【００２２】
2004013903.tif 000003
2004013903.tif 000004
2004013903.tif 000005
2004013903.tif 000006
2004013903.tif 000007
【００２３】
後述するようにユーザの文書１１０を「スマートな」文書に変換するために様々なコンポーネントの機能を必要とするソフトウェアアプリケーション１００をユーザが開いた場合、本発明のメカニズムは、その動作のために必要なすべてのコンポーネントをダウンロードするために使用することができる。この場合、ユーザの文書１１０を「スマートな」文書に変換するためのソリューションを共に構成するファイルおよびデータ構造の１つ以上のタイプを記述するＸＭＬスキーマ、ならびにそれらのコンポーネントをユーザのコンピュータ２０に登録し、インストールすることに関する情報をマニフェスト３８に格納することができる。
【００２４】
例えば、ユーザが受信した文書が参照するソリューションを完全に実施するために必須のすべてのファイルを、ユーザがダウンロードすることができるように、有用な情報を提供するためにソリューションに「向ける」レジメ（ｒｅｓｕｍｅ）を準備するためのテンプレートなどの文書と、そのテンプレートのテキストおよびデータフィールドを完成させることに関連するアクションとをユーザが受信する場合、ユーザが受信するテンプレートまたは文書は、遠隔に格納されたマニフェスト３８を示す場合がある。
【００２５】
マニフェスト３８が作成され、所与のソリューションを実施するため、または所与のアプリケーションのパフォーマンスを訂正または改善するために必須のファイルすべてが列挙されると、ユーザがクライアントサイドのコンピュータ２０で利用するワードプロセッシング文書またはスプレッドシート文書などの文書で、そのソリューションを参照したり更新したりすることができる。ファイルおよびソリューションのマニフェストはソリューションＩＤまたはマニフェストＩＤによって参照することができ、これによってユーザのクライアントサイドのアプリケーションおよび文書は遠隔にあるマニフェストの情報を示し、またここから情報を入手することができる。文書またはアプリケーションによって示されたソフトウェアコンポーネントに関連付けられたソリューションＩＤは、文書１１０に添付されたソリューションプロパティ１１５に格納される。
【００２６】
要求されたコンポーネントおよび所望のソリューションを含むマニフェスト３８の位置は、ソリューション位置１１８に従って参照される。ソリューション位置１１８は、遠隔ウェブサーバ４９上のマニフェスト３８のＵＲＬを含むことができる。ユーザが友人から電子メールで文書を受信した場合のようにユーザが文書しか有しない場合、アプリケーション１００はソリューション位置１１８を介してウェブサーバ４９を呼び出すことができ、またソリューションプロパティ１１５からのソリューションＩＤを利用することによって、ユーザに必要な機能または所望の機能を提供するためにはどのコンポーネントをダウンロードし、インストールし、登録し、実施する必要があるかを決定するために、アプリケーションはマニフェスト３８を入手することができる。これでユーザは、文書１１０と、一組のインストールされた「実行準備済み」ファイル、およびソフトウェアアプリケーション１００の適切な動作を可能にするために、またはアプリケーション１００が文書１１０を「スマートな」文書に変換することを可能にするためにソフトウェア文書１１０が必要とする他のコンポーネントを有している。有利には、ソフトウェア修復または「パッチ」を含んでいる、またはアプリケーションの元の機能のパフォーマンスを改善するために必須の機能を含んでいるインストレーションパッケージをソフトウェア開発者から受信しなければならないという必要性は回避される。
【００２７】
図２および以下の説明は、本発明を実施することができる適切なコンピュータ環境に関する簡単で一般的な説明を提供することを目的としている。本発明は、パーソナルコンピュータと併せてオペレーティングシステムで実行されるアプリケーションプログラムの一般的状況で説明するが、当業者ならば、本発明が他のプログラムモジュールとの組合せでも実施することができることを理解されよう。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実施するルーチン、プログラム、コンポーネント、データ構造などが含まれる。さらに、当業者ならば、本発明が、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、携帯電話、ミニコンピュータ、メーンフレームコンピュータなどを含めて他のコンピュータシステム構成によっても実施できるということを理解されよう。本発明は、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散型コンピュータ環境で実施することもできる。分散型コンピュータ環境では、プログラムモジュールは、ローカル記憶装置と遠隔記憶装置の両方に位置することができる。
【００２８】
図２を参照すると、本発明を実施するための典型的なシステムには、処理装置２１と、システムメモリ２２と、システムメモリを処理装置２１に結合するシステムバス２３とを含む従来型のパーソナルコンピュータ２０が含まれる。システムメモリ２２は、読み取り専用メモリ（ＲＯＭ）２４とランダムアクセスメモリ（ＲＡＭ）２５とを含む。パーソナルコンピュータ２０の素子間で起動時などに情報を転送することを支援する基本ルーチンを含んでいる基本入出力システム２６（ＢＩＯＳ）はＲＯＭ２４に格納されている。パーソナルコンピュータ２０は、取り外し可能ディスク２９から読み取り、またはそこに書き込むためのハードディスクドライブ２７、磁気ディスクドライブ２８などと、ＣＤ−ＲＯＭディスク３１を読み取るための、あるいは他の光メディアから読み取り、またはそこに書き込むための光ディスクドライブ３０をさらに含む。ハードディスクドライブ２７と、磁気ディスクドライブ２８と、光ディスクドライブ３０とは、それぞれハードディスクドライブインターフェース３２と、磁気ディスクドライブインターフェース３３と、光ディスクドライブインターフェース３４とによってシステムバス２３に接続される。これらのドライブおよびこれらに関連するコンピュータ可読媒体は、パーソナルコンピュータ２０に不揮発性記憶を提供する。コンピュータ可読媒体の上記の説明はハードディスクと、取り外し可能な磁気ディスクと、ＣＤ−ＲＯＭディスクとに言及しているが、当業者には、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジなどのコンピュータ可読の他のタイプの媒体も典型的な動作環境で使用できるということを理解されたい。
【００２９】
複数のプログラムモジュールは、オペレーティングシステム３５と、１つまたは複数のアプリケーションプログラム１００と、ワードプロセッサプログラムモジュール３７（または他のタイプのプログラムモジュール）と、マニフェスト３８などのプログラムデータと、他のプログラムモジュール（図示せず）とを含めてドライブおよびＲＡＭ２５に格納することができる。
【００３０】
ユーザは、キーボード４０とマウス４２などのポインティングデバイスとによってパーソナルコンピュータ２０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含むことができる。これらおよび他の入力デバイスは、システムバスに結合されるシリアルポートインターフェース４６を介して処理装置２１に接続されることがしばしばあるが、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースによって接続することもできる。モニタ４７または他のタイプの表示装置も、ビデオアダプタ４８などのインターフェースを介してシステムバス２３に接続される。モニタの他に、パーソナルコンピュータは、通常、スピーカーまたはプリンタなどの他の周辺出力デバイス（図示せず）を含んでいる。
【００３１】
パーソナルコンピュータ２０は、遠隔コンピュータ４９などの１つまたは複数の遠隔コンピュータに対する論理接続を使用してネットワーク接続された環境で動作することができる。遠隔コンピュータ４９は、サーバ、ルータ、ピアデバイスまたは他の一般的なネットワークノードであってよく、典型的にはパーソナルコンピュータ２０に関して上述した要素の多く、またはそのすべてを含むが、図２には記憶装置５０しか示さない。図２に示した論理接続には、ローカルエリアネットワーク（ＬＡＮ）５１およびワイドエリアネットワーク（ＷＡＮ）５２が含まれる。このようなネットワーク接続された環境はオフィス、企業内コンピュータネットワーク、イントラネット、およびインターネットに普及しているものである。
【００３２】
ＬＡＮネットワーク接続環境で使用される場合、パーソナルコンピュータ２０はネットワークインターフェース５３を介してＬＡＮ５１に接続される。ＷＡＮネットワーク接続環境で使用される場合、パーソナルコンピュータ２０は、通常、モデム５４またはインターネットなどのＷＡＮ５２を介して通信を確立するための他の手段を含む。内蔵型であっても外付けであってもよいモデム５４は、シリアルポートインターフェース４６を介してシステムバス２３に接続される。ネットワーク接続された環境では、パーソナルコンピュータ２０に関して示されたプログラムモジュールまたはその一部は、遠隔記憶装置に格納することができる。図示したネットワーク接続は例示であって、コンピュータ間に通信リンクを確立する他の手段を使用することができるということが理解されよう。
【００３３】
図３は、文書ならびに本発明の一実施形態による関連するコンテキストセンシティブなアクションおよびヘルプ目次を表示するソフトウェアアプリケーションのグラフィカルユーザインターフェースのコンピュータ画面表示を示す図である。図３に示した文書１１０は、マニフェスト３８からダウンロードすることができる機能を示すことのできる「スマートな」文書を表している。図３に示す文書１１０は、本明細書で説明している本発明を例示することのみを目的として説明するものであって、これを限定するものではない。ワードプロセッシングアプリケーション１００は、Ｆｉｌｅ、Ｅｄｉｔ、Ｖｉｅｗ、Ｉｎｓｅｒｔ、Ｆｏｒｍａｔなどのドロップダウンメニューによってアクセス可能な、ワードプロセッサに関連した典型的な機能を提供する。文書１１０はアプリケーション１００の作業領域に表示され、文書アクションペイン１３５は文書１１０の右側に示されている。
【００３４】
ユーザが、図３に示す「目標」セクション１２５などの文書１１０の特定セクション内にコンピュータカーソルを置いた場合、ユーザに対して文書アクションペイン１３５内にアクションおよびヘルプ目次が提供される。例えばユーザが「目標」セクション１２５内にコンピュータカーソルを置いた場合、そのユーザに対して文書のアクションペイン１３５内に示される「目標作成の秘訣」１５５が提供される。図３に示すように「目標作成の秘訣」１５５を選択することによって、図３に示すパフォーマンスレビュー文書１１０の「目標」セクションをどのように完成させるかに関する有用な情報をユーザに提供する「目標作成の秘訣」テキスト１６０を表示させることができる。ユーザがカーソルをその文書の別のセクション、例えば個人情報セクション１２０に移動した場合、ユーザが個人情報セクション１２０を完成することを支援するために文書アクションペイン１３５内に提供された情報が、提供されることになる。
【００３５】
ユーザを支援するための有用な情報の他に、様々な文書アクション１４５が提供される。例えば「レビュー提出」アクションによって、ユーザは文書完成後にユーザの監督者または従業員に完成した文書を提出することができる。「最終レビューを開く」アクションによって、ユーザが最後のレビューで述べたように自分の目標を達成したか否かを判定することができるように、ユーザは最後のパフォーマンスレビューを開くことができる。ユーザが使用中の文書が他のタイプの文書、例えばレジメ文書の場合、文書アクションペイン内の有用な情報は、「教育」セクション、「経験」セクション、および／または「個人情報」セクションの準備に関する情報を含むことができる。
【００３６】
本発明により、また以下に詳述するように、例えば図３に示すパフォーマンスレビュー１１０の「目標」セクションなどの文書１１０の特定部分にユーザが注目した場合、ソリューションプロパティ１１５は文書を文書アクションペイン１３５に示された「目標」セクションのヘルプソリューションに向ける。ソリューション位置１１８は文書１１０およびアプリケーション１００に、ソリューションを実施するために必須のコンポーネント、ｄｌｌまたはＸＭＬファイルの位置を提供する。理解されるべきことは、典型的なコンポーネントは、文書アクションペイン１３５を描くためのコンポーネントと、特定の状況に関する情報を表示するためのコンポーネント、この実施例の場合は「目標」セクションと、「レビュー提出」アクション１４５などの文書アクションを実行するためのコンポーネントとを含むことができるということである。上記の「スマートな」機能を提供するためにアプリケーション１００および文書１１０が必要とするコンポーネントがユーザのコンピュータ２０にまだダウンロードされていない場合、それらのコンポーネントは後述するように本発明に従ってコンピュータ２０にダウンロードすることができる。
【００３７】
図４は、クライアントサイドのソフトウェアアプリケーションを動作させ、これに機能を提供するために必要となるコンポーネントをダウンロードする方法を示すフローチャートである。上記のように、本発明の実施形態は、ユーザのコンピュータ２０でソフトウェアアプリケーション１００を動作させるために必須の、すべてのコンポーネントと、ファイルと、サブルーチンと、拡張可能マークアップ言語ファイルと、ファイル実施情報とをダウンロードすることを提供する。本発明の実施形態は、文書１１０を「スマートな」文書に変換するためにアプリケーション１００が必要とするすべての必須のコンポーネントと、ファイルと、ＸＭＬスキーマと、関連するＸＭＬファイルとをダウンロードすることも提供する。
【００３８】
ユーザのコンピュータ２０に必要なコンポーネントおよびファイルをダウンロードするための方法４００は、ステップ４０５で開始され、ステップ４１０に進んで、そこでアプリケーション１００はユーザによって起動され、文書１１０がユーザによる編集のために開かれる。本発明の一実施形態によれば、ユーザが開く文書１１０は、アプリケーション１００によって文書１１０を操作するために必要なコンポーネントおよびファイルを示す任意の文書であってよく、または文書は、図３を参照して上記で説明したように、強化された機能を文書に提供するためにダウンロードすることができるソリューションを示す「スマートな」文書であってよい。
【００３９】
ステップ４１５では、アプリケーション１００は、アプリケーション１００の動作に必須のコンポーネント、サブルーチン、またはファイルを文書１１０が示しているか否か、または参照しているか否かを判定するか、あるいはその文書１１０を編集するためにアプリケーション１００に追加の機能を提供するためにユーザのコンピュータ２０にダウンロードすることができるソリューションを文書１１０が示しているか否かを判定する。本発明の一実施形態によれば、文書から許容データ内容と、データ型と、データ構造とを定義するスキーマが文書１１０に添付される。文書は、文書にスキーマを関連付けるように構成される。アプリケーションに機能を提供すること、またはアプリケーションを「スマートな」文書に変換するために必要となるコンポーネントおよびファイルを含んでいるソリューションが文書の構造に関連付けられる。
【００４０】
本発明の別の実施形態によれば、文書に対して許容データ内容と、データ型と、データ構造とを定義するために拡張可能マークアップ言語（ＸＭＬ）スキーマが文書に添付される。文書の特定部分には、スキーマに関連付けられたＸＭＬ構造によって注釈が付けられる。複数のソフトウェアコンポーネントを含んでいるソリューションが、ＸＭＬ構造を構成するＸＭＬ要素に関連付けられる。特定のソリューションに関連付けられた１つのＸＭＬエレメント内で文書の編集を開始する際、文書は、マニフェスト３８でアセンブルされた複数のソフトウェアコンポーネントが提供する機能を入手するためにソリューションを呼び出すことができる。
【００４１】
アプリケーション１００を動作させるために、また文書１１０を編集するために必須の様々なコンポーネントおよびファイルを文書１１０が示している場合、あるいは文書を「スマートな」文書に変換するためにダウンロードすることができるソリューションを文書が示している場合、方法はステップ４２０に進み、そこでアプリケーション１００は必須のコンポーネントまたはファイルの有無を調べるためにユーザのコンピュータ２０に常駐しているスキーマライブラリ１０５をチェックする。文書が複数のソリューションを示しているソリューションプロパティを含む場合、その文書のユーザには、遠隔サーバからダウンロードするソリューションを１つ選択するようプロンプト表示することができる。
【００４２】
ステップ４１５を再度参照すると、文書を「スマートな」文書に変換するためのソリューションを文書が参照していない場合、方法はステップ４２５に進むことができ、そこでスキーマが文書に添付されているか否かに関して判定が行われる。文書は添付スキーマを有しているが特定のソリューションに対する参照は有していない場合、方法はステップ４２０に進み、スキーマライブラリ１０５は文書１１０に添付されたスキーマに関連付けられたコンポーネントの有無を調べるためにチェックされる。文書がいかなる必要なコンポーネントまたはファイルをも参照していないと判定された場合、あるいは文書が添付スキーマを有していないと判定された場合、方法はステップ４６０に進み、そこで文書アプリケーション１００に従って正規の文書を開く手順に従って文書が開かれる。
【００４３】
ステップ４２０を再度参照すると、スキーマライブラリ１０５で、スキーマライブラリ１０５がアプリケーション１００および文書１１０に関連したファイルを含むか否かに関して判定が行われる。文書１１０内で参照されるスキーマライブラリ１０５にソリューションがあるか否かの判定が、文書１１０のソリューションプロパティ１１５内で参照されるコンポーネントＩＤまたはソリューションＩＤを探すことによって行われる。
【００４４】
ステップ４３０で、文書１１０を「スマートな」文書に変換するために既存のコンポーネントを更新するため、または追加の機能を付け加えるために、ユーザのコンピュータ２０に対してコンポーネント、ファイル、サブルーチン、またはそれに関する情報がダウンロードされるべきか否かに関して判定が行われる。コンポーネントが更新されるべきか否かに関して、または追加の機能がマニフェスト３８からダウンロードされるべきか否かに関して判定を行うために、ユーザに対して図６に示すようなダイアログボックス６００などのプロンプトを提示することができる。ダイアログボックスは、アプリケーション１００の適切な動作のために必須のコンポーネントに対して最近更新または修復が行われたこと、あるいはユーザが編集中の文書は、ユーザが所与のウェブサーバサイトからコンポーネントをダウンロードすればより良好に機能することをユーザに伝達することができる。ダイアログボックス６００に示すように、ユーザには、コンポーネントのダウンロードの受諾、将来における更新の自動ダウンロードの受諾を含む様々な選択肢を提供することができ、またはユーザはコンポーネントの更新のダウンロードを拒絶することができる。
【００４５】
アプリケーションの起動時にアプリケーションを「スマートな」文書に変換するために、アプリケーション１００またはアプリケーション１００が使用しているソリューションに関連付けられたマニフェスト３８に新しい機能が追加されたか否かを判定するために遠隔サーバ４９を介してクエリをマニフェスト３８に送信することができるように、コンピュータのレジストリにレジストリキーを書き込むことができる。代わりに、マニフェスト３８は、マニフェスト３８に含まれるファイルまたは機能に対する更新があるか否かをチェックするようユーザに通知するために設定時間経過後にユーザに連絡するタイミングメカニズムを含むことができる。マニフェスト３８の更新に対するチェックの間隔の時間は、後述するように、マニフェスト３８の作成者またはアプリケーション１００のユーザによって設定することができる。代わりに、アプリケーション１００は、ソフトウェアコンポーネントの更新または追加が１つでも入手可能であるか否かを判定するためにある一定頻度でサーバ４９を呼び出す、すなわち「ｐｉｎｇ」するようにプログラムすることができる。代わりに、ユーザはユーザの要求でダウンロードされるべきソフトウェアコンポーネントの更新をマニフェスト３８に要求することができ、あるいはユーザは、アプリケーションの起動時または１日に１度または１週間に１度などのようにある一定頻度で更新をダウンロードすることを選択することができる。一実施形態によれば、ユーザには、マニフェスト３８からダウンロードする頻度を選択するためのユーザインターフェースを提供することができる。
【００４６】
ステップ４３５で、ユーザが既存のファイルまたはコンポーネントに対する更新、または文書１１０を「スマートな」文書に変換するための新しい機能をダウンロードしようと決定した場合、ユーザは示唆したファイルまたは機能のダウンロードを要求し、アプリケーション１００は、必要なファイルまたは更新をマニフェスト３８に要求するために遠隔サーバ４９に接続する。マニフェスト３８からダウンロードした情報を入手するためにアプリケーション１００を遠隔サーバ４９に接続するために、アプリケーション１００は、ユーザのコンピュータ２０を遠隔サーバ４９に接続することができるインターネットブラウザのインスタンスを起動することができる。代わりに、ユーザのコンピュータ２０によってアプリケーション１００に情報を直接的にダウンロードするために、遠隔サーバ４９に接続するインターネットブラウザと同様の方法で遠隔サーバ４９に接続するために、機能をアプリケーション１００に統合することができる。ユーザのコンピュータ２０がオンライン通信用に構成されていない場合は、ユーザがオフラインの場合にその文書が適切に機能しないことをユーザに伝達するために図７に示すダイアログボックス７００のようなプロンプトをユーザに提供することができる。
【００４７】
理解されるべきことは、遠隔サーバ４９上に位置するマニフェスト３８に対してアプリケーション１００から行われる呼び出しは、既存ファイルまたは新しい機能に対する更新を入手するために指定され、図１に示すソリューション位置１１８で文書に添付されたユニフォームリソースロケータ（ＵＲＬ）に基づいて行うことができる。代わりに、ソフトウェアコンポーネントに対する更新または追加機能の入手元である１組のＵＲＬをユーザは有することができ、ユーザのアプリケーション１００に提供されているソフトウェアコンポーネントを更新することが有用である可能性があることをユーザに通知するプロンプトに応えて、ユーザはそれらのＵＲＬの１つまたは複数を入力することができる。代わりに、ユーザは、ソフトウェアコンポーネントの更新および追加を入手するためにアプリケーション１００にマニフェスト３８を呼び出させることを指示するプロンプトを受けずに決定することができる。本実施形態によれば、自分がソフトウェアコンポーネントの更新または機能の追加をそこから入手することを希望するマニフェスト３８のＵＲＬをユーザが入力することを可能にするアプリケーション１００に機能ツールを提供することができる。
【００４８】
ユーザが、アプリケーション１００によって使用されるためにソフトウェアコンポーネントの更新または機能の追加のダウンロードを要求すると、方法はステップ４４０に進み、ユーザが信頼あるソースからダウンロードされたファイルおよび更新を受信することを保証するために、いくつかのセキュリティチェックが実行される。文書が、ユーザの信頼あるサイトのリストにあるサーバサイトを介してマニフェスト３８を参照する場合、またはマニフェストがユーザの信頼あるイントラネットシステムのサイトから要求される場合、要求または受諾されたファイルまたは更新のダウンロードを実行することができる。マニフェスト３８が探し出されたＵＲＬが信頼あるサイトでない場合、またはユーザの信頼あるイントラネットシステムにない場合、呼び出しているサイトはユーザの信頼あるサイトのリストにないか、またはユーザの信頼あるイントラネットシステム経由ではないことをユーザに通知するために、図８に示すダイアログボックス８００などのプロンプトによって通知することができる。ユーザは、マニフェスト３８からの情報のダウンロードを受諾するか、またはそのプロンプトに応じてダウンロードを拒絶するかを選択することができる。文書が信頼あるサイトにあるマニフェスト３８または信頼あるイントラネットシステムを介して入手可能なマニフェスト３８を参照しているが、マニフェスト３８を含んでいるそのサイトが使用不可能な場合、図９に示すダイアログボックス９００のようなプロンプトによって、そのサイトは現在使用不可能であり、情報のダウンロードもまた使用不可能であるということをユーザに通知することができる。
【００４９】
ダウンロード後であってコンポーネントをインストールする前に実行することができる追加のセキュリティチェックには、マニフェスト３８によって提供される情報のチェックサム値を準備すること、およびそのチェックサム値をユーザのコンピュータ２０にあるダウンロードした情報に対して準備されたチェックサム値と比較することが含まれる。２つの値が一致しない場合、ユーザのコンピュータ２０へのインストールは阻止される。何故ならば、それらのチェックサム値の較差は、ユーザのコンピュータ２０への移動中に、ダウンロードされたファイルの内容に対して無許可の改ざんが行われたことを示す場合があるからである。
【００５０】
上記のセキュリティチェックに加え、マニフェスト３８からダウンロードしたファイルのセキュリティをチェックするためにデジタル署名を利用することもできる。すなわち、マニフェスト３８に含まれるファイルは、それらのファイルの作成者または管理者のデジタル署名によって強化することができる。そのデジタル署名は、それらのファイルから情報をダウンロードし、かつ／またはインストールするに先立って、遠隔サーバ４９またはユーザのコンピュータ２０で、信頼あるデジタル署名のリストと照合することができる。上記のセキュリティチェックのどれか１つでもマニフェスト３８に含まれるファイルの妥当性およびセキュリティを保証できなかった場合、方法はステップ４６０に進み、追加のコンポーネントまたはファイルの更新をダウンロードせずにそこで文書のオープニングは完了する。すなわち、マニフェスト３８から入手可能な可能性のある新しい機能または既存機能に対する更新の恩恵を受けずに文書は開き、動作する。代わりに、たとえ情報が信用あるサイトからのものではないことをセキュリティチェックが示しており、それさえなければダウンロードしたその情報は信頼ある情報であることをユーザが確信するような場合、ユーザは、セキュリティシステムを重ね書きすることができ、ダウンロードしたその情報を受諾することができる。
【００５１】
ステップ４４５を参照すると、セキュリティチェックにパスした場合、方法はステップ４５０に進み、そこでマニフェスト３８の内容の妥当性検査が実行される。マニフェストからコンポーネントまたは情報をユーザのコンピュータ２０にダウンロードする前に、マニフェスト３８に含まれるコンポーネントおよび情報（文書１１０によって示される）と、スキーマライブラリ１０５に既に存在するコンポーネントおよび情報との比較が行われる。マニフェスト３８のコンポーネントおよび情報がスキーマライブラリ１０５を介してアプリケーションに既に入手可能なコンポーネントおよび情報と異ならない場合、マニフェスト３８からのダウンロードを回避することができる。
【００５２】
マニフェスト３８の妥当性検査には、アプリケーション１００を介して文書１１０によってどのコンポーネントまたはコンポーネントに関するどの情報が示されているかに関する決定が含まれる。すなわち、文書１１０が参照するソリューションは追加の機能を必要とする場合があり、そのソリューションはマニフェスト３８に含まれる特定のコンポーネントを示している可能性はあるが、マニフェスト３８に含まれるすべてのコンポーネントは示していない。したがって、ステップ４５０で、アプリケーション１００との統合のためにユーザのコンピュータ２０にダウンロードされるべきコンポーネント数とそれらコンポーネントに関する情報の内容とに関して決定が行われる。
【００５３】
ステップ４５５でマニフェスト３８が処理される。マニフェスト３８の処理には、文書１１０またはアプリケーション１００が示すファイル、コンポーネント、サブルーチン、および関連情報を実際にダウンロードすることが含まれる。要求されたファイルがユーザのコンピュータ２０にダウンロードされると、それらのファイルはコンピュータ２０のオペレーティングシステムにインストールされ、登録される。当業者に理解されるべきことは、要求された機能を提供するためにダウンロードされたファイルが確実にアプリケーション１００と適切に一致するために必須のいかなる要求されたレジストリキーまたはセットアップアクションでも、ステップ４５５で実行されるということである。すべての要求されたファイルがマニフェスト３８からダウンロードされた後、ダウンロードされたファイルの更新またはファイルの追加によって提供された追加の機能または更新された機能によって文書１１０のオープニングは完了する。ステップ４９０でこの方法は終了する。
【００５４】
コンポーネントの更新または追加の後で文書１１０が開かれると、その文書のユーザは、ユーザのコンピュータ２０にダウンロードしたすべての使用可能な機能を有している。文書が図３を参照して示したような「スマートな」文書の場合、その文書は、その文書を操作するために要求されるすべての通常の機能をユーザに提供し、ユーザは、さらにその文書内における編集の状況に基づいて有用なヘルプ目次および文書アクションを有することになる。例えば、ユーザが開かれたレジメテンプレートを有する場合、文書のセクションにあるユーザのコンピュータのカーソルの位置に基づいてユーザはヘルプ目次および文書アクションを受信することができる。文書が使用するためのソリューションを入手するためにソリューションＩＤを示すことに加えて、文書は、文書が使用する機能を更新または追加するためにソフトウェアコンポーネントまたはソフトウェアコンポーネントのアップグレードをそこからダウンロードすることができるソリューション位置を示すことになる。したがって、本発明によれば、ユーザは編集中の文書で使用するために入手可能な、機能に対するダウンロードされた更新および追加をいつでも入手することができる。
【００５５】
さらに、ユーザが第２のユーザに文書を送信することを希望する場合、強化された、すなわち「スマートな」機能をその文書に与えるために必須のすべてのソフトウェアコンポーネントを含んでいるインストールパッケージ（ｉｎｓｔａｌｌａｔｉｏｎ　ｐａｃｋａｇｅ）を第２のユーザに送信する必要はない。第２のユーザが文書を開くと、第２のユーザには、図４を参照して説明したようにユーザがマニフェスト３８からソフトウェアコンポーネントをダウンロードすると、その文書はより効率よく機能するということが通知される。ダウンロードされた情報が受諾された場合、文書は、第１のユーザのコンピュータが有するすべての使用可能な機能を第２のユーザのコンピュータ２０に有することになる。
【００５６】
当業者には明らかになろうが、本発明の範囲または趣旨を逸脱せずに、本発明には様々な修正形態または変形形態を行うことができる。本発明の他の実施形態は、本明細書を検討し、本明細書で開示された本発明を実施することによって当業者には明らかになろう。
【図面の簡単な説明】
【図１】本発明の一実施形態と共に使用するためのクライアント−サーバアーキテクチャを示す簡約化されたブロック図である。
【図２】本発明に典型的な動作環境を提供するコンピュータシステムおよび関連する周辺機器およびネットワーク機器を示すブロック図である。
【図３】文書と、本発明の一実施形態による関連するコンテキストセンシティブなアクション（ｃｏｎｔｅｘｔｕａｌｌｙ　ｓｅｎｓｉｔｉｖｅ　ａｃｔｉｏｎｓ）およびヘルプ目次を表示するソフトウェアアプリケーションのグラフィカルユーザインターフェースのコンピュータ画面表示を示す図である。
【図４】クライアントサイドのソフトウェアアプリケーションを操作するため、またこれに機能を提供するために必要となるコンポーネントをダウンロードする方法を示すフローチャートである。
【図５】ユーザに複数の文書ソリューションを供給するためのコンピュータ生成ダイアログボックスを示す図である。
【図６】ユーザがソフトウェアアプリケーションによって要求されるコンポーネントをダウンロードすることを支援するコンピュータ生成ダイアログボックスを示す図である。
【図７】本発明の一実施形態によるコンポーネントをダウンロードするためにインターネットに接続することが必要であることをユーザにプロンプト表示するためのコンピュータ生成ダイアログボックスを示す図である。
【図８】コンポーネントをユーザのコンピュータにダウンロードすることに関するセキュリティ上の潜在的なリスクをユーザに警告するためのコンピュータ生成ダイアログボックスを示す図である。
【図９】ユーザのソフトウェアアプリケーションによって要求されるコンポーネントをダウンロードすることに関する問題をユーザにアラートするためのコンピュータ生成ダイアログボックスを示す図である。
【符号の説明】
３８　マニフェスト
４９　サーバ
５１　インターネット
５２　イントラネット
１００　アプリケーション
１０５　スキーマライブラリ
１１０　文書
１１５　ソリューションプロパティ
１１８　ソリューション位置
【図１】
2004013903.tif 000008
【図２】
2004013903.tif 000009
【図３】
2004013903.tif 000010
【図４】
2004013903.tif 000011
【図５】
2004013903.tif 000012
【図６】
2004013903.tif 000013
【図７】
2004013903.tif 000014
【図８】
2004013903.tif 000015
【図９】
2004013903.tif 000016