msiパッケージをmsiexec.exeで展開する

インストーラでよく拡張子がmsiのファイルが使用されています。
これは、”MicroSoft windows Installer”の略でWindows標準のインストーラパッケージです。

通常ソフトをインストールする際は、このファイルをダブルクリックして実行すれば問題ないのですが、インストールは行いたくないけどパッケージに入っているファイルだけ入手したいと言う場合があります。

このような場合は、Windowsに標準インストールされているmsiexec.exeコマンドを使用することでファイルの抽出のみを行うことが可能です。



msiパッケージから,ファイルの抽出だけを行うコマンド


以下のコマンドで、ファイルの抽出だけを行うことが可能です。

start /wait msiexec.exe /a xxx.msi targetdir="c:\dest\dir" /qn  /li "c:\work\install.log"


次に、コマンド内の各オプションを説明します。




start /wait


“start /wait”は、後続のコマンド”msiexec.exe …”が終了するまで,次のコマンドを待たせる処理です。
このコマンドを書かずにいきなりmsiexec.exeから初めてもファイルの抽出は行えるのですが、msiexecコマンドは子プロセスにファイルの展開が行わせ、自分はすぐに処理を終了してしまうため、プロンプトが戻ってきた時点では全ファイルの展開が完了していない場合があります。
ファイルの展開漏れをなくすために、本コマンドを最初に書きます。

※start /waitに関しては,Heath Stewartが書いた以下の記事が詳しいです。
http://blogs.msdn.com/b/heaths/archive/2005/11/15/493236.aspx




msiexec.exe


msiexecはWindowsに標準で入っているインストーラコマンドです。




/a xxx.msi


/aオプションで、msiexecが展開を行うmsiファイルを指定します。




targetdir="c:\dest\dir"


targetdirで、展開したファイルの保存先を指定します。
msiファイルが存在するフォルダを指定すると、正常に展開できないので注意してください。




/qn


/qnは、画面にインストーラのダイアログを出さずに、非対話で処理を行うことを意味します。
このオプションを指定することで、コマンドラインのみでファイルの抽出が行えます。




/li "c:\work\install.log"


このオプションは必須ではないのですが…、/lはファイルの展開結果をログファイルに落とします。
/lの後にあるiはログ出力の粒度を表していて、iは情報(info)ログを出力します。
通常はこのレベルで十分ですが、より詳細なログを確認したい場合は、/lvにすると詳細なログ(verbose)の出力が行われます。




msiexec.exeのオプション一覧


コマンドラインより、以下のコマンドを実行するとオプション一覧が表示されます。

msiexec /?




windows7上で実行したオプション一覧のヘルプです

Windows R インストーラー. V 5.0.7601.17514 
 
msiexec /Option <必須パラメーター> [省略可能なパラメーター]
 
インストール オプション
	</package | /i> <Product.msi>
		製品をインストールまたは構成します。
	/a <Product.msi>
		管理用ツール - ネットワーク上の製品をインストールします。
	/j<u|m> <Product.msi> [/t <変換一覧>] [/g <言語 ID>]
		製品をアドバタイズします - すべてのユーザーには m、現在の
		ユーザーには u を指定します。
	</uninstall | /x> <Product.msi | 製品コード>
		製品をアンインストールします。
表示オプション
	/quiet
		Quiet モード - ユーザーの操作なし
	/passive
		無人モード - 進行状況バーのみ
	/q[n|b|r|f]
		ユーザー インターフェイスのレベルを設定します。
		n - なし
		b - 基本
		r - 簡易
		f - 完全 (既定)
	/help
		ヘルプ情報
再起動オプション
	/norestart
		インストール完了後に再起動しません。
	/promptrestart
		再起動が必要な場合は、ユーザーに再起動を要求します。
	/forcerestart
		常に、インストール後コンピューターを再起動します。
ログ オプション
	/l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
		i - 状態メッセージ
		w - 致命的ではない警告
		e - すべてのエラー メッセージ
		a - 操作のスタートアップ 
		r - 特定の操作の記録
		u - ユーザーの要求
		c - UI パラメーターの初期値
		m - メモリ不足または致命的な終了に関する情報
		o - ディスク領域不足メッセージ
		p - ターミナルのプロパティ
		v - 詳細出力
		x - 詳細デバッグ情報
		+ - 既存のログ ファイルに追加
		! - 各行をログにフラッシュ
		* - v オプションと x オプションを除くすべての情報をログに記録します。
	/log <ログ ファイル>
		/l* <ログ ファイル> と指定したときと同じ情報がログに記録されます。
 
更新オプション
	/update <Update1.msp>[;Update2.msp]
		更新を適用します。
	/uninstall <修正プログラム コード GUID>[;Update2.msp] 
	/package <Product.msi | 製品コード>
		製品の更新を削除します。
修復オプション
	/f[p|e|c|m|s|o|d|a|u|v] <Product.msi | 製品コード>
		製品を修復します。
		p - ファイルが見つからない場合のみ
		o - ファイルが見つからない、または古いバージョンが
		    インストールされている場合 (既定)
		e - ファイルが見つからない、同じバージョンまたは古い
		    バージョンがインストールされている場合
		d - ファイルが見つからない、または違うバージョンが
		    インストールされている場合
		c - ファイルが見つからない、またはチェックサムと計算
		    された値が一致しない場合
		a - すべてのファイルをインストールする
		u - すべてのユーザー固有の必須レジストリ エントリ (既定)
		m - すべてコンピューター固有の必須レジストリ エントリ (既定)
		s - すべての既存のショートカット (既定)
		v - ソースから実行して、パッケージをローカルに再キャッシュする
パブリック プロパティの設定
	[PROPERTY=プロパティ値]
 
コマンド ラインの構文の詳細については、Windows (R) インストーラー SDK を参照してください。
 
Copyright (C) Microsoft Corporation. All rights reserved.
Portions of this software are based in part on the work of the Independent JPEG Group.



参考資料


Microsoft Windows インストーラ ツール Msiexec.exe のコマンドライン オプション
http://support.microsoft.com/kb/314881/ja


msiexec.exe コマンド実行時、ファイルの展開が終了するまで待たせる
http://blogs.msdn.com/b/heaths/archive/2005/11/15/493236.aspx

Windows Installer 4.5の再配布URL
http://www.microsoft.com/downloads/ja-jp/details.aspx?displaylang=ja&FamilyID=5a58b56f-60b6-4412-95b9-54d056d6f9f4

関連記事

One Response to “msiパッケージをmsiexec.exeで展開する”

Pandoc の Portable Windows バージョンを作る | Aqua Ware つぶやきブログ へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。