Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 16:57

  • Please register to post and access all features, it's quick, easy and FREE!

 

Frage zu Updater

Reply
 
Old   #1
 
elite*gold: 44
Join Date: May 2011
Posts: 1,095
Received Thanks: 688
Smile Frage zu Updater

Hallo leute ich habe mal eine Frage...

Ich hab gesehen in google und so gibts viele Tutorials zum Updater.
Aber ich hab eine Ftp Webiste(Kilu.de Bplaced.net) und da geh ich mit Filezilla rauf und schiebe die Updater.txt rein.
Aber die Updater.txt Ladet sich ja nicht in temp runter oder?
Aber das ist ja nicht mal meine Frage...
Ich will einen Updater erstellen und ihn in meinem Programm einbauen...
Mein Problem ist ja wie schon gesagt wegen den FTP Websiten...
FileZilla Updater.txt ...
Also auf klar Text:
Ich will einen Updater machen für mein Programm.
In dem Programm soll der Updater sein auf einem Button...
Aber erstmal will ich nur wissen wie man einen Updater macht...
mit FTP

Bitte um Hilfe!



BladeTiger12 is offline  
Old   #2
Moderator


 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,443
Received Thanks: 4,681
Ich würds so machen:
Code:
$version = _inetgetsource("Deinewebisite.de/Version.txt")
If $version > $aktuelleVersion then
_Update()
endif

