TIPS:Windowsで.MSIファイルを解凍して内部のファイルを取り出す(msiexec編).MSIファイルはWindowsアプリケーションのインストール用のイメージファイル形式である。この中には実行ファイルの他、各種リソース、レジストリ設定、インストールスクリプトなどが含まれている。した内容を調べるには、.MSIファイルをmsiexecコマンドで解凍し、管理者用インストールポイントに展開させてみればよい。解説.MSIファイルは、Windowsアプリケーションや修正プログラムの配布などで使用される、インストール・イメージ用のファイル形式である。この中には、.EXE実行ファイルやDLL、リソース、レジストリや各種セットアップ情報などが含まれている。アプリケーションのインストーラ(セットアップ・プログラム)は、この.MSIファイルからファイルや設定情報を取り出し、システムにコピー/セットアップする。Installer)で行う。Installer」.MSIファイルは一般的にはセットアップ・プログラムが参照するものであり、ユーザーが直接操作するものではない(比較的小規模なプログラムやツールでは、.msiファイルの形で直接配布されていることもある)。場合によっては、システムにアプリケーションをインストールせずに、.MSIファイルの内容を確認したいことがある。インストールされるファイルの名前や種類、バージョン、内容などを確認したり、すでにインストールされているシステムなどと比較して、ファイルが破損したり不足したりしていないかを調べたりするためだ。InstallerのAPIを呼び出して行う必要があるが、(システムにインストールするのではなく)単に展開してファイルを取り出すだけならば、もう少し簡単な方法がある。本TIPSではこの方法について解説する。.MSIファイルは.ZIPや.CABのような単純な圧縮/アーカイブ・ファイルではなく、さまざまな設定情報も含む、一種のデータベース形式のファイルである。単一言語版のファイルだけではなく、複数の言語バージョンがまとめてパッケージ化されている場合や、既存ファイルに対する差分情報だけを含む場合もある(セキュリティ・パッチなど)。そのため、取り出したファイルが実際にインストールされる最終的なバイナリ・ファイルやフォルダ・ツリーとは異なっている場合があるので、その取り扱いには注意していただきたい。このコマンドに「/a」オプションを指定すると、インストール作業を実行せず、代わりにファイルを「管理者用インストールポイント」に展開するという動作を行う。管理者用インストールポイントとは、例えば共有のファイル・サーバ上に用意するフォルダで、ネットワーク上のユーザーはここからアプリケーションをインストールし、実行できる。具体的には、コマンド・プロンプトを開いて次のようなコマンドを実行する。/wait」を付けて、次のようにする。/qnここで、「setup.msi」は展開したい.msiファイルの名前、「\\svr\shr\prod1」はファイルを展開したいフォルダのパス指定の例である。展開先はローカル・ドライブ上でも構わないが、必ずフルパスで指定する必要がある。/wait」は、msiexec.exeの実行が完了するまで待つという指示である。msiexec.exeは起動するとすぐに別プロセスを起動して実際のインストール処理を実行するため、これがないと、ファイルの展開終了を待たずに、制御がすぐにコマンド・プロンプトへ戻ってきてしまう。大きな.MSIファイルの場合は、展開が完了する前に間違って操作してしまう危険性があるため、このオプションを指定するのがよい。「targetdir="〜"」は展開先のパスの指定(パス名中に空白文字を含まない場合は引用符は省略可能)、「/qn」は画面表示を一切行わないという指定である。「/qn」を指定しないと、(プログラムの作り方にもよるが)セットアップ・ウィザードの画面が表示され、[次へ]というボタンのクリックや、インストール先の指定などがユーザーに要求されてしまう。以上の操作によって.msiファイルが解凍され、管理者用インストールポイントにインストール用のファイル・イメージが展開される。展開だけなので、たいていの場合は数秒〜10数秒で完了するだろう。やって作成されたファイル群は、アプリケーションを(ローカルのコンピュータ上に)インストールした後のイメージではなく、単にファイルを展開して配置しただけなので、そのまま実行することはできない(簡単なツール類ならそのまま実行できる場合もあるが、基本的にはセットアップで使用するためのものである)。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。