2011-09-19 2 views
1

우리는 우리가 작성한 일부 서비스의 배치를 자동화하려고합니다. 사용자 이름과 암호를 응용 프로그램 설치 프로그램에 하드 코딩하지 않으려합니다. 사용자 이름과 로그인을 하드 코드하지 않는 문제는 릴리스 자동화가 문제가된다는 것입니다.서비스 배포를 자동화 할 때 사용자 서비스 실행을 설정하는 가장 좋은 방법은 무엇입니까?

어떻게 당신은 MSI에서 Windows 서비스를 포장에 대해 갈 것 같은 : 서비스가 환경 인스턴스에 따라 특정 사용자 이름으로 실행하도록 설치되어

  1. . 즉 Production에서는 DOMAIN_NAME \ ProductionServiceUser에서 실행되지만 동일한 서비스를 준비에 배포하는 경우 DOMAIN_NAME \ StagingServiceUser에서 서비스가 실행됩니다.

  2. "프로그램 추가 제거"를 통해 서비스를 제거하면 서비스가 제거됩니다.

답변

0

는 자동으로 설치하고 Windows 설치 지원을 사용할 수있는 서비스를 제거하려면 다음

Visual Studio를 설치 프로젝트는 서비스 테이블을 지원하지 않습니다. 따라서 사용중인 경우 설치를 작성하고 서비스를 관리하는 사용자 지정 동작을 제거해야합니다. 다른 설치 제작 도구는 서비스를 직접 지원합니다.

동적으로 서비스 계정을 설정하려면 사용자 지정 installer property (예 : SERVICE_ACCOUNT)을 사용할 수 있습니다. 설치하는 동안이 속성을 원하는 계정으로 설정할 수 있습니다.

관리자 계정 인 경우에도 log on as a service policy이 설정된 경우에만 사용자 지정 사용자 계정으로 서비스를 실행할 수 있습니다. 사용자 지정 작업, 대화 상자 컨트롤, 명령 줄 등 여러 가지 방법으로이 작업을 수행 할 수 있습니다. 이 정책은 설치 중에 ntrights.exe을 사용자 지정 작업으로 사용하여 설정할 수 있습니다.

+0

나는 더 분명해야했습니다. 이것은 관리되지 않는 C++ 서비스입니다. 서비스 설치를 수행하기 위해 C# 라이브러리 프로젝트를 만들 수 있다고 가정합니다. 그러나 사용자 지정 작업을 수행하는 사용자로 실행되지 않는 사용자 지정 작업을 사용하는 것이 좋습니다. 설치. – bpeikes

+0

나는 이것이 내가 제안한 것에 어떻게 거꾸로되는지 이해하지 못한다. Visual Studio를 사용하려는 경우 유일한 해결책은 사용자 지정 작업입니다. 사용자 지정 동작을 사용하지 않으려면 Visual Studio를 사용할 수 없습니다 (서비스를 지원하는 다른 설정 제작 도구가 필요함). –

+0

사용자 지정 작업은 훌륭하고 사용중인 작업이지만 특정 사용자 계정으로 서비스가 실행되도록하려면 msi 배포를 자동화하는 방법에 대해 더 자세히 묻습니다. – bpeikes

관련 문제