Dependencies
System.ServiceProcessSystem.Configuration.Install
Service
เขียน Service โดย extend คลาสที่ชื่อ ServiceBase และ override OnStart() และ OnStop() ซึ่งเป็นฟังก์ชันที่จะถูกเรียกเมื่อมีการ Start/Stop service
1 | type WindowsService() = |
Installer
Installer เป็นคลาสที่ใช้สำหรับระบุรายละเอียดของ Service เช่น ชื่อ Service วิธีการ Start จะให้ Start แบบ Auto หรือ Manual สามารถเขียน Installer โดย extend คลาส Installer และระบุ attribute RunInstaller ไว้ที่ชื่อคลาส
1 | [<RunInstaller(true)>] |
Entry Point
หลังจากเขียน Service และ Installer แล้ว ใน EntryPoint ของโปรแกรม สามารถเรียก Service โดยใช้ Static Method Run ของคลาส ServiceBase
1 | [<EntryPoint>] |
Install / Uninstall Script
เมื่อ Compile โปรแกรมเป็น .exe แล้ว สามารถติดตั้งโปรแกรมให้รันเป็น Windows Service โดยใช้ utility ที่มาพร้อมกัน .Net Framework คือ installutil.exe
- ใช้ option
/Iสำหรับติดตั้ง - ใช้ option
/Uสำหรับ Uninstall
Install Service
1 | "C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe" /I "%~dp0MyService.exe" |
Uninstall ServiceName
1 | "C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe" /U "%~dp0MyService.exe" |
การบุชื่อโปรแกรมจะต้องใช้ Absolute path จากตัวอย่างจะใช้ ตัวแปร %-dp0 เพื่อดึง path เต็มของโปรแกรม