Windowsで.MSIファイルを解凍して内部のファイルを取り出す(msiexec編)Tech TIPS

.MSIファイルはWindowsアプリケーションのインストール用のイメージファイル形式である。この中には実行ファイルの他、各種リソース、レジストリ設定、インストールスクリプトなどが含まれている。こうした内容を調べるには、.MSIファイルをmsiexecコマンドで解凍し、管理者用インストールポイントに展開させてみればよい。

» 2007年03月02日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
Tech TIPS
Windows Server Insider


「Tech TIPS」のインデックス

連載目次

対象OS:Windows 2000/Windows XP/Windows Server 2003



解説

 .MSIファイルは、Windowsアプリケーションや修正プログラムの配布などで使用される、インストール・イメージ用のファイル形式である。この中には、.EXE実行ファイルやDLL、リソース、レジストリや各種セットアップ情報などが含まれている。アプリケーションのインストーラ(セットアップ・プログラム)は、この.MSIファイルからファイルや設定情報を取り出し、システムにコピー/セットアップする。.MSIファイルの作成はWindows SDKに含まれるWindows Installer(旧称Microsoft Installer)で行う。

 .MSIファイルは一般的にはセットアップ・プログラムが参照するものであり、ユーザーが直接操作するものではない(比較的小規模なプログラムやツールでは、.msiファイルの形で直接配布されていることもある)。だが場合によっては、システムにアプリケーションをインストールせずに、.MSIファイルの内容を確認したいことがある。インストールされるファイルの名前や種類、バージョン、内容などを確認したり、すでにインストールされているシステムなどと比較して、ファイルが破損したり不足したりしていないかを調べたりするためだ。

 .MSIファイルを操作するには、本来ならばこのWindows InstallerのAPIを呼び出して行う必要があるが、(システムにインストールするのではなく)単に展開してファイルを取り出すだけならば、もう少し簡単な方法がある。本TIPSではこの方法について解説する。ただし.MSIファイルは.ZIPや.CABのような単純な圧縮/アーカイブ・ファイルではなく、さまざまな設定情報も含む、一種のデータベース形式のファイルである。また単一言語版のファイルだけではなく、複数の言語バージョンがまとめてパッケージ化されている場合や、既存ファイルに対する差分情報だけを含む場合もある(セキュリティ・パッチなど)。そのため、取り出したファイルが実際にインストールされる最終的なバイナリ・ファイルやフォルダ・ツリーとは異なっている場合があるので、その取り扱いには注意していただきたい。

操作方法

●msiexeの管理者インストールポイントを利用してファイルを展開する

 .msiファイルの処理(展開やシステムへのインストール)は、実際にはWindows Installerに含まれるmsiexec.exeというファイルが行う(ヘルプはmsiexec /?で表示)。このコマンドに「/a」オプションを指定すると、インストール作業を実行せず、代わりにファイルを「管理者用インストールポイント」に展開するという動作を行う。管理者用インストールポイントとは、例えば共有のファイル・サーバ上に用意するフォルダで、ネットワーク上のユーザーはここからアプリケーションをインストールし、実行できる。具体的には、コマンド・プロンプトを開いて次のようなコマンドを実行する。

msiexec /a setup.msi targetdir="\\svr\shr\prod1" /qn



 もしくは先頭に「start /wait」を付けて、次のようにする。

start /wait msiexec /a setup.msi targetdir="\\svr\shr\prod1" /qn



 ここで、「setup.msi」は展開したい.msiファイルの名前、「\\svr\shr\prod1」はファイルを展開したいフォルダのパス指定の例である。展開先はローカル・ドライブ上でも構わないが、必ずフルパスで指定する必要がある。

 先頭の「start /wait」は、msiexec.exeの実行が完了するまで待つという指示である。msiexec.exeは起動するとすぐに別プロセスを起動して実際のインストール処理を実行するため、これがないと、ファイルの展開終了を待たずに、制御がすぐにコマンド・プロンプトへ戻ってきてしまう。大きな.MSIファイルの場合は、展開が完了する前に間違って操作してしまう危険性があるため、このオプションを指定するのがよい。

 「targetdir=""」は展開先のパスの指定(パス名中に空白文字を含まない場合は引用符は省略可能)、「/qn」は画面表示を一切行わないという指定である。「/qn」を指定しないと、(プログラムの作り方にもよるが)セットアップ・ウィザードの画面が表示され、[次へ]というボタンのクリックや、インストール先の指定などがユーザーに要求されてしまう。


 以上の操作によって.msiファイルが解凍され、管理者用インストールポイントにインストール用のファイル・イメージが展開される。展開だけなので、たいていの場合は数秒〜10数秒で完了するだろう。

 ただしこうやって作成されたファイル群は、アプリケーションを(ローカルのコンピュータ上に)インストールした後のイメージではなく、単にファイルを展開して配置しただけなので、そのまま実行することはできない(簡単なツール類ならそのまま実行できる場合もあるが、基本的にはセットアップで使用するためのものである)。

■関連リンク


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。