Gast
#1786552
Ich arbeite an einer Client-Server-Lösung zur Datenerfassung. Damit man nicht bei jedem Update der Clientsoftware - was ja gerade am Anfang häufiger vorkommt - stundenlang mit dem USB-Stick von Client zu Client hirscht, habe ich eine Auto-Update-Methode eingebaut. Dabei wird der Ordner mit der neuen Applikation und sämtlichen DLLs am Server zu einem ZIP-Archiv gepackt, in "Häppchen" zu je 1 MB geschnitten und in einer Tabelle der ohnehin verwendeten MySQL-Datenbank untergebracht (Version, BlockNr, BlockAnz, Daten). Die Clients prüfen in gewissen Abständen, ob es ein Update mit einer neueren Version als die eigene gibt. Wenn ja, lädt der Client die einzelnen Blocks herunter, fügt sie wieder zusammen und entpackt sie in ein Verzeichnis innerhalb des eigenen, mit dem Namen "Update". Das klappt Alles hervorragend. Und genau jetzt kommt das Problem. Eine laufende Applikation kann sich nicht selber löschen und ersetzen, ebensowenig in Benutzung befindliche DLLs. Ich habe da bisher immer noch eine zusätzliche Anwendung gebraucht, die, nachdem sich die Hauptanwendung beendet hat, die aktuellen Dateien gegen die neuen ersetzt und die neue Applikation startet. Das funktioniert, scheint mir aber umständlich. Gibt es dafür eine cleverere Lösung? Ich habe auch mal mit Batchdateien und Shellscripten "herumgemacht", hat im Prinzip funktioniert, aber nicht immer. Ein Problem war z.B., dass es unter Windows anscheinend ein (unterschideliches) Weilchen dauert, bevor die Dateien einer gerade beendeten Applikation nicht mehr schreibgeschützt sind. Tips? Frank