CSMemo029

サービスの作り方

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