(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムの動作を制御する、リソースのオペレーティング・システムとの互換性を動的に検証する方法であって、前記コンピュータ・システムは、処理ユニット、第１の記憶手段および第２の記憶手段を含み、前記第１の記憶手段および前記第２の記憶手段は前記処理ユニットに結合されており、前記第１の記憶手段は前記処理ユニットによって実行可能なプログラムを格納しており、前記処理ユニットが前記第１の記憶手段から前記プログラムを読み出して実行するときに、前記方法は、
前記処理ユニットが、代替リソース・モジュールからリソースを前記第２の記憶手段にロードする要求を取得するステップであって、前記代替リソース・モジュールが、選択されたインターフェースに対応する、ステップと、
前記処理ユニットが、前記代替リソース・モジュールのバージョン情報を、前記第１の記憶手段から取得するステップと、
前記処理ユニットが、現デフォルト・リソース・モジュールのバージョン情報を、前記第１の記憶手段から取得するステップと、
前記処理ユニットが、前記代替リソース・モジュールの前記バージョン情報と、前記現デフォルト・リソース・モジュールの前記バージョン情報とを比較するステップと、
前記代替リソース・モジュールの前記バージョン情報が、前記現デフォルト・リソース・モジュールの前記バージョン情報と同一でない場合、前記処理ユニットが、前記第１の記憶手段から前記代替リソース・モジュールおよび現デフォルト・リソース・モジュールのバージョンに対する互換性情報を取得するステップであって、前記互換性情報は、現デフォルト・リソース・モジュールのリソース・コンテンツが、代替リソース・モジュールを自身からローカライズした、デフォルト・リソース・モジュールのリソース・コンテンツと互換性がある場合に真値として、または互換性がない場合に偽値として、格納されている情報である、ステップと、
前記処理ユニットが、前記現デフォルト・リソース・モジュールが前記代替リソース・モジュールと互換性があることを前記互換性情報が示すか否かを判定するステップと、
前記デフォルト・リソース・モジュールの前記バージョン情報が、前記現デフォルト・リソース・モジュールの前記バージョン情報と同一である場合、または前記現デフォルト・リソース・モジュールが前記代替リソース・モジュールと互換性があることを前記互換性情報が示している場合、前記処理ユニットが、前記代替リソース・モジュールから、前記要求されたリソースを前記第２の記憶手段にロードするステップと、
を備えることを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、概して言えば、コンピュータのソフトウエアに関し、特にオペレーティング・システム内部のリソース・モジュールの互換性を動的に検証するシステムおよび方法に関する。
【０００２】
【従来の技術】
本願は、２０００年１０月３０日に出願した米国予備出願第６０／２４４，３３８号の優先権を主張する。米国予備出願第６０／２４４，３３８号は、この言及により具体的に本願にも含まれるものとする。
【０００３】
世界的な市場にソフトウエアを流通させるには、種々のユーザにアクセス可能なユーザ・インターフェースが必要となる。通常、インターフェースとは、２つのエレメント間で接続を行い、これらが互いに作用し合い、情報を交換することができるようにするポイントのことである。コンピュータ・ソフトウエアの目的では、インターフェースとは、通例、プログラムがユーザ、オペレーティング・システムを含むその他のプログラム、およびコンピュータのハードウエアと共に動作することを可能にするソフトウエアである。プログラムがユーザと動作することを可能にするインターフェースのことをユーザ・インターフェースと呼び、コマンド・ライン・インターフェース、メニュー・ドリブン(menu-driven)、またはグラフィカル・ユーザ・インターフェースが可能である。
【０００４】
例えば、異なる国／領域において共通のユーザ・インターフェースの使用を促進するために、ユーザ・インターフェースは多数の言語に対応しなければならない。最も単純な形態では、ソフトウエア・プロバイダは、手作業でユーザ・インターフェース・ソフトウエア・コードをカスタム化し、対応する各言語の具体的な言語の要件を満たすことによって、多言語ユーザ・インターフェースを設けることができる。しかしながら、この手法は、ソフトウエア・プロバイダが対応する言語の各々に別個のソフトウエア・コード・ベースを維持しなければならないという点で、概して非効率的である。したがって、ソフトウエア・プロバイダは、技術的支援を与えること、更新を行なうこと、および／またはパッチ(patch)を与えること等、各別個のソフトウエア・コード・ベースに個別に対応しなければならない。
【０００５】
異なる国／領域において共通ユーザ・インターフェースの使用を促進する別の手法では、種々の言語固有リソース・ライブラリと関連付けて、共通ユーザ・インターフェース・ソフトウエア・コード・ベースをオペレーティング・システムに設けている。このようなシステムの１つが、Microsoft Corporation（マイクロソフト社）の多言語ユーザ・インターフェース（「ＭＵＩ:multilingual user interface」）である。ＭＵＩ手法の下では、オペレーティング・システムは、共通のユーザ・インターフェース・コード・ベース、デフォルトの言語リソース・モジュール、およびそれぞれの言語でユーザ・インターフェース・オブジェクトの一部または全部を表示するための多数の代替言語固有リソース・モジュール(alternate language-specific resource module)を維持する。例えば、ユーザがスペイン語を所望の言語として選択すると、オペレーティング・システムは、スペイン語特定のリソース・モジュールからシステム・リソースをロードする。
【０００６】
コンピュータのオペレーティング・システムは、通例では、種々のリソース・ライブラリ・ファイルを引用することにより、オペレーティング・システム内で走るソフトウエア・アプリエーションに種々の機能を与える。オペレーティング・システムは、多くの場合、多数のリソース・モジュールを維持しており、各リソース・モジュールは、複数のリソースから成り、オペレーティング・システムがこれらを用いて特定のタスクを実行する。概して言えば、リソースは、多数のプログラムまたは１つのプログラム内の１つよりも多い場所で共有するデータまたはコードの一種であり、ダイアログ・ボックス、サウンド・エフェクト、またはウィンドウ環境におけるフォント等がある。プログラムにおける多くの特徴(feature)は、リソースの追加または置換を行なえば、プログラムのソース・コードを修正することなく、変更することができる。リソース・データは、通常、データ構造、テンプレート、定義手順、管理ルーチン、アイコン・マップ等で構成され、メニュー、ウィンドウ、またはダイアログ・ボックスのような特定のリソースと連動する。
【０００７】
ＭＵＩを用いたオペレーティング・システムの特定的な実施態様では、オペレーティング・システムは、リソース・ローダを含む。リソース・ローダは、所望の言語固有リソース・モジュールからリソースを得て、ロードする。リソース・ローダは、通例では英語でエンコードされているデフォルト・リソース・モジュール、または指定の言語固有代替リソース・モジュールのどちらかからリソースをロードすることを選択する。通例では、所望の代替リソース・モジュールが利用できない場合、リソース・ローダはデフォルト・リソース・モジュールを選択する。
【０００８】
オペレーティング・システムのリソース・モジュールは、周期的に更新するとよいことは、当業者には認められよう。通例では、オペレーティング・システムの更新は、バージョン番号によって特定され、これによってどの更新が適用されているか判断することができる。例えば、元のオペレーティング・システムのリソース・モジュールは、「バージョン５．０」というようなバージョン番号によって特定することができる。オペレーティング・システムのリソース・モジュールを更新すると、（リソース情報を含む）更新後のリソース・モジュールは「バージョン５．２」と呼ばれる。しかしながら、リソース・モジュールの更新は必ずしもリソース内に含まれるリソースを変更する訳ではないことを、当業者は認めよう。加えて、オペレーティング・システムは大多数のリソース・モジュールを利用する場合もあるので、殆どのオペレーティング・システムの更新は、代替リソース・モジュールの各々ではなく、デフォルト・リソース・モジュールのバージョンのみを更新することに、少なくとも最初は制限される。
【０００９】
【発明が解決しようとする課題】
ＭＵＩを用いた、リソース・ローダを有するオペレーティング・システムの前述の例では、一般に、リソース・ローダは代替リソース・モジュールからロードするリソースが、オペレーティング・システムの最新バージョンと互換性があるか否か検証しなければならない。従来のＭＵＩを用いたオペレーティング・システムでは、これを行なう際に、代替リソース・モジュールのバージョン情報を、オペレーティング・システムの現バージョンと比較する。例えば、リソース・ローダが、「３．０」というバージョン・ラベルを有する代替リソース・モジュールからリソースをロードする要求を受け、一方デフォルトのオペレーティング・システムのリソース・モジュールが「３．３」というバージョン・ラベルに更新されている場合、リソース・ローダは、代替リソース・モジュールからリソースをロードしない。何故なら、代替リソース・モジュールはオペレーティング・システムの現バージョンとは互換性がないと見なすからである。したがって、リソース・ローダは、更新したデフォルトのリソース・モジュールからリソースをロードすることを実行しない。その結果、代替リソース・モジュールのリソースがなおも有効であっても、オペレーティング・システムは更新後デフォルト言語に戻るので、ＭＵＩの機能性が低下する。
【００１０】
したがって、オペレーティング・システムの更新を実施する場合に、リソース・モジュールの互換性を動的に検証し、ＭＵＩ機能性の継続を図るシステムおよび方法が求められている。
【００１１】
【課題を解決するための手段】
ユーザ・インターフェース、リソース・ローダ、およびレジストリ・リソース・データベースを有するコンピュータ・オペレーティング・システムにおいて、リソース・モジュールのリソース・コンテンツがオペレーティング・システムの現バージョンと互換性があるか否かについて、動的に検証する方法を提供する。リソースの要求を取得すると、代替リソース・モジュールからリソースをロードする前に、リソース・ローダは、リソース・モジュールが、オペレーティング・システムと互換性を保っていることを検証する。本発明の一実施形態によれば、オペレーティング・システムは、多言語ユーザ・インターフェースを有し、言語固有のリソース・モジュールを利用する。
【００１２】
本発明によれば、リソースのオペレーティング・システムとの互換性を動的に検証する方法を提供する。この方法によれば、リソース・ローダは、代替リソース・モジュールからリソースをロードする要求を取得する。この場合、代替リソース・モジュールは特定のインターフェースに対応する。リソース・ローダは、代替リソース・モジュールを自身からローカライズ(localize)した、デフォルト・リソース・モジュールのリソース・コンテンツを取得する。リソース・ローダは、現デフォルト・リソース・モジュールのリソース・コンテンツを取得する。リソース・ローダは、代替リソース・モジュールを自身からローカライズした、デフォルト・リソース・モジュールのリソース・コンテンツを、現デフォルト・リソース・モジュールのリソース・コンテンツと比較する。代替リソース・モジュールを自身からローカライズした、デフォルト・リソース・モジュールのリソース・コンテンツが、現デフォルト・リソース・モジュールのリソース・コンテンツと同一である場合、リソース・ローダは、代替リソース・モジュールをロードする。
【００１３】
本発明の別の態様によれば、リソース・モジュールがオペレーティング・システムの現バージョンと互換性があることを検証するコンピュータ・システムを提供する。コンピュータ・システムは、リソース・モジュールからリソースをロードするリソース・ローダと、少なくとも１つのリソースを含むデフォルト・リソース・モジュールと、デフォルト・リソース・モジュールからローカライズされた１つ以上のリソースを含む代替リソース・モジュールと、代替リソース・モジュールを自身からローカライズした、デフォルト・リソース・モジュールのリソース・コンテンツを表わす一意の番号とを含む。この一意の番号は、チェックサムを含むことができる。代替リソース・モジュールを自身からローカライズした、リソース・コンテンツが、現デフォルト・リソース・モジュールのリソース・コンテンツと同一である場合、リソース・ローダは代替リソース・モジュールからリソースをロードする。本発明の付加的な態様によれば、リソースがオペレーティング・システムの現バーションと互換性があることを動的に検証するコンピュータ実行可能モジュールを有するコンピュータ読み取り可能媒体を提供する。
【００１４】
このように、本発明は、リソースのオペレーティング・システムとの互換性を動的に検証するシステムおよび方法を提供する。好適な実施形態によれば、オペレーティング・システムは多言語ユーザ・インターフェースを有し、リソース・モジュールは言語固有である。
【００１５】
本発明の前述の態様および付随する利点の多くは、添付図面と関連付けて以下の詳細な説明を参照することによって、一層用意に認められよう。
【００１６】
【発明の実施の形態】
図５は、本発明を実現可能とするのに相応しい計算システム環境の一例である。計算システム環境は、相応しい計算環境の一例に過ぎず、本発明の使用または機能の範囲に関していかなる限定をも示唆しようとするのではない。更に、計算環境は、例示の計算環境に示すコンポーネントのいずれの１つまたはその組み合わせに関しても、依存性も要件も有するものとして解釈してはならない。
【００１７】
本発明は、多数のその他の汎用または特殊目的計算システム環境またはコンフィギュレーションと共に動作する。公知の計算システム、環境および／またはコンフィギュレーションで、本発明との使用に相応しい例は、限定としてではなく、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサ系システム、セット・トップ・ボックス、プログラマブル消費者電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、電話システム、上述のシステムまたはデバイスのいずれをも含む分散計算環境等を含む。
【００１８】
本発明の説明は、コンピュータが実行するプログラム・モジュールのようなコンピュータ実行可能命令の一般的なコンテキストで行うこととする。一般に、プログラム・モジュールは、特定のタスクを実行したり、あるいは特定の抽象的データ・タイプを使用する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。また、本発明は、分散型計算機環境において、通信ネットワークを通じてリンクしたリモート処理デバイスによってタスクを実行するという実施も可能である。ある分散型計算機環境においては、プログラム・モジュールは、メモリ記憶素子を含むローカルおよびリモート双方のコンピュータ記憶媒体に配することができる。
【００１９】
図５を参照すると、本発明を実施するための例示のシステムは、コンピュータ２０の形態とした汎用計算デバイスを含む。コンピュータ２０のコンポーネントは、処理ユニット２２、システム・メモリ２４、およびシステム・メモリからプロセッサまでを含む種々のシステム・コンポーネントを結合するシステム・バス２６を含むことができるが、これらに限定される訳ではない。システム・バスは、種々のバス・アーキテクチャのいずれかを用いたメモリ・バスまたはメモリ・コントローラ、周辺バス、およびローカル・バスを含む、数種類のバス構造のいずれでもよい。限定ではなく一例として、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、改良ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格協会（ＶＥＳＡ）ローカル・バス、およびＭｅｚｚａｎｉｎｅバスとしても知られている周辺素子相互接続（ＰＣＩ）バスを含む。
【００２０】
コンピュータ２０は、通例では、種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ２０がアクセス可能であれば、入手可能な媒体のいずれでも可能であり、揮発性および不揮発性双方の媒体、リムーバブルおよび非リムーバブル媒体を含む。一例として、そして限定ではなく、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）、またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、またはその他の磁気ストレージ・デバイス、あるいは所望の情報を格納するために使用可能であり、コンピュータ２０によってアクセス可能なその他のいずれの媒体でも含まれる。
【００２１】
通信媒体は、通例では、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他データを、キャリア波またはその他のトランスポート機構のような変調データ信号におけるその他のデータを具体化し、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、信号内に情報をエンコードするように、その１つ以上の特性を設定または変更した信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、ならびに音響、ＲＦ、赤外線およびその他のワイヤレス媒体のようなワイヤレス媒体を含む。前述のいずれの組み合わせでも、コンピュータ読み取り可能媒体の範囲内に当然含まれるものとする。
【００２２】
システム・メモリ２４は、リード・オンリ・メモリ（ＲＯＭ）２８およびランダム・アクセス・メモリ（ＲＡＭ）３０のような揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。基本入出力システム３２（ＢＩＯＳ）は、起動中のように、コンピュータ２０内のエレメント間におけるデータ転送を補助する基本的なルーチンを含み、通例ではＲＯＭ２８内に格納されている。ＲＡＭ３０は、通例では、処理ユニット２２が直ちにアクセス可能であるデータおよび／またはプログラム・モジュール、または現在処理ユニット２２によって処理されているデータおよび／またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図５は、オペレーティング・システム４６、アプリケーション・プログラム４８、その他のプログラム・モジュール５０、およびプログラム・データ５２を示す。
【００２３】
また、コンピュータ２０は、その他のリムーバブル／非リムーバブル揮発性／不揮発性コンピュータ記憶媒体も含むことができる。一例としてのみ、図５は、非リムーバブル不揮発性磁気媒体３４からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ３６、リムーバブル不揮発性磁気ディスク４０からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ３８、ならびにＣＤ  ＲＯＭまたはその他の光媒体のようなリムーバブル不揮発性光ディスク４４からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ４２を示す。動作環境の一例において使用可能なその他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリ・カード、ＤＶＤ、ディジタル・ビデオテープ、ベルヌーイ・キャップ・カートリッジ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれる。ハード・ディスク・ドライブ３６、磁気ディスク・ドライブ３８、および光ディスク・ドライブ４２は、それぞれ、ハード・ディスク・ドライブ・インターフェース５４、磁気ディスク・ドライブ・インターフェース５６、および光ディスク・ドライブ・インターフェース６０によって、システム・バス２６に接続することができる。あるいは、ハード・ディスク・ドライブ３６、磁気ディスク・ドライブ３８、および光ディスク・ドライブ４２は、通例では、小型コンピュータ・システム・インターフェース（ＳＣＳＩ）によって、システム・バス２６に接続する。
【００２４】
先に論じ図５に示すドライブおよびそれらと連動するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ２０のその他のデータを格納する。図５では、例えば、ハード・ディスク・ドライブ３６は、オペレーティング・システム、アプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データを格納する。尚、これらのコンポーネントは、オペレーティング・システム４６、その他のプログラム・モジュール５０、およびプログラム・データ５２と同じでも異なっていても可能であることを注記しておく。ユーザは、キーボード６０、およびマウス、トラックボールまたはタッチ・パッドと一般に呼ばれているポインティング・デバイス６２によって、コマンドおよび情報をコンピュータ２０に入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザ入力インターフェース６４を介して、処理ユニット２２に接続されており、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス（ＵＳＢ）のようなその他のインターフェースおよびバス構造によって接続することも可能である。
【００２５】
コンピュータ２０は、１つ以上のリモート・コンピュータへの論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピュータ６５は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例では、コンピュータ２０に関して先に説明したエレメントの多くまたは全てを含むが、図５にはメモリ・ストレージ・デバイスのみを示している。図５に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）６６およびワイド・エリア・ネットワーク（ＷＡＮ）６７を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいては一般的である。コンピュータ２０は、少なくとも１つのネットワーク接続を非連続とするように構成してもよいことを、当業者は認めよう。したがって、コンピュータ２０は、ネットワーク接続がディスエーブルされている時間期間にわたって、リモート・コンピュータ６５と接続することはできない。このような構成を一般に「オフライン」構成と呼ぶ。
【００２６】
ＬＡＮネットワーク環境で用いる場合、コンピュータ２０は、ネットワーク・インターフェースまたはアダプタ６８を介してＬＡＮ６６に接続する。ＷＡＮネットワーク環境で用いる場合、コンピュータは、通例では、モデム、またはインターネットのようなＷＡＮ６７を通じて通信を確立するその他の手段を含む。モデムは、内蔵でも外付けでもよく、シリアル・ポート・インターフェースまたはその他の適切な機構を介してシステム・バス２６に接続することができる。ネットワーク環境では、コンピュータ２０に関して図示したプログラム・モジュール、またはその一部は、リモート・メモリ・ストレージ・デバイスに格納することもできる。一例として、そして限定ではなく、図５は、リモート・アプリケーション・プログラム４８がメモリ素子２４上に常駐するものとして示している。尚、図示のネットワーク接続は一例であり、コンピュータ間で通信リンクを確立する他の手段も使用可能であることは認められよう。コンピュータ２０の他の多くの内部コンポーネントは示されていないが、このようなコンポーネントおよびその相互接続は周知であることを当業者は認めよう。したがって、コンピュータ２０の内部構造に関するこれ以上の詳細は、本発明に関連つけて開示する必要はない。
【００２７】
オペレーティング・システム４６、アプリケーション・プログラム４８、およびデータ５２のようなプログラム・モジュールは、そのメモリ・ストレージ・デバイスの１つを介してコンピュータ２０に供給される。メモリ・ストレージ・デバイスは、ＲＯＭ２８、ＲＡＭ３０、ハード・ディスク・ドライブ３６、磁気ディスク・ドライブ３８、または光ディスク・デバイス４２を含むことができる。ハード・ディスク・ドライブ３６は、データ５２、ならびにオペレーティング・システム４６およびアプリケーション・プログラム４８を含む、プログラムを格納するために用いられる。
【００２８】
コンピュータ２０をオンにするかまたはリセットすると、ＲＯＭ２８に格納してあるＢＩＯＳ３２が、処理ユニット２２に、ハード・ディスク・ドライブ３６からＲＡＭ３０にオペレーティング・システムをロードするように命令する。一旦オペレーティング・システム４６がＲＡＭ３０にロードされると、処理ユニットはオペレーティング・システム・コードを実行し、オペレーティング・システムのユーザ・インターフェースと連動するビジュアル・エレメントをモニタ上に表示させる。ユーザがアプリケーション・プログラム４８を開くと、プログラム・コードおよび関連するデータがハード・ディスク・ドライブから読み出され、ＲＡＭ３０に格納される。
【００２９】
本願は、リソース・モジュールのオペレーティング・システムとの互換性を動的に検証することができるリソース・ローダを実装する方法およびシステムを対象とする。即ち、本発明は、リソース・モジュールとも呼ばれる、言語固有ＭＵＩリソースのファイル・セットをロードするシステムおよび方法に関して説明する。当業者には容易に理解されようが、本発明は、その動的ＭＵＩリソース・モジュール・ローダへの応用のみに限定される訳ではない。したがって、開示する実施形態は、単なる一例に過ぎず、限定的に解釈すべきでないことは理解して当然である。
【００３０】
図１は、本発明にしたがって、リソース・モジュールからロードしたリソースの互換性を動的に検証することができるリソース・ローディング・システム７０を示すブロック図である。図１に示すように、システム７０は一般にリソース・ローダ７２を含み、これは、通常オペレーティング・システム４６の一部として含まれる。リソース・ローダ７２は、レジストリ・リソース・バージョン・データベース７４にアクセスし、使用可能な種々のオペレーティング・システム・リソースのバージョンおよびロケーションを追跡することができる。本発明の一実施形態では、レジストリ・リソース・バージョン・データベース７４は、デフォルト・リソース・モジュールおよび１つ以上の代替リソース・モジュールのバージョン情報を追跡する。また、レジストリ・リソース・バージョン・データベース７４は、代替リソース・モジュールと共に動作するデフォルト・リソース・モジュールのバージョン情報も追跡する。リソース・モジュールにおけるバージョン情報は、どのリソース・モジュールをロードすべきか判定を行なう際に用いられる。
【００３１】
本発明の一実施形態は、レジストリ・リソース・バージョン・データベース７４を用いてリソースの互換性を追跡し判定するが、本発明の範囲から逸脱することなく、リソースの互換性を追跡する多くの異なる方法も利用可能であることを当業者は認めよう。この点についても、本発明は、リソースの互換性を追跡するいずれの特定のやり方にも限定されることはない。例えば、階層状データベースまたはリレーショナル・データベースのような異なるタイプのデータベースを利用したり、データベース・レコードに異なるフォーマットを利用して、リソースの互換性を追跡することによって、本発明を実施することも可能である。加えて、本発明は、データベースを用いないように、互換性情報をリソース・モジュール自体に格納する等で、リソースの互換性を追跡することによって実施することも可能である。
【００３２】
本発明の一実施形態によれば、レジストリ・リソース・バージョン・データベース７４は、アプリケーション名フィールド、代替リソース・モジュール・バージョン・フィールド、デフォルト・リソース・モジュール・バージョン・フィールド、およびリソース互換性フィールドを収容するレコードを含む。キー・フィールド上のインデックスを利用して、これらのフィールドを探索することができる。本発明の別の実施形態では、レジストリ・リソース・バージョン・データベース７４内のレコードに、異なるフォーマットを利用する場合もある。例えば、本発明は、異なるフィールド数を有し、各フィールドに異なるタイプのデータを格納し、フィールドに異なる名称を有するレコードを用いて実施することも可能である。
【００３３】
図１に示すように、リソース・ローダ７２はデフォルト・リソース・モジュール７６とも交信する。本発明の一実施形態では、デフォルト・リソース・モジュール７６は、概して、デフォルト・リソース・コンテンツ・コード、およびメニュー、ウィンドウ、またはダイアログ・ボックスのように、特定のリソースと連動するデータ構造、テンプレート、定義手順、管理ルーチン、アイコン・マップ等を含む種々のリソースを含み、通例では英語である。あるいは、デフォルト・リソース・モジュールのリソース・コンテンツは、データのみまたはコードのみで構成することも可能である。また、デフォルト・リソース・モジュール７６は、デフォルト・リソース・モジュール７６と互換性のあるオペレーティング・システム・バージョンのバージョン情報７８を含む識別子も含む。加えて、本発明の一実施形態では、デフォルト・リソース・モジュール７６は、デフォルト・リソース・モジュール７６内に収容されているリソース・コンテンツを表わしかつ識別する一意の番号を含む。例えば、一実施形態では、一意の数値識別子は、モジュール内部のリソース・コンテンツのチェックサム８０である。本発明の一実施形態によれば、チェックサムは、リソース・モジュールのリソース・コンテンツのみに基づく。チェックサム生成の間、コードおよびバージョン情報は生成プロセスにおいて除外される。何故なら、リソース・モジュールは、リソース・コンテンツには全く変更を加えることなく、そのコードまたはバージョン番号の変更によって更新することができるからである。
【００３４】
図示する本発明の実施形態では、ハッシング・ルーチンを利用して、リソース・ファイルのコンテンツに一意の数値識別子を与える。ハッシングとは、ハッシング関数として知られている変換によって、情報を数値にマップするプロセスのことである。何らかの方法で処理または操作されるデータ（必ずしも数値データではない）から取った番号の集合の和から得られるエラー・チェック値として、ハッシュ合計(hash total)を用いることができる。処理の後、ハッシュ合計を再度計算し、元の合計と比較する。双方が一致しない場合、元のデータが何らかの方法で変更されていることになる。ハッシング・ルーチンから戻された値は、通常、チェックサムとして記述される。
【００３５】
本発明の一実施形態では、ＭＤ５−メッセージ・ダイジェスト・ハッシング・アルゴリズムを利用して、チェックサムを生成する。ＭＤ５−メッセージ・ダイジェスト・アルゴリズムは、入力として任意長のメッセージを取り込み、出力として１２８ビットのフィンガプリント(fingerprint)即ち入力のメッセージ・ダイジェストを生成する。ＭＤ５−メッセージ・ダイジェスト・ハッシング・アルゴリズムは、当業者には周知であり、これ以上詳しくはここに記載しない。異なるリソースを表わし比較する種々のハッシング・ルーチンのいずれでも、本発明と共に実用可能であることは、当業者であれば容易に理解されよう。また、異なるリソースを表わし比較する別の方法も、本発明と共に実用可能であることも当業者には理解されよう。
【００３６】
引き続き図１を参照すると、リソース・ローダ７２は、更に、１つ以上の代替リソース・モジュール８２とも交信する。代替リソース・モジュールは、デフォルト・リソース・モジュール７６からローカライズしたリソース・コンテンツを含む。概して言えば、ローカライゼーション(localization)とは、プログラムを変更し、それが用いられるエリアに対してそれが適切となるようにするプロセスである。多言語ローカライゼーションに関しては、プログラムの開発者は、異なる国または言語毎にプログラムをローカライズしなければならない。何故なら、ある言語でのキャラクタが他の言語では正しくないという場合もあり得るからである。
【００３７】
また、代替リソース・モジュール８２は、バージョン番号８４、および代替リソース・モジュール８２を自身からローカライズした、デフォルト・リソース・モジュール７６のリソース・コンテンツを表わす情報も含む。本発明の一実施形態では、代替リソース・モジュール８２は、二進実行可能コードを収容せず、ローカライズしたリソース情報、バージョン情報８４、およびこれらを自身からローカライズした、デフォルト・リソース・モジュールのリソース・コンテンツのみを収容する。当業者には容易に理解されようが、本発明の範囲内において、代わりのシステム構成も考えられる。
【００３８】
概して言えば、ＭＵＩを用いるオペレーティング・システムでは、指定のユーザ・インターフェース言語を特定し、リソース・ローダは、対応する代替リソース・モジュール８２からリソースの一部または全部をロードしようとする。本発明によれば、リソース・ローダ７２はリソースに対するコールを取得する。リソースをロードする前に、リソース・ローダ７２は、代替リソース・モジュール内のリソースがオペレーティング・システム４６と互換性があることを検証する。デフォルト言語固有リソース・モジュール７６のバージョン情報７８が、代替言語固有リソース・モジュール８２のバージョン情報８４と一致した場合、リソース・ローダ７２は、代替言語固有モジュール８２からリソースをロードする。しかしながら、バージョン情報が一致しない場合、リソース・ローダは、所望の代替リソース・モジュールを自身からローカライズした、デフォルト・リソース・モジュールが、最新のデフォルト・リソース・コンテンツと同一が否か、動的に判定を行なう。具体的には、リソース・ローダ７２は、現デフォルト・リソース・モジュールのリソース・コンテンツのチェックサムを、代替リソース・モジュールを自身からローカライズした、デフォルト・リソース・モジュールのチェックサムと比較する。
【００３９】
図２、図３および図４は、本発明による動的リソース互換性検証およびローディング・ルーチン２００のフロー図である。本発明の一実施形態では、ルーチン２００は、２つの方法でリソースの互換性を検証する。図４を参照すると、デフォルト・リソース・モジュール７６および代替リソース・モジュール８２の双方は、各モジュール内に収容されているリソースのコンテンツを定量化するチェックサム情報を含む。代替リソース・モジュール８２の場合、チェックサム８６は、これらを自身からローカライズした、デフォルト・リソース・モジュールのリソース・コンテンツを定量化する。デフォルト・リソース・モジュールがチェックサム情報を含まない場合、追加の処理をブロック２２５で行なわなければならない。
【００４０】
図２を参照すると、ブロック２０２において、リソース・ローダ７２は、代替リソースの要求を取得する。本発明の一実施形態によれば、代替リソースはユーザが選択したインターフェース言語に対応し、代替リソースは言語固有である。ブロック２０４におおいて、リソース・ローダ７２は、デフォルト・リソース・モジュール７６からバージョン情報７８を取得する。ブロック２０６において、リソース・ローダは、対応する代替リソース・モジュール８２からバージョン情報８４を取得する。判断ブロック２０８において、検査を実施し、デフォルト・リソース・モジュールのバージョン情報が代替リソース・モジュールのバージョン情報と一致するか否か判定をオ行なう。バージョン情報が一致した場合、代替リソース・モジュールに含まれるリソースは、現オペレーティング・システムのユーザ・インターフェースと互換性があると考えられる。この時点で、リソース・ローダ７２は、ブロック２１０において要求された代替リソース・モジュールをロードし、ブロック２１２においてルーチン２００は終了する。デフォルトおよび代替リソース・モジュールのバージョン番号に変更が見られなかったので、更新は適用されなかったのであり、リソースに互換性があることを検証するためにこれ以上の処理は必要でない。
【００４１】
判断ブロック２０８において、バージョン情報が一致しないと判定された場合、ルーチン２００は判断ブロック２１３（図３）に進む。これについて、以下に説明する。従来のリソース・ローディング・ルーチンは、単にこの時点でデフォルト・リソース・モジュールからリソースをロードするだけであったことを認めよう。図３は、本発明の一実施形態を示し、リソース・ローダ７２は、リソースのバージョン情報が一致しなかった場合、レジストリ・リソース・データベース７４を利用して、リソースの互換性を動的に検証する。図３を参照すると、判断ブロック２１３において、ルーチン２００を最後に完了して以来、代替リソース・モジュール８２が更新されているか否か判定を行なう。更に本発明の一実施形態によれば、代替リソース・モジュール８２の更新を検出するには、レジストリ・リソース・バージョン・データベース７４が、代替リソース・モジュール８２のバージョンのレコードを収容しているか否か判定を行なう。探索を促進するために、リソース・ローダ７２は、代替リソース・モジュールのバージョン番号がキー・フィールドになっている、レジストリ・リソース・バージョン・データベース７４上のインデックスを用いることができる。レジストリ・リソース・バージョン・データベース７４が代替リソース・モジュール８２のバージョンの記録を収容している場合、ルーチン２００が最後に完了して以来更新は行われていない。それ以外の場合、レジストリ・リソース・バージョン・データベース７４が代替リソース・モジュール８２のバージョンのレコードを収容していない場合、ルーチン２００を最後に完了して以来代替リソース・モジュール８２が更新されていることになる。ブロック２１３において、レジストリ・リソース・バージョン・テータベース７４において、代替リソース・モジュール８２のバージョンのレコードが見つからなかった場合、ブロック２１４において、レジストリ・リソース・バージョン・データベース７４に新たなレコードを作成し、代替リソース・モジュール８２のバージョンおよびデフォルト・リソース・モジュール７６のバージョンの互換性を追跡し、ルーチン２００は図４に進み、互換性情報を取得する。一方、ブロック２１３において、レジストリ・リソース・バージョン・データベース７４内に代替リソース・モジュール８２のバージョンのレコードが見つかった場合、ルーチン２００はブロック２１５に進む。
【００４２】
判断ブロック２１５において、ルーチン２００を最後に完了して以来、デフォルト・リソース・モジュール７６が更新されているか否か判定を行なう。本発明の一実施形態によれば、リソース・ローダ７２は、デフォルト・リソース・モジュールの更新を検出する際、レジストリ・リソース・バージョン・データベース７４がデフォルト・リソース・モジュール７６のバージョンのレコードを収容しているか否か判定を行なう。探索を促進するために、リソース・ローダ７２は、デフォルト・リソース・モジュールのバージョンがキー・フィールドになっているレジストリ・リソース・バージョン・データベース７４上のインデックスを用いることができる。レジストリ・リソース・バージョン・データベース７４がデフォルト・リソース・モジュール７６のバージョンのレコードを収容している場合、デフォルト・リソース・モジュールは、ルーチン２００が最後に更新されて以来、更新されていないことになる。それ以外の場合、レジストリ・リソース・バージョン・データベース７４がデフォルト・リソース・モジュール７６のバージョンのレコードを収容していない場合、ルーチン２００はブロック２１４に進み、レジストリ・リソース・バージョン・データベース７４内に、代替リソース・モジュール８２のバージョンおよびデフォルト・リソース・モジュール７６のバージョンのために新たなレコードを作成する。
【００４３】
図３に示すブロック２１３および２１５において、レジストリ・リソース・バージョン・データベース７４が代替リソース・モジュール８２および現デフォルト・リソース・モジュール７６のバージョンに対する互換性情報を含んでいると判定した場合、リソースは更新されておらず、ルーチン２００は判断ブロック２１６に進む。判断ブロック２１６において、リソース・ローダ７２は、レジストリ・リソース・バージョン・データベース内に格納されている互換性情報を用いて、代替リソース・モジュール８２のバージョンが、デフォルト・リソース・モジュール７６のバージョンと互換性があるか否か判定を行なう。本発明の一実施形態によれば、レジストリ・リソース・バージョン・データベース７４内のリソース互換性情報フィールドは、真値および偽値を格納可能なブール・データ・タイプである。互換性情報フィールドは、現デフォルト・リソース・モジュールのリソース・コンテンツが、代替リソース・モジュールを自身からローカライズした、デフォルト・リソース・モジュールのリソース・コンテンツと互換性がある場合に真値を格納するように用いられる。同様に、互換性情報フィールドは、現デフォルト・リソース・モジュールのリソース・コンテンツが、代替リソース・モジュールを自身からローカライズした、デフォルト・リソース・モジュールのリソース・コンテンツと互換性がない場合には偽値を格納するように用いられる。リソースの互換性を判定するために、リソース・ローダ７２は、レジストリ・リソース・バージョン・データベース７４内に真値または偽値として格納されている互換性情報を検索し代替リソース・モジュール８２のバージョンおよびデフォルト・リソース・モジュール７６のバージョンを求める。
【００４４】
図３に示す判断ブロック２１６において、レジストリ・リソース・バージョン・データベース７４から検索した互換性情報が真と評価された場合、現デフォルト・リソース・モジュールは代替リソース・モジュール８２のバージョンと互換性がある。このようにリソースに互換性ある場合、ルーチン２００はブロック２１８に進み、リソース・ローダ７２は代替リソース・モジュール８２からリソースをロードする。判断ブロック２１６において、レジストリ・リソース・バージョン・データベース７４から検索した互換性情報が偽と評価された場合、現デフォルト・リソース・モジュールは代替リソース・モジュール８２のバージョンとは互換性がないことになる。このようにリソースに互換性がない場合、ルーチン２００はブロック２２０に進み、リソース・ローダ７２はデフォルト・リソース・モジュール７６からリソースをロードする。適切なリソース・モジュールからリソースをロードした後、ルーチン２００はブロック２２２において終了する。
【００４５】
図３の判断ブロック２１５において、レジストリ・リソース・バージョン・データベース７４が代替リソース・モジュール８２のバージョンおよび現デフォルト・リソース・モジュール７６について互換性情報を収容していなかったと判定することによって、リソースに対する更新が検出された場合、ルーチン２００は図４に進む。図４は、本発明の一実施形態にしたがってリソースの互換性を検証する２つの方法を示す。ブロック２２６に示すプロセスを実行するのは、コンテンツ検証情報が現デフォルト・リソース・モジュール内に収容されている場合である。具体的には、本発明の一実施形態では、コンテンツ検証情報はチェックサム８０の情報である。
【００４６】
ここで図４を参照する。判断ブロック２２４において、検査を行い、デフォルト・リソース・モジュール７６にコンテンツ検証情報が格納されているか否か判定を行なう。デフォルト・リソース・ファイル内にチェックサム情報が格納されていない場合、ルーチン２００はブロック２２５に進む。ブロック２２５は、本発明の一実施形態にしたがってリソースの互換性を検証する２つの方法の内、２番目の方法を示す。ブロック２２５に示すプロセスを実行するのは、現デフォルト・リソース・モジュール内にコンテンツ検証情報が収容されていない場合である。この場合、動的なリソース互換性の検証に用いる、現デフォルト・リソース・モジュール７６のリソース・コンテンツを判断するためには、追加の処理を実行しなければならない。本発明の実際の実施形態によれば、リソース・ローダ７２は最新のデフォルト・リソース・モジュール７６のリソース・コンテンツのチェックサムを計算する。
【００４７】
チェックサム８０の情報をデフォルト・リソース・モジュール７６に格納すると、ルーチン２００はブロック２２６に進み、リソース・ローダ７２はデフォルト・リソース・モジュール・チェックサム情報８０を取得する。ブロック２２８において、リソース・ローダは代替リソース・モジュール・チェックサム８４の情報を取得する。判断ブロック２３０において、検査を行い、チェックサムが一致するか否か判定する。チェックサムが一致した場合、ルーチン２００はブロック２３２に進み、レジストリ・リソース・バージョン・データベース７４を更新し、現デフォルト・リソース・モジュールのリソース・コンテンツは、代替リソース・モジュール８２を自身からローカライズした、デフォルト・リソース・モジュールのリソース・コンテンツと互換性があることを示す。本発明の一実施形態によれば、代替リソース・モジュール８２のバージョンおよびデフォルト・リソース・モジュール７６のバージョンについての互換性情報は、レジストリ・リソース・バージョン・データベース７４内に真値として格納する。こうして、ルーチン２００は、デフォルト・リソース・モジュール７６および代替リソース・モジュール８２の同じバージョンがその後ロードされたときにはいつでも、レジストリ・リソース・バージョン・データベース７４内に格納されている代替リソース・モジュール８２のバージョンおよびデフォルト・リソース・モジュール７６のバージョンについての互換性情報を用いることができる。ブロック２３２においてレジストリ・リソース・データベース７４内の互換性情報を更新した後、ルーチン２００はブロック２３３に進み、リソース・ローダ７２は代替リソース・モジュール８２からリソースをロードする。
【００４８】
判断ブロック２３０において、チェックサムが一致しなかったと判定した場合、ルーチン２００はブロック２３４に進む。チェックサム値が一致しなかったので、デフォルト・リソース・モジュール７６においてリソースは変更されていないことになる。したがって、代替リソース・モジュール８２はもはやオペレーティング・システム４６と互換性はない。ブロック２３４において、レジストリ・リソース・バージョン・データベース７４を更新し、代替リソース・モジュール８２のバージョンは、デフォルト・リソース・モジュール７６のバージョンとは互換性がないことを示す。本発明の一実施形態では、代替リソース・モジュール８２のバージョンおよびデフォルト・リソース・モジュール７６のバージョンについての互換性情報は、レジストリ・リソース・バージョン・データベース７４内に偽値として格納する。こうして、ルーチン２００は、デフォルト・リソース・モジュール７６および代替リソース・モジュール８２の同じバージョンがその後にロードされたときにはいつでも、レジストリ・リソース・データベース７４に格納されている互換性情報を用いて、リソースの互換性を判定することができる。ブロック２３４においてレジストリ・リソース・バージョン・データベース７４内の互換性情報を更新した後、ルーチン２００はブロック２３５に進み、リソース・ローダ７２はデフォルト・リソース・モジュール７６からリソースをロードする。この時点で、ルーチン２００はブロック２３６において終了する。
【００４９】
再度図３を参照すると、更新が行われるまで、リソース・ローダ７２はレジストリ・リソース・バージョン・データベース７４内の互換性情報を利用して、代替リソース・モジュール８２の現デフォルト・リソース・モジュール７６との互換性を動的に検証する。本発明の一実施形態によれば、リソース・ローダ７２は、更新が行われバージョン情報が変更した場合にのみ、図４に示す追加の処理ステップを実行する。その場合、デフォルトおよび代替リソース・モジュールの内容が互換性を保ったままであるか否か判定を行なうことが必要となる。本発明は、代替リソース・モジュール８２内のリソースのオペレーティング・システム７０の最新バージョンとの互換性を動的に検証することによって、ＭＵＩリソース・モジュールの利用を促進する。代替リソース・モジュール８２内のリソースとの互換性に影響を与えることなくオペレーティング・システム７０を更新した場合、本発明のリソース・ローダ７２は、代替リソース・モジュール８２からリソースをロードし利用し続けることによって、リソース・モジュールのバージョン情報がオペレーティング・システムのそれからのものと異なっていても、ＭＵＩ機能性を提供し続ける。
【００５０】
以上、本発明の好適な実施形態について図示し説明したが、本発明の精神および範囲から逸脱することなく、種々の変更が可能であることは認められよう。
【図面の簡単な説明】
【図１】図１は、本発明にしたがって、リソース・モジュールの互換性を動的に検証することができる、例示のリソース・ローディング・システムのブロック図である。
【図２】図２は、本発明にしたがってリソース・モジュールの互換性を動的に検証することができるリソース・ローディング・プロセスのフロー図である。
【図３】図３は、本発明にしたがってリソース・モジュールの互換性を動的に検証することができるリソース・ローディング・プロセスのフロー図である。
【図４】図４は、本発明にしたがってリソース・モジュールの互換性を動的に検証することができるリソース・ローディング・プロセスのフロー図である。
【図５】本発明を実施することができる、適当な計算システム環境を示すブブロック図である。
【符号の説明】
２０    コンピュータ
２２    処理ユニット
２４    システム・メモリ
２６    システム・バス
２８    リード・オンリ・メモリ（ＲＯＭ）
３０    ランダム・アクセス・メモリ（ＲＡＭ）
３２    基本入出力システム
３４    非リムーバブル不揮発性磁気媒体
３６    ハード・ディスク・ドライブ
３８    磁気ディスク・ドライブ
４０    リムーバブル不揮発性磁気ディスク
４２    光ディスク・ドライブ
４４    リムーバブル不揮発性光ディスク
４６    オペレーティング・システム
４８    アプリケーション・プログラム
５０    プログラム・モジュール
５２    プログラム・データ
５４    ハード・ディスク・ドライブ・インターフェース
５６    磁気ディスク・ドライブ・インターフェース
６０    光ディスク・ドライブ・インターフェース
６０    キーボード
６２    ポインティング・デバイス
６４    ユーザ入力インターフェース
６５    リモート・コンピュータ
６６    ローカル・エリア・ネットワーク（ＬＡＮ）
６７    ワイド・エリア・ネットワーク（ＷＡＮ）
６８    アダプタ
７０    リソース・ローディング・システム
７２    リソース・ローダ
７４    レジストリ・リソース・バージョン・データベース
７６    デフォルト・リソース・モジュール
７８    バージョン情報
８０    チェックサム
８２    代替リソース・モジュール
８４    バージョン情報
８６    チェックサム
【図１】
0004510345.tif 000002
【図２】
0004510345.tif 000003
【図３】
0004510345.tif 000004
【図４】
0004510345.tif 000005
【図５】
0004510345.tif 000006