|
You last visited: Today at 20:25
Advertisement
Patcher Erstellen / Kleines Problem?
Discussion on Patcher Erstellen / Kleines Problem? within the AutoIt forum part of the Coders Den category.
08/02/2013, 13:28
|
#1
|
elite*gold: 0
Join Date: Jun 2010
Posts: 30
Received Thanks: 69
|
Patcher Erstellen / Kleines Problem?
Hallo,
habe nur ein kleines Problem denke ich mal und stehe ziemlich auf dem schlauch.
Der Patcher an sich läuft soweit, nur ist das Problem das er egal ob das File vorhanden ist, es immer und immer wieder neu downloadet wenn ich den Patcher starte.
Ich hoffe Ihr könnt mir weiter helfen, nach 1 1/2 Tagen suchen und lesen habe ich es nicht hinbekommen das er vorher schaut ob die Files vorhanden sind und wenn vorhanden dann Skip ansonsten downloaden.
Hier der code..
PHP Code:
ProgressOn("Updater", "Patch wird gedownloadet", "Downloade Patchlist.ini ...")
$patch = IniRead(@ScriptDir & '\patch.ini',"host","url","default")
$hDownload = InetGet($patch, @ScriptDir & '\Patchlist.ini', 1)
InetClose($hDownload)
sleep(1000)
$iAnzahl = Number(IniRead(@ScriptDir & '\patchlist.ini', 'Files', 'Anzahl', -1))
If $iAnzahl > 0 Then
$iGesamtGroesse = 0
For $iIndex = 1 To $iAnzahl
$sFile = IniRead(@ScriptDir & '\patchlist.ini', 'Files', 'File' & $iIndex, "")
If $sFile = "" Then
MsgBox(266256, "Fatal Error", "Ein fataler Fehler ist aufgetreten:" & @CRLF & "Beschädigte Patchlist.ini")
Else
ProgressSet(0, "Ermittle Daten (1/"&$iAnzahl&")")
$iGesamtGroesse += InetGetSize($sFile, 1)
EndIf
Next
$iBereitsGedownloadet = 0
ProgressSet(0, "Downloade Patch-Files (1/"&$iAnzahl&")")
For $iIndex = 1 To $iAnzahl
$sFile = IniRead(@ScriptDir & '\patchlist.ini', 'Files', 'File' & $iIndex, "")
If $sFile = "" Then
MsgBox(266256, "Fatal Error", "Ein fataler Fehler ist aufgetreten:" & @CRLF & "Beschädigte Patchlist.ini")
Else
If Not FileExists(@ScriptDir & '\mods\' & FileGetName($sFile)) Then FileDelete(@ScriptDir & '\mods\' & FileGetName($sFile))
$hDownload = InetGet($sFile, @ScriptDir & '\mods\' & FileGetName($sFile), 1, 1)
Do
$iAktuellGedownloadet = $iBereitsGedownloadet + InetGetInfo($hDownload, 0)
ProgressSet(Ceiling($iAktuellGedownloadet / $iGesamtGroesse * 100), "Downloade Patch-Files ("&$iIndex&"/"&$iAnzahl&")")
Sleep(25)
Until InetGetInfo($hDownload, 2)
InetClose($hDownload)
EndIf
$iBereitsGedownloadet += FileGetSize(@ScriptDir & '\mods\' & FileGetName($sFile))
ProgressSet(Ceiling($iBereitsGedownloadet / $iGesamtGroesse * 100), "Downloade Patch-Files ("&$iIndex&"/"&$iAnzahl&")")
Next
ElseIf $iAnzahl = -1 Then
MsgBox(266256, "Fatal Error", "Ein fataler Fehler ist aufgetreten:" & @CRLF & "Beschädigte Patchlist.ini")
EndIf
ProgressSet(100, "Download komplett")
Sleep(1000)
ProgressOff()
Func FileGetName($sPath)
Local $aStrings
$aStrings = StringSplit($sPath, '/')
Return $aStrings[$aStrings[0]]
EndFunc
Bitte um Hilfe, BITTE!
|
|
|
08/02/2013, 23:08
|
#2
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Also ich an deiner Stelle würde den Code löschen.
IniRead :C
Und was soll das mit FileGetName?
Du könntest Pfadangaben z.B. in einer CSV Datei speichern, beispielsweise
Code:
local path;remote path
%scriptdir%\asdf\datei1;http://..../asdf/datei1
%scriptdir%\asdf\datei2;http://..../asdf/datei2
Das ganze ließe sich einfach mit StringRegExp auslesen und in einer for Schleife abarbeiten. Somit können auch weitere Daten, z.B. MD5 Hashes der Dateien, einfach eingefügt werden.
Code:
$sCSV = 'local path;remote path' & @CRLF & _
'%scriptdir%\asdf\datei1;http://..../asdf/datei1' & @CRLF & _
'%scriptdir%\asdf\datei2;http://..../asdf/datei2' & @CRLF
$aCSV = StringRegExp($sCSV, '(.*);([^\r\n]*)', 3)
For $i = 0 To UBound($aCSV) - 2 Step 2
ConsoleWrite('Erstelle Verzeichnis ' & StringRegExpReplace($aCSV[$i], '((.+)\\.*)', '\2') & @CRLF)
;~ DirCreate(StringRegExpReplace($aCSV[$i],'((.+)\\.*)','\2'))
;~ If Not FileExists($aCSV[$i]) Then InetGet($aCSV[$i], $aCSV[$i + 1])
ConsoleWrite('Wenn "' & $aCSV[$i] & '" nicht exisitert, dann lade "' & $aCSV[$i] & '" von "' & $aCSV[$i + 1] & '"' & @CRLF)
Next
MfG
|
|
|
08/03/2013, 10:13
|
#3
|
elite*gold: 0
Join Date: Apr 2013
Posts: 980
Received Thanks: 734
|
Eine Idee für ein SelfUpdater (eine exe allein) wäre auch so schon genugend
Code:
#requireadmin
InetGet ("Link",@Scriptdir &"Version.ini",1)
If not Fileexistens (@TempDir&"Version.ini") then
INetGet ("Link",@TempDir&"Version.ini")
$dl = IniRead (@TempDir&"Version.ini","Downloads","..","..")
InetGet ($dl,"..")
Endif
Next
If not IniRead(@ScriptDir&"Version.ini","Version",V","V.00") = (@TempDir&"Version.ini","Version",V","V.00") then
$Downloads = IniRead ();Downloads in @ScriptDir Version.ini
INetGet($Downloads,@ScriptDir&"",1)
Else
FileInstall (@ScriptDir&"Version.ini",@TempDir &"Version.ini",1)
Endif
Hier Fragt er Nur ab ob sich zu letztem Mal was geändert hat an der Version..  Sorry wegen manchen Fehler wenn du welche Findest .
Mfg
|
|
|
08/03/2013, 11:30
|
#4
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Ihr solltet mal von IniRead&Write wegkommen.
Da diese Funktionen ohne Handle arbeiten, sind sie sehr langsam.
Quelle:
Deine Pfade sind falsch.
MfG
|
|
|
08/03/2013, 12:14
|
#5
|
elite*gold: 0
Join Date: Apr 2013
Posts: 980
Received Thanks: 734
|
Quote:
Originally Posted by Achat
Ihr solltet mal von IniRead&Write wegkommen.
Da diese Funktionen ohne Handle arbeiten, sind sie sehr langsam.
Quelle:
Deine Pfade sind falsch.
MfG
|
Ja ich weiß eig. Wollte ich privat server aber da ich mich selber nicht damit auskenne ;o
@ScriptDir &"\Version.ini"
Besser?
|
|
|
08/03/2013, 14:00
|
#6
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Quote:
Originally Posted by Virus.bat
Eine Idee für ein SelfUpdater (eine exe allein)
|
MfG
|
|
|
08/08/2013, 18:25
|
#7
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Achat
Quelle: 
|
Registry = modern? lol
selbst microsoft versucht immer mehr von der veralteten registry struktur loszukommen...
beim speichern von daten kommt es vorallem darauf an, wie die daten gehandhabt werden sollen. habe ich beispielsweise 3 vorgegebene auswahlmöglichkeiten im programm, von der die gewählte gespeichert werden soll, so macht es durchaus sinn, einfach den index der gespeicherten wahl binär zu sichern, da ich so mit einer 2bit großen datei auskommen würde. das die "save-datei" für dau's nicht lesbar ist, kann je nach einsatzgebiet vorteilhaft oder eben auch nicht sein.
will jemand ein einfaches, für menschen leicht les-/modifizierbares format verwenden, so ist die ini variante auch durchaus brauchbar (für leute mit wenig it-erfahrung besser als die moderne xml variante).
|
|
|
 |
Similar Threads
|
Patcher erstellen [Problem]
01/23/2011 - Flyff Private Server - 0 Replies
Löshed
|
Kleines Problem mit dem Patcher
10/22/2010 - Flyff Private Server - 9 Replies
Hey es gibt ein Guide vom Puma .D ace und er sagt man muss nach flyffdown.gpotato.com suchen und ich habe jetz die flyff.exe von sedrika genommen und ich finde die nicht ... wurde das geändert weil der guide ist von 2008 und ich weiß nicht wo nach ich suchen muss
|
Hab ein kleines Denk Problem P-Server erstellen -.-
10/14/2009 - Metin2 Private Server - 9 Replies
Hallo zusammen
Ich will gerne einen P-Server erstellen. Hab alles geladen (chinesischen Metin Ordner, Metin2007, InstantServer Dateien, Fterm, die Surakopf.exe mit den 3 dateien, Navicat, Hamashi, ESSamp, Portmap und VPC.
Hab mir auch die videos angesehen und alles richtig gemacht. Starte VPC, alles einstellen und dann zurücksetzen (Netzwerk Adapter auch eingestellt). Danach starte ich Fterm und da die EInstellungen auch richtig. Schrift kommt, ich drück start (wie im vid)
Dann spiel...
|
P-server erstellen.....ein kleines problem
10/11/2009 - Metin2 Private Server - 2 Replies
hi,
ich hab ein kleines Problem ich will mir einen P-server erstellen aber wenn der server gerade bootet und da normalerweise login stehen sollte steht mountroot> http://www.bilder-space.de/show.php?file=10.10hyuE MA19SQODx26.jpg
was hab ich falsch gemacht???
|
Patcher erstellen Problem
10/23/2008 - Flyff Private Server - 2 Replies
Hallo,
Ich habe folgendes Problem,
Ich habe das Tutorial zum erstellen eines Patchers befolgt doch wenn ich die filelist.txt erstellen will über das Programm public_filelist von HDBlacker
kommt die Fehlermeldung 'Zugriff Verweigert' und in C ist nirgendwo die filelist.txt
http://img17.myimg.de/prob52220.jpg
Den Ordner PatchRoot habe ich erstellt und er liegt in C.
Liegts vllt. daran das ich Vista habe?
|
All times are GMT +1. The time now is 20:26.
|
|