Obecnie zastanawiam się właśnie nad tą kwestią. Po dłuższych przemyśleniach i kilku filiżankach kawy doszedłem do następujących wniosków:
1. Sprawdzanie czy aktualizacja jest dostępna po zalogowaniu do panelu admina (ale nie częściej niż 1x/dzień)
2. Aktualizacja wysyłana w pełnej formie jeśli wersja różni się więcej niż 1 (jeśli to aktualizacja np. z 1.1 do 1.2 to używamy paczki różnicowej)
3. Plik update spakowany np. pharem [ogólnie czymś co standardowo mamy w PHP wszędzie]
4. Plik update powinien być podpisany aby uniemożliwić przez jakiś bug łatwej podmiany całej aplikacji
5. Sprawdzanie sum plików przed update czy zgadzają się z sumami dla posiadanego realase (myślę, że dobrze takiego pliku nie trzymać u usera tylko zdalnie), jeśli są inne zapytać usera co zrobić (nadpisać plikami nowego realase, nie dotykać tych plików, pokazać różnie, anulować update, zgłosić błąd)
6. Przed update spakować wszystkie pliki które mają być zmodyfikowane i utworzyć plik .php który po podaniu klucza wygenerowanego podczas update (unikalny) pozwoli cofnąć zmiany "nagle i bez winy usera" cała strona padnie

7. Brak mi pomysłu na zmiany w sqlu
Dziękuję za cierpliwe przeczytanie i proszę o porady
