(57)【要約】  コンピュータデバイス上にソフトウェアをインストールするために、ソフトウェアをインストールするためのインストールフェーズを続けて実行するか否かを決定するために、決定フェーズが使用される。決定フェーズにおいて必要とされる情報は、電子署名によって保護された完全性を有し、且つインストールされるファイルの完全性がインストールフェーズを開始する前に検証可能にするための個々のハッシュを含む、メタデータの形態で提供される。
2007535053.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータデバイスにソフトウェアをインストールする方法であって、
前記ソフトウェアをインストールするか否かを決定する決定フェーズと、
前記ソフトウェアをインストールするインストールフェーズと、
を備え、
前記決定フェーズによって必要とされる情報は、電子署名によって保護された完全性を有し、且つインストールされるファイルに対してファイルデータの完全性を検証するための個々のハッシュを含む、メタデータを備える
ことを特徴とする方法。
【請求項２】
前記決定フェーズは、前記インストールされるファイルの信頼性および完全性を検証することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記決定フェーズのための前記メタデータは、前記インストールフェーズをサポートする前記ファイルデータから分離して提供されることを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記決定フェーズは、前記インストールフェーズから独立して処理されることを特徴とする請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記メタデータの前記電子署名、および前記インストールされるファイルに対する前記ハッシュは、ファイルのインストール中、ファイルのインストール後、またはファイルのインストール中およびファイルのインストール後の両方に検証されることを特徴とする請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
前記メタデータは、前記ハッシュに加えて、プログラムの依存関係、ソフトウェアモジュールとハードウェアとのバージョンのサポート、ファイルの場所、作成者の情報、或いはベンダーの情報のうちの１つ以上に関する情報を含み、
前記決定フェーズは、前記ソフトウェアをインストールするか否かを決定する際に、前記インストールされるファイルの信頼性および完全性を検証することに加えて、前記１つ以上に関する情報の少なくとも一部を使用する
ことを特徴とする請求項１乃至５のいずれか１項に記載の方法。
【請求項７】
前記コンピュータデバイスは、移動体電話またはＰＤＡを含むように選択されることを特徴とする請求項１乃至６のいずれか１項に記載の方法。
【請求項８】
前記ソフトウェアは、リムーバブルメディアが前記決定フェーズのために必要とされる前記メタデータと共に正しい場所に配置されたソフトウェアを含むファイルを含むように、該リムーバブルメディアに提供されることを特徴とする請求項１乃至７のいずれか１項に記載の方法。
【請求項９】
前記リムーバブルメディアは、コンパクトフラッシュ、マルチメディアカード、メモリースティック、或いはあらゆる他の種類の書き込み可能で取り外し可能なメディアを含むように選択されることを特徴とする請求項８に記載の方法。
【請求項１０】
請求項１乃至９のいずれか１項に規定された方法に従って動作するように構成されたコンピュータデバイス。
【請求項１１】
コンピュータデバイスにソフトウェアをインストールするためのコンピュータソフトウェアパッケージであって、請求項１乃至９のいずれか１項に規定された方法に従って前記コンピュータデバイスを動作させることを特徴とするコンピュータソフトウェアパッケージ。
【請求項１２】
前記コンピュータデバイスのためのオペレーティングシステムの一部を含むことを特徴とする請求項１１に記載のコンピュータソフトウェアパッケージ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアをインストールする方法に関し、特に、リムーバブルメディアにソフトウェアをインストールする方法に関する。
【背景技術】
【０００２】
本発明の文脈において、コンピュータデバイス(computing device，演算デバイス)という用語はあらゆる形態の電子デバイスをカバーするものであると解釈されるべきであり、例えばあらゆるフォームファクタのデジタルスチルカメラおよびデジタルムービーカメラなどのデータ記録デバイス、ハンドヘルドコンピュータおよびパーソナルコンピュータを含むあらゆる種類の形態のコンピュータ、およびあらゆるフォームファクタの通信デバイスを含むものである。この通信デバイスは、移動体電話、スマートフォン、コミュニケータ、および他の形態の無線および有線の情報デバイスを含むものであり、コミュニケータは、通信機能、画像の記録機能および再生機能のうちの少なくとも一方、および演算機能を単一のデバイスに一体化したものである。
【０００３】
コンピュータデバイスのオペレーティングシステムにおいて、ソフトウェアのインストールが特定のインストールパッケージを介して処理されるということが、一般的な方法になりつつある。元来、そのようなパッケージは、例えば.zipまたは.tarなどの標準的なアーカイブ圧縮形式を使用する単純なファイルアーカイブであったが、時を経て極めて高機能なものになってきている。そのようなパッケージが現在提供する利点は次のようなものである。すなわち、
・インストールする圧縮ファイルの透過的な復元（解凍）
・コンピュータデバイス中の正しい位置にファイルがインストールされることの保証
・ソフトウェアのバージョンおよびモジュールの依存関係を含む、システム要件のチェック
・ソフトウェアの完全性およびソフトウェアプロデューサ（製造者）のアイデンティティ（身元）の、認証および照合
である。
【０００４】
ソフトウェアのパッケージをインストールするために一般的に使用されるシステムの例は、次のものを含む。
・Ｗｉｎｄｏｗｓ（登録商標）に対しては、マイクロソフト独自のオペレーティングシステムや、Ｗｉｓｅ (http://www.wise.com) およびＩｎｓｔａｌｌＳｈｉｅｌｄ（登録商標） (http://www.installshield.com) などのサードパーティー製のソリューションがある（ただし、現在は後者のソリューションはマルチプラットフォームに対応している）。
・様々なリナックスディストリビューションは、Ｒｅｄ  Ｈａｔに由来する.rpm (http://www.rpm.org) や、Ｄｅｂｉａｎによって開発されたdkpgおよび.debシステム (http://www.debian.org/doc/debian-policy/ch-ninary.html) などのようなパッケージシステムを使用する。
・Ｓｙｍｂｉａｎ  Ｓｏｆｔｗａｒｅ  Ｌｉｍｉｔｅｄによって開発されたＳｙｍｂｉａｎ（登録商標）  ＯＳのオペレーティングシステムの.sisファイル (http://www.symbian.com/developer/techlib/v70docs/SDL_v7.0/doc_source/ToolsAndUtilities/Installing-ref/MakesisToolReference.guide.html)。
・Ｊａｖａ（登録商標）システムは、.jarというＪａｖａ（登録商標）アーカイブファイルを使用する (http://java.sun.com/docs/books/tutorial/post1.0/whatsnew/jar.html)。また、Ｊ２ＭＥミドレットは、.jadというＪａｖａ（登録商標）アプリケーションディスクリプションファイルも使用する (http://java.sun.com/j2me/docs/wtk2.1/user_html/deploy-midlets.html#wp20998)。
【０００５】
上述のインストールパッケージはすべて、インストールされるファイルを含むことが可能であり、さらに、いずれか或いはすべてのファイルのサイズ、（インストールの）ターゲット位置、バージョン、依存関係、証明書、および認証に関する重要なメタデータも含むことが可能である。
【０００６】
上述のパッケージは、ソフトウェアを配布するメカニズム（機構）およびソフトウェアをインストールするメカニズムを、ソフトウェアを認証するメカニズムと統合する。パッケージシステムは配布メカニズムとして始まり、後になってさらに多くの機能（最初にインストール、次に認証）を統合したという点で、上述のことに関する理由は極めて歴史的なものであるが、演算資源（リソース）が十分にある状況においては、これら３つの分野の機能を組み合わせることについてそれほど大きな問題は無かった。上述のことに関する最も典型的な例は、デスクトップパーソナルコンピュータのためのソフトウェアパッケージをＣＤ−ＲＯＭで提供することである。デスクトップパーソナルコンピュータにおいては、（例えばハードディスク上に存在するような）持続性（不揮発性）の内部記憶装置の容量は、通常は問題とはならないし、コンセント上の電力は事実上尽きることがないし、ＣＤ自体のコスト（費用）は無視できる程度のものである。
【０００７】
しかしながら、コンピュータデバイスの種類によっては、リソースが限られており、通常、リソースに関して、比較的逼迫しており且つコストに敏感な環境で動作する。このような種類のデバイスには、携帯情報端末（ＰＤＡ）、およびセルラ無線技術を使用する移動体電話が含まれる。これらの移動体コンピュータデバイスは、ＰＣデバイスと比べて、比較的限られたＣＰＵ処理能力しか有しておらず、コンセントではなくバッテリーによる電力で通常は動作し、且つ比較的限られた容量の内部メモリしか有さない。さらに、例えばマルチメディアカード（ＭＭＣ）、コンパクトフラッシュ（登録商標）（ＣＦ）カード、およびメモリースティック（登録商標）などのような、リソースが限られているこれらのデバイスで使用されるリムーバブル記憶メディアのコストは、ＣＤ−ＲＯＭとは大きく異なり、ユーザにとって極めて高価であるので、ユーザはコストが理由で使用を制限する。
【０００８】
あらゆるサイズのソフトウェア製品にとって、標準的なＰＣのパッケージメカニズムを使用したソフトウェアの配布は、上述のようなリソースの限られたデバイスには適していないと見なされる。なぜなら、どのような圧縮および復元のメカニズムがパッケージに使用されようとも、特定の時点で、同一のファイルに関する圧縮されたものと圧縮されていないものとが同時にコンピュータデバイス上に存在する必要があるからである。さらに、上述のような移動体デバイスは、ＰＣとは異なり、ハードディスクドライブという記憶装置を備えておらず、内蔵ＲＡＭおよび「フラッシュ」ディスクのみを使用可能である。移動体電話のリムーバブルメディアのメモリが内蔵のデバイスメモリよりもずっと大きな記憶容量を持つことを模索することは不自然なことではないが、この場合、そもそも、圧縮されたフォーマットでリムーバブルメディアにソフトウェアを提供する意味が明らかに存在しない。
【０００９】
単に、リムーバブルメディアにプリインストールされたソフトウェアを提供するということは、この問題に対する良い解決法ではない。なぜなら、ソフトウェアのユーザは、インストールされるソフトウェアが真正のものであり、且つユーザのデータ或いはデバイスの動作に関するセキュリティを危うくするように改竄されたりウイルスに感染したりしていないことを確実にするためには、インストールプロセスを辿る必要が実際にあるからである。特にこのような移動体コンピュータデバイスにとっては、ユーザデータのセキュリティは極めて重要である。なぜなら、データが取得されると、そのデータは基本的にユーザの金銭を盗むために使用され得るものだからである。
【００１０】
このような移動体デバイスにおけるリソースの制約はまた、ソフトウェアを配布する代替方法、特にインターネット上でのソフトウェア配信にとっても問題である。固定されたＰＣはブロードバンドでのインターネット接続を活用できる。ここでは、追加費用ゼロで広帯域を使用できるので、ダウンロード速度が高速化し、実質的に無料になる。一方で、無線デバイスによって使用されるセルラベースのインターネット接続は、少なくとも１桁低速であり、必ずしも信頼性が無く、且つ多くのユーザが比較的高価であると考えている。データを受信中に「オン・ザ・フライ(on the fly)」で復元（解凍）するような技術は、上述したメモリの制約の一部を回避する助けとなるが、オンラインでのソフトウェア配信に関する不便性および認識されているコストのために、サイズの大きいソフトウェアのインストールのためにはこの方法は実用的でないものになっている。
【００１１】
ＰＤＡや移動体電話などの、無線接続機能を備えるリソースの制限されたデバイスのためにソフトウェアを配信する方法であって、上で概説した不便性とコストの問題とを伴わない唯一の現行の方法は、ＰＣ接続スイートを介するものである。ＰＣ接続スイートはソフトウェアの一種であり、非移動体のＰＣ上で動作するが、通常は移動体デバイスに提供されて、移動体デバイスがＰＣに接続されている間にそのデバイスへ安全、安価、且つ便利にソフトウェアをインストールすることを可能にするものである。しかしながら、ソフトウェア配信に関するこの方法には多数の欠点がある。最も明白な欠点は、次のものである。
・移動体デバイスの所有者は、必ずしも問題とはならないが、互換性のあるＰＣにアクセスする必要がある。
・ＰＣの所有者は、移動体デバイスに提供された接続ソフトウェアが自分のパーソナルコンピュータと互換性が無いことに気付く場合がある。
・移動体デバイスが実際に移動中は、ソフトウェアをインストールできず、固定できる場所が必要である。
【００１２】
それゆえ、リソースが制限された移動体デバイスにソフトウェアをインストールする方法であって、利便性、効率性、信頼性、スピード、およびセキュリティに関する要求を組み合わせた満足の行く方法は、現在のところ存在しない。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
それゆえ、本発明は、コンピュータデバイスにソフトウェアをインストールするための改良された方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の第１の態様によれば、コンピュータデバイスにソフトウェアをインストールする方法であって、前記ソフトウェアをインストールするか否かを決定する決定フェーズと、前記ソフトウェアをインストールするインストールフェーズと、を備え、前記決定フェーズによって必要とされる情報は、電子署名によって保護された完全性を有し、且つインストールされるファイルに対してファイルデータの完全性を検証するための個々のハッシュを含む、メタデータを備えることを特徴とする方法が提供される。
【００１５】
本発明の第２の態様によれば、第１の態様の方法に従って動作するように構成されたコンピュータデバイスが提供される。
【００１６】
本発明の第３の態様によれば、コンピュータデバイスにソフトウェアをインストールするためのコンピュータソフトウェアパッケージであって、第１の態様の方法に従って前記コンピュータデバイスを動作させることを特徴とするコンピュータソフトウェアパッケージが提供される。
【００１７】
さらなる例示のためにのみ、添付の図面を参照して、本発明の実施形態を説明する。
【発明を実施するための最良の形態】
【００１８】
無線デバイスで使用するためにリムーバブルメディアにソフトウェアを配信する場合は、圧縮されていない状態、且つファイルが正しい場所に既に配置されている状態でソフトウェアを提供すると共に、ソフトウェアのセキュアな（安全な）動作を確実にするための機能を提供可能なパッケージシステムを提供することが、より有意義であるという認識を、本発明は基礎（前提）としている。特に、本発明によれば、パッケージに含まれるファイルを全て復元（解凍）してインストールする必要無しに、システム要件および依存関係をチェックし、且つソフトウェアの完全性およびソフトウェアデベロッパ（開発者）のアイデンティティを認証して照合することが可能である。
【００１９】
イギリスのロンドンにあるＳｙｍｂｉａｎ  Ｓｏｆｔｗａｒｅ  Ｌｉｍｉｔｅｄから入手可能な、ソフトウェアインストールパッケージを含む、Ｓｙｍｂｉａｎ  ＯＳ（商標）オペレーティングシステムのためのＳＩＳファイルを参照して、本発明の好適な実施形態を以下に説明する。しかしながら、本発明の方法は、スタンドアロンタイプのパッケージであれ他の種類のオペレーティングシステムに組み込まれたものであれ、他の形態のソフトウェアインストールパッケージにも同等の利点をもたらして使用可能であるということを強調しておく。
【００２０】
Ｓｙｍｂｉａｎ  ＯＳ（商標）オペレーティングシステムのＳｙｍｂｉａｎ  ＳＩＳファイルは、このオペレーティングシステムを実行する移動体コンピュータデバイスにインストールするための、あらゆる数或いはタイプ（種類）のファイルをパッケージングするために、従来から使用されてきた。本オペレーティングシステムは、"makesis"として知られるユーティリティソフトウェアプログラムを備える。"makesis"は、ＳＩＳファイルの生成を担う。ＳＩＳファイルは、実際のソフトウェアインストールを実行するために使用される、独立したソフトウェアインストールプログラム（ここでは、ソフトウェアインストール(software install)と呼ぶ）である。以下に説明する例において、本発明を実施するために、これらのＳＩＳファイルのフォーマット、およびインストールプロシージャ（手順）が修正されている。この新たなフォーマットは、以下の例において、ＳＩＳＸ（拡張ＳＩＳ、extended SIS）と呼ばれる。
【００２１】
本発明によれば、インストールプロセスおよびインストールファイルはそれぞれ、２つの独立したフェーズ（段階）に分割されている。インストールプロセスの２つのフェーズは、決定フェーズ(Decision Phase)およびインストールフェーズ(Installation Phase)と呼ばれる。各々のフェーズをサポートするために、ＳＩＳＸファイルは、２つのパートとして提供される。すなわち、図１に示されるように、ＳＩＳＳｉｇｎｅｄＣｏｎｔｒｏｌｌｅｒパートとＳＩＳＤａｔａパートである。
【００２２】
ＳＩＳＳｉｇｎｅｄＣｏｎｔｒｏｌｌｅｒは、決定フェーズを完了するために必要とされる唯一のパートである。これはＳＩＳＸファイルにおいて比較的小さなパート（一般的には、１０ｋｂ未満である）であり、メモリ中に全体を読み出すことができる。このパートは、要求されたソフトウェアのファイルをコンピュータデバイスにインストールするのに必要とされる、例えば認証や性能などといった、メタデータを含む。しかしながら、本発明においては、メタデータは、ＳＩＳＤａｔａパートにおける各ファイルのための個別のハッシュも含むようになされる。また、メタデータは、例えばＸ．５０９  ｖ．３公開鍵基盤に準拠した証明書などの、インストール時または実行時に検証可能な標準的な証明書を使用して、電子署名（デジタル署名）されていなければならない。
【００２３】
ＳＩＳＤａｔａパートは、決定フェーズでは必要とされない全てのデータを含む。これは主として、コンピュータデバイスにインストールされる実際のファイルと共に、極めて限られた量の制御情報から構成される。
【００２４】
この形態（フォーマット）には、２つの極めて重要な鍵となる商業的な利点がある。
【００２５】
ａ）「無線で」移動体スマートフォンにファイルをインストールする際に、比較的小さなＳＩＳＳｉｇｎｅｄＣｏｎｔｒｏｌｌｅｒパートが最初にダウンロード可能であるため、決定フェーズは、ほとんど即時に処理可能である。決定フェーズ中に何らかの障害(failures)が発生した場合、ユーザにとって、著しく余計な時間（の浪費）、および全てのインストールファイルのダウンロードに関連する費用（の浪費）が回避される。なぜなら、比較的時間を消費し、それゆえ一層コストのかかるインストールフェーズは、決定フェーズが成功裏に完了した後でのみ続行するからである。
【００２６】
ｂ）ＭＭＣカード上に置かれてインストールされる必要のないデータに対しては、プリインストールされたソフトウェアを有するカード上にＳＩＳＳｉｇｎｅｄＣｏｎｔｒｏｌｌｅｒパートのみを提供すれば、例え通常のインストールプロセスが不要であっても、標準的な認証および他のセキュリティ評価は通常通り処理されることが可能となる。
【００２７】
これらの利点のうち第１の（１番目）のものは、Ｊａｖａ（登録商標）パッケージシステムと共通の利点である。Ｊａｖａ（登録商標）パッケージシステムにおいては、ＪＡＤファイルがインストールの決定フェーズのためのメタデータを含み、ＪＡＲファイルがパッケージデータの残りの部分を含む。本発明のＳＩＳＸファイルと同様に、Ｊａｖａ（登録商標）のＪＡＤ／ＪＡＲパッケージシステムを使用して配信されるソフトウェアは、ソフトウェアが安全にインストールされるか否かを知るためにはＪＡＤファイルのみをダウンロードすればよい。しかしながら、厳密には本発明とは大きく違い、Ｊａｖａ（登録商標）システムにおいては、インストールされるソフトウェアファイルの完全性を保証するために必要とされるハッシュは、ＪＡＲファイルの中身に含まれる。それゆえ、本発明とは異なり、Ｊａｖａ（登録商標）のＪＡＤ／ＪＡＲパッケージシステムにおいては、プリインストールされたソフトウェアにＪＡＤファイルを提供しても、リムーバブルメディアに提供されるソフトウェアのインストールに関する信頼性を確かなものとすることは不可能である。
【００２８】
Ｓｙｍｂｉａｎ  ＯＳ（商標）オペレーティングシステムが動作するデバイスを参照して、ＳＩＳＸファイルのフォーマットを説明する。もちろん、当業者にとっては、多くの他の実装が可能であるということが極めて明らかであろう。また、本説明のどの部分が本発明の実装に不可欠ではないかということも明らかであろう。例えば、説明される実施形態におけるＳＩＳＸファイルのフォーマットは、全てのメタデータはリトルエンディアンのフォーマットで格納されるべきものであると指定しているが、これは説明の便宜のためになされているものであり、ビッグエンディアンまたはエンディアン非依存(agnostic-endian)で本発明の実装が提供されない理由はない。同様に、ＳＩＳＸフォーマットは完全性の検証のためにＣＲＣ−３２をしているという事実は、同様の結果を達成する他の方法を排除するものではない。
【００２９】
ＳＩＳＸファイル中の情報は２つの独立したパートに分割されている。第１のパートはメタデータであり、インストールされる必要のあるファイルを記述している。ＳＩＳＸファイルの第２のパートは実際のファイルデータ全てを含む。これにより、ソフトウェアのインストールが、上述した決定フェーズおよびインストールフェーズに分割可能となる。決定フェーズの間、ＳＩＳＸファイルは検査され、インストールを検証するためにセキュリティチェックが実行される。インストールフェーズは、検証が成功した場合にのみ実行されるものであり、デバイスに要求されるファイルを実際にコピーする工程である。
【００３０】
ＳＩＳＸファイルのフォーマットは、パッケージが署名されることを可能にする、署名および証明書をサポートする。これらの署名はインストール中に検証され、パッケージがデバイスにインストールされた後にも再検証され得る。２つのフェーズにおけるＳＩＳＸファイルの処理をサポートするために、ＳＩＳＸファイルのメタデータのみが署名される。しかしながら、本発明においては、各ファイル中のデータの完全性を保証するために、メタデータは、パッケージ中のインストールのための各ファイルのための個別のハッシュも含む。このように、ＳＩＳＸファイル全体の完全性が、署名されたメタデータによって保護される。このことは、次のことを意味する。インストールフェーズの間、インストールのための解凍を実行するために信用できないコンポーネントを使用していても、ソフトウェアインストール処理は、インストールされる各ファイルについて、署名されたメタデータに含まれる「保護された」ハッシュに対して各ファイルの個別のハッシュを検証することが可能である。
【００３１】
インストール処理の最初に、壊れている可能性のあるあらゆるＳＩＳＸファイルの検出を可能にするために、各メタデータおよび各ファイルのための独立したチェックサムもＳＩＳＸファイル中に存在してもよい。
【００３２】
ファイル形式（ファイルのフォーマット）を変更することに関連する取り組みのために、ＳＩＳＸのフォーマットは、拡張性があるように設計されており、タイプ−レングス−バリュー（型・長さ・値）のフォーマットを使用する。ＳＩＳＸファイル中の各フィールド（ＳＩＳＦｉｅｌｄ）は、指定された長さを持つ。それゆえ、ＳＩＳＸファイルを読む際に、型が未知であるフィールドは読み飛ばす（スキップする）ことが可能である。
【００３３】
他の種類のインストールパッケージと同様に、Ｓｙｍｂｉａｎ  ＯＳ（商標）オペレーティングシステムのＳＩＳファイルのフォーマットに使用される圧縮方式は、ＳＩＳファイル全体を圧縮するものであり、インストール時に独立したファイルに解凍され、解凍されたファイルからインストールされる。このことは、多数のファイルがオプションとして（任意で）インストールされ得る場合に特に無駄になり得る。なぜなら、オプションのファイルを含む元のＳＩＳパッケージ全体を解凍するためには、デバイス中のメモリ容量に余裕が残されている必要があるからである。
【００３４】
本発明のＳＩＳＸファイルのフォーマットは、ＳＩＳＸファイル中の各ファイルについて独立した圧縮をサポートし、ＳＩＳＣｏｎｔｒｏｌｌｅｒも圧縮されてもよい。これにより、ファイルのインストールの実行に必要とされるメモリ容量が削減される。不可欠な他の圧縮されたＳＩＳＦｉｅｌｄを含むことが可能な、ＳＩＳＣｏｍｐｒｅｓｓｅｄ  ＳＩＳＦｉｅｌｄを使用することにより、圧縮はサポートされる。
【００３５】
本発明のこの実施形態において、ＳＩＳＸファイルのフォーマットは、ＳＩＳファイルのフォーマットにおける元の特徴のほとんど全てをサポートするように設計されている。課される唯一の制限は、埋め込み型のＳＩＳＸファイルに関して８を超える階層（レベル）が存在してはならないということである。なお、このことはＳＩＳＸファイルのフォーマット自体の制限ではなく、インストール処理全体の複雑性を制限するために課されるものであるということが理解されるであろう。
【００３６】
ＳＩＳＸファイルのフォーマットは、変更される必要のあるオフセット（補正値）を持たないため、署名および証明書は図２に示されるようにファイルの中央部に配置される場合もあるが、ＳＩＳＸファイルのメタデータの最後に新たな署名および証明書のチェーンを追加することは容易である。この場合、ＳＩＳＳｉｇｎａｔｕｒｅｓ  ＳＩＳＦｉｅｌｄは、新たな署名および証明書のチェーンによって伸ばされ得るものであり、この追加に従うＳＩＳＦｉｅｌｄは、ファイル中の後ろの方の部分へ移動され得るものである。
【００３７】
ＳＩＳＸファイルのフォーマットは、ＳＩＳＦｉｅｌｄの各々の型が１つのＣ＋＋クラスによって表現可能であるように設計されている。これにより、ＳＩＳＦｉｅｌｄからＣ＋＋クラスのインスタンスを作り出すことが容易になる。また、ファイルフォーマット内には使用されるオフセットが存在しないため、ＳＩＳＦｉｅｌｄからのデータのみでＣ＋＋クラスを作り出すことが可能である。
【００３８】
ＳＩＳＸファイルはサイズが大きい場合があるので、ファイルの中身全体を一度にメモリにロードすることが不可能である場合もある。ファイルフォーマットの構造のために、含まれているＳＩＳＦｉｅｌｄ中のデータ全てを読まなくても、各ＳＩＳＦｉｅｌｄに関するメタデータの情報を読むことが可能である。
【００３９】
ＳＩＳＸファイルのフォーマットデータに関する平面的な一覧を取得する必要のある動作には多種多様なものが存在する。例えば、ＣＲＣのチェックを実行すること、およびメタデータの署名を検証することがある。それゆえ、フォーマットは、各ＳＩＳＦｉｅｌｄにおける全データが連続して格納されるように設計されることが好ましい。
【００４０】
ＳＩＳＸフォーマットはまた、あるＳＩＳＸファイルを他のものに埋め込むこともサポートする。既に生成されたＳＩＳＸファイルを取得してこれから生成されるＳＩＳＸファイル中に埋め込むことが可能な、ＭａｋｅＳＩＳツールが提供される。既存のＳＩＳＸファイルがロードされ、必要であればＳＩＳＣｏｎｔｒｏｌｌｅｒが解凍され、埋め込み型のＳＩＳＸファイルのファイル中のＳＩＳＩｎｓｔａｌｌＢｌｏｃｋに関するフィールドに挿入される。ＳＩＳＤａｔａＵｎｉｔは、インストールに必要なファイルを含み、ＳＩＳＤａｔａ  ＳＩＳＦｉｅｌｄのＤａｔａ  Ｕｎｉｔアレー（配列）の最後に追加される。ＳＩＳＣｏｎｔｒｏｌｌｅｒは、必要なファイルを含むＳＩＳＤａｔａＵｎｉｔのインデックスを示す、Ｄａｔａ  Ｉｎｄｅｘフィールドを有する。それゆえ、ＭａｋｅＳＩＳツールは、追加されるＳＩＳＣｏｎｔｒｏｌｌｅｒを通して繰り返し処理を行い、これらのインデックスを正しいインデックス値に変更することが要求される。１以上のＳＩＳＸファイルを他のＳＩＳＸファイルに埋め込むための処理は、図３に示される。
【００４１】
全メタデータは、リトルエンディアンのバイト順序のフォーマットで格納されている。さらに、ＳＩＳからＳＩＳＸのファイルフォーマットへのアップグレードを簡略化するために、ＳＩＳＸファイルフォーマットは、例えばＵｎｉｃｏｄｅ  ＵＣＳ−２でエンコードされた文字列などのような、１つのテキスト文字コード系のみをサポートするようになされる。
【００４２】
本発明のこの実施形態において、ＳＩＳＸファイルを埋め込む階層の数は、８に制限されているが、これはファイルフォーマットの制限ではなく、インストールに関する潜在的な複雑性を制限するためにソフトウェアのインストールに課される制限であるということが理解されよう。
【００４３】
典型的なＳＩＳＸファイルの構造の概要を示す。
【００４４】
ＳＩＳＸファイルのフォーマットは、タイプ−レングス−バリュー（ＴＬＶ）フォーマットを使用してエンコードされたＳＩＳＦｉｅｌｄを構成要素に持つ。全てのＳＩＳＦｉｅｌｄがこのフォーマットで格納されるが、ＳＩＳＡｒｒａｙ内部に格納されるあらゆるＳＩＳＦｉｅｌｄは例外である。これは、配列(array)は同じ型のＳＩＳＦｉｅｌｄを格納するからであり、それゆえ、配列中の各エントリについて型（タイプ，Ｔｙｐｅ）の内容(value)を格納することは不要かつ非効率だからである。それゆえ、ＳＩＳＦｉｅｌｄの長さ（レングス，Ｌｅｎｇｔｈ）および値（バリュー，Ｖａｌｕｅ）のみがＳＩＳＡｒｒａｙ中に格納される。
【００４５】
Ｔｙｐｅフィールドは、ＳＩＳＦｉｅｌｄの型を示す。ＳＩＳＦｉｅｌｄの各々の型は、固有の識別情報（ＩＤ）を有し、４バイトの長さである。
【００４６】
Ｌｅｎｇｔｈフィールドは、Ｖａｌｕｅフィールド中のデータの長さを示すが、ＳＩＳＦｉｅｌｄに含まれる他のフィールドのサイズは含まない。Ｌｅｎｇｔｈフィールドは、格納されるＬｅｎｇｔｈの値によるが、４又は８バイト長である。というのは、フィールドによっては６４ビット長をサポートする必要があるが、大部分のフィールドに対してはより短いビット長のみが必要とされるからである。それゆえ、全フィールドに対して６４ビットで長さを格納すると、デバイス中の余計なメモリ空間を使用することになるであろう。
【００４７】
Ｌｅｎｇｔｈは、常に符号無しの値で表現される。Ｌｅｎｇｔｈの値が２３１未満である場合、その値は３２ビット（４バイト）使用して格納される。Ｌｅｎｇｔｈの値が２３１以上である場合、その値は６４ビット（８バイト）使用して格納される。最上位ビット(most significant bit)が１に設定されるが、これは、表現可能である潜在的な最大データ長は２６３−１であることを意味する。Ｌｅｎｇｔｈの値を読み取るために、最初の３２ビットがまず読み取られる。最上位ビットが０である場合、下位の３１ビットが値を示す。最上位ビットが１である場合、次の３２ビットが読み取られ、６３ビットの値が両方のパーツから構成される。
【００４８】
Ｖａｌｕｅフィールドは、ＳＩＳＦｉｅｌｄのデータを含む。ＶａｌｕｅフィールドのフォーマットはフィールドＩＤに依存する。このフォーマット依存性は、ＳＩＳＦｉｅｌｄからＣ＋＋クラスのインスタンスを作り出すことを極めて容易にするので、使用される。ＳＩＳＦｉｅｌｄ中のデータのみを使用し、ＳＩＳＸファイルの他のパートを使用せずにこのインスタンスを作り出すことも可能である。
【００４９】
ＳＩＳＸファイルはまた、必要であれば各ＳＩＳＦｉｅｌｄが３２ビットワードの境界で開始するようにパディングされることが好ましい。これにより、３２ビットに整列されたアクセスしかできないプロセッサでも、メモリからのフォーマットの効率的な構文解析を行うことが可能となる。
【００５０】
ＳＩＳＸファイルのフォーマットによって使用されるデータ構造を説明するために、以下の表記法を使用する。
【００５１】
Structure Name
Name of Field 1        Type of Field          Size of Field
...                    ...                    ...
Name of Field N        Type of Field          Size of Field
【００５２】
Ｓｔｒｕｃｔｕｒｅ  Ｎａｍｅは構造体の名前であり、Ｔｙｐｅフィールドに格納されるＩＤを決定する。その長さは、規定される全フィールドの長さによって決定される。フィールド１乃至Ｎは、構造体のＶａｌｕｅパートに現れるべきデータを特定する。
【００５３】
ＳＩＳＸファイルは、「Ｇｅｎｅｒａｌ  ＳＩＳＦｉｅｌｄ」および「ＭｅｔａＤａｔａ  ＳＩＳＦｉｅｌｄ」として分類され得るフィールドを含む。これら２つのフィールド分類の内容を説明する。
【００５４】
Ｇｅｎｅｒａｌ  ＳＩＳＦｉｅｌｄ
ＳＩＳＳｔｒｉｎｇ
このＳＩＳＦｉｅｌｄは、ＵＣＳ−２でエンコードされたＵｎｉｃｏｄｅ文字列を含む。
SISString              Length
String
【００５５】
Ｓｔｒｉｎｇ
このフィールドは、ＵｎｉｃｏｄｅのＵＣＳ−２でエンコードされた文字列を含む。そのバイト長は、Ｌｅｎｇｔｈフィールドによって指定される。そして、各文字は１６ビット使用してエンコードされているので、この長さの半分の数の文字が文字列中に存在する。
【００５６】
ＳＩＳＡｒｒａｙ
ＳＩＳＡｒｒａｙ  ＳＩＳＦｉｅｌｄは、１つのＳＩＳＦｉｅｌｄ型の配列を保持する。含まれるＳＩＳＦｉｅｌｄの型は、データからの生成時に加えて、各々の新しいＳＩＳＦｉｅｌｄの追加時にチェックされる。ＳＩＳＡｒｒａｙ＜ＳＩＳＳｔｒｉｎｇ＞という表記は、ＳＩＳＳｔｒｉｎｇの配列を示すのに使用される。配列中の全ＳＩＳＦｉｅｌｄは、最適化のために型情報無しで格納されるので、ＴＬＶフォーマットのうちの長さおよび値のパートのみが格納される。
【００５７】
SIS Array              Length
SISField Type          TUint32                4 bytes
SISField 1             SISField
...                    ...
SISField N             SISField
【００５８】
ＳＩＳＦｉｅｌｄ  Ｔｙｐｅ
このフィールドは、配列中のＳＩＳＦｉｅｌｄの型を示す。全フィールドが同じ型を持ち、この型はデータからのＳＩＳＦｉｅｌｄの生成時に加えて、各々の新しいＳＩＳＦｉｅｌｄの追加時にチェックされる。
【００５９】
ＳＩＳＦｉｅｌｄ
これはＳＩＳＦｉｅｌｄの連続であり、その型はＳＩＳＦｉｅｌｄ  Ｔｙｐｅフィールドの値に等しい。ＳＩＳＦｉｅｌｄは、部分的にのみ格納され、最適化のために型は省略される。なぜなら、型はＳＩＳＡｒｒａｙのＳＩＳＦｉｅｌｄ  Ｔｙｐｅフィールドから決定可能だからである。ＳＩＳＡｒｒａｙ  ＳＩＳＦｉｅｌｄのＬｅｎｇｔｈによって指定される全データが読み取られるまで全フィールドを読み取ることにより、フィールドの数を判定可能である。ＳＩＳＸファイルのフォーマットにおけるいくつかの場所で、ＳＩＳＦｉｅｌｄの配列が必要とされるので、コードの重複を減少させるために、ＳＩＳＡｒｒａｙの型も提供される。
【００６０】
ＳＩＳＣｏｍｐｒｅｓｓｅｄ
このＳＩＳＦｉｅｌｄは、他のＳＩＳＦｉｅｌｄ周りのラッパー(wrapper)であり、ラップされたＳＩＳＦｉｅｌｄは、任意で圧縮可能である。これにより、ＳＩＳＸファイルフォーマットに圧縮を一体化することを容易にできる。ＳＩＳＣｏｍｐｒｅｓｓｅｄ＜ＳＩＳＳｔｒｉｎｇ＞という表記は、圧縮されたＳＩＳＳｔｒｉｎｇを示すために使用され得る。
SISCompressed          Length
Compression Algorithm  TUint8                 1 byte
Compressed Data                               Compressed Data
Length bytes
【００６１】
Ｃｏｍｐｒｅｓｓｉｏｎ  Ａｌｇｏｒｉｔｈｍ（圧縮アルゴリズム）
このＳＩＳＦｉｅｌｄは、ファイルのデータを圧縮するために使用されるアルゴリズムを含む。
enum TCompressionAlgorithm
{
ECompressNone = 0, //データは圧縮されていない
ECompressDefault   //データはＲＦＣ１９５１に従って圧縮されている
};
【００６２】
Ｃｏｍｐｒｅｓｓｅｄ  Ｄａｔａ（圧縮されたデータ）
このＳＩＳＦｉｅｌｄは、圧縮されたデータを含む。その長さは、Ｌｅｎｇｔｈフィールドから判断可能である。
【００６３】
ＳＩＳＶｅｒｓｉｏｎ
このＳＩＳＦｉｅｌｄは、格納されているデータ構造に、メジャー（主）、マイナー（副）、およびビルド(build)という構成要素を伴うバージョン番号を提供する。
SISVersion              Length
Major                   TInt32                 4 bytes
Minor                   TInt32                 4 bytes
Build                   TInt32                 4 bytes
【００６４】
正の値または０のみが特定のバージョンを示すために使用される。しかしながら、適用可能な場合には、ＳＩＳＶｅｒｓｉｏｎにおけるメジャー、マイナー、またはビルドの構成要素は、「全てのバージョン」ということを示すために−１に設定されてもよい。
【００６５】
ＳＩＳＶｅｒｓｉｏｎ  Ｒａｎｇｅ
このＳＩＳＦｉｅｌｄは、バージョンの範囲を指定する。これは、どのバージョンが特定の依存関係を満足させられるかを示すために使用される。この範囲が特定のバージョンのみである場合、規定される「Ｆｒｏｍ  Ｖｅｒｓｉｏｎ」および「Ｔｏ  Ｖｅｒｓｉｏｎ」のフィールドは共に、同一の特定の値に設定されなければならない。特定のアップグレードがあらゆるバージョンに適用可能である場合、「Ｆｒｏｍ  Ｖｅｒｓｉｏｎ」および「Ｔｏ  Ｖｅｒｓｉｏｎ」のフィールドは共に、−１に設定されるメジャー、マイナー、およびビルドの構成要素を有することになる。
【００６６】
SISVersionRange        Length
From Version           SISVersion
To Version             SISVersion
【００６７】
依存関係をチェックする際に、インストールされるパッケージのバージョンが、「Ｆｒｏｍ  Ｖｅｒｓｉｏｎ」および「Ｔｏ  Ｖｅｒｓｉｏｎ」のフィールドそれぞれに対してチェックされる。「Ｆｒｏｍ  Ｖｅｒｓｉｏｎ」フィールドをチェックするために、まず、インストールされるパッケージのメジャーバージョンが、既にインストールされているバージョンのメジャーバージョンに対してチェックされる。インストールされるメジャーバージョンの方が小さい場合、この依存関係のチェックは失敗する。インストールされるメジャーバージョンの方が大きい場合、この依存関係のチェックは成功（パス）する。２つのバージョンが等しい場合、マイナーバージョンが同様にチェックされる。メジャーおよびマイナーバージョンの全構成要素が等しい場合、依存関係のチェックは成功する。このようにして、バージョンに関する辞書的な比較が実行される。メジャー、マイナー、またはビルドのバージョンのいずれにおいても、−１という値は、特別な場合として扱われる。「Ｆｒｏｍ  Ｖｅｒｓｉｏｎ」が−１であるフィールドと比較する状況が発生した場合、依存関係のチェックは成功する。「Ｔｏ  Ｖｅｒｓｉｏｎ」も同様の方法でチェックされる。
【００６８】
以下の例は、典型的な比較チェックの結果を示す。
Major                  Minor                  Build
From Version             3                      -1                     -1
To Version               4                      5                      -1
このチェック結果は、３．ｘ．ｘから４．５．ｘまでのあらゆるバージョンをアップグレードすることになる（ここで、ｘは任意の値である）。
Major                  Minor                  Build
From Version             1                      3                      4
To Version               1                      3                      5
このチェック結果は、バージョン１．３．４または１．３．５をアップグレードすることになる。
【００６９】
ＳＩＳＤａｔｅ
このＳＩＳＦｉｅｌｄは、日付を含む。日付は、年(year)パートが一杯に格納されるようにグレゴリオ暦に従って格納され、有効な日付でなければならない。
【００７０】
SISDate                Length
Year                   TUint16                2 bytes
Month                  TUint8                 1 byte
Day                    TUint8                 1 byte
【００７１】
ＳＩＳＴｉｍｅ
このＳＩＳＦｉｅｌｄは、時刻を含む。時刻はＵＴＣで表現されなければならず、有効な時刻でなければならない。
【００７２】
SISTime                Length
Hours                  TUint8                 1 byte
Minutes                TUint8                 1 byte
Seconds                TUint8                 1 byte
【００７３】
ＳＩＳＤａｔｅＴｉｍｅ
このＳＩＳＦｉｅｌｄは、日付および時刻両方のＳＩＳＦｉｅｌｄを含む。
【００７４】
SISDateTime            Length
Date                   SISDate
Time                   SISTime
【００７５】
ＳＩＳＵｉｄ
このＳＩＳＦｉｅｌｄは、３つの固有の識別情報（ＵＩＤ）を含む。
SISUid                 Length
UID 1                  TInt32                 4 bytes
UID 2                  TInt32                 4 bytes
UID 3                  TInt32                 4 bytes
【００７６】
ＳＩＳＶｅｎｄｏｒＩＤ
このＳＩＳＦｉｅｌｄは、Ｖｅｎｄｏｒ  ＩＤ（製造元ＩＤ）を含む。このＩＤは、特定のベンダー（製造元）に対して固有のものである。
SISVendorID            Length
VendorID               TInt32                 4 bytes
【００７７】
ＶｅｎｄｏｒＩＤ
このＳＩＳＦｉｅｌｄは、は、ベンダーを示す。各ベンダーは、それぞれに固有のＩＤを有する。
【００７８】
ＳＩＳＬａｎｇｕａｇｅ
このＳＩＳＦｉｅｌｄは、言語を特定する。
SISLanguage            Length
Language               TInt32                 4 bytes
【００７９】
Ｌａｎｇｕａｇｅ
このフィールドの値は、ＴＬａｎｇｕａｇｅ列挙型に対応するが、ＳＩＳＸファイル中ではＴＵｉｎｔ３２として格納される。
【００８０】
ＳＩＳＸ  Ｆｉｌｅ  Ｍｅｔａｄａｔａ  ＳＩＳＦｉｅｌｄ
ＳＩＳＣｏｎｔｅｎｔｓ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルの内容（コンテンツ）全体を含む。コンテンツは、メタデータを含むＳＩＳＣｏｎｔｒｏｌｌｅｒと実際のファイルデータを含むＳＩＳＤａｔａとに分割されている。
SISContents            Length
Controller Checksum    SISControllerCheksum
DataChecksum           SISDataChecksum
Controller             SISCompressed<SISController>
Data                   SISData
【００８１】
Ｃｏｎｔｒｏｌｌｅｒ  Ｃｈｅｃｋｓｕｍ
このチェックサムは、Ｃｏｎｔｒｏｌｌｅｒフィールドのコンテンツに関するＣＲＣ−３２チェックサムである。チェックサムは、ＳＩＳＣｏｍｐｒｅｓｓｅｄ＜ＳＩＳＣｏｎｔｒｏｌｌｅｒ＞全体をカバーするので、ＳＩＳＣｏｎｔｒｏｌｌｅｒが圧縮されている場合、チェックサムを検証するためにＳＩＳＣｏｎｔｒｏｌｌｅｒを解凍する必要はない。それゆえ、Ｃｏｎｔｒｏｌｌｅｒの完全性は、ファイル全体をチェックすること無しに、チェックすることが可能である。
【００８２】
Ｄａｔａ  Ｃｈｅｃｋｓｕｍ
このチェックサムは、Ｄａｔａフィールドのコンテンツに関するＣＲＣ−３２チェックサムである。これにより、ファイル全体をチェックすること無く、データの完全性をチェックすることが可能となる。
【００８３】
Ｃｏｎｔｒｏｌｌｅｒ
Ｃｏｎｔｒｏｌｌｅｒ（コントローラ）は、ＳＩＳＸファイルのための全メタデータを含む。これは、任意で圧縮されていても構わない。
【００８４】
Ｄａｔａ
Ｄａｔａフィールドは、ＳＩＳＸファイル中の実際のファイルを含む。これらのファイルは、Ｃｏｎｔｒｏｌｌｅｒフィールドに存在するメタデータに依存して異なるように処理される。
【００８５】
ＳＩＳＣｏｎｔｒｏｌｌｅｒＣｈｅｃｋｓｕｍ
このＳＩＳＦｉｅｌｄは、圧縮されていてもよいＳＩＳＣｏｎｔｒｏｌｌｅｒのためのチェックサムを含む。
【００８６】
SISControllerChecksum  Length
Checksum               TUint32
【００８７】
Ｃｈｅｃｋｓｕｍ
このフィールドは、ＳＩＳＣｏｍｐｒｅｓｓｅｄ＜ＳＩＳＣｏｎｔｒｏｌｌｅｒ＞全体に対して計算されたＣＲＣ−３２チェックサムを含む。
【００８８】
ＳＩＳＤａｔａＣｈｅｃｋｓｕｍ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルにおけるＳＩＳＤａｔａパート（セクション）に対するチェックサムを含む。
【００８９】
SISDataChecksum        Length
Checksum               TUint32
【００９０】
Ｃｈｅｃｋｓｕｍ
このフィールドは、ＳＩＳＤａｔａ  ＳＩＳＦｉｅｌｄ全体に対して計算されたＣＲＣ−３２チェックサムを含む。
【００９１】
ＳＩＳＣｏｎｔｒｏｌｌｅｒ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルのためのメタデータを含む。
SISController          Length
Info                   SISInfo
Options                SISSupportedOptions
Languages              SISSupportedLanguages
Prerequisites          SISPrerequisites
Properties             SISProperties
Logo                   SISLogo
Install Block          SISInstallBlock
Signatures             SISSignatures
Data Index             TUInt16                2 bytes
【００９２】
ＳＩＳＸファイルのためのメタデータのコンテンツは、以下の通りである。
【００９３】
Ｉｎｆｏ
このフィールドは、ＳＩＳＸファイルに関する情報を含む。
【００９４】
Ｏｐｔｉｏｎｓ
このフィールドは、ファイルをインストールする際にユーザがその中から選択することを求められるオプションを含む。
【００９５】
Ｌａｎｇｕａｇｅｓ
このフィールドは、ＳＩＳＸファイルによってサポートされる言語を含む。
【００９６】
Ｐｒｅｒｅｑｕｉｓｉｔｅｓ
このフィールドは、ＳＩＳＸファイルをインストールするために必要とされる前提条件を含む。
【００９７】
Ｐｒｏｐｅｒｔｉｅｓ
このフィールドは、整数のキーと値とのペアであるプロパティを含む。
【００９８】
Ｌｏｇｏ
このフィールドは任意のものであり、存在する場合は、インストールの開始時に表示されるロゴを含む。
【００９９】
Ｓｉｇｎａｔｕｒｅｓ
このフィールドは、ＳＩＳＸファイルを署名した署名と共に、署名を検証するために必要とされる証明書チェーンを含む。
【０１００】
Ｄａｔａ  Ｉｎｄｅｘ
このフィールドは、ＳＩＳＤａｔａＳＩＳＦｉｅｌｄのＤａｔａ  Ｕｎｉｔｓフィールドの配列に対するインデックスである。それぞれのＳＩＳＣｏｎｔｒｏｌｌｅｒに対して１つのＳＩＳＤａｔａＵｎｉｔが存在する。
【０１０１】
ＳＩＳＩｎｆｏ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルに関する以下の情報を含む。
【０１０２】
SISInfo                Length
UID                    SISUid
Vendor ID              SISVendorID
Names                  SISArray<SISString>
Vendor Names           SISArray<SISString>
Version                SISVersion
Creation Time          SISDateTime
Install Type           TUint8                 1 byte
【０１０３】
ＵＩＤ
このフィールドは、ＳＩＳＸファイルのＵＩＤを含む。ＵＩＤは、ＳＩＳＸファイルのパッケージの特定のアプリケーションに固有でなければならないが、同一のＵＩＤを持つ複数の異なるバージョンのパッケージが存在しても構わない。
【０１０４】
Ｖｅｎｄｏｒ  ＩＤ
このフィールドは、パッケージを生成したベンダーのＩＤを含む。
【０１０５】
Ｎａｍｅｓ
このフィールドは、ＳＩＳＸファイルの名前の配列を含む。サポートされる各言語に対して１つの名前が存在し、それぞれの名前は、配列中の同じ場所にある、ＳＩＳＣｏｎｔｒｏｌｌｅｒのＳＩＳＳｕｐｐｏｒｔｅｄＬａｎｇｕａｇｅフィールドにおいて特定される、対応する言語とマッチングされている。
【０１０６】
Ｖｅｎｄｏｒ  Ｎａｍｅｓ
このフィールドは、ＳＩＳＸファイルのベンダーの名前の配列を含む。サポートされる各言語に対して１つの名前が存在し、それぞれの名前は、配列中の同じ場所にある、ＳＩＳＣｏｎｔｒｏｌｌｅｒのＳＩＳＳｕｐｐｏｒｔｅｄＬａｎｇｕａｇｅフィールドにおいて特定される、対応する言語とマッチングされている。
【０１０７】
Ｖｅｒｓｉｏｎ
このフィールドは、ＳＩＳＸファイルのバージョンを含む。
【０１０８】
Ｃｒｅａｔｉｏｎ  Ｔｉｍｅ
このフィールドは、ＳＩＳＸファイルの生成時刻および日付を含む。しかしながら、これはセキュアなタイムスタンプではないので、ＳＩＳＸファイルを生成する前にユーザがＰＣの時計を変更するだけで容易に改竄され得る。
【０１０９】
Ｉｎｓｔａｌｌ  Ｔｙｐｅ
このフィールドは、ＳＩＳＸファイルのインストールの種類を含む。この値によって、インストールソフトウェアは、異なる振る舞いでパッケージをインストールすることになる。この値は、ＴＵｉｎｔ８として格納されるが、以下の列挙型に対応する。
【０１１０】
enum TInstallType
{
EInstApplication
};
【０１１１】
ＥＩｎｓｔＡｐｐｌｉｃａｔｉｏｎ
ＳＩＳＸファイルは、デバイスにインストール可能なアプリケーションを含む。ひとたびＳＩＳＸファイルがインストールされると、インストールされたＳＩＳＸファイルのリストに現れるので、ユーザはそれを削除することができる。
【０１１２】
特定のＵＩＤおよびＥＩｎｓｔＡｐｐｌｉｃａｔｉｏｎタイプを持つＳＩＳＸファイルが既にインストールされているデバイスに、同一のＵＩＤおよびＥＩｎｓｔＡｐｐｌｉｃａｔｉｏｎタイプを持つＳＩＳＸインストールファイルをユーザがインストールすることを欲すると、アップグレードとして認識される。アップグレードが発生すると、現在のバージョンはデバイスから削除され、新しいバージョンがインストールされる。
【０１１３】
ＳＩＳＳｕｐｐｏｒｔｅｄＬａｎｇｕａｇｅｓ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルがサポートする言語の配列を含む。
SISSupportedLanguages  Length
Languages              SISArray<SISLanguage>
【０１１４】
ＳＩＳＳｕｐｐｏｒｔｅｄＯｐｔｉｏｎｓ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルがサポートするオプションを含む。インストール中にユーザはこれらのオプションから選択することを求められる。
SISSupportedOptions    Length
Options                SISArray<SISSupportedOption>
【０１１５】
Ｏｐｔｉｏｎｓ
このフィールドは、ＳＩＳＸファイルによってサポートされるオプションの配列である。ＳＩＳＸファイルによってサポートされる各オプションに対して配列中に１つのエントリが存在し、そのサイズは０またはそれよりも大きい。
【０１１６】
ＳＩＳＳｕｐｐｏｒｔｅｄＯｐｔｉｏｎ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルのサポートされるオプションに対する名前を含む。ＳＩＳＳｕｐｐｏｒｔｅｄＬａｎｇｕａｇｅｓ  ＳＩＳＦｉｅｌｄにおいて説明されたのと同じ順序で、ＳＩＳＸファイル中のサポートされる各言語に対する配列中に名前が存在する。
SISSupportedOption     Length
Names                  SISArray<SISString>
【０１１７】
ＳＩＳＰｒｅｒｅｑｕｉｓｉｔｅｓ
このＳＩＳＦｉｅｌｄは、インストールソフトウェアがＳＩＳＸファイルをインストールする前に満足されなければならない前提条件を示す。本実施形態においてサポートされる前提条件の種類は、
ｉ．  既にデバイスにインストールされているＳＩＳＸパッケージ、およびそのバージョン
ｉｉ．  デバイスが、そのデバイスにプリインストールされているＳＩＳＸファイルによって特定されるデバイスのリストのうちの１つでなければならないこと
である。
【０１１８】
SISPrerequisites       Length
Target Devices         SISArray<SISDependency>
Dependencies           SISArray<SISDependency>
【０１１９】
Ｔａｒｇｅｔ  Ｄｅｖｉｃｅｓ
このフィールドは、ＳＩＳＤｅｐｅｎｄｅｎｃｙ  ＳＩＳＦｉｅｌｄの配列であり、ＳＩＳＸファイルがどのデバイスにインストール可能であるかを示す。各デバイスは、プリインストールされた、デバイス特有のＳＩＳＸファイルを有する。Ｔａｒｇｅｔ  Ｄｅｖｉｃｅｓ  ＳＩＳＡｒｒａｙが何らかのＳＩＳＤｅｐｅｎｄｅｎｃｙを含む場合、ＳＩＳＸファイルをデバイスにインストールするために、これらの依存関係のうちの少なくとも１つが存在しなければならない。Ｔａｒｇｅｔ  Ｄｅｖｉｃｅｓ  ＳＩＳＡｒｒａｙがエントリを有さない場合、ＳＩＳＸファイルは、あらゆる種類のデバイスにインストール可能である。
【０１２０】
Ｄｅｐｅｎｄｅｎｃｉｅｓ
このフィールドは、ＳＩＳＤｅｐｅｎｄｅｎｃｙの配列であり、本ＳＩＳＸファイルがインストール可能になるためにはどのＳＩＳＸパッケージがインストールされる必要があるかを示す。０またはそれよりも多くの依存関係が存在し得る。インストールが続行するためには、このＳＩＳＡｒｒａｙ中に存在する全ＳＩＳＸファイルがデバイス上に存在しなければならない。
【０１２１】
ＳＩＳＤｅｐｅｎｄａｎｃｙ
このＳＩＳＦｉｅｌｄは、デバイスにインストールされなければならないＳＩＳＸパッケージを指定する。
SISDependency          Length
UID                    SISUid
Version Range          SISVersionRange
Dependency Names       SISArray<SISString>
【０１２２】
ＵＩＤ
このフィールドは、この依存関係を満足するためにデバイスにインストールされる必要のあるＳＩＳＸパッケージのＵＩＤを示す。
【０１２３】
Ｖｅｒｓｉｏｎ  Ｒａｎｇｅ
このフィールドは、デバイスにインストールされる必要のあるＳＩＳＸパッケージのバージョンの範囲を示す。
【０１２４】
Ｄｅｐｅｎｄｅｎｃｙ  Ｎａｍｅｓ
この配列は、ＳＩＳＸファイルによってサポートされる各言語における依存関係の名前のリストを含む。ＳＩＳＸファイルによってサポートされる言語ごとに、厳密に１つのＳＩＳＳｔｒｉｎｇが存在しなければならない。
【０１２５】
ＳＩＳＰｒｏｐｅｒｔｉｅｓ
ＳＩＳＰｒｏｐｅｒｔｉｅｓブロックは、ＳＩＳＸパッケージのプロパティを含む。
SISProperties          Length
Properties             SISArray<SISProperty>
【０１２６】
ＳＩＳＰｒｏｐｅｒｔｙ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸパッケージに関連するキーと値（バリュー）とのペアであるプロパティを含む。
【０１２７】
SISProperty            Length
Key                    TInt32                 4 bytes
Value                  TInt32                 4 bytes
【０１２８】
ＳＩＳＬｏｇｏ
このＳＩＳＦｉｅｌｄは、インストール処理の間に表示されるロゴを含むことができる。
SISLogo                Length
Logo File              SISFileDescription
【０１２９】
Ｌｏｇｏ  Ｆｉｌｅ
このフィールドは、インストールの開始時に表示されるロゴファイルに関するＳＩＳＦｉｌｅＤｅｓｃｒｉｐｔｉｏｎを含む。ＳＩＳＦｉｌｅＤｅｓｃｒｉｐｔｉｏｎのＭＩＭＥタイプフィールドは、ロゴが何のフォーマットであるかを判断するために使用される。ＳＩＳＦｉｌｅＤｅｓｃｒｉｐｔｉｏｎのターゲットフィールドが空の文字列でない場合、ロゴもデバイスにインストールされる。
【０１３０】
ＳＩＳＦｉｌｅＤｅｓｃｒｉｐｔｉｏｎ
このＳＩＳＦｉｅｌｄは、ＳＩＳＤａｔａセクションに格納されているファイルに関する情報を提供する。
【０１３１】
SISFileDescription     Length
Target                 SISString
MIME Type              SISString
Operation              TUint8                 1 byte
Operation Options      TUint32                4 bytes
Hash                   SISHash
Length                 TUint64                8 bytes
Uncompressed Length    TUint64                8 bytes
File Index             TUint32                4 bytes
【０１３２】
Ｔａｒｇｅｔ
このフィールドは、ファイルのインストール先の場所である。これは、ファイルソフトウェアをデバイスへ実際にコピーしようとする指示のためにのみ使用される。これは、ファイルがインストールされないことを示す空の文字列でもよく、例えば、ファイルを実際にデバイスへインストールするのではなく、ファイルを実行したり、ロゴとして表示したりすることが要求される場合に該当する。
【０１３３】
ＭＩＭＥ  Ｔｙｐｅ
このフィールドは、記載されているファイルのＭＩＭＥタイプである。これは、ＭＩＭＥタイプによってファイルを実行する時、およびインストールの間に画像を表示する時に使用する画像復号器（イメージデコーダ）のタイプを選択するために、使用される。
【０１３４】
Ｏｐｅｒａｔｉｏｎ
このフィールドは、インストール中にファイルをどのように処理するかを示すために使用される。
enum TSISFileOperation
{
EOpInstall = 1,  //ファイルをインストール
EOpRun     = 2,  //ファイルを実行
EOpText    = 4   //ファイルをテキストとして表示
};
【０１３５】
Ｏｐｅｒａｔｉｏｎ  Ｏｐｔｉｏｎｓ
このフィールドは、インストール中にどのオプションをファイルの処理に適用可能であるかを示す。実行される動作は、どのオプションが有効であるかを決定する。
【０１３６】
Ｏｐｔｉｏｎｓ  Ｖａｌｉｄ  ｆｏｒ  ＥＯｐＩｎｓｔａｌｌ
enum TInstInstallOption
{
EInstVerifyOnRestore         = 1<<15   //リストア時の検証
};
【０１３７】
ＥＩｎｓｔＯｐｔｉｏｎＲｅａｄＯｎｌｙ
このオプションは、セキュアなバックアップおよびリストア（復元）のために使用され、このファイルがインストール後に書かれたということを示すので、その内容は、インストールされたときと同じままである。これにより、バックアップからファイルを復元する際にハッシュをチェックすれば、検証を行うことが可能となる。
【０１３８】
Ｏｐｔｉｏｎｓ  Ｖａｌｉｄ  ｆｏｒ  ＥＯｐＲｕｎ
enum TInstFileRunOption
{
EInstFileRunOptionInstall    = 1<<1, //インストール時に実行
EInstFileRunOptionUninstall  = 1<<2, //アンインストール時に実行
EInstFileRunOptionByMimeType = 1<<3, //ＭＩＭＥタイプを使用して実行
EInstFileRunOptionWaitEnd    = 1<<4, //続行前に終了を待つ
};
【０１３９】
ＥＩｎｓｔＦｉｌｅＲｕｎＯｐｔｉｏｎＩｎｓｔａｌｌ
このオプションは、指定されたファイルがインストール時に実行されることを示す。ターゲットフィールドが有効であれば、このファイルはターゲットフィールドが示す場所へインストールされ、有効でなければ、このファイルはデバイスへコピーされない。
【０１４０】
ＥＩｎｓｔＦｉｌｅＲｕｎＯｐｔｉｏｎＵｎｉｎｓｔａｌｌ
このオプションは、指定されたファイルがアンインストール時に実行されることを示す。インストールソフトウェアはこのファイルをデバイスへインストールすることによりパッケージがアンインストールされる時に実行可能にするので、ターゲットフィールドは有効でなければならない。
【０１４１】
ＥＩｎｓｔＦｉｌｅＲｕｎＯｐｔｉｏｎＢｙＭｉｍｅＴｙｐｅ
このオプションは、ＭＩＭＥタイプに基づき、インストール時またはアンインストール時にファイルが実行されることを示す。このオプションが設定されていない場合、指定されたファイルは実行可能なもの（実行ファイル）として実行される。
【０１４２】
ＥＩｎｓｔＦｉｌｅＲｕｎＯｐｔｉｏｎＷａｉｔＥｎｄ
このオプションが設定されている場合、インストールソフトウェアは、続行する前に、実行中のアプリケーションが終了するまで待つ。しかしながら、インストールソフトウェアは、適切なタイムアウトを実装すべきである。さもなければ、悪意のある、または不正なアプリケーションが永遠に動作することが可能であり、デバイスを再起動しなければインストールソフトウェアへのあらゆる他のアクセスを妨げることが可能である。このオプションが設定されていない場合、インストールソフトウェアは、続行する前に、実行中のアプリケーションが終了することを待たない。ひとたびインストールソフトウェアがインストールまたはアンインストールを終了すると、依然として実行中のアプリケーションは終了させられる。
【０１４３】
Ｏｐｔｉｏｎｓ  Ｖａｌｉｄ  ｆｏｒ  ＥＯｐＴｅｘｔ
enum TInstTextOption
EInstFileTextOptionContinue  = 1<<9,  //継続ボタン
EInstFileTextOptionSkipIfNo  = 1<<10, //「はい／いいえ」−ユーザが「いいえ」を選択した場合次のファイルへスキップ
EInstFileTextOptionAbortIfNo = 1<<11, //「はい／いいえ」−ユーザが「いいえ」を選択した場合インストールを中止
EInstFileTextOptionExitIfNo  = 1<<12, //「はい／いいえ」−ユーザが「いいえ」を選択した場合アンインストール
};
【０１４４】
ＥＩｎｓｔＦｉｌｅＴｅｘｔＯｐｔｉｏｎＣｏｎｔｉｎｕｅ
このオプションは、インストーラが、インストールを継続するためのボタンと共にテキストを表示しなければならないということを示す。ダイアログが消された後に、インストールは継続する。
【０１４５】
ＥＩｎｓｔＦｉｌｅＴｅｘｔＯｐｔｉｏｎＳｋｉｐＩｆＮｏ
このオプションは、インストーラが、１つは「はい(yes)」でもう１つは「いいえ(no)」とラベル付けされた２つのボタンと共にテキストを表示しなければならないということを示す。「いいえ」ボタンが選択された場合、インストーラは、現在処理中のファイルをスキップすることになり、そうでない場合、インストールは通常通り継続する。
【０１４６】
ＥＩｎｓｔＦｉｌｅＴｅｘｔＯｐｔｉｏｎＡｂｏｒｔＩｆＮｏ
このオプションは、インストーラが、１つは「はい(yes)」でもう１つは「いいえ(no)」とラベル付けされた２つのボタンと共にテキストを表示しなければならないということを示す。「いいえ」ボタンが選択された場合、インストーラは、インストールを中止することになり、そうでない場合、インストールは通常通り継続する。インストーラは、インストールが中止されたことを示すダイアログを表示することになる。
【０１４７】
ＥＩｎｓｔＦｉｌｅＴｅｘｔＯｐｔｉｏｎＥｘｉｔＩｆＮｏ
このオプションは、インストーラが、１つは「はい(yes)」でもう１つは「いいえ(no)」とラベル付けされた２つのボタンと共にテキストを表示しなければならないということを示す。「いいえ」ボタンが選択された場合、インストーラは、インストールを中止することになり、そうでない場合、インストールは通常通り継続する。このオプションとＥＩｎｓｔＦｉｌｅＴｅｘｔＯｐｔｉｏｎＡｂｏｒｔＩｆＮｏオプションとの唯一の違いは、インストーラが、インストールが中止されたことを示すダイアログを表示しないことである。
【０１４８】
Ｈａｓｈ
このフィールドは、圧縮されていないファイルのデータのハッシュを含む。
【０１４９】
Ｌｅｎｇｔｈ
このフィールドは、ＳＩＳＦｉｌｅＤｅｓｃｒｉｐｔｉｏｎがＳＩＳＸファイル自体の中で参照している圧縮ファイルのデータの長さを含む。
【０１５０】
Ｕｎｃｏｍｐｒｅｓｓｅｄ  Ｌｅｎｇｔｈ
このフィールドは、解凍後にＳＩＳＦｉｌｅＤｅｓｃｒｉｐｔｉｏｎが参照する、圧縮ファイルのデータの長さを含む。
【０１５１】
Ｆｉｌｅ  Ｉｎｄｅｘ
このフィールドは、ＳＩＳＤａｔａＵｎｉｔのＤａｔａ  Ｕｎｉｔフィールドに実際のファイルデータを含む、ＳＩＳＦｉｌｅＤａｔａＳＩＳＦｉｅｌｄのインデックスである。
【０１５２】
ＳＩＳＨａｓｈ
このＳＩＳＦｉｅｌｄは、ハッシュを示す。
SISHash                Length
Hash Algorithm         TUint8                 1 byte
Hash Data
【０１５３】
Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ
このフィールドは、ハッシュを生成するために使用されるアルゴリズムを示す。サポートされるであろう一般的なハッシュアルゴリズムは、
enum TSISHashAlgorithm
{
ESISHashAlgSHA1 = 1,  //ＳＨＡ−１ハッシュアルゴリズム
}
である。
【０１５４】
Ｈａｓｈ  Ｄａｔａ
このフィールドは、ハッシュのロー（ＲＡＷ）データを含む。データ長は、使用されるハッシュアルゴリズムに依存する。
【０１５５】
ＳＩＳＸファイルのフォーマットは、複数の証明書チェーンを使用した署名をサポートするように設計されている。複数の署名はまた、各チェーンに対してもサポートされており、署名ごとに異なるアルゴリズムを使用することが可能である。チェーンの配置（レイアウト）を図４に示す。証明書チェーン（Ｃｅｒｔｉｆｉｃａｔｅ  Ｃｈａｉｎ）が有効であると見なすためには、インストールソフトウェアに対してこれらの署名のうちの１つだけが認証されればよい。
【０１５６】
ＳＩＳＳｉｇｎａｔｕｒｅｓ
このＳＩＳＦｉｅｌｄは、複数の署名、およびこれらの署名を認証するために必要とされる証明書チェーンを含む。
SISSignatures          Length
SignaturesSISArray<SISSignatureCertificateChain>
【０１５７】
ＳＩＳＳｉｇｎａｔｕｒｅＣｅｒｔｉｆｉｃａｔｅＣｈａｉｎ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルに署名するために使用される署名、および署名を認証するために必要とされる証明書チェーンを含む。
【０１５８】
SISSignatureCertificateChain     Length
Signatures                       SISArray<SISSignature>
Certificate Chain                SISCertificateChain
【０１５９】
Ｓｉｇｎａｔｕｒｅｓ
このフィールドは、署名の配列を含む。
【０１６０】
Ｃｅｒｔｉｆｉｃａｔｅ  Ｃｈａｉｎ
このフィールドは、署名を認証するために必要とされる証明書チェーンを含む。
【０１６１】
ＳＩＳＣｅｒｔｉｆｉｃａｔｅＣｈａｉｎ
このＳＩＳＦｉｅｌｄは、ＡＳＮ．１でエンコードされたＸ５０９証明書チェーンとしての証明書データを含む。
SISCertificateChain              Length
Certificate Data
【０１６２】
Ｃｅｒｔｉｆｉｃａｔｅ  Ｃｈａｉｎ
このフィールドは、ＡＳＮ．１でエンコードされたＸ５０９証明書チェーンとしての証明書データを含む。
【０１６３】
ＳＩＳＳｉｇｎａｔｕｒｅ
このＳＩＳＦｉｅｌｄは、署名と、署名を生成するために使用される署名アルゴリズムとハッシュアルゴリズムとの識別情報とを含む。
SISSignature                     Length
Signature Algorithm
Signature Data
【０１６４】
Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ
これは、署名のために使用されるアルゴリズムと、データをハッシュするために使用されるアルゴリズムとを含み、署名が認証されることを可能にする。
【０１６５】
Ｓｉｇｎａｔｕｒｅ  Ｄａｔａ
このフィールドは、署名データを含む。
【０１６６】
ＳＩＳＳｉｇｎａｔｕｒｅＡｌｇｏｒｉｔｈｍ
このＳＩＳＦｉｅｌｄは、署名と、署名を生成するために使用されるハッシュアルゴリズムとに関する詳細を含む。
SISSignatureAlgorithm            Length
Algorithm Identifier             SISString
【０１６７】
Ａｌｇｏｒｉｔｈｍ
これは、「．」という文字によって区切られた文字列であり、使用されているアルゴリズムのＯｂｊｅｃｔ  Ｉｄｅｎｔｉｆｉｅｒを示す。典型的なアルゴリズムは、
１．  "1.2.840.113549.1.1.5" -SHA-1 with RSA signature
２．  "1.2.840.10040.4.3" -SHA-1 with DSA signature
である。
【０１６８】
ＳＩＳＸファイルは、テキストによるパッケージの記述から生成される。この記述は、`if', `then', `else'構文を使用して、インストール時にどのファイルをインストールするかを決定するという、単純なフォーマットをサポートする。これは、以下のＳＩＳＦｉｅｌｄを使用して、ＳＩＳＸパッケージにエンコードされる。
【０１６９】
ＳＩＳＩｆ
このＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルを生成するために使用されるパッケージファイルにおいて`if'命令文と条件とを示す。
【０１７０】
SISIf                            Length
Expression                       SISExpression
Install Block                    SISInstallBlock
Else ifs                         SISArray<SISElseIf>
【０１７１】
Ｅｘｐｒｅｓｓｉｏｎ
このフィールドは、インストール中にこのＳＩＳＦｉｅｌｄを処理する際に評価される式(expression)を含む。
【０１７２】
Ｉｎｓｔａｌｌ  Ｂｌｏｃｋ
このフィールドは、式が真(true)であると判断された場合に再帰的に処理されるＳＩＳＩｎｓｔａｌｌＢｌｏｃｋを含む。
【０１７３】
Ｅｌｓｅ  ｉｆｓ
式が偽(false)であると判断された場合、これらのＳＩＳＥｌｓｅＩｆ  ＳＩＳＦｉｅｌｄそれぞれが順に評価される。複数の式のうち１つの式が真であると判断された場合、ＳＩＳＩｎｓｔａｌｌＢｌｏｃｋが再帰的に処理され、配列中のＳＩＳＥｌｓｅＩｆブロックはそれ以上チェックされない。この配列中では、ＳＩＳＥｌｓｅＩｆ  ＳＩＳＦｉｅｌｄの数が０である場合もあるし、それより多い場合もある。ＭａｋｅＳＩＳは、常に真であると評価される条件を持つＳＩＳＥｌｓｅＩｆ  ＳＩＳＦｉｅｌｄを追加することにより、パッケージ中のelse命令文をシミュレートすることができる。
【０１７４】
ＳＩＳＥｌｓｅＩｆ
このＳＩＳＦｉｅｌｄは、パッケージファイル中の'if'命令文の`else if'パートを示す。
【０１７５】
SISElseIf                        Length
Expression                       SISExpression
Install Block                    SISInstallBlock
【０１７６】
Ｅｘｐｒｅｓｓｉｏｎ
このフィールドは、ＳＩＳＥｌｓｅＩｆ  ＳＩＳＦｉｅｌｄを処理する間にインストールソフトウェアによって評価される。
【０１７７】
Ｉｎｓｔａｌｌ  Ｂｌｏｃｋ
Ｅｘｐｒｅｓｓｉｏｎフィールドが真であると評価された場合、このＳＩＳＩｎｓｔａｌｌＢｌｏｃｋ  ＳＩＳＦｉｅｌｄは、インストールソフトウェアによって再帰的に処理される。
【０１７８】
ＳＩＳＩｎｓｔａｌｌＢｌｏｃｋ
このＳＩＳＦｉｅｌｄは、インストールされる必要のあるファイルのリストと、埋め込まれたＳＩＳＸファイルのリストと、このインストールブロック内にあるＳＩＳＩｆブロックのリストとを含む。これらの各配列は、エントリの数が０でもよいし、それよりも多くてもよい。
【０１７９】
SISInstallBlock                  Length
Files                            SISArray<SISFileDescription>
Embedded SISX Files              SISArray<SISController>
If Blocks                        SISArray<SISIf>
【０１８０】
Ｆｉｌｅｓ
このフィールドは、ＳＩＳＩｎｓｔａｌｌＢｌｏｃｋで処理される必要のあるファイルのリストを含む。最も一般的な実行する動作は、これらのファイルをインストールすることであろうが、オプションによっては、ユーザに表示されたり、実行されたりする場合もある。この配列中では、ＳＩＳＦｉｌｅＤｅｓｃｒｉｐｔｉｏｎ  ＳＩＳＦｉｅｌｄの数が０でもよいし、それよりも多くてもよい。
【０１８１】
Ｅｍｂｅｄｄｅｄ  ＳＩＳＸ  Ｆｉｌｅｓ
このフィールドは、埋め込まれたＳＩＳＸファイルのリストを含み、埋め込まれたＳＩＳＸファイルは、ＳＩＳＸファイルのメタデータ中に格納されたＳＩＳＣｏｎｔｒｏｌｌｅｒによって表現され、且つＳＩＳＩｎｓｔａｌｌＢｌｏｃｋで処理される必要のあるものである。この配列中では、ＳＩＳＣｏｎｔｒｏｌｌｅｒ  ＳＩＳＦｉｅｌｄの数が０でもよいし、それよりも多くてもよい。
【０１８２】
Ｉｆ  Ｂｌｏｃｋｓ
このフィールドは、ＳＩＳＩｎｓｔａｌｌＢｌｏｃｋで処理される必要のある、ＳＩＳＩｆフィールドのリストを含む。インストールソフトウェアは、これらのＳＩＳＩｆブロックそれぞれの条件をチェックし、真であれば、再帰的にＳＩＳＩｆブロックを処理する。この配列中では、ＳＩＳＩｆ  ＳＩＳＦｉｅｌｄの数が０でもよいし、それよりも多くてもよい。
【０１８３】
ＳＩＳＥｘｐｒｅｓｓｉｏｎ
このＳＩＳＦｉｅｌｄは、式を示す。式は複数のパートに分解され、式全体はＳＩＳＥｘｐｒｅｓｓｉｏｎ  ＳＩＳＦｉｅｌｄのツリーとして表現される。
【０１８４】
SISExpression             Length
Operator                  TInt16              2 bytes
Left Expression           SISExpression
Right Expression          SISExpression
Integer Value             TInt32              2 bytes
String Value              SISString
【０１８５】
ＯｐｅｒａｔｏｒがＥＯｐＮｏｎｅである場合、ＳＩＳＦｉｅｌｄは他のデータを含まないこととなり、次のような形式になる。
SISExpression             Length
Operator                  TInt16 = EOpNone
これは、式の終了を許可するためのものである。
【０１８６】
Ｏｐｅｒａｔｏｒ
このフィールドは、式に対する演算子(operator)を示し、それゆえ、他のフィールドのどれが有効であるかを判断する。
enum TOperator
EOpNone = 0,
//バイナリ型の演算子
EBinOpEqual = 1,      //等しい
EBinOpNotEqual,       //等しくない
EBinOpGreaterThan,    //より大きい
EBinOpLessThan,       //より小さい
EBinOpGreaterOrEqual, //より大きい、または等しい
EBinOpLessOrEqual,    //より小さい、または等しい
//論理演算子
ELogOpAnd,            //論理積
ELogOpOr,             //論理和
//単項演算子
EUnaryOpNot,          //ＮＯＴ（）−論理否定
//関数
EFuncExists,          //ＥＸＩＳＴＳ（）−ファイルが存在するか否かチェック
EFuncAppProperties,   //ＡＰＰＰＲＯＰ（）−アプリケーションのプロパティを問い合わせ
//プリミティブ型
EPrimTypeString,      //この式は文字列の値を保持する
EPrimTypeOption,      //この式は文字列によって識別されるオプションである
EPrimTypeVariable,    //この式は文字列によって識別される変数である
EPrimTypeNumber       //この式は数字の値を保持する
};
【０１８７】
Ｌｅｆｔ  Ｅｘｐｒｅｓｓｉｏｎ
これは、式の左側のサブパートである。このＳＩＳＥｘｐｒｅｓｓｉｏｎの演算子が、プリミティブ型であるＥＰｒｉｍＴｙｐｅＳｔｒｉｎｇ、ＥＰｒｉｍＴｙｐｅＯｐｔｉｏｎ、ＥＰｒｉｍＴｙｐｅＶａｒｉａｂｌｅ、ＥＰｒｉｍＴｙｐｅＮｕｍｂｅｒ、或いは関数であるＥＦｕｎｃＥｘｉｓｔｓ、ＥＦｕｎｃＡｐｐＰｒｏｐｅｒｔｉｅｓのいずれでもない場合に、Ｌｅｆｔ  Ｅｘｐｒｅｓｓｉｏｎは有効となる、すなわち、含まれているＳＩＳＥｘｐｒｅｓｓｉｏｎがＥＯｐＮｏｎｅという演算子を持たないことになる。
【０１８８】
Ｒｉｇｈｔ  Ｅｘｐｒｅｓｓｉｏｎ
これは、式の右側のサブパートである。このＳＩＳＥｘｐｒｅｓｓｉｏｎの演算子が、バイナリ型の演算子であるＥＢｉｎＯｐＥｑｕａｌ、ＥＢｉｎＯｐＮｏｔＥｑｕａｌ、ＥＢｉｎＯｐＧｒｅａｔｅｒＴｈａｎ、ＥＢｉｎＯｐＬｅｓｓＴｈａｎ、ＥＢｉｎＯｐＬｅｓｓＯｒＥｑｕａｌ、ＥＢｉｎＯｐＧｒｅａｔｅｒＯｒＥｑｕａｌ、或いは論理演算子であるＥＬｏｇＯｐＡｎｄおよびＥＬｏｇＯｐＯｒのいずれかである場合に、Ｒｉｇｈｔ  Ｅｘｐｒｅｓｓｉｏｎは有効となる、すなわち、含まれているＳＩＳＥｘｐｒｅｓｓｉｏｎがＥＯｐＮｏｎｅという演算子を持たないことになる。
【０１８９】
Ｉｎｔｅｇｅｒ  Ｖａｌｕｅ
式のこのパートは、整数値を含むことができる。これは、式の型がＥＰｒｉｍＴｙｐｅＮｕｍｂｅｒまたはＥＦｕｎｃＡｐｐＰｒｏｐｅｒｔｉｅｓである場合にのみ有効となる。
【０１９０】
Ｓｔｒｉｎｇ  Ｖａｌｕｅ
式のこのパートは、文字列を含むことができる。これは、式の型がＥＰｒｉｍＴｙｐｅＳｔｒｉｎｇ、ＥＰｒｉｍＴｙｐｅＯｐｔｉｏｎ、ＥＰｒｉｍＴｙｐｅＶａｒｉａｂｌｅ、またはＥＦｕｎｃＥｘｉｓｔｓである場合にのみ有効となる。
【０１９１】
上述のように、ＳＩＳＸファイルは２つのパートとして提供される。すなわち、ＳＩＳＳｉｇｎｅｄＣｏｎｔｒｏｌｌｅｒパートおよびＳＩＳＤａｔａパートである。上の説明は、ＳＩＳＳｉｇｎｅｄＣｏｎｔｒｏｌｌｅｒパートに含まれるフィールドを説明するものである。ＳＩＳＤａｔａパートを次に説明する。
【０１９２】
ＳＩＳＸファイルのＳＩＳＤａｔａパートは、インストール処理の間に使用される実際のファイルデータを含む。これはデータユニットの配列から成り、それぞれのデータユニットは１つのＳＩＳＣｏｎｔｒｏｌｌｅｒからのファイルを含む。埋め込み型のＳＩＳＸファイルの場合、複数のデータユニットが存在し得る。各ＳＩＳＣｏｎｔｒｏｌｌｅｒは、ＳＩＳＤａｔａ  ＳＩＳＦｉｅｌｄ中のＤａｔａ  Ｕｎｉｔ配列に対するインデックスを含むフィールドを有する。このフィールドは、ＳＩＳＣｏｎｔｒｏｌｌｅｒによってインストールされるファイルを含む。これにより、埋め込み型のＳＩＳＸファイルを追加したり削除したりすることが容易になる。埋め込み型のＳＩＳＸファイルを伴うＳＩＳＸファイルのフォーマットの一例を図５に示す。ＳＩＳＤａｔａパートはまた、以下のように、多数のＳＩＳＦｉｅｌｄも含む。
【０１９３】
ＳＩＳＤａｔａ
ＳＩＳＤａｔａ  ＳＩＳＦｉｅｌｄは、ＳＩＳＸファイルのための全ファイルデータを含む。
【０１９４】
SISData                   Length
Data Units                SISArray<SISDataUnit>
【０１９５】
Ｄａｔａ  Ｕｎｉｔｓ
それぞれのＳＩＳＣｏｎｔｒｏｌｌｅｒに対し、ＳＩＳＸファイルのメタデータ中に１つのデータユニットが存在する。２以上のＳＩＳＣｏｎｔｒｏｌｌｅｒが存在してもよいので、埋め込まれたＳＩＳＸファイルが存在する場合、２以上のデータユニットが存在することになる。
【０１９６】
ＳＩＳＤａｔａＵｎｉｔ
ＳＩＳＤａｔａＵｎｉｔ  ＳＩＳＦｉｅｌｄは、ＳＩＳＣｏｎｔｒｏｌｌｅｒのための全ファイルデータを含む。
SISDataUnit               Length
File Data                 SISArray<SISCompressed<SISFileData>>
【０１９７】
Ｆｉｌｅ  Ｄａｔａ
このフィールドは、圧縮されている可能性のあるＳＩＳＦｉｌｅＤａｔａ  ＳＩＳＦｉｅｌｄの配列である。ＳＩＳＣｏｎｔｒｏｌｌｅｒがインストール可能なファイルごとに、配列中に１つのエントリが存在する。
【０１９８】
ＳＩＳＦｉｌｅＤａｔａ
ＳＩＳＦｉｌｅＤａｔａ  ＳＩＳＦｉｅｌｄは、ファイルに関する実際のデータを含む。
【０１９９】
SISFileData               Length
Data Length               TUint64             8 bytes
File Data                                     Data Length
【０２００】
Ｄａｔａ  Ｌｅｎｇｔｈ
このフィールドは、圧縮されたデータの長さを含む。これは、ＳＩＳＦｉｌｅＤｅｓｃｒｉｐｔｉｏｎ中に存在する情報の複製であるが、便宜上存在する。
【０２０１】
Ｆｉｌｅ  Ｄａｔａ
このフィールドは、ファイルデータを含む。
【０２０２】
要約すると、本発明は、知られているソフトウェアインストールパッケージに以下の重要な利点をもたらすと考えられる。
・移動体のインストールが容易に達成でき、ＰＣを介したものよりもさらに便利なインストールを提供する。なぜなら、実質的にどこでも、且つケーブル無しで、インストールを実行可能だからである。
・標準的な圧縮されたパッケージとしてリムーバブルメディアにソフトウェアを提供するよりも、インストールが効率的で高速になる。なぜなら、いずれのファイルを解凍する際にも、電力、帯域、或いは時間が浪費されないからである。
・何らかのメモリ不足によるエラーが発生する可能性が激減するので、インストールがさらに信頼できるものとなる。
・標準的なパッケージからリムーバブルメディアにプリインストールされたソフトウェアを提供するよりも、インストールがセキュアになる。なぜなら、ソフトウェアの出自や信頼性に関するセキュリティチェックを無視する（バイパスする）ことがないからである。
・無線インターネットを介したインストールよりも、インストールが効率的、高速、且つ信頼できる。なぜなら、低速で時々途切れる可能性のある接続に依存しないからである。
【０２０３】
特定の実施形態を参照して本発明を説明してきたが、添付の請求の範囲によって規定されるように、本発明の範囲内に留まったまま、修正をもたらすことができるということが理解されよう。
【図面の簡単な説明】
【０２０４】
【図１】インストールプロセスおよびインストールファイルがそれぞれ２つの独立したフェーズに分割されている、ソフトウェアインストールプロセスを概略的に示す図である。
【図２】ファイル内のメタデータの最後に新しい署名および証明書のチェーンが挿入された、ソフトウェアインストールファイルのフォーマットを概略的に示す図である。
【図３】１つのソフトウェアインストールファイルを他のソフトウェアインストールファイルに挿入する方法を概略的に示す図である。
【図４】それぞれの証明書チェーンのためにサポートされた複数の署名を伴う複数の証明書チェーンを使用した署名をサポートするように設計された、ソフトウェアインストールファイルのフォーマットを概略的に示す図である。
【図５】他のものに埋め込まれた１つのデータファイルを有するソフトウェアインストールファイルを概略的に示す図である。
【図１】
2007535053.tif 000003
【図２】
2007535053.tif 000004
【図３】
2007535053.tif 000005
【図４】
2007535053.tif 000006
【図５】
2007535053.tif 000007
【国際調査報告】
2007535053.tif 000008
2007535053.tif 000009