Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Datei wird bei Bereitstellung nicht überschreiben (https://www.delphipraxis.net/185044-datei-wird-bei-bereitstellung-nicht-ueberschreiben.html)

bcvs 11. Mai 2015 07:54

Datei wird bei Bereitstellung nicht überschreiben
 
Hallo zusammen,

ich will eine HTML-Datei zusammen mit meiner App auf das Mobilgerät bringen. Also nehme ich diese Datei in die Bereitstellung auf. Wenn die Datei jetzt einmal auf dem Mobilgerät (Android oder IOS) vorhanden ist, wird sie allerdings nie mehr überschrieben, auch wenn "Überschreiben" in der Bereitstellung auf immer steht.

Der Remote-Pfad ist für IOS StartUp\Documents\ und für Android assets\internal.

Ich behelfe mir jetzt so dass ich die Datei beim Start der App umbenenne, dann ist sie unter dem Namen nicht mehr vorhanden und wird beim nächsten Mal wieder übertragen. Gibt es da keine andere Lösung?

Appmethod 1.16

bra 12. Mai 2015 10:49

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Ich habe diesen Fehler bereits zweimal an Embarcadero gemeldet und er wurde dort mit "By design" geschlossen:
http://qc.embarcadero.com/wc/qcmain.aspx?d=125481
http://qc.embarcadero.com/wc/qcmain.aspx?d=130084

Meiner Meinung nach ein grober Bug, laut denen soll es wohl so sein. Wozu auch immer? :evil:

bcvs 12. Mai 2015 11:20

AW: Datei wird bei Bereitstellung nicht überschreiben
 
OK, ich weiß zwar nicht, was daran by design sein soll, aber denn muss ich wohl mit meinem Workaround leben.

Thomas_K 12. Mai 2015 11:32

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Zitat:

Zitat von bcvs (Beitrag 1301172)
denn muss ich wohl mit meinem Workaround leben.

Kannst du dein Workaround hier grob beschreiben, über diese Ecke und Kannte in Delphi bin ich auch schon gestolpert.

himitsu 12. Mai 2015 11:34

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Wenn man da "Überschreiben" einstellen kann, dann sollte auch überschrieben werden.

IMHO ist das also ein Bug.
Nochmal im alten QC fragen was das soll (eventuell auch besser gleich im neuen https://quality.embarcadero.com/)

Wenn sich genug beschweren ... vielleicht repariert es dann auch mal wer.

bcvs 12. Mai 2015 11:54

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Zitat:

Zitat von Thomas_K (Beitrag 1301173)
Kannst du dein Workaround hier grob beschreiben, über diese Ecke und Kannte in Delphi bin ich auch schon gestolpert.

Im OnShow des MainForm (hier vom Prinzip her, der entsprechende Pfad ist natürlich berücksichtigt):

Delphi-Quellcode:
  if FileExists('Helptemp.html') then begin
    DeleteFile('Help.html');
    RenameFile('Helptemp.html', 'Help.html');
  end;
Helptemp.html wird deployed, mit Help.html wird in der App gearbeitet.

bra 12. Mai 2015 13:49

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Ich hab mir darüber auch schon Gedanken gemacht und einen Haken hat deine Variante. Angenommen die Datei wird bei jedem Update im Paket aktualisiert, hat man nicht mehr die aktuelle Version, wenn der Benutzer nicht nach jedem Update die App aufruft.

Beispiel:
Version1 installiert und gestartet -> Tempversion1 wird umkopiert
Version2 installiert aber nicht gestartet -> Dateiversion1, Tempversion2 wird eingespielt
Version3 installiert und gestartet -> Tempversion2 wird umkopiert, die aktuelle aus Version3 aber nicht.

Wenn der Benutzer jetzt also nach Version1 x Updates zwar einspielt, die App selbst aber nie aufruft, bleiben die Dateien immer auf dem Stand vom ersten Update nach dem letzten Start der App.

bcvs 12. Mai 2015 15:14

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Ja, das könnte sein.

Dann müsste man halt die Versionsnummer in die Tempversionen integrieren und alle älteren Versionen löschen. In deinem Beispiel:

Version3 installiert und gestartet -> Tempversion3 wird umkopiert, Tempversion2 wird gelöscht.

Mavarik 12. Mai 2015 15:21

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Oder Du änderst den Dateiname:

'Help_'+GUITtoString+'.htm';

Und suchst die Datei mit 'Help_*.htm'

Mavarik

himitsu 12. Mai 2015 16:01

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Oder die Datei als Ressource in die "EXE" und bei Programmstart/Verwendung da rauskopiert.

Die Anwendung selber wird ja hoffentlich aktualisiert, auch wenn sie schonmal installiert wurde. :stupid:

Sir Rufo 12. Mai 2015 18:12

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Zitat:

Zitat von himitsu (Beitrag 1301236)
Oder die Datei als Ressource in die "EXE" und bei Programmstart/Verwendung da rauskopiert.

Die Anwendung selber wird ja hoffentlich aktualisiert, auch wenn sie schonmal installiert wurde. :stupid:

... oder in das gleiche Verzeichnis wie die Anwendung ...

bcvs 12. Mai 2015 18:52

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Zitat:

Zitat von Sir Rufo (Beitrag 1301249)
... oder in das gleiche Verzeichnis wie die Anwendung ...

Und wie? Deployen nach .\ und wiederfinden mit TPath.GetLibraryPath funktioniert jedenfalls unter Android nicht. Da ist die Datei nicht. Oder muss das dann nach library\lib\irgendwas?

bra 13. Mai 2015 08:44

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Alles sinnvolle Vorschläge, leider alle mit gewissen Nebenwirkungen und letztlich ja nur ein Umschiffen eines meiner Meinung nach unsinnigen Verhaltens von FMX.


Zitat:

Zitat von bcvs (Beitrag 1301224)
Dann müsste man halt die Versionsnummer in die Tempversionen integrieren und alle älteren Versionen löschen. In deinem Beispiel:

Version3 installiert und gestartet -> Tempversion3 wird umkopiert, Tempversion2 wird gelöscht.

Zitat:

Zitat von Mavarik (Beitrag 1301227)
Oder Du änderst den Dateiname:

'Help_'+GUITtoString+'.htm';

Und suchst die Datei mit 'Help_*.htm'

An so etwas habe ich auch schon gedacht, allerdings muss man dann bei jeder Änderung einer Datei daran denken, die umzubenennen und zusätzlich im Deployment-Manager auch ändern (oder dort umbenennen). Das ist aber nur mit sinnvollem Aufwand möglich, wenn sich nur wenige Dateien ändern. Wir hatten in einem Projekt eine Zeitlang pdf.js eingebunden (hunderte einzelne Dateien), da wäre sowas bei einem Update gar nicht sinnvoll machbar.

Zitat:

Zitat von himitsu (Beitrag 1301236)
Oder die Datei als Ressource in die "EXE" und bei
... oder in das gleiche Verzeichnis wie die Anwendung ...

Hab ich auch schon versucht und es nicht zum Laufen bekommen, scheinbar werden dort nur spezielle Dateien deployed, zumindest bei Android.

Zitat:

Zitat von himitsu (Beitrag 1301236)
Oder die Datei als Ressource in die "EXE" und bei Programmstart/Verwendung da rauskopiert.

Hier wird es Probleme mit zu großen Dateien geben, meines Wissens haben die Bins zumindest unter iOS eine Größenbegrenzung.

bcvs 13. Mai 2015 08:54

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Zitat:

Zitat von bra (Beitrag 1301322)
Das ist aber nur mit sinnvollem Aufwand möglich, wenn sich nur wenige Dateien ändern.

Stimmt. Bei mir ist es eine einzige html-Datei, da hält sich der Aufwand in Grenzen :)

Rollo62 13. Mai 2015 19:56

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Hallo zusammen,

es gibt einen "geheimen" Schalter Run/Parameter/ -cleaninstall
http://docwiki.appmethod.com/appmeth...Android_Device

Ich meine etwas ähnliches für iOS gesehen zu haben.

Keine Ahnung ob es auch die Assets vor einem Deployment löscht, wäre aber einen Versuch Wert.

Rollo

bcvs 13. Mai 2015 20:04

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Das nützt aber gar nichts, wenn die fertige App aus dem App-/Play-Store heraus upgedatet werden soll.

himitsu 13. Mai 2015 20:15

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Hat deine App Zugriff auf das Internet?

Wenn ja, dann halt nicht direkt ausliefern, sondern zur Laufzeit schauen ob's was Neues gibt und das runterladen.
Oder die HTML direkt im Internet hosten und aufrufen.


Du hast doch bestimmt nicht vergessen die Update Subscription mit zu kaufen?
> Support-Anfragen starten und das reparieren lassen, oder die sollen dir eben sagen wie man das lösen soll, wenn die eigentliche Funktion schon nicht richtig funktioniert.

Mavarik 13. Mai 2015 21:44

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Zitat:

Zitat von Mavarik (Beitrag 1301227)
'Help_'+GUIDtoString+'.htm';

:roll:

Atze75 25. Apr 2019 09:41

AW: Datei wird bei Bereitstellung nicht überschreiben
 
Hallo

Ich habe mit der aktuellen Version (10.3.1) immer noch das gleiche Problem. Gibt es noch einen anderen Workaround als den oben beschriebenen?

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz