Tôi duy trì một ứng dụng nền tảng chéo, dựa trên PyQt chạy trên máy Mac và cửa sổ Linux.Tự cập nhật ứng dụng py2exe/py2app
Các phiên bản windows và mac được phân phối bằng py2exe và py2app, tạo ra các gói khá lớn (~ 40 MB).
Tôi muốn thêm một "cập nhật tự động" chức năng, dựa trên các bản vá lỗi để hạn chế tải kích thước:
- kiểm tra cho các phiên bản mới trên một máy chủ http
- tải về các bản vá lỗi cần thiết để cập nhật cuối cùng phiên bản
- áp dụng danh sách các bản vá lỗi và khởi động lại ứng dụng
tôi có một số câu hỏi sau:
- cách ưa thích để cập nhật ứng dụng cửa sổ là gì vì các tệp đang mở bị khóa và không thể ghi đè?
- làm cách nào để chuẩn bị và áp dụng các bản vá lỗi? có lẽ sử dụng bsdiff/pspatch?
[cập nhật]
tôi đã thực hiện một lớp đơn giản để làm cho các bản vá lỗi với bsdiff, mà là rất hiệu quả như quảng cáo trên trang web của họ: một diff trên hai phiên bản py2exe của ứng dụng của tôi (~ 75 MB không nén) tạo ra một bản vá 44 kB! Đủ nhỏ cho tôi, tôi sẽ dính vào định dạng này.
Mã có sẵn trong gói 'cập nhật' là pyflu, một thư viện mã Python nhỏ.
Bạn quan tâm đến cách bạn định xử lý các bản cập nhật kéo dài nhiều phiên bản/cập nhật. ví dụ. một người dùng có 1.0, sau đó vào thời điểm họ tiếp theo thử chạy nó đã có (nói) 10 cập nhật? Bạn có tạo ra các bản vá theo yêu cầu không? Với bộ nhớ đệm tôi đoán nó sẽ không quá tệ, nhưng giả sử bạn có một số mã phía máy chủ có sẵn ... –
Nếu người dùng bỏ lỡ 10 bản cập nhật trình cập nhật sẽ tải xuống 10 bản vá cần thiết để chuyển sang phiên bản mới nhất và áp dụng chúng bởi một. Không có mã phía máy chủ, chỉ cần một máy chủ apache đơn giản hiển thị nội dung thư mục. –