Programm auf Netzlaufwerk updaten

  • VB.NET
  • .NET (FX) 4.0

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von fichz.

    Programm auf Netzlaufwerk updaten

    yo Leute,

    ich wollte mal wissen was so der Beste weg ist, wenn ein Programm auf einem Netzlaufwerk liegt um dieses zu Updaten.
    Derzeit haben wir es eigentlich so, dass (zum Glück) ein Kollege immer vor allen anderen mit der Arbeit beginnt und die .exe halt noch austauscht bevor das Programm jemand startet.
    Wenn der aber halt mal nicht kann oder sonst was funzt das natürlich nicht mehr.

    Wie handelt ihr solch "Szenario"? Gibt es hier so eine Art "Best Practice"?

    Würd mich über Vorschläge freuen.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    @fichz Schreib ein Programm, das nach einem Update sucht.
    nix gefunden: Start des bisherigen Programms
    was gefunden: Kopieren und Start des neuem Programms.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wie häufig kommen denn die Updates?
    Dann musst Du Dir halt merken, ob Du heute der 1. Aufrufer bist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    fichz schrieb:

    nicht beendet hat
    Da der Kollege das Programm noch sieht, hat er doch keine Veranlassung, es neu zu starten.
    Ansonsten müsstest Du ein Event senden, das dem laufenden Programm sagt, dass ein wichtiges Update verfügbar ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    fichz schrieb:

    Timer alle x Minuten
    Nö. Eher wie mit dem Pizza-Mann (Warten, bis er klingelt).
    Derjenige, der das Server-Programm startet, löst die Abfrage und das Update aus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    fichz schrieb:

    "Server-Programm"?
    Das von Dir zu schreibende und von allen Usern zu startende Programm, das auf dem Server liegt.
    Dieses Programm tut das, was ich Dir oben aufgezählt habe.
    Dieses Programm ist nicht das, was bisher von allen Usern vom Server aus gestartet wurde.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok das wäre dann ein eigenes Programm. Das sollte denk ich kein Problem sein.
    Im Prinzip hab ich dann 2 Programme. Einmal das "Startprogramm" alias Server-Programm und einmal die eigentliche exe. Hoffe hab das so richtig verstanden.
    Jedoch weiß ich dann nicht wie ich ein Event an das andere Programm senden soll. (Falls der User es noch offen haben sollte wie oben bereits mal gesagt).

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten

    fichz schrieb:

    richtig verstanden
    Jou.
    Wenn "Dein neues" Serverprogramm das (ja oder nein) upgedatete auf dem Server liegende Programm startet, hast Du doch die Möglichkeit, die erforderlichen Parameter mitzugeben bzw. zu ermitteln.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Jou in dem Fall ists klar.
    Ich mach mal ein Beispiel (simple):
    - Bediener A startet das Programm um 08:00.
    - um 09:00 werden Änderungen in der DB gemacht und eine neue .exe soll hinkopiert werden.
    - Problem ergibt sich, da die .exe ja noch in Verwendung ist. -> mögliche Abhilfe: Anders bennenen (zB mit Version im Dateinamen) und die Server.exe nun diese exe starten lassen
    - Problem ist immer noch dass Bediener A die alte Version noch am Laufen hat. Wie soll ich bei diesem dann reagieren? Gerade bei Datenbankänderungen kann es sein, dass es dann zu Fehler kommen kann.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Das ist natürlich ein neuer Gesichtspunkt.
    Bei einer neuen Datenbank müsste dann das zu ersetzende Programm nach Meldung beendet werden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hm direkt beenden wäre eventuell ein bisschen zu hart.
    Aber es würde ja im Prinzip reichen wenn ich den Betroffenen Usern eine Meldung ausgebe, dass halt von dem und dem Zeitraum eine neue Version komme und das Programm bis dorthin zu beenden ist. Mir würde es da sogar gefallen, dies in der Datenbank zu deponieren. Nur fällt mir da halt nicht wirklich eine andere Lösung als ein Timer zum Prüfen ein.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Ja ist ein eigenes Programm.
    Du meinst, dass das Programm halt bei jedem Start mit der Version x auf einen lokalen Pfad kopiert und dieses dann gestartet wird?
    Wäre auch eine Möglichkeit. Obwohl da bei uns eventuell irgendwelche Sicherheitsrichtlinien dazwischenfunken könnten.

    Aber es würde im Prinzip reichen wenn die User eine exe (nicht das eigentliche Programm) starten und diese dann weiß welche Version vom eigentlichen Programm nun auszuführen ist.
    Problem hab ich wie gesagt eben nur mit den Usern welche halt noch eine alte exe laufen haben.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Hab jetzt nicht alles gelesen.

    Bei uns starten Programme die "noch überarbeitet" werden eigentlich immer über eine Batch-Datei.
    Es wird dann einfach die Datei auf die Neue Datei umgeschrieben und am nächsten Tag wenn die "alte" nicht mehr in betrieb ist wird die gelöscht.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."