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」

@IT Special

- PR -

TechTargetジャパン

Windows Server Insider フォーラム 新着記事
  • 第552話 怖い話 (2017/6/27)
     なにぃ、会社のトイレにお化けが出るって? あー、バカバカしい。ホラー映画の観過ぎじゃないの、まったく……
  • Azure SQL DBのインデックスやキャッシュを制御する (2017/6/26)
     Azure SQL Databaseのインデックスやプロシージャキャッシュを制御するには、そのためのT-SQLを直接実行する。知っておくと便利なT-SQLを紹介する
  • DNSのリゾルバ/キャッシュ/フォワーダ機能 (2017/6/23)
     今回は、DNSサーバのクライアント側であるリゾルバやキャッシュの機能について見ていく。リゾルバは、コンテンツDNSサーバに繰り返し問い合わせて名前解決を図る
  • ドメインの情報を提供するDNSのコンテンツサーバ (2017/6/22)
     DNSサーバには、ドメインの情報を定義・公開するコンテンツサーバと、それを利用するリゾルバの2種類がある。今回はコンテンツサーバの機能についてまとめておく
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間
ソリューションFLASH