|
You last visited: Today at 20:03
Advertisement
[AutoIt] Self-Update
Discussion on [AutoIt] Self-Update within the Coding Tutorials forum part of the General Coding category.
10/12/2014, 01:39
|
#1
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
|
[AutoIt] Self-Update
Hallo,
mit diesem kleinen Tutorial will ich euch zeigen, wie euer Programm nach jedem Start prüft ob es eine neue Version gibt. Falls ja, wird man zur Downloadseite gebracht.
Dafür braucht ihr erstmal eine eigene Webseite. Erstellt einfach eine kostenlose von z.B. oder einem anderen Anbieter. Nachdem ihr das getan habt, erstellt ihr ein Textfeld/Titel, wo ihr die Version eures Programmes reinschreibt:
Als nächstes erstellt ihr ein weiteres Textfeld, wo der Downloadlink drinstehen soll:
Ich habe meinen mit DownloadBegin und DownloadEnd gekennzeichnet, damit ich ihn später leichter finden kann.
Kommen wir jetzt zum Code. Wir werden bei jedem Start den Seitenquelltext eurer Webseite auslesen und prüfen, welche Version am aktuellsten ist. Den Quelltext einer Seite lesen wir so aus:
Code:
#include <INet.au3>
$Quelltext = _INetGetSource('http://www.moneypulation.jimdo.com')
Da kommt natürlich eure Webseite rein. Gucken wir uns den Quelltext mal im Browser an.
Mit F3 können wir (zumindest in Chrome) nun nach unser Version suchen. In meinem Fall war es 1.9 . Wenn ihr die Stelle gefunden habt, wo eure Version zu sehen ist...
dann lassen wir in unserem Programm mit _StringBetween danach suchen. _StringBetween erwartet einen großen String (unser Quelltext) und den String vor bzw. nach unserem gesuchten String. Also ein Stück Code direkt vor und nach der Version. Dieser Code darf sich aber niemals ändern, z.B. wenn ihr den <b> Tag, was für fette schrift steht, mitkopiert und später eure Version wieder normal macht, dann wird euer String nicht gefunden. Also nehmt nur sowas wie <h1 class="" id="blablabla">
Am Anfang eures Codes solltet ihr dann das haben:
Code:
#include <INet.au3>
#include <String.au3>
$Quelltext = _INetGetSource('http://www.moneypulation.jimdo.com')
$StrVersion = _StringBetween($Quelltext, 'class="n j-header"><h1 class="" id="cc-m-header-10499976623">',"</h1><script")
Die 2 UDF's String.au3 und INet.au3 müsst ihr dafür includen. Zu _StringBetween muss man noch sagen, dass die Funktion einen Array zurückgibt, da unser String ja mehrmals im Text vorkommen könnte. $StrVersion[0] ist das erstgefundene Element, daher benutzen wir auch nur dies. Als Test können wir die $StrVersion[0] ja mal mit einer MsgBox ausgeben:
Code:
Msgbox(0,"",$StrVersion[0])
Und siehe da, unsere Version wird gefunden. Nun können wir auf unserer Webseite die 1.9 zu einer 2.0 ändern und unser Programm wird es erkennen. Jetzt fehlt nichts, als ein paar If-Abfragen, ob die Version aktuell ist und der Benutzer auf die Downloadseite möchte. Die Downloadseite findet euer Programm ebenfalls mit _StringBetween. Nachdem ihr wisst, wie ihr es bei eurer Version macht, solltet ihr auch in der Lage sein, das mit eurer Downloadseite hinzukriegen.
Code:
#include <INet.au3>
#include <String.au3>
$Quelltext = _INetGetSource('http://www.moneypulation.jimdo.com')
$StrVersion = _StringBetween($Quelltext, 'class="n j-header"><h1 class="" id="cc-m-header-10499976623">',"</h1><script")
Msgbox(0,"",$StrVersion[0])
IF not @error Then
If Not ($StrVersion[0] = "1.8") Then
$MsgBox = MsgBox(4,"New Version","A new Version is available. Would you like to visit the download page?")
EndIf
EndIf
If not @error prüft ob überhaupt ein String gefunden wird und mit If Not ($StrVersion[0] = "1.8") wird daraufhin geprüft ob dieser gefundene String 1.8, also die Version des aktuellen Programmes ist. Ich hab die Flag 4 der MsgBox benutzt, weil man dann in der MsgBox entweder Ja oder Nein anklicken kann. Falls der "Ja" Button angeklickt wird, wird der Wert 6 zurückgegeben. Damit findet man heraus ob der User nun die aktuelle Version möchte. Im Ganzen sieht das dann so aus:
Code:
#include <INet.au3>
#include <String.au3>
$Quelltext = _INetGetSource('http://www.moneypulation.jimdo.com')
$StrVersion = _StringBetween($Quelltext, 'class="n j-header"><h1 class="" id="cc-m-header-10499976623">',"</h1><script")
Msgbox(0,"",$StrVersion[0])
IF not @error Then
If Not ($StrVersion[0] = "1.8") Then
$MsgBox = MsgBox(4,"New Version","A new Version is available. Would you like to visit the download page?")
If $MsgBox = 6 Then
$StrDownload = _StringBetween($Quelltext, '<strong>DownloadBegin</strong>','<b>DownloadEnd</b>')
IF not @error Then
ShellExecute($StrBetween2[0])
Exit
Else
MsgBox(0,"Error","Couldn't find download page")
EndIf
EndIf
EndIf
EndIf
ShellExecute öffnet die Downloadseite, die wir ja ebenfalls auf unserer Webseite haben. Und damit hätten wir es geschafft:
Falls der User ja anklickt, wird die Downloadseite aufgerufen und das Programm beendet. Wenn nicht, dann passiert nichts und euer Programm sollte daraufhin starten. Solltet ihr nun eine neue Version rausbringen, stellt ihr den Downloadlink in eure Webseite und ändert die Version. Alle User werden dann auf die Version hingewiesen, wenn sie euer Programm starten.
Ich hoffe, dass ich euch damit weiterhelfen konnte und ihr nun in der Lage seid eure Programme "selbst updaten" zu lassen.
|
|
|
10/12/2014, 02:40
|
#2
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Wieso Inet.au3 includen wenn du statt _INetGetSource auch einfach
Code:
BinaryToString(InetRead("http://abc.de")
nehmen könntest?
Warum die ganze String.au3 includen wenn du auch einfach reguläre Ausdrücke verwenden könntest?
|
|
|
10/12/2014, 02:43
|
#3
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
|
Quote:
Originally Posted by alpines
Wieso Inet.au3 includen wenn du statt _INetGetSource auch einfach
Code:
BinaryToString(InetRead("http://abc.de")
nehmen könntest?
Warum die ganze String.au3 includen wenn du auch einfach reguläre Ausdrücke verwenden könntest?
|
Ich weiß es gibt viele Wege, die auch besser sind aber mit dem Tutorial hat man immerhin die Grundbasis wie man ein Programm selbst updaten lässt. Man könnte natürlich auch statt die Downloadseite aufzurufen, das Programm direkt downloaden und das alte selbst löschen lassen. Ich habs halt so gemacht
|
|
|
10/12/2014, 12:11
|
#4
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Quote:
Originally Posted by alpines
....
|
und warum überhaupt so viel arbeit machen und nicht einfach eine text datei auf ein free webspace laden? (dropbox empfiehlt sich)
StringBetween ist regex....
Mit InetGet downloaden und den user nur fragen ob ers möchte ist auch besser finde ich
|
|
|
10/12/2014, 13:55
|
#5
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Quote:
Originally Posted by »FlutterShy™
StringBetween ist regex....
|
No **** sherlock, aber eine ganze UDF zu includen obwohl man ein einfaches Pattern hätte nutzen können...
|
|
|
10/12/2014, 21:21
|
#6
|
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
|
Leute, bitte einigermaßen beim Thema bleiben.
|
|
|
10/12/2014, 21:22
|
#7
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Solange jeder unterschiedliche Variablennamen verwendet sollte das doch passen.
Aber zurück zum Thema: Eine Datei abzulegen die gezogen wird wäre wohl die bessere Alternative, da du einerseits weniger Traffic hast und kein RegEx (_StringBetween) brauchst.
Wenn du auf deinem Webspace z.B. die Datei "version.txt" mit dem Inhalt 1.0.0 hast, kannst du einfach
Code:
MsgBox(64, "Version", "Aktuelle Version: " & BinaryToString(InetRead("http://webspace.de/version.txt")))
verwenden und das ist um einiges schneller.
|
|
|
02/16/2015, 11:33
|
#8
|
elite*gold: 0
Join Date: Jan 2015
Posts: 146
Received Thanks: 81
|
THX THX THX !
|
|
|
04/07/2015, 21:38
|
#9
|
elite*gold: 0
Join Date: Apr 2015
Posts: 375
Received Thanks: 2,520
|
Not work? Help .x.
|
|
|
04/08/2015, 08:45
|
#10
|
elite*gold: 138
Join Date: Apr 2012
Posts: 3,495
Received Thanks: 1,769
|
Quote:
Originally Posted by Xonivion
Not work? Help .x.
|
Maybe you explain your problem? I can't read minds
|
|
|
10/23/2015, 15:53
|
#11
|
elite*gold: 73
Join Date: May 2015
Posts: 211
Received Thanks: 99
|
Nice Tutorial Bro
|
|
|
10/24/2015, 15:45
|
#12
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|
Wieso nicht gleich eigene Tags benutzen, welche das viel überschaubarer machen?
Code:
<Version:accessable>1.1</version> //Version die noch unterstützt wird
<Version:accessable>1.2</version> //Version die noch unterstützt wird
<Version:live>2.0</version> //Aktuelle Version
<Download:version_1_1>...</download>
<Download:version_1_2>...</download>
<Download:version_2_0>...</download>
Nicht gelistete bzw. unterstützte Versionen können zu einem Update gezwungen werden. Außerdem ist die Lösung mittels "generierter" Homepage suboptimal, da doch recht viel content zunächst einmal runtergeladen und dann geparsed werden muss. Wieso nicht gleich eine leere .txt mit den entsprechenden Tags auf einem FTP hosten?
|
|
|
|
Similar Threads
|
Problem with Autoit Inventory update
12/15/2012 - SRO Coding Corner - 6 Replies
Hello
I want use 1th 2th 3th 4th 5th inventory slots.
But 4th and 5th not updating..
Please help me:
InjectPacket($alchemy_packet, "0203030D0E0F1011")
If $opcode = $invupdate_packet then
|
Grand fantasia autoit BOT für DE update
08/11/2012 - General Gaming Discussion - 3 Replies
hier der autoit bot von spoonlove mit aktuellen pointers für die deutsche version
falls nache dem passwort gefragt wird hier ist es samy2020
LinkSave.in
hier das resultat von virus total
Antivirus Version Last Update Result
AhnLab-V3 2010.08.31.01 2010.08.31 -
AntiVir 8.2.4.46 2010.08.31 -
|
[AutoIt] Update Funktion für eure Bots
07/01/2011 - Coding Tutorials - 3 Replies
Hallo.
Ich möchte euch zeigen, wie ihr eine simple Update Funktion für eure Bots erstellt. Seid nicht zu hart zu mir, weil das mein erstes Tutorial ist ;)
Als bevor wir mit den Code anfangen, werde ich euch das Prinzip erklären:
- Es gibt ein kleines Programm, welches das Update durchführt. Dieses könnt ihr einfach via Run() mit euren Bot mitstarten lassen. Dies wird benötigt, da sich nicht so leicht eine laufendes Programm überschreiben lässt.
|
[S]uche Update von Autoit [B]iete E*G
06/27/2011 - elite*gold Trading - 0 Replies
Hallo Community!
Ich Suche Update & Biete (x) E*G
Was Suche ich?
Der Jemand mein Bot benutzt, der sich neue Update haben möchte, daher will er sich neu Dowloaden, weil er vllt mir nicht PN anschicken möchte..
http://s7.directupload.net/images/110601/7kxtyjou .png
|
Anti Autoit Bypass v3.0 ( All Versions + Auto update )
03/08/2010 - Last Chaos - 96 Replies
Well here is the Final Version of the bypass.
This one, should work fine for all Versions at
least until the next big update or until they
get new detections methods.
RIP Autoit Detection :p
ps:
The first Messagebox got removed,
it was patching fine, but i didnt
|
All times are GMT +2. The time now is 20:03.
|
|