윈도 서비스를 만들 때 사용하는 .NET Framework 기본 클래스로 ServiceProcessInstaller와 ServiceInstaller가 있는데,
ServiceProcessInstaller는 보통 서비스 실행 계정을 지정하는 용도로 사용되고,
ServiceInstaller는 서비스 자체 관리, 즉, 서비스 이름, 설명, 시작유형 등을 지정하는 용도로 사용된다.
이 두 클래스를 윈도 서비스 설치 관리자인 InstallerCollection에 추가함으로써 윈도 서비스를 자동 생성할 수 있게 된다.
그런데 이 기본 클래스들로는 서비스를 설치하면서 자동으로 시작되게 하거나,
복구 옵션 등을 지정할 수 없다. 이것들은 항상 서비스 GUI(services.msc)를 통해 수작업으로 처리해야만 했다.
그런데 이 서비스 확장 클래스를 이용하면 이런 것들이 모두 가능해진다.
즉,
1. 설치 후 서비스를 자동으로 시작시킬 수 있다.
2. 복구 옵션 3단계를 일일이 지정할 수 있다.
[샘플 코드]
FlvServiceInstaller = new ServiceInstaller(); FlvServiceInstaller.Description = "플래시 비디오 인코딩 자동화 서비스 프로그램 입니다."; FlvServiceInstaller.DisplayName = "FLV Encoding Service"; FlvServiceInstaller.ServiceName = "FLVSVC"; FlvServiceInstaller.StartType = ServiceStartMode.Automatic;
이 코드를,
FlvServiceInstaller = new ServiceInstallerEx(); FlvServiceInstaller.Description = "플래시 비디오 인코딩 자동화 서비스 프로그램 입니다."; FlvServiceInstaller.DisplayName = "FLV Encoding Service"; FlvServiceInstaller.ServiceName = "FLVSVC"; FlvServiceInstaller.StartType = ServiceStartMode.Automatic; // 확장 속성: 하루에 한번씩 실패횟수 초기화 FlvServiceInstaller.FailCountResetTime = 60 * 60 * 24; // 확장 속성: 첫번째 실패 시만 서비스 재시작 FlvServiceInstaller.FailureActions.Add(new FailureAction(RecoverAction.Restart, 60000)); FlvServiceInstaller.FailureActions.Add(new FailureAction(RecoverAction.None, 0)); FlvServiceInstaller.FailureActions.Add(new FailureAction(RecoverAction.None, 0)); // 확장 속성: 서비스 설치 후 즉시 시작 FlvServiceInstaller.StartOnInstall = true;
이렇게 바꿔주면 된다.
>> 원본 소스 출처: http://www.codeproject.com/KB/install/sercviceinstallerext.aspx
'Tech: > .NET·C#' 카테고리의 다른 글
주의: 값 형식과 참조 형식 (0) | 2008.10.25 |
---|---|
SNMP 트랩 메시지 전송 클래스 (1) | 2008.08.21 |
SNMP에 사용자 정의 값 쓰기 (0) | 2008.08.14 |
MessageBoxEx (0) | 2008.08.07 |
비 .NET(unmanaged) 에서 호출할 수 있도록 DLL 내보내기 (0) | 2008.06.26 |