#cs

; <-- Beginn Update Block
#include <updateftp.au3>

$b4it_ftp_Server = ""	;<-- Ftp Server eintragen
$b4it_ftp_User = ""				;<-- Ftp Server Benutzer eintragen
$b4it_ftp_Password = ""			;<-- Ftp Server Passwort eintragen
$b4it_ftp_Path = "/"				;<-- Ftp Server Pfad zu dem Ortner mit den Updates eintragen
$b4it_local_Version = ""			;<-- Die lokale Version des Skriptes eintragen
$b4it_local_ScriptName = "";<-- Die bezeichnung der datei, mit .exe am ende

; <-- NICHT ÄNDERN
$b4it_local_ScriptDir = @ScriptDir & '\'
; -->

b4it_checkforupdate()
; --> Ende Udate Block


#ce

#include <FTPEx.au3>
#include <array.au3>

Global $b4it_ftp_Server = ""
Global $b4it_ftp_User = ""
Global $b4it_ftp_Password = ""
Global $b4it_ftp_Path = ""
Global $b4it_ftp_Open = ""
Global $b4it_ftp_Conn = ""
Global $b4it_ftp_Version = ""

Global $b4it_local_Version = ""
Global $b4it_local_ScriptName = ""
Global $b4it_local_ScriptDir = ""
Global $b4it_local_UpdateFileName = ""


; Hauptfunktion
Func b4it_checkforupdate()
	b4it_deloldupdatefile()
	If Not b4it_ftpInit() Then Return
	If Not b4it_checkFiles() Then Return
	b4it_update()
EndFunc


; Prüfen ob noch eine alte Update lokal vorhanden
; ist und löschen
Func b4it_deloldupdatefile()
	$b4it_local_UpdateFileName = StringFormat("%s_update%s",$b4it_local_ScriptDir,$b4it_local_ScriptName)
	If FileExists($b4it_local_UpdateFileName) Then FileDelete($b4it_local_UpdateFileName)
EndFunc

; Verbindung zum Server aufbauen und das Verzeichnis
; auf den Ordner setzen, wo die Updates liegen
Func b4it_ftpInit()
	$b4it_ftp_Open = _FTP_Open('MyFTP Control')
	$b4it_ftp_Conn = _FTP_Connect($b4it_ftp_Open, $b4it_ftp_Server, $b4it_ftp_User, $b4it_ftp_Password,1)
	If @error Then Return 99
	_FTP_DirSetCurrent($b4it_ftp_Conn,$b4it_ftp_Path)
	If @error Then Return False
	Return True
EndFunc

; Dateiliste holen und die Version vom Server speichern
Func b4it_checkFiles()
	$filelist = _Ftp_ListToArray($b4it_ftp_Conn,2)
	If Not IsArray($filelist) Then Return False
	_ArraySort($filelist,1)
	$strlen = StringLen($b4it_local_ScriptName)
	For $int = 0 To UBound($filelist) -1
		If StringLeft($filelist[$int],$strlen) = $b4it_local_ScriptName Then
			$strsplit = StringSplit($filelist[$int],"_")
			$b4it_ftp_Version = $strsplit[2]
			If $b4it_ftp_Version <= $b4it_local_Version Then Return False
			Return True
		EndIf
	Next
	Return False
EndFunc

; Abfrage und ggf. Download der neuen Datei
Func b4it_update()
	$str = StringFormat("Es wurde ein Update gefunden - Version: %s" & @LF & "Sie wird Herruntergeladen!",$b4it_ftp_Version)
	$res = MsgBox(36,"Update - " & $b4it_ftp_Version,$str)
		$remotFile = $b4it_local_ScriptName & "_" & $b4it_ftp_Version
		$localFile = $b4it_local_ScriptDir & "_" & $b4it_local_ScriptName
		_FTP_FileGet($b4it_ftp_Conn,$remotFile,$localFile)
		If @error Then Return False
		FileMove($b4it_local_ScriptDir & $b4it_local_ScriptName, $b4it_local_ScriptDir & '_update' & $b4it_local_ScriptName)
		FileMove($localFile,$b4it_local_ScriptDir & $b4it_local_ScriptName)
		Run($b4it_local_ScriptDir & $b4it_local_ScriptName)
		Exit
EndFunc