Prüfung auf neue Programmversionen via Github

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von BornToBeRoot.

    Prüfung auf neue Programmversionen via Github

    Guten morgen,

    und schonmal vorweg... bitte erschlagt mich nicht für diesen Beitrag ^^ und ja ich habe das hier gelesen: Updater - Worauf sollte man bei eigenen Updatern achten?

    So nun zu meiner Frage... Da ich derzeit keinen eigenen Server betreiben möchte und nUpdate zum updaten Adminrechte braucht, dachte ich mir, man könnte ja zumindest im Programm einen Hinweis anzeigen, das eine neue Funktion verfügbar ist und von Github heruntergeladen werden kann.

    Mein vorgehen wäre so:

    Mit Octikit (.net libary für die github api) würde ich anhand des "tag_name" (JSON: api.github.com/repos/BornToBeRoot/NETworkManager/releases) prüfen ob eine neue Version veröffentlicht wurde.

    Dem Benutzer einen Hinweis/Dialog anzeigen, in dem ein Link zu Github geöffnet werden kann.
    Seite: github.com/BornToBeRoot/NETworkManager/releases/latest

    Der Benutzer kann dann über seinen Standardbrowser die neue .ZIP-Datei herunterladen.

    Was haltet ihr von der Idee?

    Angreifbar wäre man hier mit Man-in-the-middle... Ist aber immerhin besser als automatisch unsignierte Dateien herunterzuladen...



    Edit:

    Code zum prüfen

    C#-Quellcode

    1. public static void Check()
    2. {
    3. GitHubClient client = new GitHubClient(new ProductHeaderValue("NETworkManager"));
    4. Task<Release> latestRelease = client.Repository.Release.GetLatest("BornToBeRoot", "NETworkManager");
    5. // Compare versions (tag=v1.4.2.0, version=1.4.2.0)
    6. if (new Version(latestRelease.Result.TagName.TrimStart('v')) > AssemblyManager.Current.Version)
    7. MessageBox.Show("Update");
    8. else
    9. MessageBox.Show("Kein Update");
    10. }


    Und zum Seite öffnen:

    C#-Quellcode

    1. Process.Start("https://github.com/BornToBeRoot/NETworkManager/releases/latest");
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BornToBeRoot“ ()

    Hallo

    Erstmal möchte ich hier in den Raum werfen das z.b. mit Inno Setup auch ein Setup erstellt werden kann welches keine Adminrechte benötigt.

    Aber BTT: Ich würde die Datei herunterladen und irgendwo speichern. Nach einem Dialog ob der User das Update installieren möchte würde ich es gleich installieren/entpacken und kopieren.

    Ich würde ein kleines nebenprogramm erstellen welches nur diese eine Aufgabe hat. Nämlich die Dateien zu entpacken und zu überschreiben.
    Deine Hauptapplikation startet dieses Programm mit zwei Parametern, dem Hauptprogrammpfad und dem Pfad zum Zip-File mit den neuen Dateien.
    Dieses kleine Programm überschreibt dann die Dateien und startet anschliessend das Hauptprogramm wieder.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Wenn du keine Möglichkeit hast die Signierung zu prüfen, bzw deine Datein selbst zu signieren, dann würde ich niemals etwas per Programm herunterladen lassen, sondern lediglich den User auf ein Update hinweisen und ihn auf die offizielle GitHub Seite umleiten sodass er selbst die benötigten Datein herunterlädt.
    @Nofear23m genau dein Vorhaben ist in dem von @BornToBeRoot verlinkten Thread besprochen.
    Das Vorgehen bietet viel Potential für Angriffe.
    Es geht auch um die Adminrechte von nUpdate, nicht vom eigentlichen Setup.

    @BornToBeRoot Ist doch eine Idee, somit sieht der Benutzer ob eine neue Version vorhanden ist, aber es obliegt ihm selbst die neue Version zu testen und zu installieren.
    Also es ist die Möglichkeit gegeben in einer Sandbox die Software zu testen und dann produktiv zu nehmen.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    @MrTrebron das ist mir klar. @BornToBeRoot hat ja geschrieben das er das Tut gelesen hat, somit gehe ich nicht mehr darauf ein.
    Wegen den Adminrechten, ich denke das BornToBeRoot das nicht nur für das Update meint sondern auch für die App, denn für diese hat er bisher auch keinen Updater und ich nahm an (sorry, ich las zwischen den Zeilen) das es vermutlich diesen Grund hat.

    Meine Methode schliesst die Intergration von Sicherheitsprüfungen und der gleichen nicht aus.
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Nofear23m Unsignierte Updates/Dateien automatisch herunterladen/installieren ggf. mit Adminrechten kommt für mich nicht in Frage. Gibt ja immer wieder schöne Beispiele in den Medien (PC-Wahl, usw.)

    Ich möchet erstmal wie @Kameo schon schreib, den Nutzer auf Updates hinweisen. Dieser kann es dann nach belieben herunterladen...

    Ein Setup halte ich ehrlich gesagt für unnötig... ZIP-Datei herunterladen, entpacken, ausführen... nervt micht persöhnlich schon wenn ich ein Tool brauche und mich erstmal durch den Installer klicken muss.
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!

    BornToBeRoot schrieb:

    ggf. mit Adminrechten kommt für mich nicht in Frage

    Wo habe ich etwas von Adminrechten geschrieben? Habe sogar EXPLIZIT geschrieben das KEINE Adminrechte notwendig sind, somit bleibt die Gefahr auch in einem gewissen maß. Aber egal.

    PS: Ich persönlich hasse Programm welche ich Entpacken und per Hand kopieren muss. Die lade ich meisst erst gar nicht.
    Ich will mich nicht darum kümmern müssen wo was hin muss. Ausserdem will ich das ein Programm auch gefälligst in der Systemsteuerung unter Programme auftaucht und ich es von dort wieder deinstallieren kann wenn ich das möchte.
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nofear23m schrieb:

    Habe sogar EXPLIZIT geschrieben das KEINE Adminrechte notwendig sind

    Upps das hab ich wohl überlesen.

    Ja mit einem Installer/Updater schau ich nochmal, will aber erstmal andere Features (derzeit SNMP v1, v2c, v3 - Get/Walk) integrieren... dachte nur so ein Versionscheck ist schnell umgesetzt.
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!