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]

\- または -

/?
このツールのコマンド構文とオプションを表示します。
/helpassembly

または

/?assembly
InstallUtil.exe のコマンド構文とオプションと共に、指定したアセンブリ内でそれぞれのインストーラーによって認識される追加オプションを表示します。 このオプションを指定すると、各インストーラー コンポーネントの Installer.HelpText プロパティによって返されるテキストが InstallUtil.exe のヘルプ テキストに追加されます。 たとえば、ServiceProcessInstaller.AccountUser である場合は、オプション /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=することで、ログ ファイルを抑制できます。

解説

.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

関連項目