Windows TIPS
| [System Environment] |
.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では、後でインストールに利用するための形式で(管理者用インストール・ポイントに)展開しているので、結果が異なっている。
|
この記事と関連性の高い別のWindows TIPS |
|
|
generated by
|
|
TechTargetジャパン
Windows Server Insider フォーラム 新着記事
キャリアアップ

**先週の人気講座ランキング**
〜 Android編 〜