Eine Update funktion für Programme?
Eine Update funktion für Programme?
Hallo,
ich wollte euch fragen, wie man eine Update funktion für sein Programm einrichten kann, wo nach neuere versionen gesucht und wenn erwünscht, runtergeladen wird.
Die leute haben bei mir fast keine lust mehr, die neuen versionen runterzuladen, die nur ca. 20-30kB groß sind, deswegen wünschen sich die leute so eine funktion, wo es dann Automatisch runtergeladen wird.
Wisst ihr vielleicht, wie man so etwas realisieren könnte ?
, Shuyin
ich wollte euch fragen, wie man eine Update funktion für sein Programm einrichten kann, wo nach neuere versionen gesucht und wenn erwünscht, runtergeladen wird.
Die leute haben bei mir fast keine lust mehr, die neuen versionen runterzuladen, die nur ca. 20-30kB groß sind, deswegen wünschen sich die leute so eine funktion, wo es dann Automatisch runtergeladen wird.
Wisst ihr vielleicht, wie man so etwas realisieren könnte ?
, Shuyin
Schaue mal hier:
http://forums.purebasic.com/german/view ... c&start=10
http://forums.purebasic.com/german/view ... c&start=10
__________________________________________
Weniger glauben - mehr wissen!
------------------------------------------------------
Proud beneficial owner of SpiderBasic, PureBasic 3.x, 4.x, 5.x and PureVisionXP
Weniger glauben - mehr wissen!
------------------------------------------------------
Proud beneficial owner of SpiderBasic, PureBasic 3.x, 4.x, 5.x and PureVisionXP
Hi!
Ich habe mir mal eine solche Updatefunktion geschrieben, die sich (hoffentlich) in allen Programmen einbauen lässt.
Damit das Programm "professioneller" aussieht, habe ich die Updateroutine so ausgelegt, dass nur dann nach Updates gesucht wird, wenn der Benutzer den Knopf dazu drückt.
Funktionsweise und Features:
-Läd eine ini-Datei von einem HTTP-Server herunter und analysiert sie
-Versucht ein Update von bis zu zehn Downloadmirror's herunterzuladen (wenn Server nicht geht, wird versucht, von einem anderen Server das Update herunterzuladen)*
-Vor dem Download des Updates kann ein Meldungsfenster ausgegeben werden (z. B. "Der Autor des Programms teilt folgendes mit: blablabla")
-automatisches starten des Updates nach Download
-mehrere Sprachen möglich
*Nach etwas umarbeiten können auch mehr als 10 Server angegeben werden. Es können überall dort Updates runtergeladen werden, wo man mit URLDownloadToFile_() (API) hinkommt.
So funktioniert das Update: Nach starten des Vorgangs durch den Benutzer wird eine ini-Datei von einem Server heruntergeladen und geöffnet. Dort stehen verschiedene Informationen drin, di während des Updateverlaufs gebraucht werden. Als erstes kommt eine Meldungsbox, die fragt, ob das Update durchgeführt werden soll; wenn ja dann ini laden und dann wird eine weitere Box ausgegeben. Dort hast du dann die Möglichkeit, dem Benutzer in einer Messagebox vor dem eigentlichen Update etwas mitzuteilen, z. B. Änderungen, etc.. Es wird auch die Größe des Updatepakets angezeigt. Dann wird das Update heruntergeladen. Es können bis zu zehn Downloadquellen angegeben werden. Kann das Update von einem Server nicht heruntergeladen werden, versucht das Programm es mit dem nächsten Server. Kann das Update gar niht geladen werden, wird dem Nutzer angeboten, die Homepage (des Programms/Autors) zu besuchen.
Das Updatepaket selbst ist mit der Windowskomponente IExpress zusammengestellt. Es ist im Grunde nichts anderes als ein SFX-Archiv im *.cab Format. Es entpackt und überschreibt alle upzudatenden Dateien im Programmverzeichnis. Das geht am besten mit IExpress, da man hier einstellen kann, dass keine nervenden Fragen und Fenster geöffnet werden. Außerdem ist es am einfachsten zu steuern, z. B. wo die Dateien entpackt werden sollen.
Nebenbei bemerkt, die Updateroutine ist circa 45 Zeilen lang; solltest du mehr erwartet haben, weil ich gerade einen Roman schreibe, dann sry. Trotzdem bietet die Routine meiner Meinung nach gute Optionen und da ich dir bei Interesse direkt den Quellcode gebe, kannst du den Code natürlich 100%ig nach deinen Bedürfnissen anpassen.
MfG, AND51
P.S.: Start => Ausführen => iexpress
Ich habe mir mal eine solche Updatefunktion geschrieben, die sich (hoffentlich) in allen Programmen einbauen lässt.
Damit das Programm "professioneller" aussieht, habe ich die Updateroutine so ausgelegt, dass nur dann nach Updates gesucht wird, wenn der Benutzer den Knopf dazu drückt.
Funktionsweise und Features:
-Läd eine ini-Datei von einem HTTP-Server herunter und analysiert sie
-Versucht ein Update von bis zu zehn Downloadmirror's herunterzuladen (wenn Server nicht geht, wird versucht, von einem anderen Server das Update herunterzuladen)*
-Vor dem Download des Updates kann ein Meldungsfenster ausgegeben werden (z. B. "Der Autor des Programms teilt folgendes mit: blablabla")
-automatisches starten des Updates nach Download
-mehrere Sprachen möglich
*Nach etwas umarbeiten können auch mehr als 10 Server angegeben werden. Es können überall dort Updates runtergeladen werden, wo man mit URLDownloadToFile_() (API) hinkommt.
So funktioniert das Update: Nach starten des Vorgangs durch den Benutzer wird eine ini-Datei von einem Server heruntergeladen und geöffnet. Dort stehen verschiedene Informationen drin, di während des Updateverlaufs gebraucht werden. Als erstes kommt eine Meldungsbox, die fragt, ob das Update durchgeführt werden soll; wenn ja dann ini laden und dann wird eine weitere Box ausgegeben. Dort hast du dann die Möglichkeit, dem Benutzer in einer Messagebox vor dem eigentlichen Update etwas mitzuteilen, z. B. Änderungen, etc.. Es wird auch die Größe des Updatepakets angezeigt. Dann wird das Update heruntergeladen. Es können bis zu zehn Downloadquellen angegeben werden. Kann das Update von einem Server nicht heruntergeladen werden, versucht das Programm es mit dem nächsten Server. Kann das Update gar niht geladen werden, wird dem Nutzer angeboten, die Homepage (des Programms/Autors) zu besuchen.
Das Updatepaket selbst ist mit der Windowskomponente IExpress zusammengestellt. Es ist im Grunde nichts anderes als ein SFX-Archiv im *.cab Format. Es entpackt und überschreibt alle upzudatenden Dateien im Programmverzeichnis. Das geht am besten mit IExpress, da man hier einstellen kann, dass keine nervenden Fragen und Fenster geöffnet werden. Außerdem ist es am einfachsten zu steuern, z. B. wo die Dateien entpackt werden sollen.
Nebenbei bemerkt, die Updateroutine ist circa 45 Zeilen lang; solltest du mehr erwartet haben, weil ich gerade einen Roman schreibe, dann sry. Trotzdem bietet die Routine meiner Meinung nach gute Optionen und da ich dir bei Interesse direkt den Quellcode gebe, kannst du den Code natürlich 100%ig nach deinen Bedürfnissen anpassen.
MfG, AND51
P.S.: Start => Ausführen => iexpress
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- Tafkadasom2k5
- Beiträge: 1578
- Registriert: 13.08.2005 14:31
- Kontaktdaten:
[OT:]
Ohh.JAAAAA.....XML ich....KOOOOMMMEEEEEEEE
[\OT]
Ohh.JAAAAA.....XML ich....KOOOOMMMEEEEEEEE




[\OT]
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Es scheint etwas in Vergessenheit geraten zu sein, aber GPI (ja der , der in den Untiefen irgendeines Wuselspiels festsitzt) hat doch mal einen Universal Internet-Updater angeboten.
Die Seite gibts zwar nimma, aber das Proggy müsste doch noch irgendwo zu finden sein.
Die Seite gibts zwar nimma, aber das Proggy müsste doch noch irgendwo zu finden sein.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Seine Homepage ist hier: http://gpihome.de/purebasic/HeX0R hat geschrieben: Die Seite gibts zwar nimma, aber das Proggy müsste doch noch irgendwo zu finden sein.
direkter Download: http://gpihome.de/purebasic/UniversalIn ... pdater.rar
Sein letztes veröffentlichtes Programm "WOW-Starter.rar" findet man auch dort.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- Tsuki-Namida
- Beiträge: 633
- Registriert: 17.11.2005 13:27
- Kontaktdaten:
ich habe in ein meiner programme eine kleine eigentlich auch sehr einfache und billige wariante als update geschrieben. auch bei einem server wechsel ist es eigentlich immer aktuell.
ich habe ein txt angelegt wo die adresse des servers steht diese lese ich aus. dann nehme ich die ausgelesene adresse$ + "Server.txt" und lade diese neu runter und lese die server adresse neu ein. so mus ich bei einem server wechsel nur die "Server.txt aus den alten lassen und das update auf den neuen. ist sogar sehr evektiv
naja hier kannst du mein quellen text haben wenn du magst
nimm dir aus den code was du brauchst 
ich habe ein txt angelegt wo die adresse des servers steht diese lese ich aus. dann nehme ich die ausgelesene adresse$ + "Server.txt" und lade diese neu runter und lese die server adresse neu ein. so mus ich bei einem server wechsel nur die "Server.txt aus den alten lassen und das update auf den neuen. ist sogar sehr evektiv

naja hier kannst du mein quellen text haben wenn du magst

Code: Alles auswählen
Procedure.s GetExePath()
Prg.s = Space(#MAX_PATH)
GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
Prg = GetPathPart(Prg)
If (FindString(prg,"\PureBasic\Compilers\", 1))
Prg.s = Space(#MAX_PATH)
GetCurrentDirectory_(#MAX_PATH,@Prg)
EndIf
If Right(Prg, 1) <> "\" : Prg + "\" : EndIf
ProcedureReturn Prg
teste$ = Prg.s
EndProcedure
Server$ = GetExePath() + "Server.txt"
If ReadFile(0, Server$)
Server_Date$ = ReadString()
CloseFile(0)
Url.s = Server_Date$ + "server.txt"
Dateiname.s = GetExePath() + "Server.txt"
URLDownloadToFile_(0, URL.s, Dateiname.s, 0, 0)
Server$ = GetExePath() + "Server.txt"
ReadFile(0, Server$)
Server_Date$ = ReadString()
CloseFile(0)
EndIf
Version_datei1$ = GetExePath() + "Version.txt"
If ReadFile(0, Version_datei1$)
Versionalt$ = ReadString()
CloseFile(0)
EndIf
Url.s = Server_Date$ + "version.txt"
Dateiname.s = GetExePath() + "Version.txt"
URLDownloadToFile_(0, URL.s, Dateiname.s, 0, 0)
Version_datei$ = GetExePath() + "Version.txt"
If ReadFile(0, Version_datei$)
Versionsnummer$ = ReadString()
CloseFile(0)
If Versionsnummer$ <> Versionalt$
Url.s = Server_Date$ + "streamer.exe"
Dateiname.s = GetExePath() + "StreamerS.exe"
URLDownloadToFile_(0, URL.s, Dateiname.s, 0, 0)
EndIf
Else
MessageRequester("Information","Verson konnte nicht überprüft werden.")
EndIf
Run$ = GetExePath() + "StreamerS.exe"
RunProgram(Run$,"","",0)
