C#에서 Windows Service 설치 프로세스 구현
개요
Windows Serivice를 과거에 C++로 개발했을 때는,
설치 프로세스도 구현했습니다.
C#에서 Windows Service 개발에서는 템플릿이 있으며,
서비스 자체는 매우 쉽게 만들 수 있지만,
왠지 템플릿에는 설치 처리는 구현되어 있지 않아서.
이번에는 그 처리를 구현한 이야기.
할 일
템플릿에서 생성된 코드에서 변경한 사항을 설명합니다.
・Main 함수에 인수를 추가해, 기동시 인수로의 분기를 작성
· 기동시 인수로 「install」이 지정되었을 경우에, 설치 처리를 실행하도록 한다.
※※XXXXXXXXService가 개발하는 서비스의 클래스명
설치 처리는 실행 파일명을 취득하고
ManagedInstallerClass 클래스의 InstallHelper 함수를 호출하기만 하면 됩니다.
Program.cs
namespace XXXXXXXXService
{
static class Program
{
static void Main(string[] args)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new XXXXXXXXService()
};
switch (args[0])
{
case "install":
string[] args = { System.Reflection.Assembly.GetExecutingAssembly().Location };
ManagedInstallerClass.InstallHelper(args);
break;
default:
ServiceBase.Run(ServicesToRun);
break;
}
}
}
}
아, Program.cs에 이하도 추기해 주세요.
Program.csusing System.Configuration.Install;
시작시 인수에 install을 지정하여 실행해보십시오.
※관리자 권한으로 실행해 주세요.
또, Visual Studio로부터 실행할 때는, Visual Studio를 관리자 권한으로 실행해 주세요.
그러면 다음과 같은 화면이 표시됩니다.
이번에는 관리자 권한이 있는 사용자 이름과 비밀번호를 입력했는데,
여기에 주의점이 있습니다.
유저명은 선두에 컴퓨터명+¥마크를 붙일 필요가 있습니다.
예를 들어 컴퓨터 이름이 aaa이고 사용자 이름이 bbb이면,
aaa¥bbb
를 사용자 이름에 입력합니다.
컴퓨터 이름은 설정 -> 시스템 -> 버전 정보를 통해 확인할 수 있습니다.
이 소스에서는, 이미 인스톨되고 있는지의 확인 처리나, 에러가 되었을 때의 처리는 기재하고 있지 않기 때문에,
필요에 따라 구현하십시오.
Reference
이 문제에 관하여(C#에서 Windows Service 설치 프로세스 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yossihard/items/89b1133d3204afbf9bf4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
템플릿에서 생성된 코드에서 변경한 사항을 설명합니다.
・Main 함수에 인수를 추가해, 기동시 인수로의 분기를 작성
· 기동시 인수로 「install」이 지정되었을 경우에, 설치 처리를 실행하도록 한다.
※※XXXXXXXXService가 개발하는 서비스의 클래스명
설치 처리는 실행 파일명을 취득하고
ManagedInstallerClass 클래스의 InstallHelper 함수를 호출하기만 하면 됩니다.
Program.cs
namespace XXXXXXXXService
{
static class Program
{
static void Main(string[] args)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new XXXXXXXXService()
};
switch (args[0])
{
case "install":
string[] args = { System.Reflection.Assembly.GetExecutingAssembly().Location };
ManagedInstallerClass.InstallHelper(args);
break;
default:
ServiceBase.Run(ServicesToRun);
break;
}
}
}
}
아, Program.cs에 이하도 추기해 주세요.
Program.cs
using System.Configuration.Install;
시작시 인수에 install을 지정하여 실행해보십시오.
※관리자 권한으로 실행해 주세요.
또, Visual Studio로부터 실행할 때는, Visual Studio를 관리자 권한으로 실행해 주세요.
그러면 다음과 같은 화면이 표시됩니다.
이번에는 관리자 권한이 있는 사용자 이름과 비밀번호를 입력했는데,
여기에 주의점이 있습니다.
유저명은 선두에 컴퓨터명+¥마크를 붙일 필요가 있습니다.
예를 들어 컴퓨터 이름이 aaa이고 사용자 이름이 bbb이면,
aaa¥bbb
를 사용자 이름에 입력합니다.
컴퓨터 이름은 설정 -> 시스템 -> 버전 정보를 통해 확인할 수 있습니다.
이 소스에서는, 이미 인스톨되고 있는지의 확인 처리나, 에러가 되었을 때의 처리는 기재하고 있지 않기 때문에,
필요에 따라 구현하십시오.
Reference
이 문제에 관하여(C#에서 Windows Service 설치 프로세스 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yossihard/items/89b1133d3204afbf9bf4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)