36.1 msilib -- Microsoft インストーラーファイルの読み書き

Windowsプラットフォームで利用できます。

バージョン 2.5 で 新たに追加 された仕様です。

msilib モジュールは Microdoft インストーラー(.msi)の 作成を支援します。このファイルはしばしば埋め込まれた「キャビネット」ファイル (.cab) を含むので、CAB ファイル作成用の API も暴露します。現在の ところ .cab ファイルの読み出しはサポートしていませんが、.msi データベースの読み出しサポートは可能です。

このパッケージの目的は .msi ファイルにある全てのテーブルへの完全な アクセスの提供なので、提供されているものは正直に言って低レベルな API です。 このパッケージの二つの主要な応用は distutilsbdist_msi コマンドと、Python インストーラーパッケージそれ自体(と言いつつ現在は別バージョン の msilib を使っているのですが)です。

パッケージの内容は大きく四つのパートに分けられます。 低レベル CAB ルーチン、低レベル MSI ルーチン、少し高レベルの MSI ルーチン、 標準的なテーブル構造、の四つです。

FCICreate( cabname, files)
新しい CAB ファイルを cabname という名前で作ります。 files はタプルのリストで、それぞれのタプルがディスク上のファイル名と CAB ファイルで付けられるファイル名とからなるものでなければなりません。

ファイルはリストに現れた順番で CAB ファイルに追加されます。全てのファイルは MSZIP 圧縮アルゴリズムを使って一つの CAB ファイルに追加されます。

MSI 作成の様々なステップに対する Python コールバックは現在暴露されていません。

UUIDCreate( )
新しい一意識別子の文字列表現を返します。この関数は Windows API の関数 UuidCreateUuidToString をラップしたものです。

OpenDatabase( path, persist)
MsiOpenDatabase を呼び出して新しいデータベースオブジェクトを返します。 path は MSI ファイルのファイル名です。 persist は五つの定数 MSIDBOPEN_CREATEDIRECT, MSIDBOPEN_CREATE, MSIDBOPEN_DIRECT, MSIDBOPEN_READONLY, MSIDBOPEN_TRANSACT のどれか一つで、 フラグ MSIDBOPEN_PATCHFILE を含めても構いません。 これらのフラグの意味は Microsoft のドキュメントを参照してください。 フラグに依って既存のデータベースを開いたり新しいのを作ったりします。

CreateRecord( count)
MSICreateRecord を呼び出して新しいレコードオブジェクトを返します。 count はレコードのフィールドの数です。

init_database( name, schema, ProductName, ProductCode, ProductVersion, Manufacturer)
name という名前の新しいデータベースを作り、 schema で初期化し、 プロパティ ProductName, ProductCode, ProductVersion, Manufacturer をセットして、 返します

schematables_Validation_records という属性を もったモジュールオブジェクトでなければなりません。典型的には、msilib.schema を使うべきです。

データベースはこの関数から返された時点でスキーマとバリデーションレコードだけが 収められています。

add_data( database, records)
全ての recordsdatabase に追加します。 records はタプルのリストで、それぞれのタプルにはテーブルのスキーマに従った レコードの全てのフィールドを含んでいるものでなければなりません。オプションの フィールドには None を渡すことができます。

フィールドの値には、整数・長整数・文字列・Binary クラスのインスタンスが使えます。

クラス Binary( filename)
Binary テーブル中のエントリーを表わします。 add_data を使ってこのクラスのオブジェクトを挿入する ときには filename という名前のファイルをテーブルに読み込みます。

add_tables( database, module)
module の全てのテーブルの内容を database に追加します。 moduletables という内容が追加されるべき全てのテーブルの リストと、テーブルごとに一つある実際の内容を持っている属性とを含んで いなければなりません。

この関数は典型的にシーケンステーブルをインストールするのに使われます。

add_stream( database, name, path)
database_Stream テーブルに、ファイル pathname というストリーム名で追加します。

gen_uuid( )
新しい UUID を、 MSI が通常要求する形式(すなわち、中括弧に入れ、16進数は 大文字)で返します。

参考:

FCICreateFile
UuidCreate
UuidToString



Subsections
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。