처음에는 접근 방법이 잘못되었습니다.
새 버전을 사용할 수있는 경우 무언가를 업그레이드 할 수있는 기회가 많습니다.
- 것은 그들에 (일부 설치 autodownloader 기능을 가지고있다) 설치 확인 - 부분적인 해결책,
이
- 서비스는 새로운 버전 (백그라운드 스레드)를 발견 할 필요없이 자동 업그레이드 기회를 - 필요 몇 가지 개발 [MSI 침묵은 백그라운드에서 설치 ] < - 선호도
- 중앙 집중식 배포 - MS, IBM 등 중앙 집중식 설치를위한 솔루션이 있습니다. 따라서 새로운 솔루션이 준비되면 도메인에 배포 할 수있는 솔루션이 무엇이든 상관 없습니다. < - 그래서 대기업
+1 또한 서비스를 중지하지 않고이 작업을 수행 할 수있는 몇 가지 방법이 있습니다에 의해 tippicaly 사용, 비용 대비 효과가 없습니다. C#에서는 버전이있는 어셈블리를 즉시로드 및 언로드 할 수 있지만 개발자의 실제 생활을 힘들게 만듭니다.
2.nd 옵션을 선택한 경우 코드에서 "프로세스 asyncronly"를 시작할 수 있으므로 사용자 정의 설정 "my.msi -s config"를 정의 할 수 있지만 설치 프로그램이 기본 옵션 (자동 설치 검색)으로 실행됩니다. .파일". 설치 프로그램은 이미 존재하는 경우 서비스 자체 검사 및 중지를 준비해야합니다.
이것은 복잡한 이야기이며 내가 언급 한 몇 가지 키워드를 검색합니다.
당신이 제안한 것보다 훨씬 더 정통적인 방법이 있습니다. http://stackoverflow.com/questions/246886/process-for-updating-a-windows-service-automated-or-is-it-manual, http://stackoverflow.com/questions/106765/i-want를 참조하십시오. -my-c-sharp-windows-service- 자동 업데이트 자체 # 106799 및 http://stackoverflow.com/questions/691663/auto-update-library-for-net –
@RobertHarvey, 이전에 이러한 게시물을 읽고 별도의 프로세스를 사용하여 서비스를 중지했다가 다시 시작하는 것이 좋습니다. 또한 설치 프로그램을 사용하는 것이 좋습니다. 이것은 업데이트 루틴을 구현하는 방법입니다. 내 솔루션이 어떻게 개선 될 수 있는지에 대한 명확한 설명을 제공해 주시겠습니까? 감사. – HamChunck
여기에 좋은 예가 있습니다. http://stackoverflow.com/a/328211 –