نصب و تنظیم سرویس اجرای دورهای برنامه پیامک با WinSW
1) هدف
این راهنما برای اجرای دورهای برنامه پیامک بهصورت Windows Service با استفاده از WinSW تهیه شده است، بدون استفاده از Task Scheduler.
2) ساختار فایلها و مسیرها
مسیر برنامه پیامک
D:\SMSSender\iMaster.ERP.SmsSender.Console.exe
مسیر فایل سرویس WinSW
D:\SmsService\SmsRunnerService.exe
فایل تنظیمات سرویس
D:\SmsService\SmsRunnerService.xml
فایل اسکریپت اجرای حلقهای
D:\SmsService\run-loop.ps1
فایل لاگ برنامه
D:\SmsService\runner.log
پوشه لاگهای WinSW
D:\SmsService\logs
3) نکات مهم در نامگذاری و مسیرها
- فایل exe مربوط به WinSW و فایل xml باید همنام باشند.
- در این پروژه:
- نام فایل سرویس:
SmsRunnerService.exe - نام فایل تنظیمات:
SmsRunnerService.xml
- نام فایل سرویس:
- اگر نام فایل exe سرویس تغییر کند، نام فایل xml هم باید دقیقاً مطابق آن تغییر کند.
- مسیر فایلها بهتر است ثابت باشد و بعد از نصب تغییر نکند.
- در صورت تغییر مسیر برنامه پیامک، باید مقدار
$exePathدر فایلrun-loop.ps1اصلاح شود. - در صورت تغییر نام فایل اجرایی برنامه پیامک، مقدار
$processNameنیز باید اصلاح شود.
4) نصب و راهاندازی
مرحله 1: ایجاد پوشهها
درایو و پوشههای زیر باید وجود داشته باشند:
D:\SMSSender\
D:\SmsService\
D:\SmsService\logs\
مرحله 2: قرار دادن فایلها
- فایل برنامه پیامک را در مسیر زیر قرار دهید:
D:\SMSSender\iMaster.ERP.SmsSender.Console.exe - فایل WinSW را دانلود کرده و با این نام در این مسیر قرار دهید:
D:\SmsService\SmsRunnerService.exe - فایل
run-loop.ps1را در مسیر زیر بسازید:D:\SmsService\run-loop.ps1 - فایل
SmsRunnerService.xmlرا در مسیر زیر بسازید:D:\SmsService\SmsRunnerService.xml
مرحله 3: نصب سرویس
CMD یا PowerShell را با Run as Administrator باز کنید و دستورهای زیر را اجرا کنید.
دستورهای نصب سرویس
cd /d D:\SmsService
SmsRunnerService.exe install
SmsRunnerService.exe start
مرحله 4: تنظیم Recovery سرویس
برای ریاستارت خودکار سرویس در صورت خطا:
دستورهای Recovery
sc failure SmsRunnerService reset= 86400 actions= restart/5000/restart/10000/restart/60000
sc config SmsRunnerService start= auto
5) فایلهای تنظیمات
فایل run-loop.ps1
فایل SmsRunnerService.xml
6) تست فعال بودن سرویس
روش 1: بررسی در Services
پنجره سرویسها را باز کنید:
services.msc
سرویس زیر باید وجود داشته باشد و در حالت Running باشد:
SMS Runner Service
روش 2: بررسی از خط فرمان
دستور بررسی وضعیت سرویس
sc query SmsRunnerService
اگر سرویس فعال باشد، وضعیت آن باید شبیه RUNNING باشد.
روش 3: بررسی فایل لاگ برنامه
فایل زیر را بررسی کنید:
D:\SmsService\runner.log
اگر سرویس درست کار کند، ورودهای جدید در لاگ ثبت میشود.
روش 4: بررسی لاگهای WinSW
پوشه زیر را بررسی کنید:
D:\SmsService\logs
7) تنظیم زمان اجرای برنامه
زمان اجرای مجدد برنامه از این متغیر در فایل run-loop.ps1 کنترل میشود:
$intervalSeconds = 60
نمونهها
اجرای هر 1 دقیقه:
$intervalSeconds = 60اجرای هر 2 دقیقه:
$intervalSeconds = 120اجرای هر 5 دقیقه:
$intervalSeconds = 300
بعد از تغییر این مقدار، سرویس را ریاستارت کنید:
دستور ریاستارت سرویس
D:\SmsService\SmsRunnerService.exe restart
8) دستورات کاربردی مدیریت سرویس
نمایش دستورهای Start / Stop / Restart / Uninstall
D:\SmsService\SmsRunnerService.exe start
D:\SmsService\SmsRunnerService.exe stop
D:\SmsService\SmsRunnerService.exe restart
D:\SmsService\SmsRunnerService.exe uninstall
9) نکات عملیاتی مهم
- مسیر فایلهای سرویس را بعد از نصب تغییر ندهید.
- اگر نام فایل اصلی برنامه پیامک تغییر کرد، مقدارهای زیر را نیز اصلاح کنید:
$exePath$processName
- اگر فایل
runner.logساخته نشد، دسترسی نوشتن روی مسیرD:\SmsServiceبررسی شود. - اگر سرویس بالا نیامد، ابتدا لاگهای داخل
D:\SmsService\logsبررسی شوند. - این سرویس برای زمانی مناسب است که برنامه پیامک:
- کوتاهمدت اجرا شود
- رکوردها را ارسال کند
- بسته شود
- سپس بعد از زمان مشخص دوباره اجرا شود
10) جمعبندی
در این ساختار:
- WinSW سرویس ویندوز را مدیریت میکند
- PowerShell اجرای دورهای برنامه را انجام میدهد
- runner.log لاگ اجرای برنامه را نگه میدارد
- سرویس بعد از ریبوت سرور بهصورت خودکار دوباره فعال میشود