Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

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

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2007/03/02
 
対象OS
Windows 2000
Windows XP
Windows Server 2003
.MSIファイルはWindowsアプリケーションのインストール用のイメージ・ファイル形式である。この中には実行ファイルのほか、各種リソース、レジストリ設定、インストール・スクリプトなどが含まれている。
インストールされるファイルの内容や属性などを調査するために、.MSIファイルを解凍したいことがある。
.MSIファイルの中のファイルを取り出すには、msiexecで管理者用インストール・ポイントに展開させてみればよい。
 
解説

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

DLL Hellを解消する新しいWindows 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数秒で完了するだろう。

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

関連記事(Windows Server Insider)
DLL Hellを解消する新しいWindowsインストーラとアセンブリ(技術解説)
 
関連リンク
Waiting for msiexec.exe to Finish(Windows Installer開発者、Heath StewartのBlog)
Digital Signatures in Windows Installer(Windows Installer開発者、Heath StewartのBlog)
What's in a Patch(Windows Installer開発者、Heath StewartのBlog)
Inside the MSI file format(Windows Installer開発者、Rob MenschingのBlog)
 
この記事と関連性の高い別のWindows TIPS
.MSIファイルを解凍して中のファイルを取り出す(msix編)
volrestコマンドでシャドウ・コピーから以前のバージョンのファイルを取り出す
Windows Vista向け修正プログラムの内容を調査する
修正プログラムの内容を調査する
これだけは覚えておきたい、コマンド・プロンプトの使い方
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」

TechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH