Entwickler-Ecke

Internet / Netzwerk - Programm aktualisieren - Client/Server-Anwendung


mig76 - Mi 12.12.07 09:53
Titel: Programm aktualisieren - Client/Server-Anwendung
Hab mich mal versucht durch das Forum zu suchen, aber bin leider nicht fündig geworden!

Bräuchte eine Anregung, wie ich es am einfachsten schaffen kann, mein immer wieder neu compiliertes Programm (exe-Anwendung) für die Anwender auf dem FileServer zu aktualisieren, ohne dass die Anwender, welche das Programm gerade geöffnet haben, durch Fehlermeldungen usw. zu viel gestört werden.

Momentan mach ich es so, dass ich alle geöffneten exe-Dateien "rausschmeisse", und dann die neu compilierte exe-Datei einfach überschreibe; viele Anwender die das Programm gerade geöffnet habn kriegn natürlich Schutzverletzung usw.

Wie macht ihr das eigentlich bei solchen Programmaktualisierungen? ich hab ungefähr 150-200 User, die über FileShare das programm aufrufen (also nicht auf jedem Client installiert) und ich kann die nicht alle telefonisch benachrichtigen, dass sie mal kurz aus dem Programm aussteigen sollten?!?!?!

Für jede Idee wäre ich sehr sehr dankbar


jasocul - Mi 12.12.07 10:20

Ich habe es bei mir so gelöst, dass ich ein Startprogramm habe, dass die Überprüfung macht. Das eigentliche Programm wird dann vom Server auf die lokale Festplatte kopiert, falls eine neuere Version vorliegt. Danach wird vom Startprogramm die lokale Version gestartet (-> ShellExecute) und das Startprogramm selbst automatisch beendet.


Amiga-Fan - Mi 12.12.07 10:28

Und wie machst du das, wenn du kein Admin bist? Dann hast du ja keine Schreibrechte auf das Programme-Verzeichnis.


Narses - Mi 12.12.07 10:37

Moin!

user profile iconAmiga-Fan hat folgendes geschrieben:
Und wie machst du das, wenn du kein Admin bist? Dann hast du ja keine Schreibrechte auf das Programme-Verzeichnis.
In diesem Fall drängt sich mir die Frage auf, ob es dann nicht jemand in deinem Netzwerk gibt, der gar nicht möchte, was du da machst... :gruebel: :|

Du könntest alternativ ein Beenden-Kommando vom Server aus an die Clients senden, oder ein Update-Kommando, dass über eine Batch-Datei einen Neustart macht. :nixweiss:

cu
Narses


jasocul - Mi 12.12.07 10:47

user profile iconAmiga-Fan hat folgendes geschrieben:
Und wie machst du das, wenn du kein Admin bist? Dann hast du ja keine Schreibrechte auf das Programme-Verzeichnis.
Dann nimm halt ein Verzeichnis, wo der Anwender Schreibrechte hat. Es muss nicht zwangsläufig das Programmverzeichnis genutzt werden. Es genügt ja, wenn die Start-Anwendung dort steht.


alzaimar - Mi 12.12.07 10:49

Das Problem mit den Schreibrechten kann auf auf sehr einfache Art lösen:

Man kopiert die aktualisierte Anwendung aus dem Netz in seine 'Eigene Dateien'. Da gehören sie schließlich hin, wenn man
a) übers Netz aktualisieren und
b) eben *nicht* die EXE aus dem Netz

starten will.

Natürlich ist das ein konzeptionelles Dilemma, in den 'Eigenen Dateien' Programme abzulegen und von dort aus zu starten (erlaubt das Vista überhaupt?), aber was soll man machen?

Alternativ (und bescheuert) wäre es, wenn jeder Anwender (aber nicht lachen) im Netz ein eigenes Verzeichnis hat, mit Schreibrechten. Dann wird die aktuelle Version eben dort herein geschrieben und auch von dort (also '<Netz>\Programme\lokal\<Benutzername>' oder so) gestartet.

Wichtig ist doch die Idee von jasocul, das man eine eigene Kopie erzeugt und die startet. So kann man einfach neue Version ins Netz stellen. Beim nächsten lokalen Programmstart wird dann automatisch die neueste Version gestartet, ohne das man einen Installationsaufwand hat.


Agawain - Mi 12.12.07 11:05

user profile iconalzaimar hat folgendes geschrieben:
Das Problem mit den Schreibrechten kann auf auf sehr einfache Art lösen:
Alternativ (und bescheuert) wäre es, wenn jeder Anwender (aber nicht lachen) im Netz ein eigenes Verzeichnis hat, mit Schreibrechten. Dann wird die aktuelle Version eben dort herein geschrieben und auch von dort (also '<Netz>\Programme\lokal\<Benutzername>' oder so) gestartet.


Das ist aber in Linux Standard, macht auch wegen Dasi Sinn. Bescheuert ist es natürlich, wenn man die EXE zig mal dort ablegt :wink: löst das Problem auch nicht.

Ich werde das bei meinem Programm so machen, daß es erst ein Vorprogramm gibt, daß nachschaut, ob es eine neuere Version gibt und die dann auf ein lokales Verzeichnis kopiert, zumal ich Leute im Netz hab, die via VPN damit arbeiten.


Amiga-Fan - Mi 12.12.07 11:14

kann man das vielleicht so machen, das beim Installieren einer Anwendung, wofür man eh Admin-Rechte braucht, die vorgeschaltete Update-Applikation selbst Admin-Rechte bekommt?

Es wird ja generell dazu geraten, auch privat nur mit eingeschränkten Rechten zu arbeiten... in Vista ist das eh standard.


jasocul - Mi 12.12.07 11:32

user profile iconAmiga-Fan hat folgendes geschrieben:
kann man das vielleicht so machen, das beim Installieren einer Anwendung, wofür man eh Admin-Rechte braucht, die vorgeschaltete Update-Applikation selbst Admin-Rechte bekommt?
Es geht nicht um die Installation eines Programms. Es geht "nur" um das Kopieren einer Datei.


Amiga-Fan - Mi 12.12.07 11:41

Es geht doch um Programmaktualisierungen und wie man es machen kann... man könnte doch vor dem Programmstart ein Update-Programm vorschalten, das unabhängig vom aktuellen Benutzer immer Admin-Rechte hat (so wie ein Dienst)?!


mig76 - Mi 12.12.07 12:05

Danke Danke für die vielen Infos und Tipps!!! :D :D

Hab das ganze jetzt so gelöst, dass ich eben ein kleines Programm "vorschalte", welches aus einer ini-Datei ausliest, wo denn die aktuelle, "neue" Version meines "großen" Programmes liegt, und dann diese exe-Datei eben startet; ohne dass ich neue Programme lokal auf den Client kopiere usw.

Die neuen Programme liegen halt auch immer auf dem Fileshare, und werden halt dann durchnummeriert:
ProgVers1.exe, ProgVers2.exe, ProgVers3.exe

und irgendwann beginn ich eben dann wieder von neu.

So haben die User beim Start des "vorgeschalteten" Programms immer die aktuellste Version dann geöffnet, ohne irgendwas auf den Client zu kopieren. 8)


Amiga-Fan - Mi 12.12.07 12:18

deine lösung ist natürlich nur fürs Intranet geeignet, aber wie macht ihr das bei automatischen Updates übers Internet?


mig76 - Mi 12.12.07 12:23

user profile iconAmiga-Fan hat folgendes geschrieben:
deine lösung ist natürlich nur fürs Intranet geeignet, aber wie macht ihr das bei automatischen Updates übers Internet?

ich kann mich im "glücklichen" Umstand schätzen, dass wir nur hausintern entwickeln, sprich wir haben momentan unsere Applikationen nur übers intranet freizugeben :oops: