Verfasst: 03.01.2006 00:22
Danke für alles
Genau so muss ein Community sein: sehr hilfsbereit und nett
, Shuyin

Genau so muss ein Community sein: sehr hilfsbereit und nett

, Shuyin
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
;Versionkonstante
#Version$ = "Version x.x"
#updater$ = "Version x.x"
Procedure UpdateCheck()
;Verwendete Variablen
ExeVerzeichnis$ = "c:\programme\mainexe\" ;Verzeichnis des Hauptprogramms
URL.s = "http://home.arcor.de/pb_zomtec/hc/" ;Updateserver
exename$ = "MainProgramm.exe" ;Name des zu aktualierenden Programms
Version_datei$ = ExeVerzeichnis$ + "version.txt"
;version.txt vom Server laden:
URLDownloadToFile_(0, URL.s + "version.txt", Version_datei$, 0, 0)
If ReadFile(0, Version_datei$) ;version.txt auslesen
Versionsnummer$ = ReadString() ;versionsnr. von Handlcopy
Versionupdater$ = ReadString() ;versionsnr. der update.exe
CloseFile(0)
;MessageRequester-updatetext
a$ = "Neue Version vorhanden!" + Chr(10) + Chr(10)
a$ + "Soll ich die neue Version herunterladen und installieren?" + Chr(10) + Chr(10)
a$ + "Bestehende Internetverbindung erforderlich!"
If Versionupdater$ <> #updater$ ;Serverversion mit lokaler vergleichen
a = MessageRequester(a$, "Updatecheck von update.exe", #PB_MessageRequester_YesNo)
If a=#PB_MessageRequester_Yes
URLDownloadToFile_(0, URL.s + "update.exe", ExeVerzeichnis$ + "update.exe", 0, 0) ;neue update.exe-Version vom Server laden
EndIf
EndIf
If Versionsnummer$ <> #Version$ ;Serverversion mit lokaler vergleichen
a = MessageRequester(a$, "Updatecheck von MainProgramm.exe", #PB_MessageRequester_YesNo)
If #PB_MessageRequester_Yes
;Übergabeparameter
a$ = ExeVerzeichnis$ + " " ;.exe-Startverzeichnis
a$ + URL.s + " " ;Download-URL des Updates
a$ + exename$ ;Name der zu updatenden .exe (incl. .exe-Extension)
If RunProgram(ExeVerzeichnis$+"update.exe", a$, "")
Delay(2000)
End
Else
a$ = "Update.exe nicht gefunden!" + Chr(10) + Chr(10)
a$ + "update.exe ist für's Update erforderlich." + Chr(10) + Chr(10)
a$ + "Bitte erst update.exe runterladen..."
MessageRequester(a$, "Fehler!")
EndIf
EndIf
Else
MessageRequester("Updatecheck","Keine neue Version vorhanden!")
EndIf
Else
MessageRequester("Fehler!","Version konnte nicht überprüft werden! Besteht Internetverbindung?")
EndIf
EndProcedure
Code: Alles auswählen
;update.exe 1.02
;(c) by zomtei 02/2006
;übergebene Parameter auslesen
ExeVerzeichnis$ = ProgramParameter()
URL.s = ProgramParameter()
exename$ = ProgramParameter()
;wenn exename$ leer dann wurde update.exe vermutl. durch Doppelklick gestartet
If exename$=""
MessageRequester("Fehler!", "update.exe kann nicht als eigenständiges Programm aufgerufen werden!")
End
EndIf
exenameNoextension$ = ExeVerzeichnis$ + RemoveString(exename$, ".exe", 1) ;Programmname ohne .exe
NeueDatei$ = exenameNoextension$ + "NewVersion.exe" ;temporärer Name der neuen Version
URLDownloadToFile_(0, URL.s + exename$, NeueDatei$, 0, 0) ;neue Version vom Server laden
dl = FileSize(NeueDatei$)
;Prüfen ob zu aktualisierende .exe beendet wurde
While AppRunning(exename$) And a<10
Delay(2000)
a+1
Wend
If AppRunning(exename$)=0 Or dl=-1 ;zu aktualisierende .exe wurde nicht beendet oder File konnte nicht runtergeladen werden
MessageRequester("Fehler!", "Updateinstallation fehlgeschlagen!")
Else
If DeleteFile(exenameNoextension$+".bak") : EndIf ;Alte Backup-Datei löschen
If RenameFile(ExeVerzeichnis$+exename$, exenameNoextension$+".bak") : EndIf ;Alte .exe in .bak umbenennen
If RenameFile(NeueDatei$, exenameNoextension$+".exe") : EndIf ;neue Version in .exe umbenennen
MessageRequester("Update","Update erfolgreich durchgeführt",0)
If RunProgram(ExeVerzeichnis$+exename$, "", "") : EndIf
EndIf