NAnt には、InstallUtil ユーティリティなどを使用して、Windows サービスをインストールまたはアンインストールする機能がありますか?
4 に答える
Nantのexecタスクを呼び出してInstallUtilを呼び出すことができ、パラメーターを渡してサービスを簡単にインストールまたはアンインストールできます。
<target name="install-service">
<exec program="${framework::get-framework-directory('net-2.0')}\InstallUtil.exe">
<arg value="-i" />
<arg value="/name=V1" />
<arg value="C:\Service\SomeService.exe" />
</exec>
</target>
NantまたはMSBuild?installutilを自分で実行するだけの問題は何ですか?それがMSBuildで行うことです。(通常、ビルドはランダムなビルドサーバーで実行できるはずなので、通常、ビルドはこのようなもののインストールを行いません)。
installutilを方程式から外す別のオプションは、このようなサービスに自己インストールオプションを追加することです(を探して詳細を検索してくださいself install windows service
)
サービスをさまざまな場所にインストールできる場合は、次のように、SC.EXEを使用してその名前でアンインストールすることもできます。
<property name="serviceName" value="Name of the service"/>
<exec program="sc" failonerror="false" verbose="true" if="${service::is-installed(serviceName,'.')}">
<arg value="delete"/>
<arg value="${serviceName}"/>
</exec>
アプリケーションでTopShelf プロジェクトを使用してサービスをホストする場合、InstallUtil を必要とせずにサービスをインストール/削除するためのコマンドライン ベースのツールを取得できます。
ServiceName.exe サービスのインストール ServiceName.exe サービスのアンインストール
また、サービスを直接実行して、CTRL + C で停止できる便利なコンソール ウィンドウを取得できます。プログラムを実行することで、これを nant または msbuild に直接統合できます。