Utrzymuję aplikację dla wielu platform, opartą na PyQt, która działa na systemie Linux i Windows.Własna aktualizacja aplikacji py2exe/py2app
Wersje systemu Windows i Mac są dystrybuowane za pomocą py2exe i py2app, co powoduje tworzenie całkiem dużych pakietów (~ 40 MB).
chciałbym dodać „automatycznej aktualizacji” funkcjonalność, na podstawie poprawek do ograniczenia pobrań rozmiar:
- Sprawdź dostępność nowych wersji na serwerze HTTP
- pobrać patche potrzebne do aktualizacji do ostatniego wersja
- zastosować listę łat i ponownie uruchomić aplikację
mam kilka pytań:
- jaki jest preferowany sposób aktualizacji aplikacji systemu Windows, ponieważ otwarte pliki są zablokowane i nie można ich zastąpić?
- Jak przygotować i zastosować poprawki? być może używając bsdiff/pspatch?
[aktualizacja]
Zrobiłem prostą klasę do wprowadzania poprawek z bsdiff, który jest bardzo wydajny, jak reklamowane na ich stronie: diff na dwóch py2exe wersji mojej aplikacji (~ 75 MB nieskompresowanych) tworzy łatkę 44 kB! Wystarczająco małe dla mnie, pozostanę przy tym formacie.
Kod jest dostępny w pakiecie "aktualizacja" pyflu, małej bibliotece kodu Pythona.
Ciekawe, w jaki sposób planujesz poradzić sobie z aktualizacjami obejmującymi wiele wersji/aktualizacji. na przykład użytkownik ma 1,0, a do czasu, gdy następnym razem próbują go uruchomić, było (powiedzmy) 10 aktualizacji? Czy generowałbyś łatki na żądanie? Z buforowaniem chyba nie byłoby tak źle, ale zakładam, że masz dostępny kod po stronie serwera ... –
Jeśli użytkownik pominął 10 aktualizacji, aktualizator pobierze 10 poprawek potrzebnych do przejścia do najnowszej wersji i zastosowania jednego o jeden. Nie ma kodu po stronie serwera, tylko prosty serwer apache pokazujący zawartość katalogów. –