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

.MSIファイルを解凍して中のファイルを取り出す(msix編)

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

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

 .MSIファイルは、Windowsアプリケーションや修正プログラムの配布などで使用される、インストール・イメージ用のファイル形式である。この中には、.EXE実行ファイルやDLL、リソース、レジストリや各種セットアップ情報などが含まれている。このファイルはインストーラによって利用されるが、場合によっては、プログラムをインストールせずに、その内容だけを確認したいことがある。どのようなファイルがインストールされるのか調べたり、すでにインストールされているプログラム・ファイルのバージョンと比較したりするためだ。

 TIPS「.MSIファイルを解凍して内部のファイルを取り出す(msiexec編)」では、Windows Installerの管理者ポイントへのインストール機能を利用して、.MSIファイルを解凍し、中に含まれているファイルを取り出す方法を解説した。ただしこの方法では中のファイルをそのまま取り出すのではなく、インストール・ポイントにファイルを展開するので、元の状態とは少し異なっている。

 これに対し、以下のBlogページで紹介されているmsix.exeというツールを利用すると、.MSIファイルの内容を展開して、中のファイルをそのまま取り出すことができる。

 このBlogページの末尾に「Attachment(s):」という添付ファイルへのリンク項目があるので、これをクリックしてmsix2.zipというファイルをダウンロードする。これは、Visual Studio用のC++のソースコードとプロジェクト・ファイル、バイナリ・ファイルである。ダウンロードしたmsix2.zipファイルをエクスプローラで開き、releaseフォルダの中にあるMsiX.exeというファイルを取り出し、Windowsのシステム・フォルダ(デフォルトではC:\Windows\system32)もしくは、どこか適当なフォルダへコピーしておく。

操作方法

 msix.exeはコマンド・プロンプト上で利用するツールであり、次のように使う。

msix <入力ファイル名> [/out <出力先フォルダ>]  [/ext]

 <入力ファイル名>には.MSIファイル(.MSIだけでなく、.MSMや.MSP、.PCPファイルも指定可能)のファイル名を指定する。

 デフォルトでは、カレント・フォルダにファイルが展開されるが、/outオプションを使うと、指定したフォルダにファイルを展開できる。ただし指定する出力先フォルダは、すでに存在するフォルダ名でなければならない(存在していないとmsix.exeの実行は失敗する)。

 また/extオプションを指定すると、展開したファイルのタイブに応じて、適切な拡張子を追加する。.MSIファイル中のファイルには拡張子が付いていない(ことが多い)ため、拡張子なしで展開させると、後でファイルの内容を確認するのが困難になる(どのような拡張子を付けるかは、インストール・ファイル中のデータベースなどに記録されていて、正規のインストール時に自動的に補完されるため、.MSIファイル中では単なるバイナリ・データ・ファイルとして保存されている)。/extオプションを使用すると、展開結果のファイルの内容を調べ、例えば.icoや.dll、.cab、.bmpなどの拡張子を自動的に補完する。

 例えばlogparser.msiという.MSIファイルを展開するには、次のようにする。

C:\WORK>mkdir logparser  …展開先フォルダを作成しておく

C:\WORK>msix LogParser.msi /out logparser /ext  …展開する
Extracting logparser\Binary.New.ico
Extracting logparser\Binary.Up.ico
Extracting logparser\Binary.info.ico
Extracting logparser\logprsr.cab.cab
Extracting logparser\Binary.dlgbmp.bmp
Extracting logparser\Binary.bannrbmp.bmp
Extracting logparser\Binary.completi.ico
Extracting logparser\Binary.custicon.ico
…(以下省略)…

 msiexecで展開した場合と結果が異なるが、msixは単に.MSIファイルを展開して中のファイルを取り出しているだけであり、.MSIファイル内の構造をほぼそのまま反映している。これに対してmsiexecでは、後でインストールに利用するための形式で(管理者用インストール・ポイントに)展開しているので、結果が異なっている。End of Article

関連記事(Windows Server Insider)
DLL Hellを解消する新しいWindowsインストーラとアセンブリ(技術解説)
 
関連リンク
Digital Signatures in Windows Installer(Windows Installer開発者、Heath StewartのBlog)
Patch Files Extractor(Windows Installer開発者、Heath StewartのBlog)
Waiting for msiexec.exe to Finish(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ファイルを解凍して内部のファイルを取り出す(msiexec編)
volrestコマンドでシャドウ・コピーから以前のバージョンのファイルを取り出す
これだけは覚えておきたい、コマンド・プロンプトの使い方
Windows Vista向け修正プログラムの内容を調査する
dirコマンドでファイル名の一覧を取得する
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」

TechTargetジャパン

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

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

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

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

@IT Sepcial
ソリューションFLASH