JP2005129028A - コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法 - Google Patents

コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法 Download PDF

Info

Publication number
JP2005129028A
JP2005129028A JP2004275872A JP2004275872A JP2005129028A JP 2005129028 A JP2005129028 A JP 2005129028A JP 2004275872 A JP2004275872 A JP 2004275872A JP 2004275872 A JP2004275872 A JP 2004275872A JP 2005129028 A JP2005129028 A JP 2005129028A
Authority
JP
Japan
Prior art keywords
resource
file
language
data
data field
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004275872A
Other languages
English (en)
Other versions
JP4936654B2 (ja
Inventor
Frank N Chu
エヌ.チュー フランク
Julie D Bennett
ディー.ベネット ジュリー
Mohammed G El-Gammal
ジー.エル−ガマル モハメド
Shenghua Ye
イェ シェンファ
Sunggook Chue
チェ サングック
Wei Wu
ウー ウェイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005129028A publication Critical patent/JP2005129028A/ja
Application granted granted Critical
Publication of JP4936654B2 publication Critical patent/JP4936654B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 アプリケーションまたはオペレーティングシステムをより効率的に作成/使用可能とする。
【解決手段】 この二分岐構造は、アプリケーションのより容易な配布及び更新を可能にし、一方、縮小されたファイルの組により、より効率的なファイル管理が実現される。コンパイル段階の間にリソースマニフェストを指定し、言語特有である要素と言語独立のままである要素とを識別する。複数のローカライズ可能要素を単一のファイルの形に圧縮するために、コンパイル後に追加ソフトウェアを使用する。そのような圧縮ソフトウェアは、より大きなファイル群の形に圧縮すべき言語特有リソース群とそれらのより大きなファイル群の識別を指定する入力を受け取る。複数の言語特有リソースを含むことができる、また、関連の言語独立コードによる個々の言語特有リソースの取出し及びアクセスを容易にすることができるファイルフォーマットを使用する。
【選択図】 図5

Description

本発明は、コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法に関する。より詳細には、一般に、コンピュータアプリケーション及びオペレーティングシステムに関し、機能コード及び言語独立データをローカライズ可能なユーザインタフェース(UI)リソースから別個に記憶しているアプリケーションまたはオペレーティングシステムをより効率的に作成/使用するための、コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法、記録媒体、及びコンポーネント所有者がコンポーネントリソースローカライズ情報を提供するための方法に関する。
コンピュータが世界中で普及するにつれて、様々な言語及び/または場所向けに最適化またはローカライズされた様々なバージョンのオペレーティングシステムまたはアプリケーションがますます求められており、同様に、大量のそのような異なるバージョンを制作し、更新し、維持することに伴うオーバーヘッドコストも増加している。オペレーティングシステムは、一般に、コード、データ、言語特有のUIリソースを共に単一のバイナリエントリ内に含んでおり、その結果、どの部分を修正することも、全体を更新することを必要とする。したがって、セキュリティパッチに続くものなど、更新は、当該の各言語について提供しなければならない。これは「ローカライズ」と呼ばれ、得られた各バージョンは、「ローカライズ(された)」バージョンと呼ばれる。変更が必要とされる大多数の場合では、言語特有の部分ではなくコード部分で変更が行われ、大抵のフィックス、更新などの別個のローカライズバージョンを制作することは、無駄が多く、またコストがかかる。さらに、セキュリティフィックスを発行する際など迅速な更新応答が必要とされるとき、多数の異なる、特別にローカライズされたバージョンのフィックスを制作することが必要であるために引き起こされる遅延は、許容できない時間の間、ユーザを保護されないままにする可能性がある。そのような状況ではしばしば、一般に、より優先順位の高い場所向けのローカライズバージョンが最初に制作されるため、優先順位の低い場所のユーザに遅延が集中する。
1つの解決策は、言語に依存しないコード及びデータを言語特有のデータから分離し、それにより、セキュリティパッチなどを含めた修正を、その言語に依存しないコード及びデータに対してのみ加えることができるようにすることであろう。このようにして、単一のセキュリティパッチを迅速かつ効率的に開発して世界中に配布する一方、オペレーティングシステムやアプリケーションのローカライズバージョンの製造を変更しないでおくことを可能にすることができるはずである。そのような解決策は、2003年5月12日に出願された「Bifurcated Operating System Having a Language Neutral Component」という名称の、米国特許出願第10/435,848号により詳しく述べられている。
残念ながら、別個の言語独立コンポーネント及び言語特有のコンポーネントを提供する解決策では、比較的少ない市場向けにローカライズされているだけの比較的単純なアプリケーションについても、管理不能なほど大量のファイルがすぐに発生する可能性がある。約500のコンポーネントファイルを有する単純なアプリケーションでも、欧州市場向けにアプリケーションをローカライズするためだけに5000を超える対応する言語特有のコンポーネントファイルを必要とする可能性がある。そのような大量のファイルは、新しいバージョンやパッチを効率的にコンパイルし配布する能力を著しく低下させる可能性がある。さらにより重要なことには、大量のファイルは、言語独立ファイルと1つまたは複数の言語特有のファイルという2つ以上のファイルをロードすることを必要とすることにより、アプリケーションまたはオペレーティングシステムの性能に悪影響を及ぼす可能性がある。さらに、セキュリティ侵害や他の悪意あるコードに対して大量のファイルを保護するために、追加のリソースを費やさなければならない。最後に、多数の現代のオペレーティングシステムは、仮想メモリを64キロバイトの細分性で、また、物理メモリを4キロバイトの細分性で割り振るため、64キロバイトより小さい多数のファイルをロードすることは、仮想メモリを無駄にし、断片化することになる。4キロバイトより小さいファイルは、仮想メモリにも物理メモリにも影響を及ぼすため、さらに負の作用があることになる。オペレーティングシステムが、少なからぬ量の(すなわち、400を超える)4キロバイト未満のサイズのファイルを有することは珍しくない。
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、アプリケーションまたはオペレーティングシステムをより効率的に作成/使用可能とする、コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法を提供することにある。
本発明の諸実施形態は、コード及び非ローカライズ可能データに関する言語独立部分と、アプリケーションまたはオペレーティングシステムによって使用される、または使用可能にされるローカライズ可能なリソースに関係する言語特有部分とを有するアプリケーションまたはオペレーティングシステム、ならびにそれらに対する「フィックス(fix)」(たとえば、アプリケーションまたはオペレーティングシステムのリリース後に配布されるパッチ及び更新)の制作を可能にする。言語特有部分に対応するファイルの数を最小限に抑えるために、複数の言語特有部分を記憶し、単一のファイル構造からアクセスすることができる。
一実施形態では、複数の言語特有コンポーネントを単一のバイナリファイルの形に組み合わせるために、リソースツールが提供される。リソースツールは、どの言語特有コンポーネントを単一のファイルの形に組み合わせるべきであるかを指定する構成入力を受け入れることができ、適切な組合せファイルを生成することができる。
他の実施形態では、複数の言語特有コンポーネントを単一のバイナリファイルの形に組み合わせるために、ファイルフォーマットが提供される。このファイルフォーマットは、個々の言語特有コンポーネントに対するアクセスを可能にし、言語特有コンポーネントそれぞれの完全性を維持する。
他の実施形態では、適切なファイルを突き止めること、及びそのファイル内で適切なリソース位置を突き止めることを含めて、言語特有リソースを利用するコードが適切なリソースを突き止めることができるような言語特有リソースロケーションサービスを提供するように、マニフェスト(manifest)が適合される。さらに、マニフェストは、どのリソースをローカライズすることができるか、また、どれが言語独立のままであるべきか判定し、記録する機会を開発者に提供することができる。リソースローディングは、本発明の一実施形態において、リソースを突き止め、ロードするとき、マニフェストを使用するように適合される。
他の実施形態では、ワシントン州レドモンドのマイクロソフトによるWindows(登録商標)リソースコンパイラ(RC.EXE)などが、マニフェスト情報を読み取るように、また、それに応じて言語独立リソースと言語特有リソースを別個のリソースファイル、たとえば.resファイルの形にコンパイルするように更新される。このようにして、次いでリンカは、1つは言語独立データ及び機能コード用、もう1つはローカライズ可能リソース用という別個のPEバイナリの形に言語独立リソースと言語特有リソースをリンクすることができる。次いで、ローカライズ可能リソースをさらに単一または複数のファイルの形に組み合わせ、ファイル管理サービス及び動作の効率を高めることを可能にすることができる。
本明細書における説明は、主に二分岐されたオペレーティングシステムの作成及び使用に焦点を合わせるが、本明細書で述べられている二分岐の原理及び利益の多くは、オペレーティングシステムでないアプリケーションにも当てはまることを理解されたい。したがって、本発明の他の諸実施形態では、実質的に言語独立部分とローカライズ可能部分を有する二分岐されたアプリケーションが企図されている。本発明の追加の特徴及び利点は、添付の図を参照しながら進む以下の例示的な実施形態の詳細な説明から明らかになる。
添付の特許請求の範囲は、本発明の特徴について具体的に述べているが、本発明とその目的及び利点は共に、添付の図面と共に取り上げる以下の詳細な説明からよりよく理解することができる。
本発明によれば、アプリケーションまたはオペレーティングシステムをより効率的に作成/使用できる。
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。言語特有の機能を提供するためにオペレーティングシステムまたはアプリケーションと共に配布される、またはそれらによって使用される個々の言語特有ファイルの数を最小限に抑えるために、いくつかの要素を使用することができる。まず、言語特有とすることができるデータに関して判定を行うことができる。たとえば、ユーザに提示されるダイアログボックスは言語特有とすることができ、同様に、メニューチョイス、またはスペルチェックオプションを言語特有とすることができる。そのような判断は、マニフェスト内に記載することができ、マニフェストは、コンパイル段階の一部として、言語特有データ及び言語独立コード/データと共に1つまたは複数のオブジェクトファイル及びリソースの形にコンパイルすることができる。
コンパイル段階の後で、リンク用ツールを介してオブジェクトファイル及びリソースを共にリンクし、言語特有リソース/情報を含む移植可能な実行可能ファイル及び個々のリソースファイルを作成することができる。リソースツールは、言語独立コードファイル及び実行可能プログラムが個々の言語独立リソースを依然として参照することができるように、複数の言語特有ファイルを1つまたは複数のより大きなファイルの形に組み合わせることができる。リソースツールはまた、組み合わせるべき正確な言語特有ファイルを指定する、また、得られたより大きなファイルまたはファイル群を識別することができる外部入力を受け取ることができる。
様々な言語特有コンポーネントを単一のファイルの形に圧縮することができる方法は、リソースコンパイラに対する修正など、コンパイル段階に対する修正を含むことができ、また、現在圧縮されている言語特有ファイルを言語独立コード/データが依然として参照することができるように設計された事前定義済み構造を使用して、指定された言語特有コンポーネントを単一のファイルの形に圧縮する圧縮アプリケーションなど、追加のソフトウェアの使用を含むことができる。様々な言語特有コンポーネントを単一のファイルの形に圧縮することができる方法はまた、言語特有コンポーネントを単一のファイルの形に組み合わせるかどうかを含めて、言語独立コード/データと言語特有コンポーネントの間の関係を指定するリソースマニフェストに対する参照を含むことができる。
下記の説明は、コンピューティング環境、コード及びデータを言語独立コンポーネントと言語特有コンポーネントに分割すること、複数の言語特有ファイルを単一のファイルの形に圧縮すること、及び、そのような圧縮を可能にするための様々な機構に対して(これらの機構によって使用されるリソースマニフェストの説明を含めて)提供される情報に関して、さらなる詳細を提供する。
コンピューティング環境
同じ参照番号が同じ要素を指す図面に転じると、本発明が、好適なコンピューティング環境内で実施されて示されている。必要とされてはいないが、本発明について、パーソナルコンピュータによって実行される、プログラムモジュールなどコンピュータ実行可能命令の一般的な状況で述べる。一般に、プログラムモジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサをベースとする、またはプログラム可能な家庭用電化製品、ネットワークPC(personal computer)、ミニコンピュータ、メインフレームコンピュータなどを含めて、他のコンピュータシステム構成と共に本発明を実施することができることを、当業者なら理解することができるであろう。本発明は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモート双方のメモリ記憶デバイス内に位置する可能性がある。
この説明は、本発明を実施するための例示的なシステムで使用することができる汎用コンピューティングデバイスの説明で始まり、その後で、本発明について、図2と後続の図を参照しながらより詳しく述べる。次に図1に転じると、プロセッサ21、システムメモリ22、及びシステムメモリ22を含めた様々なシステム構成要素をプロセッサ21に結合するシステムバス23を含む従来型パーソナルコンピュータ20の形態で、汎用コンピューティングデバイスが示されている。システムバス23は、様々なバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺機器バス、及びローカルバスを含むいくつかのタイプのバス構造のいずれかとすることができる。システムメモリは、読出し専用メモリ(ROM)24及びランダムアクセスメモリ(RAM)25を含む。起動中などにパーソナルコンピュータ20内の要素間で情報を転送するのを助ける基本ルーチンを含むBIOS(Basic Input/Output System)26は、ROM24内に記憶される。パーソナルコンピュータ20はさらに、ハードディスク60との間で読出しまたは書込みをするハードディスクドライブ27、リムーバブル磁気ディスク29との間で読出しまたは書込みをする磁気ディスクドライブ28、CD−ROMまたは他の光媒体などリムーバブル光ディスク31との間で読出しまたは書込みをする光ディスクドライブ30を含む。
ハードディスクドライブ27、磁気ディスクドライブ28、光ディスクドライブ30は、それぞれハードディスクドライブインタフェース32、磁気ディスクドライブインタフェース33、光ディスクドライブインタフェース34によってシステムバス23に接続される。ドライブ群とそれらの関連コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びパーソナルコンピュータ20用の他のデータの不揮発性記憶を実現する。本明細書に述べられている例示的な環境は、ハードディスク60、リムーバブル磁気ディスク29、及びリムーバブル光ディスク31を使用するが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ、読出し専用メモリ、ストレージエリアネットワークなど、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体もまた、この例示的な動作環境内で使用することができることを、当業者なら理解することができるであろう。
いくつかのプログラムモジュールは、ハードディスク60、磁気ディスク29、光ディスク31、ROM24、またはRAM25に記憶することができ、オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、他のプログラムモジュール37、及びプログラムデータ38を含む。ユーザは、キーボード40及びポインティングデバイス42など入力デバイスを介して、パーソナルコンピュータ20にコマンド及び情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含むことができる。これら、及び他の入力デバイスは、しばしばシステムバスに結合されたシリアルポートインタフェース46を介してプロセッサ21に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)、あるいはネットワークインタフェースカードなど、他のインタフェースによって接続することができる。また、モニタ47または他のタイプのディスプレイデバイスは、ビデオアダプタ48などのインタフェースを介して、システムバス23に接続される。また、パーソナルコンピュータは、モニタに加え、図示しないが、スピーカ及びプリンタなど他の周辺出力デバイスを含む。
パーソナルコンピュータ20は、リモートコンピュータ49など、1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境内で動作することができる。リモートコンピュータ49は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、図1では、メモリ記憶デバイス50が例示されているだけであるが、一般に、パーソナルコンピュータ20に関連して上述した要素の多数または全部を含む。図1に示されている論理接続は、ローカルエリアネットワーク(LAN)51及び広域ネットワーク(WAN)52を含む。そのようなネットワーク環境は、事務所、全社コンピュータネットワーク、イントラネット及びインターネットで普通である。
パーソナルコンピュータ20は、LANネットワーク環境内で使用されるとき、ネットワークインタフェースまたはアダプタ53を介してローカルネットワーク51に接続される。パーソナルコンピュータ20は、WANネットワーク環境内で使用されるとき、典型的には、WAN52を介して通信を確立するためのモデム54、または他の手段を含む。モデム54は、内部にあっても外部にあってもよく、シリアルポートインタフェース46を介してシステムバス23に接続される。パーソナルコンピュータ20に関して図示されたプログラムモジュール、またはその一部分は、リモートメモリ記憶デバイスがあれば、その中に記憶することができる。図のネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することができることを理解されたい。
以下の説明では、別段の表示がない限り、本発明について、1つまたは複数のコンピュータによって実行される動き、及び動作を記号で表したものを参照して述べる。したがって、そのような動き及び動作は、「コンピュータによって実行された」と呼ばれることがあり、構造化された形態でデータを表す電気信号がコンピュータのプロセッサによって操作されることを含むことを理解されたい。この操作は、データを変換し、またはコンピュータのメモリシステム内のロケーションでデータを維持し、当業者にはよく理解できる方法で、コンピュータの動作を再構成し、または他の方法で変更する。データが維持されるデータ構造は、データのフォーマットによって規定された特定の特性を有するメモリの物理ロケーションである。しかし、本発明について前述の状況で述べられているが、当業者なら、以下に述べられている動き及び動作の多くはハードウェアでも実施できることを理解することができるので、限定するものではないものとする。さらに、本明細書における説明は、主に二分岐されたオペレーティングシステムの作成及び使用に焦点を合わせるが、本明細書で述べられている二分岐はアプリケーションにも当てはまることを理解されたい。
言語依存性データの分離
図2に転じると、既存のアプリケーションの一例を示すアーキテクチャ図が示されている。具体的には、図のアプリケーション201は、コード部分203とリソース部分205を備える混合式の単一バイナリである。そのような従来型アーキテクチャは、コード部分203またはリソース部分205に対する更新中に難点が生じる。具体的には、コード部分203は一般に言語独立であり、一方、リソース部分205は一般に、概ね言語特有である。アプリケーションをリリースした後の大抵の更新は、リソース部分205ではなく、そのアプリケーションのコード部分203のフィックス及びパッチに関する。したがって、実質的にリリース前には、コード部分203とリソース部分205を共に変更することができるが、リリース後には、著しく異なるそれぞれの頻度で変更される。
しかし、この従来のアーキテクチャ例では、コード部分203に対する変更は、以下の方法でコード部分203とリソース部分205双方に関する変更及び再インストールを必要とした。最初に、コード部分の基礎となるソースコードに適切な変更が加えられる。次に、所望のフィックスを実施する新しい単一のバイナリを生成するために、新しいソースコードと旧リソースが組み合わされる。リソースの各言語特有バージョンについて、このようにして新しいバイナリファイルを作成しなければならないことに留意されたい。次に、ローカライズされたバイナリが、適切なそれぞれの場所に配布される。複数の言語を使用する会社または団体の場合、一般に複数の別個のバイナリがこの段階で得られることになるであろう。最後に、更新されたバイナリが、フィックスを必要とするマシン(上記のパーソナルコンピュータ20または他のコンピューティングデバイスなど)にインストールされる。複数の言語を使用する位置では、適切な言語フィックスを各マシンについてインストールしなければならない。
次に図3を参照すると、本発明の一実施形態による二分岐されたアプリケーションアーキテクチャが示されている。具体的には、図では、アプリケーション301が、2つの別個のバイナリ、すなわち、コード及び言語独立データを備える言語独立バイナリ303と、ローカライズされた、または言語特有のバイナリ305のうち1つとを備える。言語独立バイナリ303は、ローカライズ可能でない材料、たとえば、アプリケーションの1つの言語バージョンから次のバージョンに変換することを必要としない材料を備える。言語特有のバイナリ305は、ローカライズされる、すなわち、特定の言語で表示するように適合された材料を備える。典型的なローカライズ可能材料の非包括的な諸例には、UIテキスト及びグラフィクス、ならびにアプリケーションヘルプドキュメントが含まれる。
例示的な例では、言語特有のバイナリ305は、図では、米国英語(307)、日本語(309)、フランス語(311)に対応する複数のリソースパック307、309、311を備え、本発明の一実施形態によるものであるが、本発明の諸実施形態では、単一のリソースパックがアプリケーションと共に提供されることになり、提供されるリソースパックは、ユーザまたは購入者の、あるいは別の方法で選択された言語に合致する。図の特定のリソースパック(英語、日本語、フランス語)は例示的なものにすぎず、リソースパックは、図3に特に示されているもの以外に、当該の任意の言語で提供することができる。ローカライズ可能なリソースと非ローカライズ可能リソースの間で示されている分離は、システムPEバイナリ(DLL、EXE、OCX、SYSなど)で実施されるだけでなく、任意のデータ、または他の形態のバイナリ、たとえば、XML(Extensible Markup Language)データまたはHTML(HyperText Markup Language)データでも実施されることが好ましいことに留意されたい。
インストールされたとき、図3のアーキテクチャは、本発明の一実施形態によれば、オペレーティングシステムが適切なリソースを突き止めることを容易にするマニフェストまたは他のレコード313を含む。具体的には、マニフェストは、取り出されるリソースの識別子を、適切なリソースパック内のリソースのロケーションにマッピングすることによってローカライズを可能にする。たとえば、アプリケーションが常駐するマシンが日本人ユーザによって使用される可能性があり、したがって、日本語リソースパックを有することができる。システム設定は、複数のリソースパックが存在する場合、どのリソースパックを使用すべきかを示すことが好ましい。ダイアログボックスなどリソースが取り出されるとき、アプリケーション301のコード部分303のインスタンス化されたものが、所望のダイアログボックスに関連付けられた識別子を有するマニフェスト313を制御するコードを呼び出す。マニフェストを制御するコードは、リソースを突き止めた後でその呼出しを転送することも、その代わりに、呼び出しているエンティティにロケーションの指示を返すこともできる。
複数の言語特有ファイルの圧縮
図1に示されているコンピューティングシステム20などのシステム上では、図3に示されているアプリケーション301など多数のアプリケーションをインストールすると、言語特有のバイナリファイル305など、扱いにくい数の言語特有バイナリファイルが生じる可能性がある。多数のファイルは、アプリケーションがインストールされるたびに多数のファイル入力/出力動作を必要とすることにより、コンピューティングシステム20の性能を低下させる可能性がある。当業者には周知のように、I/O動作は加速するのが困難であり、それにより、実行されるI/O動作の数の削減は、コンピューティングシステムの効率を高めるための最も実行可能な選択肢として残されている。さらに、言語特有バイナリファイル305は、一般に小さく、サイズが64キロバイトより小さいことがしばしばである。したがって、多数の現代のオペレーティングシステムは、仮想メモリを64キロバイト刻みで予約するため、言語特有バイナリファイル305のローディングに起因するメモリ使用は、各ファイルがそのファイル自体よりはるかに大きい可能性のあるメモリセグメント内にロードされつつあるために、言語特有バイナリファイルの総サイズより著しく大きくなる可能性がある。システム内で開かれる各ファイルは、システムファイルハンドル、ならびに他のリソースを取るため、アプリケーション内で開かれたファイルが多すぎると、システム性能が低下し、また、全システムのリソース消費が増大する可能性がある。
わかるように、メモリ使用の削減及びファイルI/O動作の削減による効率は、1つまたは複数の言語特有バイナリファイル305が単一のファイルの形に圧縮された場合に実現することができる。図4に転じると、図では、圧縮リソースファイル401が、2つのリソースファイル、すなわちリソースファイルA(409)とリソースファイルB(411)とを含む。リソースファイルA及びBは、米国英語リソースパック407及び日本語リソースパック409など、言語特有バイナリファイル305のいずれかとすることも、複数のアプリケーションに対応する言語特有バイナリファイル群、すなわち、ファイル401など、単一のファイルの形に圧縮されている各言語特有バイナリファイルが特定の言語に対応する言語特有バイナリファイル群とすることもできる。所与のユーザは、1つの言語だけを主に使用する可能性が高いため、圧縮された言語特有バイナリファイル群がすべて同じ言語用であり、すべて異なるアプリケーションに対応する場合、より多数のファイルI/O動作をなくすることができる。したがって、さらに下記で述べるようにして、2つ以上の異なるアプリケーション用の言語特有リソースが同じファイル内に含まれている場合、そのファイルを1回ロードすることが必要とされるだけであり、1回または複数回のファイルI/O動作が節約される。
圧縮リソースファイル401は、圧縮リソースファイル401全体に関する情報を提供することができる圧縮リソースファイルヘッダ403を含むことができる。たとえば、ヘッダ403は、圧縮リソースファイル401が実際にそのようなファイルであることを検証するために使用することができる署名を含むことができる。そのような署名は、ファイル401を言語特有バイナリファイル群を含むものとして識別するための特徴的な文字列で始まり、圧縮された各リソースファイルを一意に識別するためのグローバル識別子がそれに続く。圧縮リソースファイルヘッダ403はまた、圧縮リソースファイル内に含まれるいくつかのリソースファイルを指定するエントリを含むことができる。また、任意選択で、ヘッダ403は、圧縮リソースファイル内のそのリソースファイルの冒頭を一意に識別するために、各リソースファイルについてオフセットアドレスを指定することができる。たとえば、ヘッダ403は、2つのリソースファイル、すなわちリソースファイルA(409)とリソースファイルB(411)が、圧縮リソースファイル401内に含まれていることを指定するエントリを含むことができ、また、ヘッダ403は、リソースファイルA(409)が、ファイル401の冒頭から512バイトのメモリロケーションで始まることや、リソースファイルB(411)が、ファイル401の冒頭から8096バイトのメモリロケーションで始まることを指定することもできる。別法として、ヘッダ403内に含まれる個々のリソースアドレスは、実際のメモリオフセット識別子ではなく、含まれているリソースファイル409及び411の冒頭に対する任意のタイプのインデックスとすることができる。圧縮リソースファイルヘッダ403はまた、ヘッダ403を読み取る、またはファイル401をメモリ内にロードするとき他のプロセスを助けるために、ヘッダ403のサイズ、及び圧縮リソースファイル401のサイズを指定することもできる。
圧縮リソースファイル401内に含まれている各リソースファイルは、そのリソースファイルについて関連情報を提供するために、それ自体のヘッダを有することができる。このヘッダ情報は、図4に示されているように、圧縮リソースファイル401内で、圧縮リソースファイルヘッダ403の直後に続くことができる。リソースファイルAヘッダ405及びリソースファイルBヘッダ407など、図4のリソースファイルヘッダは、ファイル401のローディングを容易にするために、互いに隣接して位置する。代替実施形態では、ヘッダ405及び407が、ファイル409及び411など、それぞれのリソースファイルに隣接して位置することができる。リソースファイルヘッダは、それぞれのリソースファイルのファイル名を含むことができ、また、適正なリソースがロードされつつあることをロードするソフトウェアが保証することができる情報を提供するために、リソースファイルのバージョンと、チェックサムとを含むこともできる。好ましい一実施形態では、チェックサムがMD5リソースチェックサムである。リソースファイルヘッダはまた、リソースファイルヘッダを読み取る、またはリソースファイルをメモリ内にロードするとき他のプロセスを助けるために、ヘッダのサイズ、及びリソースファイルのサイズを指定することもできる。
圧縮リソースファイル401内におけるリソースファイル409などリソースファイルのロケーションが、圧縮リソースファイルヘッダ403内に指定されていなかった場合には、ヘッダ405などリソースファイルヘッダが、その関連する個々のリソースファイルのロケーションを含むことができる。この場合も、上記のように、ロケーション情報は、ファイル401の冒頭からなど実際のメモリオフセットとすることも、リソースファイルに対する任意の他のインデックスとすることもできる。ある種のオペレーティングシステムまたは他のローディング機構は、リソースの開始メモリアドレスが偶数であることを必要とする可能性があるため、リソースファイルA(409)とリソースファイルB(411)の間などリソース間でパディングを使用することができる。そのような場合には、ヘッダ405などリソースファイルヘッダにより、パディングの存在を示すことができ、パディングの長さを指定することもできる。
リソースファイルA(409)またはリソースファイルB(411)など、リソースファイルは、主にリソースファイル自体を含むことができる。しかし、そのファイルをロードする、または要求するシステムを助けるために、リソースファイル内に追加情報が含まれることもあり得る。たとえば、リソースファイルは、上述のファイル401の署名と類似の署名を含むことができる。さらに、リソースファイルは、上述のようにリソースヘッダ内に含まれるバージョン情報が、要求元アプリケーションのバージョンと異なる場合、リソースファイルを妥当性検査するために使用することができるリソースチェックサムを含むことができる。リソースファイルはまた、現在のリソースファイルが適正なリソースでないと判定された場合、適切なリソースを見つける際に助けとなる情報を含むことができる。
圧縮リソースファイル401のアーキテクチャは、複数のリソースファイルを単一のファイル構造内に容れることを可能にし、ファイルI/O動作の数を削減し、メモリの効率的な利用を高める。様々な戦略を使用し、一緒に使用される可能性が非常に高いリソースファイルが、確実に単一の圧縮リソースファイル内に格納されるようにすることができる。たとえば、アプリケーション301は、より大きなアプリケーションのコンポーネントとすることができる。そのような場合には、アプリケーション301は、より大きなアプリケーションを構成する他のコンポーネントと共にインストールされる可能性が高いはずである。したがって、米国英語リソースパック307と、より大きなアプリケーションを構成する他のコンポーネントの米国英語リソースパックとを含む単一の圧縮リソースファイルは、メモリ内にロードする必要がある唯一の言語特有リソースファイルとなる一方、複数のコンポーネントのそれぞれは、それぞれの言語特有リソースにアクセスすることができるはずである。同様に、アプリケーション301がオペレーティングシステムファイルであるならば、リソースパック307と、概してアプリケーション301と共にロードされる他のオペレーティングシステムファイルの同等なリソースパックとを含む単一の圧縮リソースファイルもまた、アプリケーション301と共にロードされるオペレーティングシステムファイルすべてに言語特有リソースを提供するためにメモリ内にロードする必要がある唯一のリソースとなるはずである。わかるように、圧縮リソースファイル401の形に圧縮された、リソースファイル409及び411などリソースファイルが、同じ言語用の言語特有ファイルである場合、また、これらの言語特有ファイルが、概して一緒にインスタンス化される、または使用されるコンポーネントやシステムファイルを含むアプリケーションに対応する場合、より大きな効率を得ることができる。
他のコンポーネントまたはファイルがアプリケーションと同時に使用されるように、他のコンポーネントまたはファイルに関係しないことがあり得るアプリケーションも存在する可能性がある。そのような場合には、アプリケーションの言語特有リソースファイルを個々のファイルとして存在させるのでなく、圧縮後のリソースファイルが64キロバイトまたは64キロバイトの倍数となるように、そのような言語特有リソースファイルを任意の他の言語特有リソースファイルと共に圧縮することができる。上述のように、オペレーティングシステムは、しばしば、サイズが64キロバイトのメモリセグメント内にファイルをロードすることになるため、それぞれが64キロバイトより小さい複数のリソースを64キロバイトまたはそれよりわずかに小さい圧縮ファイルの形に圧縮することにより、追加のメモリ使用が生じない。逆に、圧縮リソースファイルにより、少なくとも1回のファイルI/O動作が節約されるチャンスがある。というのは、圧縮リソースファイルが依然としてメモリ内にロードされている間に、圧縮リソースファイルの形に圧縮された別のリソースが呼び出される可能性が常に存在するからである。したがって、言語特有リソースファイルなど複数のリソースファイルを、1つまたは複数の圧縮リソースファイルの形に圧縮することは、一般に有益である。
リソースマニフェスト
先に論じたように、ユーザインタフェースリソースは、言語独立を促進するために、ますます外部サテライトリソースファイル内に記憶されている。この二分岐式記憶方式は、外部リソースを突き止める複雑さを増す可能性があり、ローカライズ可能なリソースを識別する必要性を高める。したがって、本発明の他の態様は、開発者がどのように、また、どのリソースをローカライズすべきか制御することを可能にするシステム及び方法を開示し、さらに、リソースファイルのロケーション、バージョン、チェックサムなどに関する必要情報をシステムに提供する。その結果、アプリケーションプログラム実行可能バイナリのビルドプロセスは、正しい言語独立イメージを作成することができ、リソースローダは、実行時にリソースを要求するモジュールのために、外部リソースを効率的にバインドすることができる。
プログラミングコードとそのリソースの間の密接な結び付きを生み出すために、前述のリソースマニフェストを使用することができる。本発明では、リソースマニフェストは、コンポーネント所有者がリソースのバージョン付け、ファイルパス、リソースタイプ/項目など、リソース情報を記述することを可能にする公開フォーマットである。好ましい一実施形態では、宣言型の(declarative)XMLをベースとする方式により、開発者は、ローカライズされた、または言語特有のリソースファイルと、その関連リソース情報を記述し、さらに、リソースのローカライズ可能性を制御することができる。次いで、ツールとプロセスを開発し、リソースマネージャが効率的かつ正確にコンポーネントリソース情報を追跡することを可能にするフォーマットの埋込みデータとして、リソースマニフェストをバイナリの形にビルドすることができる。
リソースマニフェストは、ソース形態とバイナリ形態の2つの形態を取る。そのソース形態では、リソースマニフェストは、コンポーネントのソースコードを伴うXMLベースの宣言型のソースファイルである。そのバイナリ形態では、リソースマニフェストは、コンポーネントバイナリのリソースセクション内に埋め込むことができるバイナリフォーマットを有する新しいリソースタイプである。ソース形態から見ると、リソースマニフェストは、ビルド/ローカライズプロセスならびに実行時リソースローディングによってリソースをどのように処理すべきか、コンポーネント所有者が制御することができるようにする。バイナリ形態から見ると、リソースマニフェストは、リソースローダがより直接的かつ正確なリソース情報を有することを可能にし、したがって、リソースローダ内における余分なリソースフォールバック探索の必要性を大いに削減し、それによりリソースローダ及び管理全体の性能を改善する。リソースマニフェストはまた、ローカライズされたリソースタイプ、所与のリソースタイプのローカライズされたリソース項目、ロケーション、リソース管理を改善する言語など、より強力なローカライズ可能情報を説明することを可能にする。しかし、リソースマニフェストはソースレベルで必須ではないことに留意されたい。すなわち、リソースマニフェストがソース内に存在しない場合、デフォルトのリソースマニフェストをビルドプロセス中に得ることができる。
リソースマニフェストを使用することにより、いくつかの利点、主に言語独立が提供される(すなわち、リソースマニフェスト要素がローカライズ可能なデータまたは属性を含むことを必要としない)。さらに、XMLベースのスキーマを使用することにより、オープンで効率的かつ柔軟な管理及び維持が実現される。すなわち、特殊なツールを使用することが必要とされないため、開発者は、Notepadアプリケーションや任意のXMLエディタを用いてリソースマニフェストを容易に扱うことが可能である。最大限に柔軟かつ効率的にマニフェストを規定するために、添付の図5の例示と共に、例示的な構造化されたXMLベースのスキーマの記述が続く。
Figure 2005129028
リソースマニフェストのルート要素は、localization500であり、あらゆるローカライズされたソースコードファイル及びリソースバイナリ内に存在することが好ましい。localization要素は、単純に、管理型と非管理型という異なるアーキテクチャを有する大きいリソースタイプを含む。ソースレベルでは、1つのマニフェストファイルを複数のコンポーネントによって共用することができ、したがって、非管理リソース記述と管理リソース記述を共に含むことができる。バイナリレベルでは、通常、非管理型または管理型となることになる。
Figure 2005129028
非管理リソース用のマークアップの始まりは、unmanagedResources502である(要素タイプmanagedResources504は、管理リソースタイプ用に予約されている)。非管理リソースはすべて、unmanagedResources502要素の下に記述することができ、ファイルパス、フォルダタイプ、バージョンなど基本ローカライズ情報を含む。
filePath属性は、ローカライズファイルパスを指定する。リソースローダは、ローカライズファイルを求めてこのパスを探索してから、デフォルトの探索論理を実行することができる。ファイルパスは、完全な絶対ファイルパス、または事前定義されたローカライズ後ファイルパスと組み合わせられた相対パスとすることができる(たとえば、%SystemRoot%、%windir%、%CurrentDir%、%ProgramFiles%、%muiFallback%)。
filePathType属性は、ローカライズファイルフォルダ編成規則を指定する。ディレクトリ規則とファイル命名規則も共に指定される。ディレクトリ規則の諸例には、DIR_LANG_ID(従来のWin32言語ID)、DIR_LANG_NAME(ISO639準拠言語名)、DIR_LANG_CULTURE(RFC1766準拠言語カルチャ名)が含まれる。好ましい一実施形態では、DIR_LANG_CULTUREがデフォルトの属性である。LANG_NAME及びLANG_CULTUREを選択すると、ローカライズされた言語ファイルに対するローカライズファイル探索順序が指定される(たとえば、LANG_NAMEが指定されたとき、英語について「en−us」の前に「en」が探索されることになり、一方、LANG_CULTUREは「en−us」を最初に探索することになる)。ファイル命名規則の諸例には、FILE_NAME_WIN32(<filename>.<file extension>.mui)及びFILE_NAME_MANAGED(<filename>.resources.dll)が含まれる。
applyDefaultManifest属性は、0(いいえ)または1(はい)の値を含むことができる。好ましい一実施形態では、applyDefaultManifestが指定されない場合、値が1となる。1のとき、コンポーネントのマニフェスト内に指定されていないリソースタイプが、デフォルトの共通リソースマニフェストファイルを用いて構文解析されることになる。
fileType属性は、1(ローカライズ)、2(圧縮ローカライズフォーマット)、4(システム)、8(アプリケーション)の値を含むことができる。システムファイルタイプは、コンポーネントが、リソース言語をシステムローカライズと合致させるシステムファイルであることを示す。
cmfFileName属性は、圧縮ローカライズフォーマットファイルのファイル名を含む。cmfIndex属性は、圧縮ローカライズフォーマットファイル内部のローカライズファイルのインデックス値を含む。cmfFileVersion属性は、圧縮ローカライズフォーマットファイルのバージョンを含む。
neutralResources要素は、言語独立バイナリ内に含まれることになるリソースタイプ情報を含み、localizedResourcesは、ローカライズバイナリ内に含まれることになるリソースタイプ情報を含む。
いくつかの項目について指摘しておく必要がある。第1に、ローカライズリソースバイナリと言語独立コードバイナリは、ソースレベルで同じリソースマニフェストファイルを共用する。いくつかの属性及び要素は、1つのバイナリに当てはまるだけである可能性がある(たとえば、filePath及びfilePathTypeは、言語独立バイナリに当てはまるだけである)。第2に、圧縮ローカライズフォーマットファイル属性(すなわち、cmfIndex、cmfFileVersion、cmfFileName)は、fileTypeがCMFであるとき使用されることになる。好ましい一実施形態では、fileTypeが指定されていない場合、デフォルトタイプが非CMFである。第3に、ビルド後プロセス(下記で詳しく扱う)は、コンポーネントのCMF情報を上書きする可能性がある。CMFファイルバージョンは、ローカライズファイルバージョンに依存しない可能性があるCMFファイルの独立のバージョンである。必要な場合、CMFファイルバージョンは、よりよいセキュリティのために公開鍵/秘密鍵によって置き換えることができる。第4に、好ましい一実施形態では、applyDefaultManifest属性が1であり、デフォルトマニフェストとコンポーネントのマニフェストの間で衝突があるとき、コンポーネントのマニフェスト内部の情報がデフォルト情報を上書きすることになる。
Figure 2005129028
neutralResources要素506は、言語独立コードバイナリ内のリソース項目の説明を開始する。好ましい一実施形態では、neutralResourcesがコンポーネントのソースマニフェスト内で使用されていない場合、そのデフォルト値は、localizedResourcesの下で指定されていない残りのリソース項目となる。fileVer属性及びchecksum属性は、ソースレベルにおいて使用されない。言語独立バイナリでは、neutralResourcesが実際のリソース項目を含むことになり、したがって、fileVer属性及びchecksum属性は値を有するべきである。これらの値は、ビルド時の間に、ローカライズツールまたはRC.exeコンパイラによって生成される。neutralResourcesとlocalizedResourcesの下のリソース項目が互いに衝突する場合、neutralResourcesがより高い優先順位を有することになる、あるいは、エラーが発せられることになることに留意されたい。
fileVer属性は、ファイルバージョンを指定する。ローカライズファイルを検証するためにファイルバージョンに依拠するが、バージョンを探索し、ロードすることはコストがかかる可能性があり、したがって、バージョンをマニフェスト内に有することにより、性能が改善される。checksum属性は、従来のMD5ローカライズチェックサムを指定する。作成されるチェックサムは、unmanagedResources/managedResources要素内のリソースタイプの1つに基づくものである。この属性は、ソースレベルマニフェストから隠され、バイナリ内で示されるだけである。resourcesType要素は、リソースタイプを指定する。
好ましい一実施形態では、localizedResourcesが開発者のソース内で使用される場合、ローカライズ可能なリソースタイプまたはリソース名について、resourcesTypeとして値が存在するべきである。localizedResourcesがローカライズバイナリ内で使用されている場合、その値は、ローカライズバイナリ内の実際のリソース項目である。属性fileVer及びchecksumは、値を有するべきである。これらの値は、ビルド時にローカライズツールによって埋められる(下記で詳しく扱う)。
好ましい一実施形態では、localizedResourcesが開発者のソース内で使用され、resourcesTypeの値を有し、その値がneutralResources内のものと重なり合う場合、言語独立バイナリ内のタイプからの項目だけが抽出されることを指摘しておく必要がある。また、開発者がリソースマニフェストファイルを提供する場合、neutralResourcesまたはlocalizedResources内に少なくとも1つのresourcesType要素を有するべきである。
Figure 2005129028
resourcesType要素は、リソースタイプを表し、複数回使用することができる。typeName属性は、文字列タイプを指定する。typeId属性は、IDタイプを指定する。itemName属性は、リソース項目名文字列を指定する。itemIdは、リソース項目IDを指定する。
typeNameとtypeIdのエントリが1つだけ必要とされることに留意されたい。好ましい一実施形態では、itemName及びitemIdが複数の項目を含むとき、それらをスペース文字によって分離すべきである。
ビルド時
図6及び図7に転じると、言語独立バイナリをビルドするためのプロセスが示されている。ビルドプロセスは、ビルドユーティリティ(build.exeならびにmakefile.defビルドフロー制御ファイル)606にコンポーネントソースファイル600、602、604が入力されて、ステップ700で始まる。ステップ702を続行して、このビルドが言語独立か否かについて、ビルドユーティリティ606によって判定される。好ましい一実施形態では、ビルドユーティリティ606は、パラメータ(たとえば、図示しないLANG_NEUTRAL)を受け入れることができ、このパラメータは、開始されたビルドプロセスが言語独立であるかどうか(すなわち、LANG_NEUTRAL=1→言語独立ビルド)、それとも言語独立でないかどうか(すなわち、LANG_NEUTRAL=0→非言語独立ビルド)を示す。言語独立パラメータが指定されていない場合、デフォルトは、非言語独立ビルドである。
ビルドが言語独立でない場合、ビルドプロセスは、ステップ704、706、708で続行する。ステップ704で、ビルドユーティリティ606は、リソースコンパイラ(RC.exe)608を呼び出す。次いで、ステップ706で、リソースコンパイラ608は、リソースファイル(.res)610を作成する。最後に、ステップ708で、ビルドユーティリティ606は、リンカユーティリティ(link.exe)614を呼び出し、非言語独立PEファイル616を作成する。
一方、ビルドが言語独立と指定されている場合、ビルドプロセスはステップ712で続行し、リソースマニフェストファイル604が指定されているかどうか、ビルドユーティリティ606によって判定される。一実施形態では、ビルドユーティリティ606は、マニフェスト604のファイル名を示すパラメータ(たとえば、図示しないRC_MANIFEST)を受け入れることができる。このパラメータが指定されていない場合、デフォルトのマニフェストファイル名が使用されることになる。マニフェストファイル604がソース600、602のフォルダ内で見つかった場合には、ビルドプロセスがステップ716で続行する。マニフェストファイル604がソース600、602のフォルダ内で見つからない場合には、マニフェストファイル604が存在するかどうか確かめるために、ソースファイル600、602の親及び祖父フォルダを探索することができる。マニフェストファイル604が見つからない場合、ビルドユーティリティ606は、ステップ714でデフォルトのリソースマニフェストファイルを作成してからステップ716に進むことができる。
ステップ716を続行して、ビルドユーティリティ606は、マニフェストファイル604からリソースタイプ情報を得る。ステップ718で、ビルドユーティリティ606は、リソース圧縮方式が利用されていることをマニフェストファイル604が示すと判定された場合、圧縮リソースファイルからリソースファイル情報を得ることができる。ステップ720に進み、ビルドユーティリティ606は、ソースファイル600、602、604をコンパイル及びリンクすべきかどうかについて判定する。
ソースファイル600、602、604をコンパイル及びリンクすべきでない(すなわち、それらが既存のバイナリである)場合、ビルドユーティリティ606は、ローカライズリソースコンパイルツール(MUIRCT.exe)を呼び出し、言語独立PEファイルとローカライズPEファイルを作成し、両PEファイル内にリソースマニフェストタグ及びチェックサムを挿入する。
一方、ソースファイル600、602、604をコンパイル及びリンクすべきである場合には、ビルドプロセスはステップ724を続行し、ビルドユーティリティ606がリソースコンパイラ(RC.exe)608を呼び出す。一実施形態では、リソースコンパイラ608を、別個のリソース(.res)ファイル610、612の形にコンパイルされることになるタイプ/名前付きリソースを含むマニフェストファイル604の名前を示すスイッチ(たとえば、図示しない/q manifest_file_path)を受け入れるように修正することができる。したがって、次いでステップ726で、ビルドユーティリティ606は、コンポーネントのソースマニフェストファイル604を構文解析し、また、リソースコンパイラ(RC.exe)608を呼び出し、マニフェストファイル604内のマニフェストリソースタイプ/名前リストに従って、ローカライズ可能なリソースを、言語独立ファイル(.res)610とローカライズファイル(.mui.res)612に分割する。さらに、リソースコンパイラ(RC.exe)608は、マニフェストファイル604のリソース要素506、508内のchecksum属性を更新し、マニフェストファイル604を言語独立ファイル(.res)610とローカライズファイル(.mui.res)612双方に挿入する。最後に、ステップ728で、ビルドユーティリティ606は、リンカユーティリティ(link.exe)614を2回呼び出し、言語独立イメージ616と言語特有のリソースイメージ618という2つの別個のイメージをビルドする。
ビルドプロセスは、ビルドユーティリティ606がビンプレイス(binplace)ユーティリティ(binplace.exe)を呼び出し、言語独立PE616をビン(bin)フォルダ内に、また、ローカライズPE618をbin\<langid>フォルダ内に配置して、ステップ730で終わる。
ビルド後
言語特有のリソースファイルなど複数の個々のリソースファイルは、上記で詳しく述べられている構造に従って、ビルド後リソースツールにより、1つまたは複数の圧縮リソースファイルの形に圧縮することができる。そのようなリソースツールは、リソースファイル群のグループを指定することができる制御ファイルの存在を示すスイッチを受け入れるように修正することができる既存のリソースツールとすることも、リソースファイルを圧縮するようにだけ設計された新しいリソースツールとすることもできる。
制御ファイルは、一緒にグループ化されるリソースファイルを指定することができ、得られる圧縮リソースファイルを指定することができる。一実施形態では、一緒にグループ化されるリソースファイルと得られる圧縮リソースファイルとを順序付けられたn個組とすることができ、したがって、常に最後のエントリ、または最初のエントリが得られる圧縮リソースファイルであり、残りのエントリが一緒にグループ化されるリソースファイルである。別法として、制御ファイルは、一緒にグループ化されるリソースファイルを指定するために、また、得られる圧縮リソースファイルを指定するために識別子に依拠することができる。いずれの場合にも、制御ファイルは、単純なテキストファイル以上のものであることを必要としないが、当業者には自明であるように、より複雑なデータフォーマットを使用することもできる。多数の制御ファイルを必要とすることを回避するために、単一の制御ファイルがリソースファイルの複数のグループを指定できることが企図されている。一実施形態では、エラーその他により、制御ファイルが1つまたは複数のリソースファイルグループについて得られる圧縮ファイルを指定していない場合、リソースツールは、これらのリソースファイルについて圧縮ステップを迂回し、圧縮されないままとすることができる。
図8に転じると、図3に示され、上記で詳しく述べられているアプリケーション301と同様なアプリケーション810及び820が示されている。アプリケーション810及び820は、それぞれ言語独立バイナリ部分819及び829を、また、アプリケーション810について言語依存性リソース部分812、814、816、アプリケーション820について言語依存性リソース部分822、824、826を有する。また、言語依存性リソースのそれぞれは、言語依存性リソース812用のヘッダ811など、ヘッダを含む。アプリケーション810及び820は、上述のビルドプロセスの結果とすることも、異なる会社または開発者のグループから受け取ることができるものなど、未知のビルドプロセスから導出されたバイナリファイルとすることもできる。
図8に示されているリソースツール801などリソースツールは、制御ファイル803など制御ファイルから入力を受け入れ、指定されたリソースを圧縮リソースファイルフォーマットの形に圧縮することができる。たとえば、制御ファイル803は、米国英語リソースが1つの圧縮リソースファイルの形に組み合わされるようにアプリケーション810及び820の言語特有のリソースを組み合わせることができることを指定することができる。図8には示されていないが、制御ファイル803はまた、たとえば、日本語リソースを第2の圧縮リソースファイルの形に組み合わせるべきであり、フランス語リソースを第3の圧縮リソースファイルの形に組み合わせるべきであることを指定することができる。
次いで、リソースツールは、それぞれアプリケーション810及び820の米国英語リソース812及び822を読み取り、ヘッダ811及び821を、それぞれ圧縮リソースファイル830のセグメント832及び833として格納することができる。米国英語リソース812及び822からの残りの情報は、それぞれ圧縮リソースファイル830のセグメント834及び835として格納することができる。上述のように、セグメント834及び835は、リソースデータ自体の本体を含むことができる。やはり上述のように、圧縮リソースファイル830は、個々のリソースファイルヘッダが、メモリオフセット情報、またはヘッダ811内で元々見つからない情報を容れることを必要とするフォーマットを使用し、そのような情報は、リソースツール801によって圧縮リソースファイル830を作成する時点で追加することができる。
リソースツール801は、読取り、評価、ならびに、おそらくは編集、またはリソース812及び822内に含まれた情報に添付することによってセグメント832、833、834、835を作成した後で、圧縮リソースファイルヘッダ403を参照しながら上述した情報の一部またはすべてを含むヘッダ831を作成することができる。次いで、リソースツール801は、同様な方法を使用し、圧縮リソースファイルを作成することができる。この圧縮リソースファイルは、本例では、制御ファイル803によって指定されているように、日本語リソース814及び824、ならびにフランス語リソース816及び826を圧縮することによって得られるファイルとすることができる。別法として、リソースツール801は、指定された圧縮ファイルのすべてをほぼ同時に作成するために、周知の並行処理技法に依拠することができる。
実行時
今や、言語特有リソースなど、リソースを単一のファイル内に容れることができるため、もはや言語特有リソースと言語独立バイナリの間に1対1マッピングは存在しない。言語特有リソースと言語独立バイナリの間に1対1マッピングがないことにより、言語独立バイナリのインスタンス化が複雑になる可能性がある。
1対1マッピングが存在しないときの実行時方法をよりよく対比するために、言語特有バイナリファイル305のそれぞれと、言語独立バイナリ303の間に1対1マッピングがある、図3に示されているアプリケーション301を考えてみる。そのような場合には、言語特有バイナリファイルのそれぞれは、言語独立バイナリファイル303だけに関係するものとして命名し、格納し、他の方法で識別することができる。たとえば、フォルダ内に含まれる言語特有ファイルの言語の名称またはコードを有する一連のフォルダが作成されることがあり得る。したがって、図3に示されている米国英語リソースパック307など、米国英語データを含む言語特有バイナリファイルのすべてを含むであろう「米国英語」または「0404」という名称のフォルダが存在する可能性がある。この例示的な実施形態では、フォルダ内に含まれる言語特有バイナリのそれぞれについて、言語独立バイナリに対するその関係を反映するように命名することができるであろう。たとえば、言語独立バイナリが「foo.exe」と命名されているならば、米国英語の言語特有バイナリファイルは、「foo.mui」と呼ばれる可能性があり、米国英語フォルダ内に格納される可能性がある。そのような場合には、言語特有リソースが、事前定義されたフォルダ内に含まれ、言語独立バイナリに対するその関係が明らかであるように命名されるため、言語特有リソースを突き止めるのは非常に簡単である。
しかし、わかるように、上記のプロセスは、言語独立ファイルと言語特有ファイルの間に1対1対応がない場合には実際的でない。したがって、圧縮リソースファイル設計に付随する、上記でより詳しく列挙されていた効率を提供するように設計された新しいローディングプロセスが、図9に示されている。当業者なら理解できるように、図9に示されているステップは、リソースをロードする1つまたは複数のコンポーネントによって実行することができる。そのようなコンポーネントは、オペレーティングシステム35の一部、アプリケーションプログラム36など様々なアプリケーションプログラム、または他のソフトウェアもしくはユーティリティとすることができる。さらに、やはり当業者ならわかるように、図9に示されているステップは、インスタンス化または他の方法でメモリ内にロードされつつあるコンポーネントが追加のリソースを必要とするため、一般的に実行することができる。一例として、アプリケーション301の言語独立バイナリ303は、言語特有バイナリファイル305のうち少なくとも1つが存在することを必要とする可能性が高い。
図9に戻ると、ステップ901は、リソースが要求されたこと、また、リソースローディング機能が、ロードされるリソースの名前及びロケーション、たとえばパスを判定することができることを示す。上記で詳しく述べられているように、そのような情報は、要求元コンポーネントなど、コンポーネントと共に格納されるマニフェスト内に容れることができる。ロードされるリソースの名前及びロケーションが判定された後で、ステップ903でリソースをロードすることができ、ステップ905で、リソースローディング機能は、リソースが独立のファイル内に含まれるかどうか、あるいは、リソースが、おそらくは現在要求されているものとすることも、しないこともできる追加のリソースと共に、圧縮ファイル内にあるかどうか判定することができる。ローディング機能がファイルのタイプを判定することができる1つの方法は、ヘッダを調べることである。上記で詳しく述べられているように、圧縮リソースファイルヘッダは、ファイルのタイプを識別するために使用することができる特徴的な文字列を有する署名を含むことができる。代替実施形態では、ローディング機能は、たとえば、上記で詳しく述べられているような方法で要求元コンポーネントと共に格納されるマニフェスト内に含まれるファイル名または他の識別用情報を調べることにより、ステップ903の前にステップ905の判定を実行することができる。
ステップ905で、要求されたリソースが圧縮ファイル内にない場合、そのリソースのローディングは、周知の方法で進むことができる。たとえば、依然として必要な場合、ステップ921に示されているように、ローディング機能は、独立の、または「未圧縮の」ファイルを突き止めることができる。その後で、ステップ923に示されているように、ローディング機能は、ロードされるリソースを要求したプロセスのアドレス空間内に、独立のファイルをメモリマップすることができる。そのようなプロセスは、言語特有リソースを要求した、バイナリ303など実行用言語独立バイナリとなる可能性がある。要求されたリソースは、要求元プロセスのアドレス空間内にマップされた後で、ステップ925で引き続きロードされ、それにより、言語特有リソースなどそのリソースを要求元プロセスに提供することができる。
しかし、ステップ905で、ローディング機能が、要求されたリソースが実際に圧縮ファイルであると判定した場合には、ステップ907で、ローディング機能は、要求元リソースのバージョンブロックから圧縮ファイル情報を参照することができる。下記でより詳しく述べるように、要求元リソースのバージョンブロック内に含まれる情報は、正しいリソースファイルが圧縮リソースファイル内に含まれているかどうか判定するために使用することができる。
ステップ909で、ローディング機能は、圧縮ファイルがすでに別のプロセスによってロードされているかどうか判定することができる。上記で詳しく述べられているように、圧縮リソースファイルを使用することによって効率を得ることができる。というのは、そのようなファイルは、ファイルI/O動作の数を削減することができるからである。したがって、不必要なファイルI/O動作が実行されないようにするために、ローディング機能は、最初に、圧縮リソースファイルがすでにロードされているかどうか判定することができる。ステップ909の検査を実行するための1つの機構は、たとえば、要求された圧縮ファイル内に含まれている要求された言語特有リソースの言語または言語識別子と組み合わせられた、要求された圧縮ファイルのフルパス名からなるものとすることができるハッシュキーを使用することである。そのようなハッシュキーを、同様に得られた、すでにロード済みの圧縮リソースファイルのハッシュキーに比較することができる。2つのハッシュキーが同等である場合、要求された圧縮ファイルは、すでにロードされている。当業者なら理解することができるように、要求された圧縮リソースファイルがすでにメモリ内にロードされているかどうか判定する検査を実行するための多数の他の方法が存在する。そのような方法には、ファイルの開始ビット、ファイルGUIDなどの比較が含まれる可能性があり、ステップ909を実行するために同様に使用することができる。
ステップ909により、要求された圧縮リソースファイルがすでに別のプロセス内にロードされていると判定された場合、ローディング機能はステップ915を実行し、要求されたリソースのオフセット情報を得ることができ、また、要求されたリソースのバージョン及びチェックサムをも得ることができる。上記で詳しく述べられているように、オフセット情報は、リソースを要求したコードの一部であるマニフェスト、圧縮リソースファイルのヘッダ、個々のリソースそれ自体の中を含めて、様々な位置に含まれている可能性がある。オフセット情報が得られた後で、ローディング機能は、所与のオフセット部に位置するリソースのバージョン情報及びチェックサム情報を、上記で述べられているようにマニフェスト内に格納することができる被要求バージョン及び被要求チェックサムと比較することができる。
ステップ917で、所与のオフセット部のリソースのバージョン及びチェックサム情報が、要求されたバージョンまたはチェックサムと合致しないと判定された場合、ローディング機能は、上記で述べられているように、要求されたリソースが圧縮ファイル内にないと判定された場合に実行することができるステップ921に戻ることができる。したがって、バージョン及びチェックサム情報のどちらか、または両方が合致しないと、ローディング機能は、周知の方法に頼ることになり得る。しかし、バージョンまたはチェックサム情報、あるいはその両方が正しい場合、ローディング機能はステップ919に進むことができ、圧縮リソースファイルの形に圧縮された被要求リソースは、ステップ919で、要求元プロセスのプロセスアドレス空間内にマップされ、ステップ925でリソースのローディングを続行することができる。
ステップ909に戻ると、要求されたリソースが、先にロードされていない圧縮リソースファイル内にあると、ローディング機能が判定した場合、ローディング機能は、ステップ911に示されているように、それを突き止め、圧縮リソースファイルにバインドすることができる。同じ圧縮リソースファイル内に含まれているものなど、リソースの共用を容易にするために、ローディング機能は、ステップ913に示されているように、実行中プロセス全体にわたって圧縮リソースファイルをメモリマップすることができる。ステップ913は、圧縮リソースファイルをメモリページングエリア内で作成すること、及び開くこと、ならびに永続オブジェクトを作成することを含めて、プロセス全体にわたってファイルを共用するための任意の様々な方法を企図している。当業者なら理解することができるように、ファイルが複数のプロセスによって共用されているとき、一方のプロセスがファイルにアクセスしている間に、別のプロセスによってファイルへのアクセスが終了されないようにするために、カウンタを維持することができる。同様に、圧縮リソースファイルが共用されているとき、カウンタまたは同様のコンストラクトを使用し、現在圧縮リソースファイルにアクセスしているプロセスの数を追跡することができる。したがって、図9には具体的に示されていないが、ステップ915は、他のプロセスによる圧縮リソースファイルの使用を追跡するカウンタを増分することを含むことができる。
わかるように、圧縮リソースファイル構造、ならびにリソースマニフェストは、ファイルの数を削減し、ファイルI/O動作の数を削減することにより、また、そのようなリソースファイルがロードされたとき無駄にされるメモリを減らすことにより、効率を高める。改良されたオペレーティングシステムアーキテクチャ、ならびに改良されたオペレーティングシステムアーキテクチャを作成し、インストールし、使用する方法について述べたことは理解されるであろう。本発明の原理を適用することができる多数の可能な実施形態に鑑みて、図面に関連して本明細書に述べられている実施形態は、例示的なものにすぎないものとし、本発明の範囲を制限するものと考えるべきでないことを理解されたい。たとえば、ソフトウェアで示されている例示された実施形態のいくつかの要素をハードウェアで実施することができ、逆もまた同様であること、あるいは、本発明の趣旨から逸脱することなしに、例示された実施形態の構成及び詳細を修正することができることを、当業者なら理解することができるであろう。したがって、本明細書に述べられている本発明は、特許請求の範囲とその均等物の範囲内に入る可能性のある実施形態すべてを企図している。
本発明の諸実施形態を実施することができる例示的なデバイスアーキテクチャを一般的に示すブロック図である。 単一のバイナリ内にコード部分とリソース部分を有する例示的なアプリケーションバイナリを示すアーキテクチャ図である。 アプリケーションが別個のバイナリ内で言語独立コードバイナリ部分と言語依存性のリソース部分とを有するアプリケーション構成を示すアーキテクチャ図である。 本発明の一実施形態によるリソース圧縮方式のためのファイルフォーマットを示すアーキテクチャ図である。 本発明のリソースマニフェストの例示的な構造を示す関係図である。 別個のバイナリ内で言語独立コードバイナリ部分と言語依存性のリソース部分とを作成するための、本発明の一実施形態によるデータフローを示す概略図である。 別個のバイナリ内で言語独立コードバイナリ部分と言語依存性のリソース部分とを作成するための、本発明の一実施形態に従って取られるステップを示す流れ図である。 実行時に言語依存性のリソースをロードするための、本発明の一実施形態によるデータフローを示す概略図である。 実行時に言語依存性のリソースをロードするための、本発明の一実施形態に従って取られるステップを示す流れ図である。
符号の説明
500 ルート要素
502、504、506、508、510 要素

