DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

.NET Framework再頒布可能パッケージのコマンドラインオプション

ここでは、.NET Framework再頒布可能パッケージ(dotnetfx.exeなど)のコマンドラインオプションを調べることを目的とします。

.NET Framework 1.1以前

MSDNの「.NET Framework 1.1 の再配布」によると、Dotnetfx.exeのサイレントインストールは、

dotnetfx.exe /q:a /c:"install /l /q"

というコマンドで実行されるとのことです。

このコマンドの意味するところは何なのでしょうか?まず、「dotnetfx.exe /?」コマンドにより、dotnetfx.exeのコマンドラインオプションを調べてみます。その結果、次のような説明が表示されました。

オプション 説明
/Q パッケージ処理の状況を一部表示しないモード
/T:<完全なパス> 一時フォルダを指定
/C /Tと同時に指定した場合に、指定したフォルダのみにファイルを展開
/C:<Cmd> 指定したインストールコマンドを無視

つまり、「/Q」はサイレントモードを指定し、「/T」と「/C」では「/T」で指定したフォルダにファイルを展開し、「/C:<Cmd>」では展開後に実行するコマンドを指定(製作者により指定されたインストールコマンドを上書き)できるようです。

しかしこれでは上記の「/q:a /c:"install /l /q"」というコマンドラインの「/q:a」が何を意味するかは分かりません。実はdotnetfx.exeのコマンドラインオプションはこれだけではありません。

dotnetfx.exeのプロパティを表示すると、「説明」が「IExpress Setup」となっていることが分かります。つまりこのパッケージの作成には、IExpressが使われているのです。(dotnetredist.exeなどは「説明」が「Win32 キャビネット自己展開ツール」と表示されますが、これもIExpressで作成されたことを意味します。)IExpressとはWindows 2000、Windows XPにインストールされているCab書庫を作成するためのツールで、詳しくは、DOBON.NETの「VBに適したインストーラを探そう」などをご覧ください。

IExpressパッケージに使用できるコマンドラインオプションについては、サポート技術情報の「IExpress ソフトウェア更新プログラム パッケージのコマンド ライン スイッチ」で説明されています。ここで説明されているコマンドラインオプションを以下に引用させていただきます。

オプション 説明
/q 自動インストールを実行します (メッセージを一部表示しません)。
/q:u ユーザー非表示モードで実行します (ユーザーにいくつかのダイアログ ボックスが表示されます)。
/q:a 管理者非表示モードで実行します (ユーザーにダイアログ ボックスが表示されません)。
/t:path ファイルの展開先フォルダを指定します。
/c インストールを実行せずにファイルの展開のみを行います。/t: path を指定していない場合は、展開先フォルダの入力を求められます。
/c:path セットアップ .inf ファイルまたは .exe ファイルの UNC パスと名前を指定します。
/r:n インストール完了後にコンピュータを再起動しません。
/r:i 再起動が必要な場合に、ユーザーにコンピュータの再起動を求めるメッセージを表示します (ただし、/q:a を使用している場合は除きます)。
/r:a インストール完了後にコンピュータを必ず再起動します。
/r:s インストール完了後、ユーザーにメッセージを表示せずにコンピュータを再起動します。
/n:v バージョン チェックを実行しません。パッケージのインストール時に以前のバージョンをすべて上書きします。

これでようやくすべての意味が分かりました。「/q:a /c:"install /l /q"」は、管理者非表示モードで実行し、展開後「install /l /q」というコマンドを実行するという意味だということが分かります。

ところで、「install /l /q」の意味はなんでしょうか?早速「install /?」でinstall.exeのコマンドラインオプションを調べてみました。

オプション 説明
/? または /h このダイアログ(使い方ダイアログ)
/u アンインストール
/l 一時ディレクトリにnetfx.logを作成する

これまた「/q」に対する説明に欠けていますが、これに関しては「.NET Framework Version 1.1 再配布可能パッケージ テクニカル リファレンス」で説明されています。その説明を以下に引用させていただきます。

オプション 説明
/l セットアップ ログの netfx.log を %temp% ディレクトリに作成します。Dotnetfx.exe から返されるエラー コードは、このログに書き込まれます。
/q 無人 インストール モードを指定します。セットアップ ユーザー インターフェイスの表示を抑止します。無人 インストールでは、Dotnetfx.exe の /q:a オプションも指定して、展開ユーザー インターフェイスを抑止する必要があります。

つまり「install /l /q」では、一時フォルダにログを作成し、無人インストールモードを指定していることが分かります。

これでようやくすっきりしましたね。

補足:.NET FrameworkのLanguage Pack、langpack.exeも「IExpress Setup」ですが、内蔵されているbootstrapperは「Install.exe」ではなく、「inst.exe」です。「inst.exe /?」により表示されるオプションの説明は、次のようなものです。
オプション 説明
/? または /h このダイアログ(使い方ダイアログ)
/q UIを使用しない無人インストール
/qb プログレスバーを使用する無人セットアップ
/u アンインストール
/l 一時ディレクトリにログを作成する
Install.exeとinst.exeは非常に似ているため、Install.exeでも/qbオプションが使えるかもしれません。(未確認)

.NET Framework 2.0

.NET Framework 2.0の再頒布可能パッケージもほぼ上記と同様です。ただ、install.exeのコマンドラインオプションが若干異なり、"/lang"が追加されたようです。以下に"/?"コマンドを指定してinstall.exeを実行したときに表示される説明を表にします。

オプション 説明
/l <logname.txt> 詳細なMSIログの名前
/lang <xxxx> 4桁の言語コード
/q Quietインストールモード
/qu Quietアンインストールモード
/? 使い方ダイアログの表示

.NET Framework 3.0

.NET Framework 3.0の再頒布可能パッケージ"dotnetfx3setup.exe"を"/?"コマンドを指定して実行したときに表示される説明を以下に示します。

オプション 説明
/? コマンドラインパラメータを表示します。
/q UIを完全に非表示にします。
/remove 製品をアンインストールします。
/f 商品を修復します。インストールされたコンポーネントすべてを修復します。
/norestart 再起動しないオプションです。インストーラはインストール後にコンピュータを再起動しません。再起動が必要な場合は、セットアップは 3010 を返します。

.NET Framework 3.5

.NET Framework 3.5の再頒布可能パッケージ"dotNetFx35setup.exe"を"/?"コマンドを指定して実行したときに表示される説明を以下に示します。詳しくは、「アプリケーション開発者向けの Microsoft .NET Framework 3.5 配置ガイド」が参考になります。

オプション 説明
/q すべてのUIを表示しません。.INIファイルをこのオプションと共に指定することはできません。
/quit /q と同じ。
/qb 最小限のUIを表示します(進行状況のみ表示します)。
/passive /qb と同じ。
/uninstall 製品をアンインストールします。
/remove /uninstall と同じ。
/f インストールされているすべての .NET Framework 3.0 コンポーネントを修復します。
/nopatch 修正プログラムを適用しないときに指定します。修正プログラムのチェックを行いません。
/norollback セットアップコンポーネントが失敗した場合、ロールバックしないときに指定します。
/norestart インストールの完了後に、コンピュータを再起動しないときに指定します。再起動が必要な場合、再頒布可能なインストーラにより、ERROR_SUCCESS_REBOOT_REQUIRED (3010) が返されます。
/lang:<TLA> 指定された言語パックをインストールします。言語は、3文字の略語 (TLA) で指定します (ENU、DEU、JPN など)。1言語のみサポートされています。/lang:ENU を指定すると、言語パックはインストールされません。
/? オプション一覧を表示します。
  • 履歴:
  • 2007/1/15 .NET Framework 2.0に関する記述を追加。
  • 2009/4/27 .NET Framework 3.0、3.5に関する記述を追加。