2011-12-07 1 views
2

일반 Windows 응용 프로그램에서 사용할 수있는 ...
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CheckForUpdate()
... 사용 가능한 업데이트가 있는지 여부를 확인합니다.ClickOnce를 사용하지 않고 콘솔 응용 프로그램에서 업데이트를 확인하려면 어떻게합니까?

나는 내가 현재 실행되는 응용 프로그램의 버전을 인쇄 할 수 System.ReflectionAssemblyAssemblyName을 사용할 수 있습니다 알고 있지만, 나는 그것이 가장 최근에 발표 된 무슨에 그 비교 하시고하는 방법을 모르겠어요.

ClickOnce를 사용하지 않고 콘솔 응용 프로그램에 대해 CheckForUpdate()과 동일한 것은 무엇입니까?

답변

5

응용 프로그램에서 가장 최신 버전을 확인하는 데 사용할 수있는 서버 측이 필요합니다. 개인적으로, 나는 가장 최근의 버전 번호와 URL을 다운로드 할 수있는 웹 서비스로 갈 것이지만,이 정보를 위해 파싱 된 정적 페이지로도 할 수있다. 응용 프로그램이 시작되고 서비스에서 반환 된 버전 번호가 확인됩니다. 서비스가 새로운 버전을보고하면 HttpWebRequest (또는 다른 방법)를 사용하여 새 버전을 다운로드하십시오. 새 버전이 설치 프로그램으로 패키지되어 있으면 설치 프로그램을 실행하고 현재 실행중인 인스턴스를 종료 할 수 있습니다. 설치 프로그램보다 무언가를 더 원한다면 exe를 제자리에서 업데이트 할 방법이 필요합니다. 이 작업은 보통 주 응용 프로그램이 종료 될 때까지 대기하고 새 버전의 exe를 옮겨 놓은 다음 응용 프로그램을 다시 시작하는 두 번째 응용 프로그램 (업데이터)에서 수행합니다. 한 가지 명심해야 할 것은 프로그램 디렉토리에 쓰기 권한이 있어야하므로 사용자가 응용 프로그램을 실행하고 있어야한다는 것입니다.

파일 공유를 사용하려는 기업 환경이 더 다르면 다른 방식으로 수행 할 수 있습니다. 프로그램에 가장 최신 버전의 텍스트 파일과 업데이트 경로가있는 잘 알려진 공유 디렉토리를 확인하게하십시오. 텍스트 파일을 위와 동일한 정보로 파싱하고 system.io 네임 스페이스 클래스를 사용하여 지정된 경로에서 새 버전을 가져옵니다. 기본적으로 웹 서비스와 동일한 작업이지만 웹 요청 대신 파일 경로를 사용합니다.

+0

이것은 분명히 법인입니다. 환경. VS2010에서 솔루션 속성을 열고 게시로 이동하면 업데이트 ...를 클릭하고 프로그램이 업데이트를 확인해야하는 위치를 지정할 수 있습니다. 문제는이 방법으로 사용자가 업데이트를 연기하는 것을 허용하지 않으며 업데이트를 설치하기 전에 사용자가 앱을 두 번 열어야한다는 것입니다. Windows 응용 프로그램에서는'System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateAsync()'를 사용하여 업데이트를 강제 실행 한 후 응용 프로그램을 닫을 수 있습니다. 콘솔 앱에 비슷한 점이 없다는 것을 믿기 어렵습니다. – newuser

+0

필자가 피하기를 원한다고 말한 ClickOnce 프레임 워크를 사용한다는 것이 전부입니다. –

+0

그럼 분명히 ClickOnce에 대해 잘못 알고 있습니다. 현재 Windows 응용 프로그램에서이 응용 프로그램을 사용하고 있다면 절대로 깨닫지 못합니다. lol – newuser