ski7777 hat geschrieben:Derzeit haben wir:
- /opt/ftc/apps/system/: Systemapps und ihre eventuellen Daten
- ~/apps/: Nutzerapps und ihre Daten
Da birgt ein Problem: Wenn der App-Entwickler eine Datei löscht, dann wird diese nicht auf dem TXT gelöscht.
Das ist zwar nicht besonders schön (bzw. es kann auf Dauer die App-Verzeichnisse mit alten Daten vollmüllen), aber so ein riesiges Problem ist das denke ich gar nicht: Wenn der App-Entwickler eine Datei löscht, dann greift die neue Version seiner App logischerweise auf diese Datei nicht mehr zu. Und dann passiert in der Regel auch nichts Schlimmes, wenn irgendwo in einem Verzeichnis auf der SD-Karte noch eine alte Version rumgammelt.
Und Systemapps können ihre Daten erst gar nicht in /opt/ftc/apps/system/ speichern - das ist nämlich per Default read-only.
ski7777 hat geschrieben:
Deshalb sollte man vor einem Update eigentlich den kompletten Ordner löschen. Problem: Dann werden auch die Daten des Nutzers gelöscht (Brickly-Projekte, Spielerfolge, ...)
Das wäre die sichere Variante, ja.
Und wenn man das nicht macht, dann muss man als App-Entwickler auch (und viel wichtiger) darauf achten, dass die "alten" Benutzerdaten dann auch mit der neuen Version der App kompatibel sind (also z.B. nicht einfach mal eben das Format ändern, in dem die Spielstände gespeichert werden).
ski7777 hat geschrieben:
Mein Vorschlag:
- Wir löschen auch immer den Ordner in ~/apps
- Es gibt ab sofort einen Ordner ~/data/[UUID], in dem die App Daten gespeichert sind
- Der Ordner ~/data/[UUID] wird für einfacheren Zugriff unter ~/apps/[UUID]/data gemounted
Wenn überhaupt würde ich das eher per Overlay trennen (so wie das jetzt auch für /etc gemacht wird). Das sieht dann für die App so aus, als könnte sie nach belieben in ihr Verzeichnis schreiben, aber die Änderungen landen automatisch woanders.
Oder man macht das so wie jeder handelsübliche Package-Manager auch: Bei der Installation merkt man sich, was man genau installiert hat (in unserem Fall also die relativen Dateinamen aus dem Zipfile), und vor dem Update löscht man dann genau diese Dateien (Bonus: Man löscht sie nur, wenn sie in der Zwischenzeit nicht geändert wurden).
Aber ich weiß wie gesagt nicht, ob wir uns darum jetzt schon großartig Gedanken machen müssen.