Installutil.exe (インストーラー ツール)
インストーラー ツールは、指定したアセンブリ内のインストーラー コンポーネントを実行することによってサーバー リソースのインストールとアンインストールを実行できるコマンド ライン ユーティリティです。 このツールは、System.Configuration.Install 名前空間のクラスと組み合わせることによって動作します。
このツールは、Visual Studio と共に自動的にインストールされます。 ツールを実行するには、、Visual Studio 開発者コマンド プロンプトまたは Visual Studio Developer PowerShell を使用します。
コマンド プロンプトに次のように入力します。
構文
installutil [/u[ninstall]] [options] assembly [[options] assembly] ...
パラメーター
Argument | 説明 |
---|---|
assembly |
インストーラー コンポーネントを実行するアセンブリのファイル名。 /AssemblyName オプションを使用してアセンブリの厳密な名前を指定する場合は、このパラメーターを省略します。 |
Options
オプション | 説明 |
---|---|
/h[elp] \- または - /? |
このツールのコマンド構文とオプションを表示します。 |
/help assemblyまたは /? assembly |
InstallUtil.exe のコマンド構文とオプションと共に、指定したアセンブリ内でそれぞれのインストーラーによって認識される追加オプションを表示します。 このオプションを指定すると、各インストーラー コンポーネントの Installer.HelpText プロパティによって返されるテキストが InstallUtil.exe のヘルプ テキストに追加されます。 たとえば、ServiceProcessInstaller.Account が User である場合は、オプション /username および /password を使用できます。 |
/AssemblyName "assemblyName,Version=major.minor.build.revision ,Culture=locale ,PublicKeyToken=publicKeyToken" |
グローバル アセンブリ キャッシュに登録されている必要があるアセンブリの厳密な名前を指定します。 アセンブリ名は、バージョン、カルチャ、およびアセンブリの公開キー トークンによって完全修飾にする必要があります。 完全修飾名は、引用符で囲む必要があります。 たとえば、"myAssembly, Culture=neutral, PublicKeyToken=0038abc9deabfle5, Version=4.0.0.0" は、完全修飾のアセンブリ名です。 |
/InstallStateDir=[ directoryName ] |
アセンブリをアンインストールするために使用されるデータを格納する .InstallState ファイルのディレクトリを指定します。 既定のディレクトリは、アセンブリを格納しているディレクトリです。 |
/LogFile= [filename] |
インストールの進行状況を記録するログ ファイルの名前を指定します。 既定では、/LogFile オプションを省略した場合は、assemblyname.InstallLog という名前のログ ファイルが作成されます。 filename を省略した場合、ログ ファイルは生成されません。 |
/LogToConsole ={true |false } |
true の場合は出力がコンソールに表示されます。 false (既定値) の場合はコンソールへの出力が中止されます。 |
/ShowCallStack |
インストール中に例外が発生した場合、コール スタックがログ ファイルに出力されます。 |
/u [ninstall ] |
指定されたアセンブリをアンインストールします。 他のオプションとは異なり、コマンド ラインのどこにオプションを指定するかとは無関係に、/u はすべてのアセンブリに適用されます。 |
追加のインストーラー オプション
アセンブリ内で使用されるそれぞれのインストーラーでは、「オプション」で示したオプション以外のオプションも認識される場合があります。 これらのオプションを確認するには、コマンド ラインで /?
オプションまたは /help
オプションと共にアセンブリのパスを指定して InstallUtil.exe を実行します。 これらのオプションを指定するには、InstallUtil.exe で認識されるオプションと共にそれらのオプションをコマンド ラインに含めます。
Note
個々のインストーラー コンポーネントでサポートされるオプションのヘルプ テキストは、Installer.HelpText プロパティによって返されます。 コマンド ラインで入力された個々のオプションには、Installer.Context プロパティからプログラムでアクセスできます。
オプションとコマンド ライン パラメーターはすべてインストール ログ ファイルに書き込まれます。 ただし、一部のインストーラー コンポーネントで認識される /Password
パラメーターを使用すると、パスワード情報は 8 つのアスタリスク (*) に置き換えられ、ログ ファイルには表示されません。
重要
インストーラーに渡されるパラメーターには機密情報または個人を特定できる情報が含まれる場合があり、既定ではプレーンテキスト ログ ファイルに書き込まれます。 この動作を回避するには、コマンド ラインで /LogFile=
( filename 引数を指定しない) を指定することで、ログ ファイルを抑制できます。
解説
.NET Framework アプリケーションは、従来のプログラム ファイルと、アプリケーションのデプロイ時に作成する必要があるメッセージ キュー、イベント ログ、パフォーマンス カウンターなどの関連リソースで構成されます。 アセンブリのインストーラー コンポーネントを使用すると、アプリケーションのインストール時にこれらのリソースを作成したり、アプリケーションのアンインストール時に削除したりできます。 Installutil.exe は、これらのインストーラー コンポーネントを検出して実行します。
同じコマンド行に複数のアセンブリを指定できます。 アセンブリ名の前に指定したオプションは、そのアセンブリのインストールに適用されます。 /u
と /AssemblyName
以外のオプションは、累積されますがオーバーライドできます。 つまり、あるアセンブリに指定したオプションは、そのオプションを新しい値と共に指定しない限り、後続のすべてのアセンブリに適用されます。
オプションを指定せずにアセンブリに対して Installutil.exe を実行すると、次の 3 つのファイルがアセンブリのディレクトリ内に作成されます。
- InstallUtil.InstallLog - インストールの進行状況に関する一般的な説明が含まれます。
- assemblyname.InstallLog - インストール プロセスのコミット フェーズに固有の情報が含まれます。 コミット フェーズの詳細については、「Commit メソッド」を参照してください。
- assemblyname.InstallState - アセンブリをアンインストールするために使用されるデータが含まれます。
Installutil.exe は、リフレクションを使用して指定されたアセンブリを調査し、Installer 属性が System.ComponentModel.RunInstallerAttribute に設定されたすべての true
タイプを検索します。 次に、Installer.Install タイプの各インスタンスについて、Installer.Uninstall メソッドまたは Installer メソッドを実行します。 Installutil.exe は、トランザクション的な方法でインストールを実行します。つまり、いずれかのアセンブリのインストールに失敗した場合には、他のすべてのアセンブリのインストールをロールバックします。 アンインストールはトランザクション的な方法では実行されません。
Installutil.exe では、遅延署名されたアセンブリのインストールおよびアンインストールはできませんが、厳密な名前付きアセンブリのインストールおよびアンインストールはできます。
共通言語ランタイム (CLR) の 32 ビット バージョンには、インストーラー ツールの 32 ビット バージョンのみが付属していますが、CLR の 64 ビット バージョンには、インストーラー ツールの 32 ビットバージョンと 64 ビット バージョンの両方が付属しています。 64 ビット CLR を使用する場合は、32 ビット インストーラー ツールを使用して 32 ビット アセンブリをインストールし、64 ビット インストーラー ツールを使用して 64 ビットおよび共通中間言語 (CIL) アセンブリをインストールします。 どちらのバージョンのインストーラー ツールも同様に動作します。
Installutil.exeを使用して C++ を使用して作成された Windows サービスを展開することはできません。これは、C++ コンパイラによって生成された埋め込みネイティブ コードInstallutil.exe認識されないためです。 C++ Windows サービスを Installutil.exe で配置しようとすると、BadImageFormatException などの例外がスローされます。 これを行うには、サービス コードを C++ モジュールに移行し、インストーラー オブジェクトを C# または Visual Basic で記述します。
使用例
InstallUtil.exe のコマンド構文とオプションの説明を表示するコマンドを次に示します。
installutil /?
InstallUtil.exe のコマンド構文とオプションの説明を表示するコマンドを次に示します。 インストーラーの Installer.HelpText プロパティにヘルプ テキストが割り当てられている場合は、myAssembly.exe
のインストーラー コンポーネントでサポートされるオプションの説明とリストも表示されます。
installutil /? myAssembly.exe
アセンブリ myAssembly.exe
内のインストーラー コンポーネントを実行するコマンドを次に示します。
installutil myAssembly.exe
/AssemblyName
スイッチと完全修飾名を使用してアセンブリのインストーラー コンポーネントを実行するコマンドを次に示します。
installutil /AssemblyName "myAssembly, Culture=neutral, PublicKeyToken=0038abc9deabfle5, Version=4.0.0.0"
ファイル名で指定されたアセンブリと厳密な名前で指定されたアセンブリのインストーラー コンポーネントを実行するコマンドを次に示します。 /AssemblyName
オプションはオーバーライドできないので、コマンド ラインではファイル名で指定するすべてのアセンブリを厳密な名前で指定するアセンブリよりも前に記述する必要があります。
installutil myAssembly.exe /AssemblyName "myAssembly, Culture=neutral, PublicKeyToken=0038abc9deabfle5, Version=4.0.0.0"
アセンブリ myAssembly.exe
内のアンインストーラー コンポーネントを実行するコマンドを次に示します。
installutil /u myAssembly.exe
myAssembly1.exe
アセンブリと myAssembly2.exe
アセンブリ内のアンインストーラー コンポーネントを実行するコマンドを次に示します。
installutil myAssembly1.exe /u myAssembly2.exe
コマンド ラインでの /u
オプションの位置は重要ではないので、これは次のコマンドと同等です。
installutil /u myAssembly1.exe myAssembly2.exe
アセンブリ myAssembly.exe
内のインストーラーを実行し、進行状況に関する情報を myLog.InstallLog
に書き込むように指定するコマンドを次に示します。
installutil /LogFile=myLog.InstallLog myAssembly.exe
アセンブリ myAssembly.exe
内のインストーラーを実行し、進行状況に関する情報を myLog.InstallLog
に書き込むように指定し、インストーラーのカスタム オプション /reg
を使用してシステム レジストリを更新するように指定するコマンドを次に示します。
installutil /LogFile=myLog.InstallLog /reg=true myAssembly.exe
アセンブリ myAssembly.exe
内のインストーラーを実行し、インストーラーのカスタム オプション /email
を使用してユーザーの電子メール アドレスを指定し、ログ ファイルに出力しないようにするコマンドを次に示します。
installutil /LogFile= /email=admin@mycompany.com myAssembly.exe
myAssembly.exe
に関するインストールの進行状況を myLog.InstallLog
に書き込み、myTestAssembly.exe
に関する進行状況を myTestLog.InstallLog
に書き込むコマンドを次に示します。
installutil /LogFile=myLog.InstallLog myAssembly.exe /LogFile=myTestLog.InstallLog myTestAssembly.exe
関連項目
.NET