unpack


各種圧縮形式およびインストーラを解凍/アンパックする方法の覚書です。

ソフトウエア


ソフトウエアが対応する圧縮形式一覧。 Explzh は破損 zip ファイルからアーカイブ内のファイルの一部を取り出せるようです。
7zZIPCABRARARJLZHGZIPBZIP2ZTAR
7-Zipxxxxxxxxxx
Lhazxxxx-xxx-x
Explzhxxxxxxxxxx
bsdtar??????xx?x
MSICHMCPIORPMDEBISHISO 9660UDF
7-Zipxxxxx-xx
Explzhx-x-xxxx
bsdtar???x????
GCADGCABZA/GZAYZ1ACERKUUEXXEMS-ExpandBASE64
Explzhxxxxxxxxxx
GCAx---------
DGCA-x--------


記号 x は対応を表しています。記号 - は未対応です。


SourceForge.net: 7-Zip
http://sourceforge.net/projects/sevenzip/

Lhaz(Windows95/98/Me / ユーティリティ)
http://www.vector.co.jp/soft/dl/win95/util/se10774...

窓の杜 - Explzh
http://www.forest.impress.co.jp/lib/arc/archive/ar...

DGCA - とってもごはん
http://www.emit.jp/

bsdtar は msys/mingw32 ポートがあります。

Browse MinGW - Minimalist GNU for Windows Files on SourceForge.net
http://sourceforge.net/projects/mingw/files/

Microsoft Installer ( MSI )


msiexec か msix か msi2xml を使用します。

7-Zip でも解凍できるようです。ただしファイル名は元通りに変換されない。

Explzh が msi の解凍に対応したようです。

窓の杜 - 【NEWS】フリーの定番圧縮・解凍ソフト「Explzh」v5.25が公開、MSI形式に対応
http://www.forest.impress.co.jp/article/2008/01/15...
msiexec

msiexec コマンドは(おそらく)標準でインストールされています。 /a オプションに続けて msi ファイルを指定し、 targetdir に解凍先ディレクトリを指定します。解凍先ディレクトリーはフルパスで、ダブルクオートで括って指定します。カレント ディレクトリーにあるディレクトリー、たとえば unpacked を解凍先に指定する場合は targetdir="%CD%\unpacked" と書くと楽です( %CD% はコマンド プロンプトがカレント ディレクトリーに置き換えます)。ログをとるには /l* unpack.log をつけて実行します。
msiexec /a target.msi targetdir="target directory" /qn

start /wait の後ろに続けて上記コマンドを入力し実行すると、解凍終了に同期して処理が戻されます。

管理者権限を要求する msi ファイルもあります。このようなファイルは制限ユーザでは解凍できません。ログアウトせずに制限ユーザで解凍する場合は runas などで管理者権限をもつユーザでコマンド プロンプトを起動し、解凍します。
msix

msix は msi ファイルの暗号化されたファイル名のまま解凍するツールです。
msix target.msi /out directory /ext

Heath Stewart's Blog : Digital Signatures in Windows Installer
http://blogs.msdn.com/heaths/archive/2006/08/18/70...
msi2xml

解凍ツールらしいですが、僕の環境では実行できませんでした。

msi2xml - Windows Installer Package to XML Bi-Directional Converter
http://msi2xml.sourceforge.net/

Inno Setup


innounp コマンドで解凍します。とても古いバージョンとまだ対応していない新しいバージョンは解凍できません。暗号化されたファイルを指定した場合は解除キーの入力を促されます。 -m オプションは埋め込みファイルも解凍するよう指示します。終了するとカレントディレクトリ下に {app} ディレクトリが作成されます。
innounp -xm target.exe

innounp, the Inno Setup Unpacker
http://innounp.sourceforge.net/

新しい inno setup に対応したテスト版がフォーラムに上がっていることがあります。 2008/1/24thu 現在の最新版はこのスレッドにあります。 Inno Setup 5.2.2 に対応されています。

Inno Setup 5.1.13 support - SourceForge.net: Open Discussion
http://sourceforge.net/forum/forum.php?thread_id=1...

SourceForge.net: Open Discussion
http://sourceforge.net/forum/forum.php?forum_id=35...

Nullsoft Installer ( NSIS )


7-zip で解凍できる場合があります。 e コマンドはディレクトリをフラットに解凍し、 x コマンドはディレクトリ構造を保ったまま解凍します。解凍し作成された $PLUGINSDIR ディレクトリはインストーラ関係のファイルです。
7z x target.exe
7-zip の gui 版である 7-zip File Manager も使用できます。

Install Shield


Explzh で解凍できるらしい。未確認です。

Ultimate Packer for eXecutables ( UPX )


upx コマンドを -d オプションを付けて実行します。 -o オプションで出力ファイルを指定しなかった場合は元のファイルを置き換えます。
upx -d target.exe -o expand.exe

UPX: the Ultimate Packer for eXecutables - Homepage
http://upx.sourceforge.net/

RPM


bsdtar で解凍できます。 rpm と cpio パッケージを導入しているなら rpm2cpio | cpio で解凍できます。後者は、 cygwin でおおむかしに試したときは処理が不十分でした。 7-zip File Manager で解凍できるかもしれません。これは未確認です。

bsdtar の場合。
 mkdir unpacked
 cd unpacked
 bsdtar -zxf ../hogehoge.rpm

cpio を使用する場合。 cygwin で cpio 関係のコマンドをインストールし rpm2cpio で cpio 形式に変換し cpio で個別ファイルに変換する。
 mkdir unpacked
 cd unpacked
 rpm2cpio ../hogehoge.rpm | cpio -id

参考文献


.MSIファイルを解凍して内部のファイルを取り出す(msiexec編) − @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/856msie...

.MSIファイルを解凍して中のファイルを取り出す(msix編) − @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/865msix...

@IT:RPMパッケージからファイルを取り出すには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/...

リンク


Orca データベース エディタを使用して Windows インストーラ ファイルを編集する方法
http://support.microsoft.com/kb/255905/ja

更新履歴


2011/6/10fri わかりにくい記述を修正。
2010/9/14tue rpm に関して追記。
2010/3/18thu msiexec に追記。もろもろ追記。
2008/1/24thu もろもろ追記。
2008/1/2wed msi に追記。
2007/7/22sun ページ作成。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

編集にはIDが必要です