Func _Update()
InetGet ( "Deinewebisite.de/Programm.exe", @scriptdir & "\Programm.exeN)
FileDelete(@scriptdir & "\Programm.exe")
FileMove(@scriptdir & "\Programm.exeN", @scriptdir & "\Programm.exe")
endfunc
In meinem Programm "WeaponSettings hab ich das so gelöst, dass das Hauptprogramm bei jedem start geschaut hat, ob der Updater existiert, wenn nicht, läd es ihn herunter. Außerdem hat das Hauptprogramm getestet ob die aktuellste Version installiert ist, wenn nicht, wird der Updater gestartet.

Hier ein auszug aus dem Code:


Code:
Func WSUpdate() 
    $Hcounter = InetRead("http://weaponsettings.1x.net/Counter/counter.php") 
    Run(@ScriptDir & "\WSUpdater.exe") 
    If @error <> 0 Then 
        $DLMesg = MsgBox(0, "Info", "Sie haben keinen Updater für dieses Programm" & @CRLF & "Soll der Updater jetzt geladen werden?") 
        If $DLMesg = 1 Then 
            WSUpdaterUpdate() 
            Run(@ScriptDir & "\WSUpdater.exe") 
        EndIf 
    EndIf 
    Exit 
EndFunc   ;==>WSUpdate
Code:
Func WSUpdaterUpdate() 
    $hDownload = InetGet("http://weaponsettings.1x.net/WeaponSettings/Client/WSUpdater.exe", @ScriptDir & "\WSUpdater.exeN", 1, 1) 
    If @error Then 
        _log("Error during download") 
        MsgBox(1, "Error", "Error: " & @error) 
    EndIf 
    Do 
        Sleep(250) 
        $nBytes = InetGetInfo($hDownload, 1) 
    Until InetGetInfo($hDownload, 2) 
    _log("Downloading: " & InetGetInfo($hDownload, 0)) 
    _log($nBytes & "Bytes downloaded") 
    _log("Download complete") 
    FileDelete(@ScriptDir & "\WSUpdater.exe") 
    FileMove(@ScriptDir & "\WSUpdater.exeN", @ScriptDir & "\WSUpdater.exe") 
    IniWrite(@ScriptDir & "\WSFiles\UserInfo.ini", "UpdaterInfo", "Version", $UVersion) 
    If @error Then 
        _log("Error") 
    EndIf 
    _log("Download complete") 
EndFunc   ;==>WSUpdaterUpdate
Code:
unc VersCheck();Checkt die WS und WSUpdater Version 
    LMess() 
    $Version = ReadFromIni("WSInfo", "Version", 0) 
    $Uvers = ReadFromIni("UpdaterInfo", "Version", 0) 
    $UVersion = _INetGetSource("http://weaponsettings.1x.net/WeaponSettings/update/Uvers.txt") 
    If Not ($UVersion == $Uvers) Then 
        $MBox = MsgBox(4, "Info", "Sie haben nicht den aktuellsten 'WSUpdater'." & @CRLF & "Soll die Version. " & $UVersion & "geladen werden?") 
        If $MBox = 6 Then 
            WSUpdaterUpdate() 
        EndIf 
    EndIf 
    $aVersion = _INetGetSource("http://weaponsettings.1x.net/WeaponSettings/update/WSVersion.txt") 
    If $Version = $aVersion Then 
        Sleep(99) 
    Else 
        $ID = MsgBox(1, "Update", "Es steht ein Update für 'WeaponSettings' bereit!" & @CRLF & "Updaten?") 
        If $ID = 1 Then 
            WSUpdate() 
        EndIf 
    EndIf 
EndFunc   ;==>VersCheck


Lawliet is offline  
Thanks
1 User
Old   #3
 
elite*gold: 44
Join Date: May 2011
Posts: 1,095
Received Thanks: 688
Könntest du mir sagen was ich alles in meine sachen umbennenen muss und wo ich den Uvers.txt herbekomme

$Edit: und AutoIt v3 Script (neu).au3(14,16) : ERROR: WSUpdate() already defined.
Func WSUpdate()
~~~~~~~~~~~~~~~^
AutoIt v3 Script (neu).au3(27,16) : ERROR: WSUpdate() already defined.
Func WSUpdate()
~~~~~~~~~~~~~~~^
AutoIt v3 Script (neu).au3(7,29) : ERROR: WSUpdaterUpdate(): undefined function.
WSUpdaterUpdate()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
AutoIt v3 Script (neu).au3 - 3 error(s), 0 warning(s)
BladeTiger12 is offline  
Old   #4
Moderator


 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,443
Received Thanks: 4,681
Naja kopieren solltest du es nicht In der Uvers.txt stand "1.1" oder so drinn, also die Version des Updaters.
In WSVersion.txt steht die Version des Hauptprogramms.
Wenn du eine neue Version hast, musst du sie nur auf den FTP Server legen, Uvers.txt und WSVersion.txt anpassen und schon updated das Programm beim Clienten.


Lawliet is offline  
Old   #5
 
elite*gold: 44
Join Date: May 2011
Posts: 1,095
Received Thanks: 688
Aber wie soll ich das machen bin anfänger von autoit xD
ich will auch nen auto updater wo dann anfrage kommt willst du das updaten beim Programm start also ohne button oder so ...
Wusste nicht das es auto update gibt^^
Also wenn ich das programm starte soll frage kommen Update herunterladen? ja oder nein sowas wie If $Variable ElseIf Else... weist du Ja und nein
BladeTiger12 is offline  
Old   #6
Moderator


 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,443
Received Thanks: 4,681
Code:
Func VersCheck()
schaut ob alles aktuell ist, oder nicht

Code:
$Version = ReadFromIni("WSInfo", "Version", 0) ;liest aus einer Ini die aktuelle Version des Programms
    $Uvers = ReadFromIni("UpdaterInfo", "Version", 0) ;liest aus einer Ini die aktuelle Version des Updaters
    $UVersion = _INetGetSource("http://weaponsettings.1x.net/WeaponSettings/update/Uvers.txt") ;ließt die aktuellste online version
    If Not ($UVersion == $Uvers) Then ; wenn sie nicht gleich sind dann
        $MBox = MsgBox(4, "Info", "Sie haben nicht den aktuellsten 'WSUpdater'." & @CRLF & "Soll die Version. " & $UVersion & "geladen werden?") ; kommt diese Msgbox 
        If $MBox = 6 Then ; wenn die msg mit "ja" angeklickt wird dann 
            WSUpdaterUpdate() ; updater update
        EndIf 
    EndIf 
    $aVersion = _INetGetSource("http://weaponsettings.1x.net/WeaponSettings/update/WSVersion.txt")  ; aktuellste programm version online wird ausgelesen
    If $Version = $aVersion Then ; wenn sie gleich sind, dann
        Sleep(99) ; nix
    Else ; ansonsten
        $ID = MsgBox(1, "Update", "Es steht ein Update für 'WeaponSettings' bereit!" & @CRLF & "Updaten?") ; msg mit dieser frage
        If $ID = 1 Then ; wenn sie mit ok beantwortet wird, dann
            WSUpdate() ; update 
        EndIf 
    EndIf 
EndFunc   ;==>VersCheck
Lawliet is offline  
Old   #7
 
elite*gold: 280
Join Date: May 2007
Posts: 2,817
Received Thanks: 3,479
die programmversion würde im programm bei autoit scripten hardcoded deutlich mehr sinn machen, und wäre auch leichter umsetzbar^^

Code:
$version = 1337
If BinaryToString(InetRead('Meine-Website.ruleZ/version.txt'))<>$version Then Update()
lolkop is offline  
Old   #8
Moderator


 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,443
Received Thanks: 4,681
Ja, so hab ich das auch in einer aktuelleren Version drinn. Aber bin nicht an meinem Rechner und konnte nur auf ein hochgeladenes File zugreifen.
Lawliet is offline  
Old   #9
 
elite*gold: 0
Join Date: Mar 2011
Posts: 8,643
Received Thanks: 3,454
Hier im Video erklärt er ganz genau wie du am besten einen Updater machst. Schaus dir am besten an. Er erklärt wirklich alles stück für stück.

Freddy​ is offline  
Old   #10
 
elite*gold: 280
Join Date: May 2007
Posts: 2,817
Received Thanks: 3,479
niemals updates über ftp machen!

lad die datei auf seite xyz hoch, vergleich die version wie ich oben gezeigt habe mit einer internen, und lad die datei dann mit InetGet('xyz/datei')...
lolkop is offline  
Old   #11
Moderator


 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,443
Received Thanks: 4,681
Wieso nicht FTP? Wenn man es trotzdem über Inetget laden kann?
Bei Kilu hat man gleich ne Domain dazu, über die man dann den FTP Inhalt über den Browser laden kann.
Lawliet is offline  
Old   #12
 
elite*gold: 280
Join Date: May 2007
Posts: 2,817
Received Thanks: 3,479
baust du in dein script ftp daten ein, und veröffentlichst es, kannst du davon ausgehen, das die daten binnen sekunden weltweit bekannt sind.

mögliche folgen wären zb:
  • updatefile wird durch virus ersetzt
  • zugangsdaten werdn geändert
  • ftp wird geleert
  • ...

meiner meinung nach alles dinge, welche nicht wirklich schön/notwendig sind, zumal es per ftp commandos nicht leichter wird.
lolkop is offline  
Old   #13
Moderator


 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,443
Received Thanks: 4,681
Wenn man aber ohne Daten auf die Files zugreifen kann? Und das ist bei Kilu der fall Da kann man dann einfach über ne Domain (bsp. domain1.1x.biz) auf die Ordner zugreifen.
Lawliet is offline  
Old   #14
 
elite*gold: 280
Join Date: May 2007
Posts: 2,817
Received Thanks: 3,479
hast du dir den beitrag von Snivel mal angeschaut?

wenn hier tatsächlich empfolen wird, über ftp befehele ein update zu machen, muss man die user ja darauf hinweisen, das dies die absolut schlechteste mögliche wahl wäre, das problem zu lösen.

das was du dort die ganze zeit beschreibst, ist doch genau der weg den ich erklärt habe.

die updater datei besteht eig nur aus zwei zeilen:
Code:
InetGet('Meine-Website.ruleZ/File.exe')
Run('File.exe')
und das file macht eben den versionscheck, und führt bei update das update aus.
Code:
$version = 1337
If BinaryToString(InetRead('Meine-Website.ruleZ/version.txt'))<>$version Then Update()

Func Update()
    Run('Update.exe')
    Exit
Endfunc
mehr als diese 7 zeilen braucht man nicht zum updaten...

einziges eventuell notweniges extra wären updates, welche nur mit bestimmten userdaten möglich sind.
aber auch dies erledigt man nicht über ftp befehle, sondern über ein auf dem server befindliches php script.
lolkop is offline  
Old   #15
Moderator


 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,443
Received Thanks: 4,681
Quote:
Originally Posted by lolkop View Post
hast du dir den beitrag von Snivel mal angeschaut?

wenn hier tatsächlich empfolen wird, über ftp befehele ein update zu machen, muss man die user ja darauf hinweisen, das dies die absolut schlechteste mögliche wahl wäre, das problem zu lösen.

das was du dort die ganze zeit beschreibst, ist doch genau der weg den ich erklärt habe.

die updater datei besteht eig nur aus zwei zeilen:
Code:
InetGet('Meine-Website.ruleZ/File.exe')
Run('File.exe')
und das file macht eben den versionscheck, und führt bei update das update aus.
Code:
$version = 1337
If BinaryToString(InetRead('Meine-Website.ruleZ/version.txt'))<>$version Then Update()

Func Update()
    Run('Update.exe')
    Exit
Endfunc
mehr als diese 7 zeilen braucht man nicht zum updaten...

einziges eventuell notweniges extra wären updates, welche nur mit bestimmten userdaten möglich sind.
aber auch dies erledigt man nicht über ftp befehle, sondern über ein auf dem server befindliches php script.
Achso, ja. Nur der User hat im ersten Post ja schon geschrieben, dass er es mit Kilu lösen will. Deshalb hab ich mir Snivels Post garnicht angeschaut
Mein Past ist ja ziemlich das gleiche, nur für mehrere Programme und mit einer Msgbox, die nachfrägt, ob ein Update erwünscht ist.


Lawliet is offline  
Reply



« Previous Thread | Next Thread »

Similar Threads
Der eigene Updater *frage*
Guten morgen alle zusammen, ich habe mir für einige liebe User einen P-Server erstellt. Ich möchte jetzt nun den Updater in angriff nehmen, dazu...
1 Replies - Shaiya Private Server
[FRAGE]VB auslesen einer Patchlist für Updater
Ich bin gerade dabei einen Patcher zu machen und ich möchte nun folgendes: Ich habs schon mit webclient versucht und klappt alles auch wunderbar...
3 Replies - .NET Languages
[Frage] Updater Modden?!
Hi E*pvp, ich würde gerne wissen wie man den Updater moddet... Danke schonmal, SB
6 Replies - WarRock
[FRAGE]Updater in Batch
Wäre es möglich Datein auf einem FTP-Server per Batch herunterladen zu lassen? Wenn ja wie? Danke
3 Replies - General Coding
Hab ne Frage zum UPDATER SUCHE HILFE
Also Gestern hat der updater garnix angezeigt noch losttemple und wenn ich auf gedrückt habe ist nichts passiert heute war dann ddas bild von WM...
12 Replies - WarRock



All times are GMT +1. The time now is 16:57.


Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2017 elitepvpers All Rights Reserved.