윈도 서비스를 만들 때 사용하는 .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;

이렇게 바꿔주면 된다.


ServiceInstallerEx.cs



 

>> 원본 소스 출처: http://www.codeproject.com/KB/install/sercviceinstallerext.aspx

 




Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]