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
EndProcedureCode: 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