Windows Installer その1

しばらくぶりの更新です。
MCP 試験 (MCPD EA へのアップグレード) 受けたり、年度末だったりで、時間が無かったというのを言い訳に…。

さて、今回は、あまりドキュメントが無いであろう Windows Installer ネタです。

まず、MSDN の Windows Installer ドキュメントは、ここ (http://msdn2.microsoft.com/en-us/library/aa372866.aspx) です。
初回ということで、すこし基本的なことを書いておきます。

Windows Installer は、クライアント/サーバー型のサービスプログラムということをご存じでしょうか。
サーバーの実体は、Local System アカウントとして実行されているサービスプログラムで、msiexec.exe という
プロセスになります。
Windows Installer 対応ファイルを実行する際に、サーバープロセスの msiexec.exe から、クライアントプロセス用に
msiexec.exe を起動して、対応ファイルを処理 (つまり、インストール) します。

代表的な対応ファイルには、以下のものがあります。

拡張子名 名称 内容
msi Windows Installer データベース ファイル インストーラーデータベースの本体です。MSI ファイルは、COM 構造化ストレージになっています。
mst Windows Installer トランスフォームファイル カスタマイズインストール実行を行うために、使用します。
msp Windows Installer パッチインストール ファイル

2 つのバージョンの MSI ファイルの差分のみを格納した MSI データベースファイルです。主に、アップデートの際に使用します。

msm Windows Installer マージモジュール ファイル 再利用/再頒布可能モジュールをパッケージングした MSI データベースファイルです。

さて、上記の中で MSI ファイルは、COM 構造化ストレージだということを書きました。
COM 構造化ストレージということは、概要情報ストリーム を必ず、持っていることになりますね。
MSI ファイルの"概要情報ストリーム"には、作成者、プラットフォーム、言語、製品コード、スキーマというような
情報が格納されています。

かなり、前置きが長くなりましたが、今回は、このスキーマについて書いておこうと思います。

…と、その前に、便利なツールの紹介をしておきます。
Microsoft のツールなのですが、Windows Installer ファイルの参照/変更ができる Orca というユティリティが
ありますので、ぜひ、ダウンロードしておくことをオススメします。

まずは、何か適当な MSI ファイルを Orca で開いてみてください。

orcaでMSIを開く

ここの スキーマ という部分に注目です。
Orca の画面上では、スキーマ と表示されていますが、MSI ファイルの中では、"Page Count Summary" プロパティと呼びます。
スキーマ番号は、その MSI データベースが動作することができる最低限の Windows Installer バージョンを指定します。
では、Windows Installer のスキーマバージョンがどうなっているかというと…

Windows Installer のバージョン スキーマ番号
4.0 400
3.1 301
3.0 300
2.0 200
1.1 110

上記画面では、スキーマは 400 になっていますので、Windows Installer 4.0 が最低限となり
Windows Vista 以降でないとインストールすることができないということがわかります。
つまり、Windows XP ( Windows Installer 3.1 ) では、起動することができません。
Windows Installer 3.1 のスキーマ番号が、310 ではなく、301 という点に注意が必要です。
なお、MSI ファイルのスキーマ情報と、インストール環境の Windows Installer のバージョンが不一致であると
このような画面が表示され、インストールは中止されてしまいます。

MSIスキーマ未対応

なお、Windows Vista/Windows Server 2008 に対応する MSI パッケージを作成する際には、
Windows Installer のバージョンは、3.1 を最低にしておくことをオススメします。
3.1 よりも低いスキーマバージョンを指定した場合には、インストールに失敗、もしくは、期待した動作にならないことが
ありますので、注意してくださいね。

MSI パッケージを作成する場合には、きちんと設計した スキーマバージョン にしましょう。

今回はこの辺にて。
少しの間、Windows Installer ネタが続くかもしれません。。。


そういえば、少し前になりますが、無限プチプチを買ってしまいました。

無限プチプチ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。