Claims (21)

  1. コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法であって、
    リソースマニフェストファイルを得るステップと、
    前記リソースマニフェストファイル内に含まれているローカライズ可能リソース情報に従って、言語独立ファイル及び言語特有リソースファイルを作成するステップと、
    チェックサムデータを作成するステップと、
    前記リソースマニフェストファイル内のフィールドを前記チェックサムデータで更新するステップと
    を備えることを特徴とする方法。
  2. 前記リソースマニフェストファイルが指定される
    ことを特徴とする請求項1に記載の方法。
  3. 前記リソースマニフェストファイルが指定されず、デフォルトリソースマニフェストファイルが使用される
    ことを特徴とする請求項1に記載の方法。
  4. 前記リソースマニフェストファイルは、XMLをベースとする宣言型ファイルである
    ことを特徴とする請求項1に記載の方法。
  5. 前記ローカライズ可能リソース情報は、圧縮リソースファイル内に常駐する
    ことを特徴とする請求項1に記載の方法。
  6. コンポーネント用として、言語独立ファイルと、対応する言語特有リソースファイルとを作成する方法を実行するための命令を含むコンピュータ読み取り可能な記録媒体であって、前記方法は、
    リソースマニフェストファイルを得るステップと、
    前記リソースマニフェストファイル内に含まれているローカライズ可能リソース情報に従って、言語独立ファイル及び言語特有リソースファイルを作成するステップと、
    チェックサムデータを作成するステップと、
    前記リソースマニフェストファイル内のフィールドを前記チェックサムデータで更新するステップと
    を備えることを特徴とするコンピュータ読み取り可能な記録媒体。
  7. リソースマニフェストスキーマデータ構造を記憶しているコンピュータ読み取り可能な記録媒体であって、前記データ構造は、
    前記スキーマがリソースローカライズ情報を含むことを示す要素を表すデータを含む第1のデータフィールドと、
    ユーザインタフェースリソースに関連付けられた要素を表すデータを含む第2のデータフィールドと、
    前記第2のデータフィールドの前記ユーザインタフェースリソース要素の言語依存性を表すデータを含む第3のデータフィールドと、
    ユーザインタフェースリソースタイプに関連付けられた要素を表すデータを含む第4のデータフィールドと
    を備えたことを特徴とするコンピュータ読み取り可能な記録媒体。
  8. 前記第2のデータフィールドは、非管理型リソースを表す
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  9. 前記第2のデータフィールドは、管理型リソースを表す
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  10. 前記第3のデータフィールドは、言語独立リソースを表す
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  11. 前記第3のデータフィールドは、ローカライズされたリソースを表す
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  12. 前記データ構造は、
    前記第2のデータフィールドの前記ユーザインタフェースリソース要素のリソースファイルのファイルパスを表すデータを含む第5のデータフィールドと、
    前記ファイルパスのファイルパスタイプを表すデータを含む第6のデータフィールドと、
    前記リソースファイルのファイルタイプを表すデータを含む第7のデータフィールドとをさらに備えた
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  13. 前記データ構造は、デフォルトリソースマニフェストを参照するかどうかの指示を表すデータを含む第8のデータフィールドをさらに備えた
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  14. 前記データ構造は、
    圧縮リソースファイルのファイル名を表すデータを含む第9のデータフィールドと、
    前記圧縮リソースファイルのファイルバージョンを表すデータを含む第10のデータフィールドと、
    前記圧縮リソースファイル内のリソースローカライズファイルのインデックス値を表すデータを含む第11のデータフィールドとをさらに備えた
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  15. 前記データ構造は、
    リソースファイルのファイルバージョンを表すデータを含む第12のデータフィールドと、
    チェックサム値を表すデータを含む第13のデータフィールドとをさらに備えた
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  16. 前記データ構造は、
    前記第4のデータフィールドの前記ユーザインタフェースリソースタイプに関連付けられた前記要素の名前を表すデータを含む第14のデータフィールドと、
    前記第4のデータフィールドの前記ユーザインタフェースリソースタイプに関連付けられた前記要素の識別子を表すデータを含む第15のデータフィールドと、
    リソース項目の名前を表すデータを含む第16のデータフィールドと、
    前記リソース項目の識別子を表すデータを含む第17のデータフィールドとをさらに備えた
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  17. 前記スキーマは、XMLをベースとする宣言型ファイルである
    ことを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  18. コンポーネント所有者がコンポーネントリソースローカライズ情報を提供するための方法であって、
    ローカライズ可能リソースを決定するステップと、
    ローカライズ可能リソースフォルダ規則を決定するステップと、
    リソースマニフェストファイルを作成するステップと
    を備えることを特徴とする方法。
  19. 前記リソースマニフェストファイルのパスをリソースコンパイラプログラムに指定するステップ
    をさらに備えることを特徴とする請求項18に記載の方法。
  20. リソースマニフェストファイルは、XMLをベースとする宣言型ファイルである
    ことを特徴とする請求項18に記載の方法。
  21. ローカライズ可能リソース情報は、圧縮リソースファイル内に常駐する
    ことを特徴とする請求項18に記載の方法。
JP2004275872A 2003-10-23 2004-09-22 コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法 Expired - Fee Related JP4936654B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/692,049 2003-10-23
US10/692,049 US7516442B2 (en) 2003-10-23 2003-10-23 Resource manifest

Publications (2)

Publication Number Publication Date
JP2005129028A true JP2005129028A (ja) 2005-05-19
JP4936654B2 JP4936654B2 (ja) 2012-05-23

Family

ID=34435457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004275872A Expired - Fee Related JP4936654B2 (ja) 2003-10-23 2004-09-22 コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法

Country Status (7)

Country Link
US (1) US7516442B2 (ja)
EP (1) EP1530127B1 (ja)
JP (1) JP4936654B2 (ja)
KR (1) KR101104035B1 (ja)
CN (1) CN100524210C (ja)
AT (1) ATE474264T1 (ja)
DE (1) DE602004028089D1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008522249A (ja) * 2005-12-29 2008-06-26 松下電工株式会社 ユーザ構成可能なソフトウェアライブラリを提供するシステムと方法
JP2010267264A (ja) * 2009-05-15 2010-11-25 Internatl Business Mach Corp <Ibm> コンポーネント・ベース・アプリケーションに対して実行可能なコードを構築する方法、その方法を実行するプログラムを含むコンピュータ可読の記憶媒体、およびコンパイラ

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093132B2 (en) * 2001-09-20 2006-08-15 International Business Machines Corporation Method and apparatus for protecting ongoing system integrity of a software product using digital signatures
KR20060082014A (ko) * 2005-01-11 2006-07-14 삼성전자주식회사 매니페스트 파일 자료구조, 이를 이용한 컨텐츠 다운로드방법 및 그 재생장치
US7610297B2 (en) * 2005-01-25 2009-10-27 Honeywell International Inc. Method to automate resource management in computer applications
US7747588B2 (en) * 2005-09-12 2010-06-29 Microsoft Corporation Extensible XML format and object model for localization data
US7921138B2 (en) * 2005-09-12 2011-04-05 Microsoft Corporation Comment processing
US8250137B1 (en) * 2005-09-19 2012-08-21 Apple Inc. Peer to peer component distribution
US7904883B2 (en) * 2005-12-01 2011-03-08 Microsoft Corporation Localizable object pattern
CN101366035B (zh) * 2005-12-13 2012-09-05 格马尔托股份有限公司 用于执行中间代码编译的应用程序的方法
CN101405724B (zh) * 2006-03-27 2013-05-01 捷讯研究有限公司 基于地区呈现表示页面的系统以及方法
EP1847923A1 (en) 2006-04-21 2007-10-24 Microsoft Corporation Localising unstructured resources
US9003396B2 (en) * 2006-06-19 2015-04-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. File manager integration of uninstallation feature
US8661425B1 (en) * 2006-07-28 2014-02-25 American Megatrends, Inc. Method, apparatus, and computer-readable medium for storing data associated with a firmware program
US20100242034A1 (en) * 2006-11-01 2010-09-23 Microsoft Corporation Distributing software products as an executable containing script logic with external resources
US7797743B2 (en) * 2007-02-26 2010-09-14 Microsoft Corporation File conversion in restricted process
US8150851B2 (en) * 2007-10-25 2012-04-03 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
WO2009054827A1 (en) 2007-10-25 2009-04-30 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
WO2009054828A1 (en) * 2007-10-25 2009-04-30 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
DE112007003645B4 (de) * 2007-10-25 2011-06-16 Hewlett-Packard Development Co., L.P., Houston Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8140637B2 (en) 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
US8307008B2 (en) * 2007-10-31 2012-11-06 Microsoft Corporation Creation and management of electronic files for localization project
US7930167B2 (en) * 2008-01-31 2011-04-19 Microsoft Corporation Videogame localization using language packs
US8595710B2 (en) * 2008-03-03 2013-11-26 Microsoft Corporation Repositories and related services for managing localization of resources
US8959089B2 (en) * 2008-04-25 2015-02-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
EP2141589A1 (en) * 2008-06-25 2010-01-06 Research In Motion Limited Electronic documents and methods for updating resource files for an application
US9268779B2 (en) * 2009-01-28 2016-02-23 Mckesson Financial Holdings Methods, computer program products, and apparatuses for dispersing content items
US20100251227A1 (en) * 2009-03-25 2010-09-30 Microsoft Corporation Binary resource format and compiler
CN102043658A (zh) * 2009-10-26 2011-05-04 环达电脑(上海)有限公司 资源文件产生装置及其方法
JP2011221855A (ja) * 2010-04-12 2011-11-04 Seiko Epson Corp リソースデータ管理装置、リソースデータ管理方法、およびリソースデータ管理プログラム
US8499131B2 (en) 2010-04-13 2013-07-30 Hewlett-Packard Development Company, L.P. Capping a number of locations referred to by chunk references
US8910122B2 (en) 2010-06-16 2014-12-09 International Business Machines Corporation Validating translations of externalized content for inclusion in an application
CN101950251B (zh) * 2010-09-14 2013-05-29 浙江大学 移动Widget的本地化方法
US9778915B2 (en) 2011-02-28 2017-10-03 Microsoft Technology Licensing, Llc Distributed application definition
US9990184B2 (en) 2011-03-25 2018-06-05 Microsoft Technology Licensing, Llc Distributed component model
US9465589B2 (en) 2011-04-05 2016-10-11 Microsoft Technology Licensing, Llc Stateful component authoring and execution
US8904128B2 (en) 2011-06-08 2014-12-02 Hewlett-Packard Development Company, L.P. Processing a request to restore deduplicated data
CN102314365A (zh) * 2011-09-08 2012-01-11 北京新媒传信科技有限公司 一种安装包制作方法和工具
US9823917B2 (en) * 2011-10-20 2017-11-21 Facebook, Inc. Update application user interfaces on client devices
CN103309647A (zh) * 2012-03-08 2013-09-18 鸿富锦精密工业(深圳)有限公司 应用程序多语言支持系统及方法
US9239817B2 (en) * 2012-04-19 2016-01-19 Microsoft Technology Licensing, Llc Managing web extension through manifest file
CN103488626B (zh) * 2013-09-03 2017-04-12 深圳Tcl新技术有限公司 一种对终端的与参数名称映射的字符串纠错的方法和装置
US9223555B2 (en) * 2013-11-07 2015-12-29 Netronome Systems, Inc. Hierarchical resource pools in a linker
JP6192570B2 (ja) * 2014-02-27 2017-09-06 京セラドキュメントソリューションズ株式会社 アプリケーション開発支援プログラム及びアプリケーション開発支援システム
CN106708593B (zh) * 2015-07-16 2020-12-08 中兴通讯股份有限公司 一种程序链接的编译方法及装置
CN106557343A (zh) * 2015-09-30 2017-04-05 阿里巴巴集团控股有限公司 生成功能应用及加载资源的方法及装置
CN107566212B (zh) * 2017-08-25 2021-07-02 郑州云海信息技术有限公司 一种资源监控管理方法和装置
CN108287812A (zh) * 2018-01-15 2018-07-17 浙江省公众信息产业有限公司 项目化案例表示方法和装置
CN111563223B (zh) * 2020-05-12 2023-09-19 北京飞漫软件技术有限公司 一种网页页面本地化方法及装置
CN114201703A (zh) * 2020-09-18 2022-03-18 华为技术有限公司 一种的生成文件的方法及电子设备
US11636064B2 (en) 2021-07-13 2023-04-25 Microsoft Technology Licensing, Llc Compression of localized files
CN114020694B (zh) * 2021-10-19 2022-10-28 北京五八信息技术有限公司 一种头文件地址的获取方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056814A (ja) * 1999-06-28 2001-02-27 Lucent Technol Inc 言語非依存アプリケーションのためのアプリケーション非依存言語モジュール
JP2001142600A (ja) * 1999-11-15 2001-05-25 Canon Inc 多国語表示切替装置およびその切替方法
US20020052910A1 (en) * 2000-10-30 2002-05-02 Microsoft Corporation System and method for dynamically verifying the compatibility of a user interface resource
EP1315086A1 (en) * 2001-11-27 2003-05-28 Sun Microsystems, Inc. Generation of localized software applications

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5678039A (en) 1994-09-30 1997-10-14 Borland International, Inc. System and methods for translating software into localized versions
US6252589B1 (en) * 1998-08-14 2001-06-26 Microsoft Corporation Multilingual user interface for an operating system
US6799208B1 (en) 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US6868539B1 (en) 2000-06-28 2005-03-15 Microsoft Corp. System and method providing single application image
US20020162093A1 (en) * 2001-04-30 2002-10-31 Ming Zhou Internationalization compiler and process for localizing server applications
US7007026B2 (en) * 2001-12-14 2006-02-28 Sun Microsystems, Inc. System for controlling access to and generation of localized application values
US7152222B2 (en) * 2002-01-08 2006-12-19 International Business Machines Corporation Method and system for localizing Java™ JAR files

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056814A (ja) * 1999-06-28 2001-02-27 Lucent Technol Inc 言語非依存アプリケーションのためのアプリケーション非依存言語モジュール
JP2001142600A (ja) * 1999-11-15 2001-05-25 Canon Inc 多国語表示切替装置およびその切替方法
US20020052910A1 (en) * 2000-10-30 2002-05-02 Microsoft Corporation System and method for dynamically verifying the compatibility of a user interface resource
EP1315086A1 (en) * 2001-11-27 2003-05-28 Sun Microsystems, Inc. Generation of localized software applications

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008522249A (ja) * 2005-12-29 2008-06-26 松下電工株式会社 ユーザ構成可能なソフトウェアライブラリを提供するシステムと方法
JP2010267264A (ja) * 2009-05-15 2010-11-25 Internatl Business Mach Corp <Ibm> コンポーネント・ベース・アプリケーションに対して実行可能なコードを構築する方法、その方法を実行するプログラムを含むコンピュータ可読の記憶媒体、およびコンパイラ
US8943482B2 (en) 2009-05-15 2015-01-27 International Business Machines Corporation Incrementally constructing executable code for component-based applications

Also Published As

Publication number Publication date
US7516442B2 (en) 2009-04-07
EP1530127B1 (en) 2010-07-14
CN100524210C (zh) 2009-08-05
JP4936654B2 (ja) 2012-05-23
EP1530127A2 (en) 2005-05-11
ATE474264T1 (de) 2010-07-15
DE602004028089D1 (de) 2010-08-26
KR101104035B1 (ko) 2012-01-09
EP1530127A3 (en) 2007-02-21
KR20050039532A (ko) 2005-04-29
CN1609799A (zh) 2005-04-27
US20050108433A1 (en) 2005-05-19

Similar Documents

Publication Publication Date Title
JP4936654B2 (ja) コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法
US7305376B2 (en) Multiple language-dependent resources compacted into a single resource file
US9569286B2 (en) Method and system for improving startup performance and interoperability of a virtual application
US8819650B2 (en) Instantiating an interface or abstract class in application code
US7614051B2 (en) Creating file systems within a file in a storage technology-abstracted manner
US9773017B2 (en) Method of configuring a virtual application
US8434099B2 (en) Efficient linking and loading for late binding and platform retargeting
US9779111B2 (en) Method and system for configuration of virtualized software applications
US7565665B2 (en) Efficient linking and loading for late binding and platform retargeting
US7543309B2 (en) Efficient linking and loading for late binding and platform retargeting
EP1548587A2 (en) Self-describing software image update components
US20030033441A1 (en) Highly componentized system architecture with a demand-loading namespace and programming model
US20040268301A1 (en) Adding new compiler methods to an integrated development environment
US20090319554A1 (en) Unified metadata for external components
CN103324474B (zh) 基于Linux操作系统跨体系构造ISO的方法及模块
US20090133042A1 (en) Efficient linking and loading for late binding and platform retargeting
US20090320007A1 (en) Local metadata for external components
US7716664B2 (en) Metadata-based application model for large applications
US8661425B1 (en) Method, apparatus, and computer-readable medium for storing data associated with a firmware program
Dhillon Managing license incompatibilities distributing eclipse application stacks
Fouché et al. VB 2005 and the CLR
Phelps Two Years with TkMan: Lessons and Innovation, Or Everything I Needed to Know about Tcl/Tk I Learned from TkMan
DECOMPRESS et al. If you ‘re on the DJGPP port of DOS
Barnaby This Is. NET

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110208

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110509

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110701

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111209

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20111212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111212

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120214

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120221

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350