Nach Updates suchen und herunterladen.. Python und GitHub?
Guten Tag,
angenommen ich möchte eine Desktop App entwickeln. Die App soll regelmäßige Updates erhalten.
Deshalb möchte ich nun Fragen, wie dies mit einem beispielsweisen öffentlichen Dienst möglich sei (GitHub). Ich würde mein Projekt (Privat) auf GitHub hosten lassen und via. HTTP abfrage, die Version nachprüfen.
Doch… Wie genau lade ich nun die neue Version herunter, sodass alle Dateien überschrieben werden (während das Programm läuft)?
Ich habe lange nach einer Möglichkeit gesucht, doch keine finden können. Ich entwickle in Python.
Liebe Grüße
2 Antworten
Deshalb möchte ich nun Fragen, wie dies mit einem beispielsweisen öffentlichen Dienst möglich sei (GitHub).
Wenn deine App auf GitHub abgelegt wird, solltest du dich mit der GitHub eigenen REST API beschäftigen. Alles was du dafür benötigst, lässt sich aus der dazugehörigen Dokumentation entnehmen. Alles weitere in Python implementierst, indem du mit einer Update-Funktion und der API auf deine Releases zugreifst.
In Python erstellst du dir dann eine oder mehrere Funktionen, um Updates abzufragen, herunterzuladen, zu installieren oder ggf. von der aktuellen Version ein Backup zu erstellen. Hängt da ganz von dir und deiner gewünschten Programmstruktur ab, ob du alles in eigenen Funktionen festlegst oder in einem Rutsch abarbeitest.
LG medmonk
Du legst dir in deinem Python-Programm eine Funktion an und mithilfe der GitHub REST-API abfragst, ob die Version in deinem GitHub Repository neuer (höher) ist als die, die gerade installiert bzw. ausgeführt wurde.
- Alle benötigten Pakete importieren
- Mit einer Funktion die Versionen vergleichen
- Mit der selben Funktion oder einer weiteren den Download anstoßen
- Ebenso die Zip-Archiv entpacken und die alten Dateien überschreiben
Du speichert in deinem Programm die aktuelle Versionsnummer in einer Variable und fragst dann mithilfe der REST-API ab, ob die Versionsnummer auf GitHub höher ist als die, die in deiner Variable gespeichert wurde.
Danach implementierst du halt die Logik, um die neuere Version herunterzuladen und zu installieren in dem halt die Dateien heruntergeladen und überschrieben werden. Als Pakete sind eigentlich nur os, requests, shutil und zipfile nötig.
Über die Github API kannst du nach den neuesten Releases suchen:
https://api.github.com/repos/{owner}/{repo}/releases/latest
Dann Version Codes vergleichen und Rest machen!
ich habe mich eher gefragt, wie ich die neue Version am besten herunterlade? Also im Programm kommt eine Meldung z.B. zum Downloaden der neuen Version (das habe ich schon), aber wie kann ich am besten die neuen Dateien herunterladen, also die alten Daten überschreiben? Ich hoffe, du verstehst meine Frage ^^
ich habe mich eher gefragt, wie ich die neue Version am besten herunterlade? Also im Programm kommt eine Meldung z.B. zum Downloaden der neuen Version (das habe ich schon), aber wie kann ich am besten die neuen Dateien herunterladen, also die alten Daten überschreiben? Ich hoffe, du verstehst meine Frage ^^