나는 당신이 매우 별도의 문제가 생각 :
- 컨트롤러/핸들러 통신 컨트롤러의
- 에서 적절한 소프트웨어 업데이트
그것은 것을 이 핸들러의 모양을 자세히 설명 할 수 있다면 도움이 될 것입니다. .NET 어셈블리는 핸들러 인터페이스를 구현하는 클래스를 가지고 있습니까? 그것과 비슷하다면 MEF를 사용하여 핸들러를 찾아서로드하고 실행하는 것이 좋습니다. MEF는 이러한 핸들러의 위치 및로드를 쉽게 할 수 있습니다.
자동 업데이트 응용 프로그램은 항상 다소 까다 롭습니다. 이 문제를 해결 한 한 가지 방법은 두 부분으로 된 응용 프로그램을 만드는 것입니다. 첫 번째 부분은 컨트롤러를 시작하는 방법을 알고있는 작은 부트 스트 래퍼 응용 프로그램입니다. 기본적으로 부트 스트 래퍼는 컨트롤러 응용 프로그램을 찾고 실행합니다. 필자가해온 방법은 배포 한 응용 프로그램의 새 버전마다 하나의 하위 디렉토리가있는 디렉토리를 만드는 것입니다. 부트 스트 래퍼는 가장 높은 버전을 선택하고 해당 디렉토리에서 찾은 컨트롤러 응용 프로그램을 시작합니다.
샘플 컨트롤러 디렉토리 구조 :
업데이트가 적용
\Programs
\Controller
bootstrapper.exe
\v1.0
controller.exe
\v1.1 <-- Current version
controller.exe
, 발생하는 모든 새로운 "버전"디렉토리는 컨트롤러 디렉토리에 생성하고 업데이트하는 지정 컨트롤러에 코드를 반환 다시 시작해야합니다. 컨트롤러가 작업을 완료하면 종료됩니다. 부트 스트 래퍼 (그리고 부트 스트 래퍼가 컨트롤러를 시작할 때 블록킹)로 전체 프로세스가 시작 되었기 때문에 부트 스트 래퍼는 컨트롤러가 시작될 때 제어를 다시 얻습니다.부트 스트 래퍼는 단순히 시작 프로세스를 다시 실행하고 새 컨트롤러 버전을 찾고 실행합니다.
여기 하나의 주목 포인트는 부트 스트 래퍼를 업데이트하는 것이 쉽지 않다는 것입니다. 일반적으로 매우 적은 코드가 포함되어 있기 때문에 자주 업데이트하는 것이 아닙니다.
희망이나 도움이되는 아이디어.
핸들러는 아직 존재하지 않지만 이들이 독립 실행 형 응용 프로그램 일 가능성이 높습니다. 우리는 모든 핸들러 작성에 대한 책임이 없으므로 단순성을 위해 결정되었습니다. 부트 스트랩 제안은 재미있는 부분입니다. 특히 버전 폴더를 사용하는 것이 좋습니다. – Andrew