tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von sheel
  • 1 Beitrag von sheel
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
981
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    Hallo liebes Forum

    Zuerst mal zu meinem Hauptproblem...
    Ich mache in ca. 3-4 Monaten meine Abschlussarbeit, die sieht vor das man ein etwas unfangreiches Programm programmiert.
    Hierzu sollen auch mind. 1 Themengebiet verwendet werden was noch nicht angelernt wurde... ich spiele nun mit dem Gedanken so etwas wie eine Update Funktionalität einzubauen!

    Daher meine Frage: Geht so etwas? Wenn ja, mit welchen Thema müsste ich mich näher befassen?

    Das 2...
    Ich nutze eigentlich Visual Basic 2008, aber da ich mein PC neu aufgesetzt habe, dacht ich mir das ich wohlmöglich mal Visual Basic 2010 probieren könnte. In meiner Berufsschule jedoch geht da die Autovervollständigung nicht?
    Also ich mein das kleine Fenster das aufpoppt wenn man z.B. System::{hier dann der PopUp mit den Auswahlmöglichkeiten} ist das in Visual Basic 2010 nicht enthalten ?!

    Grüße und VIELEn Dank im Vorraus!
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Hi

    Falsches Forum. Verschoben.

    Natürlich kann man eine Updatefunktion machen, warum denn auch nicht.
    Aber was hat das eigentlich mit C++/CLI zu tun? Du willst mit VB.NET programmieren, oder nicht?

    Was du dazu brauchst: Irgendeinen Server, der dauerhaft im Internet erreichbar ist.
    Ein Webspace, der normalerweise für Webseiten verwendet wird, reicht.
    Falls sowas nicht vorhanden ist, müsstest du selbst einen Computer haben,
    der immer an und online ist, und Router/DynDNS etc. einrichten.
    Bei Bedarf mehr Infos...

    Zum Upload selbst:
    Stell die aktuelle Programmversion auf den Server, dazu eine Datei mit der Versionsnummer.
    Das Programm beim Client überprüft zB. bei jedem Programmstart (wenn es eine Internetverbindung gibt), ob die Nummer in der Versiondatei gleich seiner eigenen Versionsnummer ist. Wenn die in der Datei größer ist: Neue Version Downloaden (HTTP-Klassen anschauen). Die Heruntergeladene Datei ggf. entpacken (Zip oder so).

    Da sich ein gestartetes Programm nicht selbst löschen sollte, beim Update auch ein kleines Hilfsprogramm mitgeben, das vom alten Programm gestartet wird.
    Das Hilfsprogramm beendet das Alte, löscht es, und verschiebt das Neue an die alte Stelle.
    Den Vorgang kann man natürlich auch direkt in das neue Programm implementieren,
    zB. wenn es mit -doupdate aufgerufen wird oder so.

    Zu der Intellisense-Funktion von VB.NET2010 kann ich leider nichts sagen.

    Gruß
    Alex Großmann bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    Vielen Dank Sheel

    Ich hätte einen Webspace bei Domain Factory, das würde also vollkommen reichen? Was müsste ich den da genau machen? Ne Verbindung vom Programm zum Webhost und dort dann die Version prüfen, reicht da wenn ich ne Datei mit der Versionsnummer aufm Webspace ablege, die über´s Programm einlese und dann wie du geschrieben hast auswerte?!

    Danke nochmals
    Geändert von Alex Großmann (24.12.11 um 15:22 Uhr)
     

  4. #4
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Ja, DF reicht.

    Ich nehm mal an, das Programm besteht nur aus der Exe und braucht sonst keine Dateien.

    Zu Tun:
    a) Im Code eine int-Variable ProgrammVersion oder so machen, =1
    Die bei jeder neuen Version erhöhen

    b) Wenn das Programm mit "-update" und einen Dateinamen (also zB."-update prog.exe") aufgerufen wird (das Stringarray von Main überprüfen, ob und was mitgegeben wurde),
    dann wird keine GUI etc. angezeigt (kein new-Form() etc.), sondern:

    Die prog.exe (oder was als Dateiname eben gekommen ist) löschen.
    Wenn nicht löschbar (weil noch an), 100ms warten (Thread.sleep)
    und wieder löschen probieren. Schleife, bis es funktioniert hat.

    Dann die Datei mit Dateiname Process.GetCurrentProcess().MainModule.FileName kopieren
    Zielname der Kopie: prog.exe (oder was mitgegeben wurde.

    Dann an den String Dann an den String "prog.exe" (etc.) " -delete" anhängen, und auch
    GetCurrentProcess().MainModule.FileName anhängen.

    Das Starten.
    Und sich selbst beenden.

    c) Wenn das Programm mit "-delete" und einen Dateinamen
    aufgerufen wird, dann:

    Die prog.exe (oder was als Dateiname eben gekommen ist) löschen.
    Wenn nicht löschbar (weil noch an), 100ms warten (Thread.sleep)
    und wieder löschen probieren. Schleife, bis es funktioniert hat.
    Der selbe Löschvorgang wie oben, bei b).

    Dann aber nicht kopieren und beenden,
    sondern einfach mit dem normalen Programmverlauf (GUI etc.) weitermachen.

    d) Beim Programmende (unabhängig vom Start, einfach immer beim Beenden):
    Folgende Sachen in ein try-catch, bei dem bei einer Exception
    keine Fehlermeldung ausgegeben wird:
    Eine version.txt vom Webspace herunterladen (HttpClient.DownloadFile)
    und eine Zahl auslesen. Wenn die größer als ProgrammVersion ist:
    Auch die Exe Downloadenund mit -update und
    Process.GetCurrentProcess().MainModule.FileName starten.

    e) Auf den Webspace zwei Dateien rauf:
    version.txt mit der Nummer
    Und die Exe



    Wenn jetzt eine neue Version fertig ist:
    Die int ProgrammVersion im Code erhöhen.
    Kompilieren
    EineVersion.txt mit der neuen Versionsnummer und dem Programmdateinamen machen.
    Und beide Dateien auf den Webspace, die Alten also weg.

    Das Ganze klingt komplizierter, als es ist.
    Wenn du dein Main zeigst, bau ich es ein. Heute nicht viel zu tun.

    Den wiederholenden Teil pro Version kann man mit einem Buildskript auch automatisieren,
    aber ob das nötig ist...?

    Gruß
    Alex Großmann bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  5. #5
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    VIELEN Dank Sheel!
    Das hört sich echt heftig an! Das ist auch gut so Macht sicher was her...
    Ich freu mich jetzt schon riesig das um zu setzen, und ich glaube das ich mal ein Beispielprogramm schreiben werde...

    Nach was genau muss ich schauen wegen der Verbindung zum Server?
    (ich such einfach mal unter den von dir genannten HttpClient )
     

  6. #6
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Hast wahrscheinlich schon gefunden,
    aber in der MSDN ist die Klasse wie jede Andere beschrieben.

    Die Methode DownloadFile macht ihre Aufgabe ganz ohne großes Streamgetue etc. in einer Zeile.
    Man kann die Datei auch Streammäßig holen, dann spart man sich die version.txt auf der Festplatte,
    aber die schadet nicht...und zum Programmieren ist es dadurch einfacher.
    Schreibrechte/Speicher auf der Platte braucht man sowieso für die Exe.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  7. #7
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi

    Aber wieso das ganze selbst entwickeln?
    ClickOnce bietet genau das!

    Und da du bei deiner Abschlussarbeit auch den wirtschaftlichen Nutzen aufzeigen musst, wird es schwierig zu erklären, warum man eine bekannte Lösung nachprogrammiert
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

Ähnliche Themen

  1. Visual Basic 2010 , Fehler Exception.InnerException
    Von hhunderter im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 07.04.11, 17:35
  2. Visual Basic 2010 exe einbetten
    Von Deanga133 im Forum .NET Café
    Antworten: 1
    Letzter Beitrag: 16.11.10, 22:07
  3. Visual Basic 2010 exe einbetten
    Von Deanga133 im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 15.11.10, 20:21
  4. Visual Basic 2010 Express - Rückwärtssuche
    Von VB2010_ExpressUser im Forum .NET Windows Forms
    Antworten: 6
    Letzter Beitrag: 14.11.10, 13:20