JP2005182790A - 自己記述型ソフトウェアイメージ更新コンポーネント - Google Patents

自己記述型ソフトウェアイメージ更新コンポーネント Download PDF

Info

Publication number
JP2005182790A
JP2005182790A JP2004358961A JP2004358961A JP2005182790A JP 2005182790 A JP2005182790 A JP 2005182790A JP 2004358961 A JP2004358961 A JP 2004358961A JP 2004358961 A JP2004358961 A JP 2004358961A JP 2005182790 A JP2005182790 A JP 2005182790A
Authority
JP
Japan
Prior art keywords
package
file
information
files
manifest file
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
JP2004358961A
Other languages
English (en)
Other versions
JP5208350B2 (ja
Inventor
Brian D Cross
ディー.クロス ブライアン
Jeffery D Glaum
ディー.グラウム ジェフリー
Lorna R Mcneill
レベッカ マクニール ローナ
Michael E Markley
イー.マークリー マイケル
Scott R Shell
アール.シェル スコット
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 JP2005182790A publication Critical patent/JP2005182790A/ja
Application granted granted Critical
Publication of JP5208350B2 publication Critical patent/JP5208350B2/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Abstract

【課題】 更新を含むソフトウェアイメージがパッケージとして提供されるシステムおよび方法を提供すること。
【解決手段】 このパッケージは自己記述型であり、それによってイメージのコンポーネント部分だけの置換を容易にする。ソフトウェア構築プロセスは、(ファイル、メタデータ、構成情報などを含む)オペレーティングシステム機能をそのパッケージ中へとマッピングし、実行可能コードが、再配置の目的のために処理される。この最終的なパッケージは、そのパッケージを記述し、依存情報、および設定の優先順位についての情報(シャドウデータ)を伝えるデバイスマニフェストファイルを含んでいる。
【選択図】 図2

Description

本発明は、一般にコンピューティング装置に関し、より詳細にはコンピューティング装置の不揮発性ストレージを更新することに関する。
携帯情報端末、最新の携帯電話、ハンドヘルドコンピュータ、ポケットサイズコンピュータなどの携帯型のコンピューティング装置が、重要で人気のあるユーザツールになってきている。一般に、これらのコンピューティング装置では、十分小さくなって非常に便利になる一方で、消費する電池電力も少なくなり、また同時により強力なアプリケーションを実行できるようになってきている。
このようなデバイスを製造するプロセス中に、埋込みのオペレーティングシステムイメージが、通常単体のイメージファイルに組み込まれ、各装置の不揮発性ストレージ(例えば、NANDまたはNOR型のフラッシュメモリ、ハードディスクなど)に記憶される。この結果、このような装置を更新することが、ときどき必要となり、または望ましい。
しかし、単体のオペレーティングシステムには、更新をインストールするために大量のリソース(例えば、一時記憶および処理能力)が、この単体のイメージ全体を置き換えるために必要とされることを含めていくつもの不利な点がある。同時に、このオペレーティングシステムの一部のサブセットコンポーネントをインストールすることは、様々な理由から困難なタスクとなる。オペレーティングシステムイメージのあるサブセットの更新を容易にするメカニズムが必要になっている。
簡潔に言えば、本発明は、各パッケージが、インストレーションの目的で同じに扱われる1組のファイルのカプセル(encapsulation)を含み、このパッケージのフォーマットが、自己記述型(self−describing)であり、それによってイメージの構成要素だけの置換を容易にすることができる、インストレーションおよび更新パッケージを提供するシステムおよび方法を対象としている。この目的のために、このシステムおよび方法では、(ファイル、メタデータ、構成情報などを含む)オペレーティングシステムの機能がソフトウェア構築プロセスの一部分としてパッケージ中にマッピングされる。
一実施例では、パッケージングロジック(packaging logic)は、ユーザが順に選択して異なるパッケージにマッピングする関連した機能(feature)の間で、特定のファイルおよび/または設定が共有される場合を取り扱う。いくつかの可能性のある、より高レベルのパッケージマッピング要求を前提として、このロジックにより、一般に個別のファイル/設定がこの正しいパッケージにマッピングされるようになる。さらに、パッケージは、オプションとして依存情報を伝え、したがって、パッケージがその依存情報を取得するためのメカニズムが、(機能レベルの依存仕様によって)提供される。ロジックは、この機能レベルより下位の競合および依存性を解決する。
構築プロセス中に、オペレーティングシステムイメージについてのバイナリイメージビルダファイル(binary image builder file)と、コンポーネントツーパッケージマッピングファイル(component to package mapping file)を入力として取り込むことによって、構築マニフェストファイル(build manifest file)が作成される。この構築マニフェストファイルは、特定のパッケージについてのファイル内容を指定する。これらのファイル内容を再検討し、任意の実行可能コードをそのパッケージへの挿入に先立って処理して、インストール時における装置上での実行可能コードの再配置/修正(fix‐up)を可能にする。パッケージ生成プロセスでは、構築マニフェストおよびパッケージ定義ファイル中の情報に基づいてデバイスマニフェストが作成される。
このオペレーティングシステムイメージについてのレジストリは、分割して同様なアルゴリズムに基づいてパッケージに割り当てられ、XMLファイルも同様に分割して特定のパッケージに割り当てることができる。この結果は、おそらく、パッケージ定義ファイル、コンポーネントマッピングファイル、コンポーネント関係ファイル、構築マニフェストファイル、レジストリファイル、およびXML設定ファイルを含めて、構築すべき各パッケージについてのいくつかのファイルとなる。これらのファイルから、パッケージ生成プロセスは、各パッケージをパッケージ定義へマッピングすること、パッケージについての構築マニフェストファイルを読み取ること、およびそのデータからパッケージを生成することを含めて、これらのパッケージからパッケージコレクションを作成することによって最終的なパッケージファイルを構築する。
自己記述型となるパッケージでは、デバイスマニフェストファイルが、このパッケージングプロセス中に作成され、このパッケージ自体に格納される。このデバイスマニフェストファイルは、インストレーションプロセス中に使用される。パッケージの依存性データおよびシャドウ(パッケージ設定優先度)データはまた、例えばこのデータをデバイスマニフェストファイルに書き込むことによってパッケージに付随するデータの一部ともなる。
他の利点についても、図面を併せ参照するときに以下の詳細な説明から明らかになろう。
・例示の動作環境
図1は、プロセッサ122、メモリ124、ディスプレイ126、および(物理的キーボードまたは仮想的キーボードでもよく、またはその両方を表し得る)キーボード128を含む、かかるハンドヘルドコンピューティング装置120の機能コンポーネントを示すものである。マイクロフォン129が、オーディオ入力を受けるために存在することもある。メモリ124は、一般に揮発性メモリ(例えば、RAM)と不揮発性メモリ(例えば、ROM、PCMCIAカードなど)の両方を含んでいる。マイクロソフト(登録商標)コーポレーション製のWindows(登録商標)オペレーティングシステムまたは別のオペレーティングシステムなどのオペレーティングシステム130が、メモリ124中に存在し、プロセッサ122上で実行される。
1つまたは複数のアプリケーションプログラム132が、メモリ124にロードされ(または、ROM中に配置されて実行され)このオペレーティングシステム130上で実行される。アプリケーションの例としては、電子メールプログラム、スケジューリングプログラム、PIM(個人情報管理)プログラム、ワードプロセッシングプログラム、スプレッドシートプログラム、インターネットブラウザプログラムなどが挙げられる。ハンドヘルドパーソナルコンピュータ120は、メモリ124にロードされ、プロセッサ122上で実行される通知マネージャ134を含むこともできる。通知マネージャ134は、例えば、アプリケーションプログラム132からの通知要求を処理する。また、以下で説明するように、ハンドヘルドパーソナルコンピュータ120は、このハンドヘルドパーソナルコンピュータ120をネットワークに接続するのに適したネットワーキングソフトウェア136(例えば、ハードウェアドライバなど)およびネットワークコンポーネント138(例えば、無線およびアンテナ)を含んでおり、電話をかけることを含めることができる。
ハンドヘルドパーソナルコンピュータ120は、1つまたは複数のバッテリとして実装される電源140を有している。この電源140は、ACアダプタや電源ドッキングクレードルなど、内蔵バッテリを無効にするか再充電する外部電源をさらに含むことができる。
図1に示す例示的なハンドヘルドパーソナルコンピュータ120は、3種類の外部通知メカニズム、すなわち、1つまたは複数の発光ダイオード(LED)142およびオーディオジェネレータ144を有するように示されている。これらのデバイスは、この電源140に直接に結合され、その結果、駆動されたときに、たとえこのハンドヘルドパーソナルコンピュータプロセッサ122および他のコンポーネントがバッテリ電力を節約するために遮断されることがあっても、これらのデバイスは、ある存続期間にわたって通知メカニズムによって指示され続けることができる。このLED142は、ユーザがアクションを取るまで無期限に状態を維持することが好ましい。オーディオジェネレータ144の現在のバージョンは、今日のハンドヘルドパーソナルコンピュータバッテリにとってはあまりにも多すぎる電力を使用し、したがって、このシステムの残りが切断されたときまたは駆動された後ある有限の継続期間後にオフになるように構成されていることに留意されたい。
基本的なハンドヘルドパーソナルコンピュータを示しているが、携帯電話など、データ通信を受信し、プログラムが使用するために何らかの方法でデータを処理することができる実質上どのようなデバイスでも、本発明を実施する目的では等価なものであることに留意されたい。
・自己記述型ソフトウェアイメージ更新コンポーネント
本発明は一般に、初期ソフトウェアまたはソフトウェアの更新が埋込みデバイスの不揮発性メモリ、例えばフラッシュメモリに書き込まれるデバイスを含めて、マイクロソフト(登録商標) Windows(登録商標)CEベースの携帯機器など小型のモバイルコンピューティング装置上に記憶されるソフトウェアをインストールおよび/または更新することを対象としている。それにもかかわらず、本発明は一般にコンピューティングに対しても利点を提供するものであり、したがって様々な種類のメモリ、および/またはハードディスクドライブなど他の種類の記憶媒体を含めて、他のコンピューティング装置と他の種類のストレージに適用することもできる。簡潔に説明するために、どのような記憶メカニズムも等価であることが理解されようが、用語「フラッシュ」は、以降ではデバイスの更新可能なストレージに関して使用する場合がある。さらに、用語「イメージ」は一般に、たとえ既存のイメージの一部分しか更新されないときでさえ、初期ソフトウェアインストレーションイメージならびにその後のイメージに対するソフトウェアの更新の概念を含むことになる。
バックグラウンドとして、Windows(登録商標)CEオペレーティングシステムなど現在のオペレーティングシステムは、モジュール化(コンポーネント化)されている。しかし、正しいファイルおよび設定を含むその結果イメージ(resultant image)は、単体のオペレーティングシステムイメージである。このために、構築時に、機能変数(feature variables)を特定のファイルおよび設定に対してマッピングして、この結果としての単体のオペレーティングシステムイメージ中に何が含まれているかが判定される。このマッピングを実施するための機能は、2種類の構築時構成ファイル、すなわちバイナリイメージビルダ(.bib)ファイルおよびレジストリ(.reg)ファイルを使用する。この.bibファイルは、結果イメージに含められるファイルのリストを含み、.regファイルは、このイメージに含められるレジストリ(設定)情報のリストを含んでいる。これらのファイルの内容は、機能によってコレクションにグループ分けされ、構築時にオプションで設定することができる条件付き変数にラップ(wrap)される。条件付き機能変数が構築時に設定されるとき、.bibファイルおよび.regファイルの関連する内容が、そのイメージ中に含められ、そのようなものとしてこのシステムのユーザは、細分性(granular)機能レベルでこの結果イメージが何を含むべきかを選択することができる。
より高レベルのロジックは、機能レベルの依存性が自己満足させるものであるように条件付き変数の選択にも適用される。換言すれば、1つの機能を選択することによって、この選択されたフィーチャが依存している他のフィーチャも選択されるようになる。したがって、この構築システムは、自己矛盾のない単一のオペレーティングシステムイメージが、ユーザの側での任意のランダムな機能の選択によりもたらされることを保証する。しかし、前述のように、単一のオペレーティングシステムイメージは、下位区分のイメージを個々に更新できるように構成されたイメージに対して欠点を有する。
本発明の一態様によれば、ソフトウェアの更新を含むイメージが、自立型の安全(secure)なエンティティから構築される。基本的な更新プリミティブ(primitive)は、パッケージと呼ばれ、ここで一般に、パッケージとは、同じものとしてバージョン化されユニットとして更新される1組のファイルのカプセルである。本発明は、イメージを更新する際に自己記述型の顕著な改善をもたらし、イメージの1つのコンポーネント部分だけの置換えを容易にするようなパッケージフォーマットを提供する。
イメージは、パッケージから構築され、ストレージに適用することができる実行可能コードおよびデータを含んでいる。実行可能コードは、インストール時にこの埋込みデバイスの仮想アドレス空間環境にカスタマイズされることに留意されたい。例えば、基礎となるフラッシュメモリ技術に依存して、一部のデバイスでは、実行可能コードがそのフラッシュから直接実行(コードを圧縮フォーマットで記憶することができないことを意味する「その場で実行(execute−in−place)」)できるようになるが、一方、他のデバイスでは、実行するためにそのコードを(必要に応じてそのコードを伸張することを含めて)RAMにコピーする必要がある。本発明の一態様に従って、イメージ更新技術では、コンポーネント間のどのような依存性をも保持しながら、パッケージを使用してそのオペレーティングシステムイメージが、別個に更新することができる更新可能なコンポーネントに分解される。
本発明の一態様によれば、(ファイル、メタデータ、構成情報などを含む)オペレーティングシステム機能をソフトウェア構築プロセスの一部分としてパッケージ中にマッピングするシステムおよび方法が提供される。このパッケージは、初期のデバイスインストレーションのためにも、更新のためにも使用することができる。以下で説明するように、ソフトウェア更新パッケージは、様々な形態をとることができ、例えば、あるものでは、以前の更新に対する変更分(デルタ)しか含まないこともあるが、一方、他のものでは、他のファイルを全部置き換えるファイルを含むこともある。他の種類の1つのパッケージでは、他の複数のパッケージを含むことができる。
本明細書中で説明しているパッケージの概念は、更新プロセスのうちのコンポーネント部分である。オペレーティングシステム機能(一般に、特定のファイル、メタデータ、構成情報などにマッピングする抽象概念)をパッケージ中にマッピングするプロセスにより、オペレーティングシステムイメージの最低レベルのコンポーネントを識別する必要性の代わりに、ユーザが、このオペレーティングシステムイメージの特定の態様についてのフルセットの関連するファイル、メタデータ、構成情報などを記述した、より高レベルのハンドルを参照することができることを含めて、ユーザ(例えば、このイメージのプロバイダ)にとっての使い易さの利点がもたらされる。本明細書中で使用されているように、用語「機能(feature)」および「コンポーネント(component)」は、通常、同義的に使用することができる。機能ハンドルを参照することによって、ユーザは、抽象化を介してパッケージングの複雑さを管理する観点での利益を得ることができる。例えば、ブラウジングコンポーネントソフトウェア(例えば、Internet Explorer)用の実行可能モジュール、ダイナミックリンクライブラリ(DLL)、リソース/データファイル、レジストリ情報などを特別にマッピングし、各部分をパッケージに個々にマッピングする代わりに、本発明では、ユーザが、単一の「Internet Explorer」ハンドルを有するこの関連する情報を参照し、したがってその情報をこの機能レベルでパッケージにマッピングすることを可能にする。
本発明では、ユーザが異なるパッケージにマッピングするために次に選択する関連した機能間で、特定のファイル/設定が共有される場合を扱うためのパッケージングロジックも提供する。(以下で説明する)様々なアルゴリズムにおけるロジックにより、一般に、いくつかの可能性がある、より高レベルのパッケージマッピング要求を前提として、個々のファイル/設定が正しいパッケージにマッピングされるようになる。ロジックが、正しい手順を決定できない状況においては、メッセージングがユーザに対して提供されて、解決するためにユーザの介入を必要とする任意の課題が示される。
さらにパッケージは、オプションで依存情報も伝える。
例えばパッケージの内容が、別のパッケージの内容に依存する場合、この関係は、その構築プロセス中に取り込まれ、後で解析するためにそのインストレーションプロセス中にパッケージの中に符号化される。本発明ではまた、パッケージがこの依存情報を獲得するための(機能レベルの依存仕様(dependency specifications)による)メカニズムが提供される。
本発明の一態様によれば、機能の選択をパッケージのアレイ(1つまたは複数のパッケージ)にマッピングすることができ、その結果、特定のファイルおよび設定が、適切なパッケージにマッピングされることになる。これを正しく遂行するために、ロジックは、この機能レベルの下にある競合および依存性の問題を解決する。例えば、2つの機能が同じ特定のファイルを論理的に参照し、これらの機能が異なるパッケージにマッピングされる場合、このロジックは、この共有されたファイルをどのパッケージに配置すべきかを決定する。
一実施例においては、パッケージファイルは、構築時に3つの異なるファイル、すなわちパッケージ定義ファイル(pkd)、コンポーネントマッピングファイル(cpm)、およびコンポーネント関係ファイル(crf)によって定義される。pkdファイルは、パッケージの内容のグローバル属性を定義する。このpkdファイルは、構築プロセス中に以下のXSDに対して正当性が確認されるXMLファイルである。
Figure 2005182790
.pkdファイルの一例を以下に示す。
Figure 2005182790
このグローバルユニークID(globally−unique ID)(GUID)およびパッケージ名の定義ファイルの存在に留意されたい。このGUIDは、パッケージを別のパッケージと区別するために参照することができるこのパッケージについての一意的な名前を提供する。このパッケージ名は、オペレーティングシステム機能/コンポーネントをこのパッケージにマッピングする際に使用されるハンドルを提供する役割を果たす。
一実施例では、cpmファイルは、コンポーネントツーパッケージマッピング情報(component−to−package mapping information)を含むCSV(comma−separated value)ファイルである。このファイルは、以下の形式となる。
<コンポーネント変数>,<パッケージ名>
または
<コンポーネントファイル名>,<パッケージ名>。
以下は、一部のコンポーネントツーパッケージマッピング情報の例を提供するものである。
Figure 2005182790
コンポーネント関係ファイル(crf)は、コンポーネント間の依存関係とシャドウ関係(シャドウとは、設定についての優先順位を意味する)を示す。このコンポーネント関係ファイルは、以下の形式となる。
<コンポーネント変数> DEPENDSON <コンポーネント変数>
または
<コンポーネント変数> SHADOWS <コンポーネント変数>
この一例を以下に示す。
APPS_MODULES_OMADMCLIENT SHADOWS APPS_MODULES_MMS
以下の表は、本明細書中で説明している一部の用語およびファイル形式についての一般的な非限定的な定義を要約したものである。
Figure 2005182790
Figure 2005182790
Figure 2005182790
図面のうち図2を参照すると、全体的なパッケージ生成プロセスの一部分として、構築プロセス中に、このオペレーティングシステムイメージ、およびコンポーネントツーパッケージマッピングファイル206についてのバイナリイメージビルダファイル204(.bibファイル、パッケージマニフェストファイルとも呼ばれる)を入力として取り込むことによって、構築マニフェストファイル202が作成される。上述のようにこの構築マニフェストファイル202は、特定のパッケージについてのファイル内容を指定する。
図3は、バイナリイメージビルダファイル204からこの構築マニフェストファイル202を作成するための構築マニフェストファイル作成プロセス208の一例を一般的に示すものである。図3から分かるように、一般に、このバイナリイメージビルダファイル204中の各行が解析(parse)される。したがって、(XIP(その場で実行)テーブル(ステップ310および312)中で調べられる)有効なタグを有する.bibファイルエントリとして解析される行は、要求どおりに圧縮し(ステップ318)、この構築マニフェストファイル202に書き込むことができる(ステップ320)。
結果の構築マニフェストファイル202は、以下のXSDを用いて正当性が確認されるXMLファイルである。
Figure 2005182790
この構築マニフェストファイル202を作成した方法と同様にして、このオペレーティングシステムイメージについてのレジストリは、(RGUファイルと呼ばれることもあるものに)分解され、同様なアルゴリズムに基づいてパッケージに割り当てられる。かかるプロセス210(図2)の一例が図4に示され、ここで、適宜それらのレジストリキーネーム(registry key name)を含めて有効なタグ(ステップ414)に関連するレジストリ設定212(図2)が、このパッケージRGUファイルに書き込まれる(ステップ422)。処理されているパッケージが変化する(ステップ418および420)ときはいつでも、このレジストリキーネームは、このパッケージRGUファイルに書き込まれることに留意されたい。
さらに、(図2の、例えば他の設定を含めて)XMLファイル218は、分解し特定のパッケージに割り当てることができる。これを行うためのプロセス220の一例が、図5に示され、ここで、(ステップ508で評価される)子ノードについての有効なタグがこのパッケージのノードに割り当てられる(ステップ514)。
このパッケージ作成プロセスのこの中間ステップの結果は、構築されるパッケージごとの図2に示したいくつかのファイルであり、以下のものを含んでいる。
Figure 2005182790
これらのファイルから、(例えば、XSD203およびXSD225を介した正当性の確認を含めて)パッケージ生成プロセス230は、一般的に図6に示すフローチャートに従って最終的なパッケージファイル232を構築する。図6に一般的に示されるように、何らかのチェックおよび正当性確認(ステップ600〜610)の後に、各パッケージをこのパッケージ定義にマッピングすること、このパッケージについての構築マニフェストファイル208を読み取ること、およびそのデータからこのパッケージを生成すること(ステップ618〜622)を含めて、パッケージコレクションがこれらのパッケージから作成される(ステップ612)。
この構築マニフェストファイルを最終的なパッケージファイルリスト形式へと変換し、(図8を参照して以下で説明するように再配置情報を実行可能ファイルに挿入するツール)relmergeツール250を用いて各実行可能ファイルを処理するプロセスが、図7Aおよび7Bに一般的に示されている。図7Aおよび7Bのステップ700〜714により一般的に示すように、(エラーが発生しなかったと想定すると)指示ファイルが作成され、その構築マニフェストファイルの位置が特定され解析される。その解析が、成功したには(ステップ716)、ステップ720でデバイスマニフェストオブジェクトが作成され、このプロセスは図7Bのステップ726へと続行され、これによって、このデバイスマニフェストオブジェクトが、適切に作成されるようになる。
ステップ732および756により、この構築マニフェストファイル中のリストアップされた各ファイルが処理される。このために、ステップ734でこのファイルが見つけられ、ステップ738で実行可能かどうかが判定される。実行可能でない場合、このファイルは、そのまま一時構築ディレクトリにコピーされ、実行可能な場合には、このファイルは(ステップ740によりテストされたときまだ処理されていない場合には)インストール時にそのデバイス上で実行可能コードの再配置/修正を可能にする(図2で、例えばrelmerge.exeと称される)ツール250によって処理する必要がある。このファイルが、図8を参照して以下で説明するrelmerge処理を必要とする場合には、ステップ744でこのツールが呼び出され、またこれが順調に実行される場合には、このファイル名がこのデバイスマニフェストに追加される。
したがって、図7Aおよび7Bを参照して以上で説明したように、構築マニフェストファイル208中にリストアップされた、パッケージ用のファイル内容が検討され、どのような実行可能コードでもそのパッケージに挿入するのに先立って処理して、インストール時にそのデバイス上で実行可能コードの再配置/修正が可能となる。構築マニフェストファイルを最終的なパッケージファイルリスト形式へと変換するために、各実行可能ファイルは、そのファイル中にすでにある再配置情報を圧縮し、(.RELファイルが提供される場合には)オプションで、そのオペレーティングシステムがそのコードおよびデータセクションを隣接していないメモリ領域に分離できるようにする、より詳細な再配置情報を提供するrelmergeツール250を用いて処理される。
このrelmergeツールの動作は、図8の流れ図に一般的に示されている。これをまた実行することにより入力ファイルが修正されるので、ステップ802に示されるように、入力ファイルのコピーが行われる。したがって、このrelmergeツール250は、この入力ファイルのコピーを行い、このコピーから作業を行い、このプログラムが終了するとこのコピーは削除される。
署名(signature)は、ステップ804で取り除かれる。というのは、この署名が、プロセスの後の部分(以下で説明するスペースアカウンティングチェック(space accounting check))を失敗させるからである。このツール250は完全に異なるファイルを出力していることになるので、この署名は、どのようなイベントにおいてもこの出力ファイルに対する何の関連性ももたないことに留意されたい。ポータブルな実行可能ファイル(.EXEファイルおよび.DLLファイルについてのファイルフォーマット)においては、その署名は、ファイル中の任意のセクションの外側にあるこのファイルの末尾に格納され、ここで、各セクションは、ローダがメモリにデータをロードするために用いるユニットに対応する。各セクションには、O32ヘッダと呼ばれ、またはIMAGE_SECTION_HEADER構造を用いて識別されるヘッダがある。ステップ806によって一般的に示されるように、このファイルの操作を容易にするために、このツール250は、このPEファイルについてのPEファイルヘッダとそのセクションを解析して適切な内部データ構造に入れる。このIMAGE_SECTION_HEADER構造は、イメージセクションヘッダフォーマットを表す(このIMAGE_SECTION_HEADERについてのさらなる詳細については、msdn.microsoft.comで見出すことができる)。
Figure 2005182790
ファイルが、新しいヘッダを付けてパッディングを除去して再配置されることになるので、スペースアカウンティングチェック(ステップ808)を実施してこのファイルのセクション内に含まれないファイル中には情報がないことを検証する。(ツール250によって処理される)ファイル署名およびコードビュー(Codeview)デバッグディレクトリエントリを含めて、データが、このセクションの外側の.EXEファイルまたは.DLLファイルに格納される状況も存在することに留意されたい。抽出すべきデータを.EXE自体の後に格納する自己抽出実行可能ファイル(self−extracting executable file)などセクションの外側にデータを格納することができる他のアプリケーションも存在する。圧縮されたデータは、セクション内には格納されず、そうでなければ、ローダは、この圧縮されたデータをメモリにロードしようと試みるがこれは、どのようにして自己抽出実行可能ファイルが動作すべきかということではない。このツールは、これらのインスタンスをサポートしない。
スペースアカウンティング(Space Accounting)は、それぞれがこのファイル中のデータブロックからなるスペースブロック(SpaceBlock)構造のアレイを保持するCSpaceAccountingクラスのインスタンスによって実装される。スペースアカウンティングを実装するために、占めることが可能なファイル中の領域が、個々のブロックとしてこのSpaceAccountingに追加される。これは、(E32ヘッダおよびO32ヘッダを含めて)ファイルヘッダおよびファイル中のセクションごとに行われる。CodeViewデバッグエントリを受け入れることができるようにするために、これらのそれぞれも別個のブロックとして追加される。次いでこれらのブロックは、ファイル内でオフセットによってソートされる。(例えば、ブロック2は、ブロック1の最後のバイトの直後のバイト上から開始される)新しい順序で隣接するブロックがマージされる。このプロセスの終わりで、ファイル中のすべての空間を占有することができる場合には、このリストは、オフセット0から開始され、全体ファイル長の長さを有するたった1つのブロックのみを含むようにしなくてはならない。この条件が真である場合には、このテストはパスする。そうでない場合には、エラーが報告されこのツールは終了する。
このスペースアカウンティングチェックがパスする場合には、ステップ810で示されるように、このツール250は、この入力ファイルが指定される同じディレクトリ中の.RELファイルを探索する。存在する場合には、このプロセスは、ステップ812で処理され、そうでない場合には、このPEファイルの再配置セクションがステップ814で処理される。より詳細には、この再配置解析ツールは、2つの異なる種類の再配置情報、すなわち、宛先セクション情報を含む.RELファイル中の再配置情報と、宛先セクション情報を含まないPEファイルの.relocセクション中の再配置情報とを解析することができる。この目的のために、再配置解析は、PEファイル中の.RELファイルまたは内部再配置のどちらかを解析することに対応する2つのエントリポイントを有する。しかし現在の実装においては、一方または他方のいずれかを呼び出すことは正当であるが、両方を呼び出すことは正当ではない。
この再配置を記憶するためにCRelocDataクラスの2次元アレイが保持され、ここで、2次元のこのアレイは、該当する再配置についてのソースセクションおよび宛先セクションである。再配置についてのソースセクションは、その再配置が配置されるセクションであり、ここで、再配置は、このファイルを修正して特定のアドレスにロードするときにこのファイル中の特定のデータの一部分を更新するための命令である。したがって、このソースセクションは、データの一部分がどのセクション内で存在するかを識別する。ソースセクションは、再配置の相対仮想アドレスを調べ、これをこのファイル中のセクションの相対仮想アドレス範囲と比較することによって推論される。
再配置についての宛先セクションは、どのセクションがこの再配置が指しているデータの一部分を含んでいるかを識別する。オプティマイザはこの再配置が他のセクションを指すように見えるようにしてコードを最適化することが知られているので、検査技術が常に機能するわけではない。例えば、オプティマイザは、加算または減算を最適化し、それをコード中ではなくリファレンス中に配置することになる。この理由から、この宛先セクションは、データから推論されない。この2つの再配置フォーマット(.RELまたは.reloc)の間の差は、この再配置についての宛先セクションが知られているかどうかである。この.RELファイルは、明示的にこの宛先セクションを識別するが、この.relocセクションは、そうではない。
その結果、この.relocセクション中の再配置情報しかもたないファイルでは、その全体ファイルを一緒に再配置する必要がある。宛先セクション情報なしには、2つのセクションを分離しそれらを異なる量だけ再配置することはできない。したがって、このツールでは、再配置ごとにソースセクションと宛先セクションの両方を追跡し、これらの宛先セクションが有効であるかどうかを追跡する必要がある。
これを行うために、このプロセスは、CRelocDataクラスの2次元アレイを保持し、各CRelocDataクラスは、再配置データのそれ自体のストリームを構築する。このアレイは、両次元でサイズが固定されており、これは、このツールがある最大の(例えば、16の)セクションをもつPEファイルしか処理できないことを意味している。この制限により、再配置を持続するためのデータフォーマットは、ソースセクションおよび宛先セクションごとに8ビットを格納し、256セクション用のデータフォーマットでは可能性が残される。次いで、他の2つの関数(CalculateRelocSizeおよびWriteRelocationsToFile)が、少なくとも1つの再配置を有するソースセクションと宛先セクションの組合せごとにブロックヘッダを書き出すことによって、これらの個別のストリームを組み合わせる。
再配置符号化(Relocation encoding)は、CRelocDataクラスにおいて実装される。このクラスは、再配置アドレスのストリームを(このCRelocData::AddRelocメソッドに対する個別の呼び出しとして)取得し、これらの再配置を符号化するために必要なコマンドを表すバイトストリームを作成する。そのバイトストリームは、後で取り出すことができる。これを実装するために、このクラスは事実上1コマンド後にとどまり、常に「シングル(Single)」コマンドを用いて開始され、単一の再配置を表す。次いで、(AddRelocメソッドで)新しい再配置が到達するときに、これらの再配置を分析して、前のコマンドおよび新しいロケーションを使用して、パターンを形成することができるかどうかを調べる。この前のコマンドが「シングル」コマンドである場合には、この前のコマンドは、この新しい再配置アドレスがDWORD整列され、パターンコマンドの(3DWORDとなる)最大スキップ範囲内にある場合には、この前のコマンドを「シングル」コマンドから「パターン(Pattern)」コマンドへと変換することによってしか拡張できない。この前のコマンドがパターンコマンドである場合には、そのパターンはすでに、確立済みの形式を有しており、このパターン中の次の要素を演繹することができる。その新しいアドレスが、そのパターン中の次のエレメントとたまたまマッチングする場合には、そのパターンは、1サイクルで拡張される。そうでない場合には、新しいシングルコマンドが開始される。
図8の全体フローに戻ると、このファイルのセクションがヘッダに続くファイル中で線形的に生じるので、ファイル全体を再配置して新しいヘッダフォーマット、およびこれらセクション間のすべてのパディングの除去に対応できるようにする必要がある。このためには、ステップ818によって表されるように、(存在する場合には)古い.RELOCセクションが除去され、追加すべき再配置が何か存在する場合には、新しい.CRELOCセクションが末尾に追加される。ステップ818において完成されたファイルレイアウトを使用して、ステップ820でこの出力ファイルが最終的に作成され、この出力ファイルに対してセクションごとにヘッダ、次いでそのデータが書き込まれる。
ステップ822で、ここでrelmerge.exeは、ターゲット出力ファイルがnk.exeであるかどうかをテストし調べる。この出力ファイルがnk.exeである場合には、relmergeツール250は、2つのファイルの内容を処理して(以下で説明する)pTOC情報およびRomExt情報を書き出す。relmergeツール250は、デバッグ設定に基づいて異なるファイルをコピーすることによってnk.exeが作成されるので、その出力ファイルを調べる。処理される第1のファイルは、config.bsm.xmlである。このファイルは、イメージ更新(Image Update)処理中にMakePkg.exeによって生成される。このファイルは、システムカーネル中のFIXUPVARについての名称および所望の値のテキスト表現を含んでいる。このファイルの内容は、後で使用するために解析され記憶される。第2のファイルは、入力ファイルについてのマップファイルである。このファイルは、ProcessFixupVarによって処理される。このファイルは、ソースファイルパス(source file path)を取得し、それをコピーし、.exeを.mapで置き換え、このマップファイルをオープンしようと試みる(マップファイルは、PEファイル内のファンクションおよび変数の物理アドレスおよび仮想アドレスについての大量の情報を含むテキストファイルである)。このマップファイルが正常にオープンされる場合には、この第1の行を解析してこのマップファイルのタイムスタンプが取り出される。次いで、このタイムスタンプは、PEファイル中のタイムスタンプと比較される。これらが異なる場合には、警告が作成され、マップファイル処理が停止される。これらのタイムスタンプが一致する場合には、このファイルの各行が読み取られ、正規表現ストリングを使用して各FIXUPVARが探索される。マッチが見出される場合、アドレス情報がそのマップファイルから取得され、このアドレス情報を使用して(config.bsm.xmlからの)この新しい変数値が正しい位置のソースファイル中に書き込まれる。同時に、ProcessFixupVarはまた、後で処理するためにpTOC(ここで、TOCは、内容テーブルを表す)およびRomExt変数も探索する。pTOCが見出されると、新しい.crelocヘッダが、(1ベースから0ベースに調整された)マップファイルから取り出されたセクションに対して設定されたbSrcSection、254に設定されたbDstSection、および4という長さを用いて作成される。このヘッダは、4バイトのRVA+Baseアドレス情報が続くターゲットファイルに書き込まれる。RomExtについては、ヘッダは、bSrcSectionが253に設定される点以外は同じである。
このpTOC/RomExt解析動作は、オペレーティングシステムカーネルが、pTOC変数を通じて提供されるROM中のファイルについての情報を必要とするので使用される。この変数は、デバイス上で実行されるDiskImageツールおよび更新アプリケーションによって更新する必要がある。この変数についての情報は、システム構築のコンパイルおよびリンクのフェーズ中に作成される.MAPファイルを介してのみ取り出すことができる。このファイルを解析してこの情報が取り出される。
ある種の実行時ツールは、カーネルデータ構造内で宣言される変数にアクセスする必要がある。この変数は、RomExtと名づけられている。この変数は、このデバイス上で実行されるDiskImageツールおよび更新アプリケーションによって更新する必要がある。この変数についての情報は、システム構築のコンパイルおよびリンクのフェーズ中に作成される.MAPファイルを介してしか取り出すことができず、したがって、このファイルを解析してこの情報が取り出される。
本発明の一態様によれば、パッケージを自己記述型にするために、(図2に、より詳細には図9に示される)デバイスマニフェストファイル260が、そのパッケージングプロセス中に作成され、そのパッケージ自体に格納される。このデバイスマニフェストファイル260は、そのインストレーションプロセス中に使用される。このデバイスマニフェストファイル中に含まれるフォーマットおよび情報は、図9に示され、また以下に示すこの構造定義を用いて記述される。
Figure 2005182790
一実施例においては、上述のように、デバイスマニフェストファイルの内容がそのpkdファイル情報、および(処理された後にpsfファイル280と呼ばれる)処理済みのcrfファイル情報、ならびに(例えば、ファイルリストおよび属性情報についての)構築マニフェストファイルから導き出される。このcrfファイルは、コンポーネントレベルの依存性を記述し、パッケージレベルの依存性を記述する形式へと処理される。
さらに、コンポーネント設定(構成情報)は、互いに他方をシャドウすることができる(換言すれば、2つの関連する設定が一方しか勝ち残らないようにそのシステム上に存在するイベント中における優先順序がある)。このコンポーネントレベルでの依存情報およびシャドウ情報は、シャドウ順序ツールを介してパッケージレベル関係へと変換される。
このシャドウ順序ツールは、コンポーネント関係ファイル226(図2)に従って他のパッケージをシャドウする、パッケージごとのパッケージシャドウファイル(packagename.psf)を作成する。あるパッケージについての.psfファイルは、シャドウされたパッケージの(行当たり1つの)GUIDをリストアップする。このシャドウ順序ツールの入力は、パッケージマッピングファイル(.cpm)へのマージされたコンポーネント、マージされたコンポーネント関係ファイル(.crf)、およびマージされたパッケージ定義ファイル(.pkd)である。この出力は、以下に示す形式のフォーマットされたテキスト行を含むテキストファイルである。
<シャドウされたpkg GUID>,<シャドウされたpkg名>,<ルール>
(ここで、ルール=SHADOWSまたはDEPENDSON).
行の一例を以下に示す。
273ce4bf−d4ef−4771−b2ce−6fe2fa2b2666, SMARTFON, SHADOWS
この情報から、このパッケージジェネレータは、デバイスマニフェストファイル生成プロセス262によって、図2に示され、図10Aおよび10Bに一般的に説明されるデバイスマニフェストファイルを作成する。この目的を達成するために、図10Aのステップ1010で一般的に表されるように、.psfファイル中の各GUIDが、このデバイスマニフェストファイルに追加される。一実施例においては、これは、GUIDが依存性GUIDであるかまたはシャドウGUIDであるかどうか判断し、デバイスマニフェストオブジェクト上で適切な追加ファンクションを呼び出す工程を含んでいることに留意されたい。このGUIDが、追加されたときには、そのデバイスマニフェストオブジェクトは、図10Bのステップ1030で一般的に表されるように、デバイスマニフェストファイルをその一時ディレクトリに書き込む。
図11に説明しているように、パッケージファイル232は、CABファイルAPI(CABAPI)などのパッケージファイル作成プロセスを使用して他のパッケージ内容282とともに、この指示ファイル中に記述された処理済みのファイル、すなわちrguファイル214、xmlファイル218およびデバイスマニフェストファイル260を含めて作成される。このCABAPIでは、イメージ更新プロセスの一部分としてのイメージ更新中に含まれるファイルについてのトランスポートメカニズムとして使用されるキャビネットファイル(Cabinet file)の内容に対するアクセスを実現することが意図されている。
このパッケージを作成するために、PackageDefinitionクラスは、パッケージの全体的な作成を管理する役割を果たす。この作成プロセスの一部分として、このPackageDefinitionオブジェクトは、「_FLATRELEASEDIR」環境変数が指定するディレクトリの下の新しいサブディレクトリを作成する。このディレクトリ名は、それにストリング「_PACKAGE_FILES」が付加されたパッケージ名であり、例えば、「LANG」と名付けられたパッケージを想定すると、「LANG_PACKAGE_FILES」と名付けられたディレクトリが生成されるであろう。SetDirectoryBaseメソッドがこのオブジェクト上で呼び出されるとき、このディレクトリが作成される。このPackageDefinitionオブジェクトがパッケージを作成するとき、その結果得られるパッケージファイルの名前は、「.PKG」拡張子をもつパッケージの分かりやすい名前である。このパッケージファイルは、マイクロソフトCABファイル仕様のCABバージョン1.3に準拠している。
このPackageDefinitionクラスは、以下のパブリックメソッド(public method)を提供する。
・PackageDefinition( XipPackage pkg )−XipPackageオブジェクトに基づいてパッケージを作成するコンストラクタ(constructor)。
・SetDirectoryBase( string path )−指定されたディレクトリの下に新しいサブディレクトリを作成する。
・Validate( )−パッケージが、2つの必要なフィールド、すなわち名前およびGUIDを有するかどうかを判定する。
・ReadManifest( )−このパッケージに関連するBuildManifestに適切な構築マニフェストファイルを解析させる。
・MakePackage( )−このパッケージ定義についての実際のパッケージファイルを作成する。
さらに、そのパッケージ中に含めるために様々なファイルを用いて作業をする際には、実行可能コードおよびデータを別々のファイルに配置することができることに留意されたい。その1つの重要な利点は、多言語システムを容易にすることであり、ここで、機能の言語特有の部分は、言語特有な別々のパッケージに配置される。これは、このシステムの実行可能コードを含むパッケージがこのシステムの言語特有のコンポーネントを含むパッケージから分離されるシステムを作る。その結果、デバイス上にインストールされる言語のどのような組合せからも独立して、機能の実行可能コードについてのパッチを任意のデバイスに対して適用することができる。
より詳細には、構築によってある機能が構築されるとき、その実行可能コード(および言語に独立なデータ)は、1組のファイルの中に分離され、その言語依存のデータは(および場合によってはコードも)別の組のファイルの中に分離される。これらのファイルは、機能の一部分であるものとしてタグ付けされるが、言語依存のデータファイルは、さらに言語依存のものとしてタグ付けされる。次いで、このシステムは、(例えば、そのpkdファイル中のLocBuddyタグによって記述される)別のパッケージへこれらのファイルを移動させる。
一例として、電話ベースの機能が、言語に独立のライブラリ(例えば、tpcutil.dll)中に存在することもある。この電話機能についてのこの言語依存のリソースは、言語ごとにさらにローカライズされた、例えばtapres.dllと名付けられる別のリソースdll中に構築され、例えば、それは、(米国英語についての)tapres.dll.0409.mui、(ドイツ語についての)tapres.dll.0407.muiなどとなる。これらのファイルは、電話機能の一部分としてタグ付けされるが、これらの言語特有のファイルはさらに言語特有なものとして適切なファイル名を用いてタグ付けされる。例えば、ファイル名は、tapres.dll.%LOCID%.muiによって表されるものなど、その名前の中のロケーションベースの変数に適切な言語タグを置き換えることによって構築することができる。次いで、このファイルは、サポートされる言語ごとに処理され、複数のLANGPHONE(locbuddy)パッケージ、例えば、(米国英語についての)LANGPHONE_0409、(ドイツ語についての)LANGPHONE_0407などが生成される。その結果、このシステムでは、どの言語が、(異なるLANGPHONE_xxxxパッケージによって)その電話にインストールされるかとは独立に、tpcutil.dll中のバグ取りをするなどLANGPHONE領域を後で更新することができる。
さらにこのシステムの柔軟性は、言語特有の実行可能コードが必要なところで可能となるようなものである。例えば、異なる言語および場所(locale)は、その言語でテキストを取り込むために使用される異なる入力方式エディタ(IME)を有する。これらのIMEは、言語ごとに特別のコードを必要とし、したがってLANG領域のうちの1つの内部に配置される。
最後に、キャビネット検証を実施できることに留意されたい。このキャビネット検証モジュールは、最終的なパッケージファイル232(キャビネットファイル)からデバイスマニフェストファイル260を抽出し、デバイスマニフェスト260の内容に対してこのキャビネットファイルを検証する。
前述の詳細な説明から分かるように、オペレーティングシステムイメージの何らかのサブセットの更新を容易にする様々なメカニズムが提供される。自己記述型のパッケージファイルは、直接的にイメージを更新し訂正する、依存性、シャドウおよび他の機能を含めて提供される。
本発明は、様々な変更および代替的な構成を受け入れることが可能であるが、本発明の特定の例示的な実施形態について図面中で示し、以上で詳細に説明してきた。しかし、本発明を開示の特定の形態に限定する意図はなく、それとは逆に、本発明は、本発明の趣旨および範囲内に含まれるすべての変更形態、代替構成形態、および等価形態を包含することを意図していることを理解されたい。
本発明を組み込むことができるコンピュータシステムを一般的に示すブロック図である。 本発明の一態様による、自己記述型更新パッケージを構築するための様々なコンポーネントを表すブロック図である。 本発明の一態様による、バイナリイメージファイルから構築マニフェストファイルを作成するためのロジックを表す流れ図である。 本発明の一態様による、レジストリ設定からレジスト設定関連ファイルを作成するためのロジックを表す流れ図である。 本発明の一態様による、XML形式ファイルを処理してそのファイルからのデータをパッケージに書き込むためのロジックを表す流れ図である。 本発明の一態様による、パッケージを生成するためのロジックを表す流れ図である。 本発明の一態様による、パッケージを記述するデバイスマニフェストファイルを作成するためのロジックを表す流れ図の一部である。 本発明の一態様による、パッケージを記述するデバイスマニフェストファイルを作成するためのロジックを表す流れ図の一部である。 本発明の一態様による、実行可能ファイルのための再配置情報を挿入するツール(relmerge)が実行するロジックを表す流れ図である。 本発明の一態様による、パッケージを記述するデバイスマニフェストファイルのフォーマットを表すブロック図である。 本発明の一態様による、パッケージを記述するデバイスマニフェストファイルを構築するための流れ図である。 本発明の一態様による、パッケージを記述するデバイスマニフェストファイルを構築するための流れ図である。 本発明の一態様による、パッケージの作成を表す流れ図である。
符号の説明
120 ハンドヘルドコンピューティング装置
122 プロセッサ
124 メモリ
126 タッチスクリーン付きディスプレイ
128 キーボード
129 マイクロフォン
130 OS
132 アプリケーションプログラム
134 通知マネージャ
136 ネットワークSW
138 ネットワークコンポーネント
140 電源
142 LED
144 オーディオジェネレータ

Claims (32)

  1. オペレーティングシステムイメージの一部分に対応し、ファイルおよび設定を含むパッケージを構築するステップと、
    インストレーションメカニズムが、いかにして前記パッケージをデバイスにインストールすべきかを決定できるように前記パッケージの内容を記述する情報を前記パッケージに関連づけるステップと
    を備えることを特徴とするコンピューティング環境における方法。
  2. 前記パッケージに関連づけられる前記情報は、デバイスマニフェストファイルを含み、前記デバイスマニフェストファイルを前記パッケージに追加するステップをさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記デバイスマニフェストファイルに他のエンティティに対する前記パッケージの少なくとも一部の内容の依存性を記述する依存情報を含むデータを書き込むステップをさらに含むことを特徴とする請求項2に記載の方法。
  4. 前記他のエンティティは、他のパッケージを含み、前記パッケージから前記デバイスマニフェストファイルを抽出するステップと、前記他のパッケージから他のデバイスマニフェストファイルを抽出するステップとをさらに備えることを特徴とする請求項3に記載の方法。
  5. 他の設定データに対して設定データの優先度を記述するシャドウ情報を含むデータを前記デバイスマニフェストファイルに書き込むステップをさらに備えることを特徴とする請求項2に記載の方法。
  6. パッケージを構築するステップは、どのファイルが実行可能ファイルであるかを判定するステップと、前記実行可能ファイルに対して再配置プロセスを実施するステップとを含むことを特徴とする請求項1に記載の方法。
  7. 前記パッケージの内容を記述する情報を前記パッケージに関連づけるステップは、他のエンティティに対する前記パッケージの少なくとも一部の内容の依存性を記述する依存情報を関連づけるステップを含むことを特徴とする請求項1に記載の方法。
  8. 前記パッケージの内容を記述する情報を前記パッケージに関連づけるステップは、他の設定データに対する設定データの優先度を記述するシャドウ情報を関連づけるステップを含むことを特徴とする請求項1に記載の方法。
  9. 前記パッケージに設定情報を追加するステップをさらに備えることを特徴とする請求項1に記載の方法。
  10. パッケージを構築するステップは、既存のファイルを定義するパッケージについての定義にパッケージをマッピングするステップと、パッケージについての前記ファイル内容を指定する構築マニフェストファイルを読み取るステップと、前記パッケージ定義および前記構築マニフェストファイルに基づいて前記パッケージを生成するステップとを含むことを特徴とする請求項1に記載の方法。
  11. 前記オペレーティングシステムイメージについてのバイナリイメージビルダファイルとコンポーネントツーパッケージマッピングファイルから前記構築マニフェストファイルを作成するステップをさらに備えることを特徴とする請求項10に記載の方法。
  12. インストール時にデバイスへの実行可能コード再配置を可能とするために前記構築マニフェストファイル中で識別された実行可能コードを処理するステップをさらに備えることを特徴とする請求項11に記載の方法。
  13. 前記パッケージを構築するステップは、構築時に、前記パッケージ中に含めるべきファイルのリストを含むバイナリイメージビルダファイルを読み取るステップを含むことを特徴とする請求項1に記載の方法。
  14. 前記パッケージを構築するステップは、前記バイナリイメージビルダファイルに対応する構築マニフェストファイルを作成するステップと、前記構築マニフェストファイルを読み取るステップとを含むことを特徴とする請求項1に記載の方法。
  15. 前記パッケージを構築するステップは、構築時に、前記パッケージ中に含めるべき設定情報のリストを含む設定ファイルを読み取るステップを含むことを特徴とする請求項1に記載の方法。
  16. 前記パッケージを構築するステップは、モジュールに関連した情報およびファイルを前記パッケージにマッピングするコンポーネントマッピングファイルを読み取るステップを含むことを特徴とする請求項1に記載の方法。
  17. 前記パッケージを構築するステップは、シャドウ関係を定義するコンポーネント関係ファイルを読み取るステップを含むことを特徴とする請求項1に記載の方法。
  18. 前記パッケージに関連する前記情報は、デバイスマニフェストファイルを含み、前記シャドウ関係に基づいて前記デバイスマニフェストファイルに情報を書き込むステップと、前記デバイスマニフェストファイルを前記パッケージに追加するステップとをさらに備えることを特徴とする請求項17に記載の方法。
  19. 前記パッケージを構築するステップは、依存関係を定義するコンポーネント関係ファイルを読み取るステップを含むことを特徴とする請求項1に記載の方法。
  20. 前記パッケージに関連する前記情報は、デバイスマニフェストファイルを含み、前記依存関係に基づいて前記デバイスマニフェストファイルに情報を書き込むステップと、前記デバイスマニフェストファイルを前記パッケージに追加するステップとをさらに備えることを特徴とする請求項17に記載の方法。
  21. 前記パッケージを構築するステップは、どのようなパッケージが存在するかを定義するパッケージ定義ファイルを読み取るステップを含むことを特徴とする請求項1に記載の方法。
  22. パッケージを構築するステップは、実行可能コードの少なくとも一部がどの言語からも独立しているように言語依存のデータファイルから分かれた少なくとも一部の実行可能コードファイルをもつステップを含むことを特徴とする請求項2に記載の方法。
  23. 実行時に請求項1に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とする少なくとも1つのコンピュータ読取り可能な媒体。
  24. ファイルおよび設定を含むパッケージを構築するパッケージ生成プロセスと、
    コンポーネント関係情報を含む情報を前記パッケージに関連づけて前記パッケージの内容を記述することによって前記パッケージからパッケージファイルを作成するパッケージファイル作成プロセスと
    から成り立つことを特徴とするコンピューティング環境におけるシステム。
  25. 前記パッケージファイル作成プロセスは、デバイスマニフェストファイルおよび前記パッケージを前記パッケージファイルに追加することによって前記情報を前記パッケージに関連づけることを特徴とする請求項24に記載のシステム。
  26. 前記コンポーネント関係情報は、他のエンティティに対する依存性を記述することを特徴とする請求項24に記載のシステム。
  27. 前記他のエンティティは、他のパッケージであることを特徴とする請求項26に記載のシステム。
  28. 前記コンポーネント関係情報は、他のエンティティとのシャドウ関係を記述することを特徴とする請求項24に記載のシステム。
  29. 前記他のエンティティは、他のパッケージであることを特徴とする請求項28に記載のシステム。
  30. 前記パッケージ生成プロセスは、どのファイルが実行可能ファイルであるかを判定し、前記実行可能ファイル上で再配置プロセスを実施することを特徴とする請求項24に記載のシステム。
  31. 前記パッケージ生成プロセスは、どのファイルが実行可能ファイルであるかを判定し、前記実行可能ファイル上で再配置プロセスを実施することを特徴とする請求項24に記載のシステム。
  32. 前記パッケージ生成プロセスは、少なくとも一部の実行可能コードが任意の言語から独立であるように少なくとも一部の実行可能コードとデータの間で区別を可能とすることを特徴とする請求項24に記載のシステム。
JP2004358961A 2003-12-16 2004-12-10 自己記述型ソフトウェアイメージ更新コンポーネント Expired - Fee Related JP5208350B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US53012903P 2003-12-16 2003-12-16
US60/530,129 2003-12-16
US10/837,024 2004-05-01
US10/837,024 US7549148B2 (en) 2003-12-16 2004-05-01 Self-describing software image update components

Publications (2)

Publication Number Publication Date
JP2005182790A true JP2005182790A (ja) 2005-07-07
JP5208350B2 JP5208350B2 (ja) 2013-06-12

Family

ID=34556577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004358961A Expired - Fee Related JP5208350B2 (ja) 2003-12-16 2004-12-10 自己記述型ソフトウェアイメージ更新コンポーネント

Country Status (5)

Country Link
US (1) US7549148B2 (ja)
EP (1) EP1548587A3 (ja)
JP (1) JP5208350B2 (ja)
KR (1) KR101143027B1 (ja)
CN (1) CN1641583B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007535241A (ja) * 2004-04-26 2007-11-29 インテル・コーポレーション 条件付で実行可能モジュールを縮小するシステムおよび方法
JP2021507353A (ja) * 2017-12-13 2021-02-22 アブソリュート ソフトウェア コーポレイション 複数のバイナリイメージのファームウェア公開

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7614051B2 (en) * 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
JP4479324B2 (ja) * 2004-04-19 2010-06-09 コニカミノルタビジネステクノロジーズ株式会社 情報処理装置
US7661102B2 (en) * 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
US8255362B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using local changesets that represent differences between software on a repository and a local system
US8255363B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using dynamic tags to identify and process files
US20060288055A1 (en) * 2005-06-08 2006-12-21 Johnson Michael K Methods, systems, and computer program products for provisioning software via a networked file repository in which a parent branch has a shadow associated therewith
US8490082B2 (en) * 2005-11-03 2013-07-16 International Business Machines Corporation System and method for representing user processes as software packages in a software package management system
US8869142B2 (en) * 2006-01-27 2014-10-21 Microsoft Corporation Secure content publishing and distribution
KR100772399B1 (ko) * 2006-02-28 2007-11-01 삼성전자주식회사 패치 파일 생성 방법 및 그 방법을 수행하는 프로그램을기록한 컴퓨터 판독 가능한 기록매체
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
US7971182B1 (en) * 2006-05-09 2011-06-28 Vmware, Inc. Application environment specifications for provisioning application specific runtime environments using undefined symbols
US7779401B2 (en) * 2006-06-26 2010-08-17 Research In Motion Limited Method and system for generating a reverse binary patch for undoing a software update
US7567984B1 (en) * 2006-08-31 2009-07-28 Symantec Operating Corporation Operating system and application deployment based on stored user state and organizational policy
KR100810358B1 (ko) * 2007-01-30 2008-03-04 삼성전자주식회사 컨테이너의 무결성을 확인하는 방법 및 그 dvb―h 단말
US11262996B2 (en) 2007-05-09 2022-03-01 Vmware, Inc. Repository including exclusion list
US9015180B1 (en) 2007-05-09 2015-04-21 Vmware, Inc. Repository including file identification
US8577937B1 (en) 2007-05-09 2013-11-05 Vmware, Inc. Repository including exclusion list
US8219987B1 (en) 2007-08-24 2012-07-10 Vmware, Inc. Optimized virtual machine specification for provisioning application specific runtime environment
US8347263B1 (en) * 2007-05-09 2013-01-01 Vmware, Inc. Repository including installation metadata for executable applications
US8146076B1 (en) * 2007-09-17 2012-03-27 Symantec Corporation Systems and methods for customizing boot disk images using prioritization
US20090106730A1 (en) * 2007-10-23 2009-04-23 Microsoft Corporation Predictive cost based scheduling in a distributed software build
US8335682B2 (en) * 2007-10-30 2012-12-18 Sercomm Corporation Multi-language interfaces switch system and method therefor
US8291402B2 (en) * 2007-11-29 2012-10-16 Red Hat, Inc. Using system fingerprints to accelerate package dependency resolution
US9424323B2 (en) * 2008-01-31 2016-08-23 Oracle International Corporation Application tier data dictionary
GB0820427D0 (en) * 2008-11-07 2008-12-17 Inq Entpr Ltd Mobile communication device and method
US8170706B2 (en) * 2009-02-27 2012-05-01 Xerox Corporation Package generation system
US20130167136A1 (en) * 2009-03-18 2013-06-27 Adobe Systems Incorporated Component-based installation
EP2460113B1 (en) * 2009-07-29 2017-07-05 Reversinglabs Corporation Automated unpacking of portable executable files
US9703550B1 (en) * 2009-09-29 2017-07-11 EMC IP Holding Company LLC Techniques for building code entities
US20110119570A1 (en) * 2009-11-18 2011-05-19 Xerox Corporation Automated variable dimension digital document advisor
CN101834885A (zh) * 2010-03-10 2010-09-15 华为技术有限公司 一种软件下载方法和装置
US8533701B2 (en) * 2010-03-15 2013-09-10 Microsoft Corporation Virtual machine image update service
US8495614B2 (en) * 2010-05-28 2013-07-23 Red Hat, Inc. Mechanism for dynamically generating spec files for software package managers
US8732690B1 (en) * 2011-10-27 2014-05-20 Crimson Corporation Computing device configured for installing an application
US8984502B2 (en) * 2011-10-28 2015-03-17 Hewlett-Packard Development Company, L.P. Systems and methods for composing or decomposing a composite image for firmware update images
US8825722B2 (en) * 2012-01-13 2014-09-02 Microsoft Corporation Calculation of properties of objects/shapes across versions of applications
US8757479B2 (en) 2012-07-31 2014-06-24 Xerox Corporation Method and system for creating personalized packaging
US9645811B2 (en) 2013-04-01 2017-05-09 Oc Acquisition Llc Fault tolerance for a distributed computing system
US9760659B2 (en) 2014-01-30 2017-09-12 Xerox Corporation Package definition system with non-symmetric functional elements as a function of package edge property
US9892212B2 (en) 2014-05-19 2018-02-13 Xerox Corporation Creation of variable cut files for package design
US9996339B2 (en) * 2014-06-04 2018-06-12 Microsoft Technology Licensing, Llc Enhanced updating for digital content
DE102014216464A1 (de) * 2014-08-19 2016-02-25 Continental Automotive Gmbh Vorrichtung und Verfahren zur Computerprogramminstallation für ein Kraftfahrzeug
US20160139909A1 (en) * 2014-11-13 2016-05-19 Martin Pospischil Delta patch process
CN104657184B (zh) * 2015-03-11 2018-09-28 成都广达新网科技股份有限公司 一种文件对应多嵌入式设备的升级方法
US9916401B2 (en) 2015-05-18 2018-03-13 Xerox Corporation Creation of cut files for personalized package design using multiple substrates
US9916402B2 (en) 2015-05-18 2018-03-13 Xerox Corporation Creation of cut files to fit a large package flat on one or more substrates
EP3179688A1 (en) * 2015-12-11 2017-06-14 Koninklijke KPN N.V. Updating part of a manifest file on the basis of patches
US10503486B2 (en) * 2016-12-09 2019-12-10 Vmware, Inc. Methods and apparatus to reduce application deployments sizes
CN111133412A (zh) 2017-07-25 2020-05-08 奥罗拉实验室有限公司 基于工具链构建车辆ecu软件的软件增量更新和异常检测
CN107608710B (zh) * 2017-08-31 2021-08-31 华为技术有限公司 基于Jenkins工具的软件项目构建任务配置方法及装置
US10360017B1 (en) * 2018-01-02 2019-07-23 Microsoft Technology Licensing, Llc Updating program packages at distribution endpoint
US20190265959A1 (en) * 2018-02-23 2019-08-29 Microsoft Technology Licensing, Llc Automatically synchronizing the install and build directories of a software application
US20190384585A1 (en) * 2018-06-14 2019-12-19 Microsoft Technology Licensing, Llc Modification package
US20210349708A1 (en) * 2020-05-05 2021-11-11 Caterpillar Inc. System and method involving multiple software targets packaged into one file

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142683A (ja) * 1999-11-16 2001-05-25 Oki Electric Ind Co Ltd プログラム更新媒体の作成方法及び更新プログラムのインストール方法

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974149A (en) * 1985-08-02 1990-11-27 Wang Laboratories, Inc. Data distribution apparatus and method having a data description including information for specifying a time that a data distribution is to occur
US5303384A (en) 1990-01-02 1994-04-12 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration High level language-based robotic control system
US5421006A (en) 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US6157721A (en) 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5625693A (en) 1995-07-07 1997-04-29 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitting applications in an interactive TV system
US5757914A (en) 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US5835777A (en) * 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US5721824A (en) 1996-04-19 1998-02-24 Sun Microsystems, Inc. Multiple-package installation with package dependencies
WO1999026123A1 (en) 1997-11-18 1999-05-27 Christopher Benjamin Wakely Improvements relating to software protection systems
US7503072B2 (en) 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6243468B1 (en) 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6327652B1 (en) 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6330670B1 (en) 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
KR20000041146A (ko) * 1998-12-21 2000-07-15 구자홍 네트워크 컴퓨터의 소프트웨어 업데이트 방법
US6802006B1 (en) 1999-01-15 2004-10-05 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US6697948B1 (en) 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
JP3852538B2 (ja) 1999-05-14 2006-11-29 富士通株式会社 コンピュータシステム、コンピュータネットワークシステム、コンピュータ及び記録媒体
US6675382B1 (en) 1999-06-14 2004-01-06 Sun Microsystems, Inc. Software packaging and distribution system
US6324692B1 (en) 1999-07-28 2001-11-27 Data General Corporation Upgrade of a program
EP1238334A1 (en) 1999-12-15 2002-09-11 Sun Microsystems, Inc. Preparation of a software configuration using an xml type programming language
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US7140013B2 (en) 2000-06-01 2006-11-21 Aduva, Inc. Component upgrading with dependency conflict resolution, knowledge based and rules
DE10028500A1 (de) 2000-06-08 2002-01-03 Deutsche Telekom Ag Verfahren zur Installation von Software in einer Hardware
EP1186317B1 (en) * 2000-06-13 2009-12-02 Microsoft Corporation Multilingual user interface for an operating system
US7000230B1 (en) * 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
DE10037397A1 (de) 2000-08-01 2002-02-14 Daimler Chrysler Ag Verfahren zum Laden von Software
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US6912591B2 (en) 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
FI114416B (fi) 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
US6947052B2 (en) * 2001-07-13 2005-09-20 Texas Instruments Incorporated Visual program memory hierarchy optimization
US8200988B2 (en) 2001-08-03 2012-06-12 Intel Corporation Firmware security key upgrade algorithm
US20030063896A1 (en) 2001-09-28 2003-04-03 Gonzalez Tovar Victor Manuel System utility interface for software upgrades and system diagnostics in automotive or portable DVD players
US20030217358A1 (en) 2002-05-17 2003-11-20 Sun Microsystems, Inc. Method, system, and article of manufacture for firmware downloads
US8549114B2 (en) 2002-06-12 2013-10-01 Bladelogic, Inc. Method and system for model-based heterogeneous server configuration management
US20040060035A1 (en) * 2002-09-24 2004-03-25 Eric Ustaris Automated method and system for building, deploying and installing software resources across multiple computer systems
US7085957B2 (en) 2002-11-21 2006-08-01 Texas Instruments Incorporated Upgrading of firmware with tolerance to failures
US7478385B2 (en) * 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US7228541B2 (en) * 2003-01-17 2007-06-05 National Instruments Corporation Creation of application system installer
AU2003225439A1 (en) 2003-02-11 2004-09-06 Unisys Corporation Method and apparatus for updating a control file
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7117304B2 (en) 2003-06-03 2006-10-03 Sun Microsystems, Inc. System and method for determining a file system layout
US7644404B2 (en) 2003-06-04 2010-01-05 Hewlett-Packard Development Company, L.P. Network having customizable generators and electronic device having customizable updating software
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7568195B2 (en) 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7614051B2 (en) 2003-12-16 2009-11-03 Microsoft Corporation Creating file systems within a file in a storage technology-abstracted manner
US7549042B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7765592B2 (en) * 2004-01-10 2010-07-27 Microsoft Corporation Changed file identification, software conflict resolution and unwanted file removal
US7853609B2 (en) * 2004-03-12 2010-12-14 Microsoft Corporation Update distribution system architecture and method for distributing software

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142683A (ja) * 1999-11-16 2001-05-25 Oki Electric Ind Co Ltd プログラム更新媒体の作成方法及び更新プログラムのインストール方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007535241A (ja) * 2004-04-26 2007-11-29 インテル・コーポレーション 条件付で実行可能モジュールを縮小するシステムおよび方法
US7853742B2 (en) 2004-04-26 2010-12-14 Intel Corporation System and method to conditionally shrink an executable module
JP2021507353A (ja) * 2017-12-13 2021-02-22 アブソリュート ソフトウェア コーポレイション 複数のバイナリイメージのファームウェア公開
JP7102524B2 (ja) 2017-12-13 2022-07-19 アブソリュート ソフトウェア コーポレイション 複数のバイナリイメージのファームウェア公開
JP7454011B2 (ja) 2017-12-13 2024-03-21 アブソリュート ソフトウェア コーポレイション 複数のバイナリイメージのファームウェア公開方法および電子デバイス

Also Published As

Publication number Publication date
US7549148B2 (en) 2009-06-16
KR20050061380A (ko) 2005-06-22
KR101143027B1 (ko) 2012-05-24
EP1548587A3 (en) 2007-11-07
US20050132356A1 (en) 2005-06-16
EP1548587A2 (en) 2005-06-29
CN1641583A (zh) 2005-07-20
JP5208350B2 (ja) 2013-06-12
CN1641583B (zh) 2010-09-29

Similar Documents

Publication Publication Date Title
JP5208350B2 (ja) 自己記述型ソフトウェアイメージ更新コンポーネント
CN100559346C (zh) 用于实例化抽象类的系统和方法
US9569286B2 (en) Method and system for improving startup performance and interoperability of a virtual application
US8434054B2 (en) System and method for managing cross project dependencies at development time
US7055146B1 (en) Method and system for dynamically inserting modifications for identified programs
US8438468B2 (en) Annotation management
CN108319460B (zh) 应用程序安装包的生成方法、装置、电子设备及存储介质
CN101002174B (zh) 在便携式装置中加载具有面向对象的中间语言的软件的方法
EP2939111A1 (en) Extending a development environment
JP2005182784A (ja) インストールするのに有効な依存ソフトウェア更新の最大の群の判定
CN108139896A (zh) 扩展虚拟机指令集体系架构
US8001518B2 (en) Configuring a shared library to accommodate relocatable data in a pervasive device
US7765520B2 (en) System and method for managing cross project dependencies at development time
AU2008288798A1 (en) Binary library
CN109032631B (zh) 应用程序补丁包获取方法、装置、计算机设备及存储介质
US20110047531A1 (en) Methods and apparatuses for selective code coverage
US20090260000A1 (en) Method, apparatus, and manufacture for software difference comparison
WO2019005228A1 (en) AUTOMATED ADAPTATION OF A SOURCE CODE IN ORDER TO INJECT FUNCTIONS BETWEEN VERSIONS OF A PLATFORM
US20040031016A1 (en) System and method for browse information parsing without compilation
US20040123286A1 (en) Method for integrating Linux kernel and application software packages and generating installation file list based on CML2 computer language
US9311077B2 (en) Identification of code changes using language syntax and changeset data
CN112099880B (zh) 场景驱动的应用程序约减方法和系统
CN111352631B (zh) 一种接口兼容性检测方法及装置
US8185885B2 (en) Providing recovery data for program code
KR101281954B1 (ko) 임베디드 시스템을 위한 점진적 링킹 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120920

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: 20130201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130220

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

Free format text: PAYMENT UNTIL: 20160301

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees