2009-09-07 5 views
9

데스크톱 스윙 앱을 개발했으며 자동 업데이트 기능을 제공하는 가장 좋은 방법에 대해 생각하고 있습니다. JavaWebStart가 제공하는 정보를 알고 있지만 로컬 파일을 읽어야 jar 파일에 서명해야하므로 내 필요에 맞지 않는다고 생각합니다. 게다가 JWS는 서버에 배포하기 위해 추가 작업이 필요하지만 이제는 .jar 만 업로드하면됩니다.자바 스윙 데스크톱 앱의 자동 업데이트 기능

나는이 방법에 대해 생각을 해 봤는데 : (업데이트가 필요하지)가되는 SplashScreen를로드하는 Config.xml의 현재 버전을 확인하고 서버 설정과 비교

  • 첫 번째 JAR를. xml.

  • 서버 버전이 새로운 경우 사용자에게 업데이트 할 것인지 물어보십시오. 이 경우 새 "main.jar", 새 "config.xml"및 새 시작/아이콘을 다운로드하고 MD5SUM을 확인한 다음 이전 파일을 새 파일로 교체하십시오.

  • "main.jar"을 시작하십시오.

나는 바퀴를 재발 명하려는 경우 또는 위에 적어 놓은 것보다 더 좋은 패턴이있는 경우 잘 모르겠다.

+3

당신은 바퀴 달린 당신이 이미 알고 있기 때문에, 당신은 자바 WebStart 언급했기 때문에. 서버에서의 배치는 미미하며 파일 몇 개를 게시하면되므로 서버에 활성 구성 요소가 필요하지 않습니다. –

+0

https에서 해시를 확인하는 대신 인증서를 사용하는 것이 좋습니다. 해시 기법을 사용하면 https 서버가 손상되면 모든 자동 업데이트 클라이언트가 손상 될 수 있습니다./또한 다운 그레이드 공격을 피하기 위해 최신 버전을 설치하고 있는지 확인하십시오./WebStart는 파일 브라우저의 제어/사용자 정의가 제한되어 있지만 파일 사용에 제한된 인터페이스를 제공합니다. –

+0

나는 그렇게 단순하지 않다고 생각한다. 나는 그것을 전혀 제어하지 않는 서버에 배포해야합니다. 나는 예를 들어 mimetypes를 바꿀 수 없다. 게다가 말했듯이, 로컬 파일에 액세스해야 서명 할 필요가 있습니다. – ktulur

답변

5

우리도 비슷한 일을했습니다. 우리는 단지 https를 통해 그것을 가지고 항아리를 다운로드했습니다. 새 항목이 필요한지 확인하려면 스트림의 크기 만 확인하면됩니다. 이론적으로는 작동하지 않을 수도 있지만 실제로는 그렇습니다. 항아리가있는 디렉터리 목록을 가져 와서 구문 분석하고 각 항아리를 다운로드하므로 항아리 이름도 하드 코딩되지 않았습니다. 하지만 두 가지 추악한 점이 있습니다.

처음에는 새로운 jvm 프로세스를 시작하여 새로운 jar를 시작하는 것이 그리 간단하지 않습니다.

둘째, 업데이트가 중간에 실패하면 병을 손상시키지 않아야합니다.

마지막으로이 프로세스로 부트 스트랩 항아리를 업데이트 할 수있는 방법이 없습니다.

+0

누구나 할 수있는 방법에 대해 예제를 찾는다면, 나는 지난 며칠 동안 그것을 만들었습니다 : https://github.com/UrsKR/updates-r-simple –