これは覚えておくと便利そう! Windowsのサービスを作ろうと思うと若干敷居が高くなります。全て自作であればまだしもダウンロードしてきたソフトウェアをサービス化するとなると大変な印象があります。

そこで使ってみたいのがwinswです。任意の実行ファイルをサービス化してくれるソフトウェアです。

winswの使い方

winswをダウンロードしてきたら、まずは実行ファイルをリネームします。名前はサービス名と同じである必要があります。例えば今回はjenkinsをサービス化するとしましょう。

その場合、winswはjenkins.exeになります。そして同じフォルダにjenkins.xmlというファイルを作成し、以下のように記述をします。

<service>
  <id>jenkins</id>
  <name>Jenkins</name>
  <description>This service runs Jenkins continuous integration system.</description>
  <env name="JENKINS_HOME" value="%BASE%"/>
  <executable>java</executable>
  <arguments>-Xrs -Xmx256m -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
  <logmode>rotate</logmode>
</service>

サービスの起動に関する説明になります。BASEは実行フォルダのパスに展開されるようです。ここまで終わったらコマンドプロンプトで以下のように実行します。

jenkins.exe install

これで無事サービスとして登録されました。続いてWindowsのサービスを開き、登録したサービスを起動します。

初回は確認ダイアログが出ます。

サービスを停止する場合はuninstallを実行するだけです。

Windowsの実行バイナリが提供されている場合はサービス化機能もありそうですが、Javaバイナリでの配布になるとそんなことはなさそうです。winswを使えばサービス化が簡単で、管理も一元化できるでしょう。

winswはWindows用、MIT Licenseのオープンソース・ソフトウェアです。

kohsuke/winsw