サービスの作り方
1.サービスプロジェクトを作成する
2.サービスのプロパティで、サービス名をService1から変更する
3.EventLogコンポーネントをドラッグ
4.Mainの書き換え(不要!?)
5.コンストラクタ(VBの場合はNew)の書き換え
If Not System.Diagnostics.EventLog.SourceExists("MySource") Then
System.Diagnostics.EventLog.CreateEventSource("MySource", _
"MyNewLog")
End If
EventLog1.Source = "MySource"
EventLog1.Log = "MyNewLog"
※ VBでMainやNewを表示させるには、コードエディタのプルダウンから選択する。
6.開始処理や停止処理を記述する。
OnStart及びOnStop。場合によってはOnPause、OnContinue、OnShutdownなども。
EventLog1.WriteEntry("In OnStop.")
7.サービスのインストーラを作成する。
- Service1.vb、Service1.cs、または Service1.jsl のデザイン画面を表示させる。
- デザイナの背景を右クリックし、[インストーラの追加] をクリックする。
- ProjectInstaller のデザイン ビューで、[ServiceInstaller1] または [serviceInstaller1] をクリックする。
- [プロパティ] ウィンドウで、[ServiceName] プロパティを MyNewService等 に設定する。
- [StartType] プロパティを Automatic に設定する。
- デザイナで[ServiceProcessInstaller1] をクリックし、[Account] プロパティを LocalService に設定する。
8.サービスプロジェクトをビルドする。
- プロジェクトのプロパティを表示させる。
- [アプリケーション] ページで、[スタートアップ オブジェクト] ボックスの一覧の [MyNewService] をクリックする。
- Ctrl キーと Shift キーを押しながら B キーを押して、プロジェクトをビルドします。
9.サービスのセットアップ プロジェクトを作成する
- ソリューション エクスプローラでソリューションを右クリックして選択し、[追加] → [新しいプロジェクト]
- [セットアップ/配置プロジェクト] フォルダをクリック。
- [セットアップ プロジェクト] をクリック。プロジェクトに適当な名前を付ける。[OK]。
10.セットアップ プロジェクトに MyNewService.exe を追加する
- ソリューション エクスプローラで、[MyServiceSetup] を右クリックし、[追加]→[プロジェクト出力]
- [プロジェクト] = [MyNewService]
一覧の [プライマリ出力] をクリックし、[OK]。
11.セットアップ プロジェクトにカスタム処理を追加する
- ソリューション エクスプローラで、セットアップ プロジェクトを右クリックし、[表示] →[カスタム動作]
- [カスタム動作] ノードを右クリックし、[カスタム動作の追加] をクリック。
- 一覧の [アプリケーション フォルダ] をダブルクリックして開き、[MyNewService (アクティブ) のプライマリ出力] をクリック。[OK] 。
- ソリューション エクスプローラで、MyServiceSetup プロジェクトを右クリックし、[ビルド] をクリックします。
→ DebugまたはReleaseに~Setup.msiが作成される。
OnStart及びOnStopにプロセス制御を追加する。
Public Class WashiService
Dim mp As Process
Protected Overrides Sub OnStart(ByVal args() As String)
' サービスを開始するコードをここに追加します。このメソッドによって、
' サービスが正しく実行されるようになります
EventLog1.WriteEntry("開始しました。")
mp = New Process()
mp.StartInfo.FileName = "CALC.EXE"
mp.Start()
End Sub
Protected Overrides Sub OnStop()
' サービスを停止するのに必要な終了処理を実行するコードをここに追加します。
EventLog1.WriteEntry("終了しました。")
mp.Kill()
mp.Dispose()
End Sub
End Class
最終更新:2011年08月28日 10:51