programing

설치 후 서비스 목록에 Windows 서비스가 나타나지 않음

randomtip 2021. 1. 18. 07:55
반응형

설치 후 서비스 목록에 Windows 서비스가 나타나지 않음


Visual Studio 2008을 사용하여 C #으로 Windows 서비스를 만들었습니다. http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

기사의 지시에 따라 설치 프로젝트를 생성하고 실행했습니다 ... 내 서비스를 c : \ program files \ product etc ....에 설치하지만 서비스 목록에 나타나지 않습니다 ..

내가 무엇을 놓치고 있습니까?


링크 한 기사의 가장 중요한 부분은 여기입니다.

설치 프로젝트에 사용자 지정 작업을 추가하려면

1. 솔루션 탐색기에서 설치 프로젝트를 마우스 오른쪽 단추로 클릭하고보기를 가리킨 다음 사용자 지정 작업을 선택합니다. 사용자 지정 작업 편집기가 나타납니다.

2. Custom Actions 편집기에서 Custom Actions 노드를 마우스 오른쪽 버튼으로 클릭하고 Add Custom Action을 선택합니다. 프로젝트에서 항목 선택 대화 상자가 나타납니다.

3. 목록 상자에서 응용 프로그램 폴더를 두 번 클릭하여 열고 MyNewService (활성)에서 기본 출력을 선택한 다음 확인을 클릭합니다. 기본 출력은 사용자 지정 작업 (설치, 커밋, 롤백 및 제거)의 4 개 노드 모두에 추가됩니다.

4. Setup 프로젝트를 빌드합니다.

이 단계를 건너 뛰면 설치 프로젝트가 파일을 빌드하고 올바른 디렉토리에 복사합니다. 그러나 이러한 단계 없이는 바이너리를 서비스로 등록하지 않습니다.


이 기능은 기본 제공 설치 / 배포 프로젝트 템플릿이 있거나있는 이전 버전의 Visual Studio에서도 작동합니다. 최신 버전의 Visual Studio에는 다른 설치 / 배포 프로젝트가 있습니다 (일부는 타사 소프트웨어가 필요함).

WiX 도구 세트를 살펴보고 여기에서 Windows 서비스의 WiX 설치를 확인하는 것이 좋습니다 .


나는 이것에 의해 얼굴을 소유하게 되었기 때문에 다른 사람이 그것에 부딪 칠 경우를 대비하여 여기에 넣습니다.

가이드의 지침을 따랐지만 여전히 설치하는 데 문제가있는 경우 설치 프로그램 클래스가 공용인지 확인하십시오. 내부는 작동하지 않습니다.


나는 이와 동일한 문제가 있었고 ServiceInstaller의 부모를 설정하지 않았다는 것을 깨달았습니다.

프로젝트 설치 프로그램을 두 번 클릭하십시오. 디자이너는 서비스 설치 프로그램 및 프로세스 설치 프로그램을 표시해야합니다. 둘 중 하나를 클릭하고 속성을 볼 때 모두 프로젝트 설치 프로그램의 클래스 이름으로 설정되어야하는 Parent 속성을 확인해야합니다.

또는 코드에서 수행하는 경우 다음을 설정해야합니다.

serviceInstaller.Parent = this;

serviceProcessInstaller.Parent = this;

서비스를 설치할 때 모든 WinService 요구 사항에 적합했던 NSSM 사용을 적극 권장 합니다. 모든 실행 파일 (.bat, .cmd 포함)을 서비스로 설치할 수 있으며 서비스가 항상 실행되고 있음을 보장합니다.

이 도구를 사용하려면 :

  1. 여기 에서 다운로드

  2. 그리고 여기 의 지침을 따르십시오.

그런 다음 서비스 목록을 확인하면 해당 목록이 실행 중이어야합니다.


이 지침을 따르십시오. 그들은 나를 위해 일했습니다. 특히 설정의 경우 해당 부분은 기사 하단 근처에 있습니다.

MSDN : 연습 : Windows 서비스 만들기


Visual Studio 2013에서 서비스 응용 프로그램 용 InstallShield 템플릿을 사용하여 동일한 문제가 발생했습니다. 그러나 설치 프로젝트 템플릿 https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d를 사용할 때 매력처럼 작동합니다.

따라서 Setup Project 템플릿을 다운로드하여 Studio를 닫고이 설치를 실행하고 Studio를 시작하면 작동합니다.

던.


다음은 저에게 도움이 된 CodeProject.com의 tgeek001의 좋은 튜토리얼입니다. 여기에는 위의 게시물에서 보지 못한 몇 가지 사항이 포함되어 있습니다. 1. 서비스를 제거하기 전에 서비스를 중지하는 이벤트 처리기 코드 2. 실패를 방지하기 위해 설정할 사용자 지정 작업 코드의 특정 조건 및 속성 (오류 1001 수정) 위의 수락 된 답변의 지침을 따르는 동안 경험 한 것) 3. Win 서비스 속성 "이전 버전 제거"드롭 다운이 true로 설정

http://www.codeproject.com/Tips/575177/Window-Service-Deployment-using-VS

다음은 사용자 지정 작업 설정에 대한 자습서에서 가져온 것입니다 (사례 문제).

  • 설치하고 Condition 속성을 "NOT (Installed 또는 PREVIOUSVERSIONSINSTALLED)"로 설정합니다.
  • 제거하고 Condition 속성을 "NOT UPGRADINGPRODUCTCODE"로 설정합니다.
  • 커밋 : "사용자 지정 작업 데이터"필드 설정 : / OldProductCode = "[PREVIOUSVERSIONSINSTALLED]"

마지막으로 WinService 프로젝트에서 드롭 다운 "이전 버전 제거"를 true로 설정해야합니다.

건배


설치 프로그램 클래스가 서비스와 동일한 프로젝트에 있음을 발견했습니다. 설치 프로그램은 서비스에서 참조하는 라이브러리 프로젝트에 존재할 수 없습니다.


검색하기 전에 서비스에 지정한 이름을 확인하는 것을 잊지 마십시오. (오른쪽 클릭-> 속성-> 서비스 이름 확인

참조 URL : https://stackoverflow.com/questions/1560407/windows-service-not-appearing-in-services-list-after-install

반응형