2009-09-07 35 views
9

Tôi đã phát triển ứng dụng Swing trên máy tính để bàn và tôi đang suy nghĩ về cách tốt nhất để cung cấp tính năng tự động sửa lỗi. Tôi biết rằng JavaWebStart cung cấp điều này nhưng tôi nghĩ rằng nó không phù hợp với nhu cầu của tôi bởi vì tôi cần phải đọc các tập tin địa phương vì vậy tôi sẽ cần phải ký vào lọ. Bên cạnh đó, JWS yêu cầu thêm công việc để triển khai trong máy chủ trong khi bây giờ tôi chỉ cần tải lên .jar.Tính năng Autoupdate trong ứng dụng Java Swing trên máy tính để bàn

Tôi đã suy nghĩ về phương pháp này:

  • Một JAR đầu tiên (mà không bao giờ cần cập nhật) tải Splashscreen, kiểm tra các phiên bản hiện tại trong một config.xml và so sánh nó với cấu hình máy chủ. xml.

  • Nếu phiên bản máy chủ mới hơn, hãy hỏi người dùng có muốn cập nhật hay không. Trong trường hợp đó, tải xuống "main.jar" mới, "config.xml" mới và biểu tượng giật gân/biểu tượng mới, kiểm tra MD5SUM và thay thế các tệp cũ bằng các tệp mới.

  • Khởi chạy "main.jar".

Tôi không biết Nếu tôi đang cố gắng phát minh lại bánh xe hoặc Nếu có hình mẫu tốt hơn so với hình tôi đã đặt ở trên.

+3

Bạn đang làm mới bánh xe và bạn đã biết như vậy, vì bạn đề cập đến Java WebStart. Việc triển khai trên máy chủ là tối thiểu, bạn chỉ cần đăng một vài tệp, không cần một thành phần hoạt động trên máy chủ. –

+0

Tôi khuyên bạn nên sử dụng chứng chỉ thay vì kiểm tra băm từ https. Với kỹ thuật băm, máy chủ https bị xâm phạm có nghĩa là ảnh hưởng đến tất cả các khách hàng tự động sửa đổi./Cũng kiểm tra xem bạn đang cài đặt phiên bản hiện tại hơn để tránh các cuộc tấn công hạ cấp./WebStart không cung cấp giao diện hạn chế để sử dụng tệp, mặc dù điều khiển/tùy chỉnh của trình duyệt tệp bị giới hạn. –

+0

Tôi nghĩ rằng nó không quá tối thiểu. Tôi cần phải triển khai nó trong một máy chủ không được kiểm soát bởi tôi cả. Tôi không thể thay đổi mimetypes ví dụ. Bên cạnh đó, như tôi đã nói, Nó sẽ cần phải truy cập các tập tin địa phương vì vậy tôi sẽ cần phải ký tên. – ktulur

Trả lời

5

Chúng tôi đã làm một điều tương tự. Chúng tôi đã có nó thông qua https và tải về các jar. Để biết nếu bạn cần một cái mới, chúng tôi chỉ kiểm tra kích thước trên luồng. Về mặt lý thuyết có thể không hoạt động, nhưng trong thực tế nó đã làm. Chúng tôi thậm chí còn giàu có hơn bằng cách lấy danh sách thư mục nơi các lọ được đặt, phân tích cú pháp và tải xuống từng bình, vì vậy tên của bình cũng không được mã hóa cứng. Tuy nhiên, có một vài điểm xấu.

Trước tiên, việc khởi chạy quy trình jvm mới để bắt đầu lọ mới không đơn giản như vậy.

Thứ hai, bạn phải chắc chắn rằng bạn không làm hỏng bình nếu cập nhật của bạn không thành công ở giữa.

Cuối cùng, không có cách nào để cập nhật bình khởi động với quá trình này.

+0

Trong trường hợp ai đó tìm kiếm một ví dụ về cách thực hiện, tôi đã xây dựng khá nhiều điều đó trong vài ngày qua: https://github.com/UrsKR/updates-r-simple –

Các vấn đề liên quan