HelperUpdate.au3
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#include <File.au3>
#include <Array.au3>
;===============================================================================
; Function Name: _BuildInZIP($sPath, $s_a_ToZip, $fUnZip=True, $iIndexBase=1, $fOverwrite=True)
; Description: Erstellt aus einer Datei od. einem Array von Dateien eine ZIP-Datei
; mit Hilfe der Windows eigenen ZIP-Funktion
; Parameter(s): $sPath Pfad der zu erstellenden ZIP-Datei // Bestehenden ZIP-Datei
; $s_a_ToZip String der Einzeldatei oder Array der zu zippenden Dateien
; // Pfad des Zielordners, in den entpackt werden soll
; $fUnZip=True Entpacken=True, Packen=False (Standard)
; $iIndexBase Index Basis (erstes Element mit Pfad) des übergebenen Arrays (0 od.1)
; $fOverwrite Falls $sPath existiert ==> Überschreiben (Standard=True)
; Return Value(s): Erfolg 1
; Fehler set @error 1 - Überschreiben aus, aber Zieldatei existiert
; 2 - Zieldatei endet nicht auf ".zip"
; 3 - zu komprimierende Datei existiert nicht
; @extended: Anzahl der fehlenden Dateien
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;===============================================================================
Func _BuildInZIP($sPath, $s_a_ToZip, $fUnZip=False, $iIndexBase=1, $fOverwrite=True)
Local $fh, $sNul = '', $sZIPHeader, $objShell = ObjCreate("Shell.Application"), $objZipOrdner, $err = 0
$sPath = FileGetLongName($sPath, 1)
If $fUnZip Then
Local $temp, $objZip
If Not FileExists($s_a_ToZip) Then DirCreate($s_a_ToZip)
$temp = $objShell.Namespace($s_a_ToZip)
$objZip = $objShell.Namespace($sPath)
$temp.CopyHere($objZip.Items)
Return 1
EndIf
If (Not $fOverwrite) And FileExists($sPath) Then Return SetError(1,0,0)
If StringRight($sPath, 4) <> '.zip' Then Return SetError(2,0,0)
For $i = 1 To 18
$sNul &= Chr(0)
Next
$sZIPHeader = Chr(80) & Chr(75) & Chr(5) & Chr(6) & $sNul
$fh = FileOpen($sPath, 10)
FileWrite($fh, $sZIPHeader)
FileClose($fh)
$objZipOrdner = $objShell.Namespace($sPath)
If Not IsArray($s_a_ToZip) Then
If Not FileExists($s_a_ToZip) Then Return SetError(3,1,0)
$objZipOrdner.CopyHere($s_a_ToZip)
Sleep(1000)
Return 1
EndIf
For $i = $iIndexBase To UBound($s_a_ToZip) -1
If Not FileExists($s_a_ToZip[$i]) Then
$err += 1
ContinueLoop
EndIf
$objZipOrdner.CopyHere($s_a_ToZip[$i])
Sleep(1000)
Next
If $err Then Return SetError(3,$err,0)
Return 1
EndFunc ;==>_BuildInZIP
; Einstellungen
Global $countoflines = 6
Global $txtfilename = "HelperUpdate.txt"
Global $settingsfilename = "HelperUpdate.ini"
Global $PW = "PASSWORT"
Global $sSavePath3 = "C:\Program Files (x86)\Helper\Helper.exe"
Global $weiter = 0
; Datei öffnen
Local $read = FileOpen("$txtfilename", 0)
; Prüfen, ob Datei eingelesen wurde
If $txtfilename = -1 Then
MsgBox(0, "Fehler", "Das Textdokument "&$txtfilename&" konnte nicht eingelesen werden!")
Sleep(5000) ;five seconds
Exit
EndIf
; Textdokument zu Variable
$line = FileReadLine($txtfilename)
Local $PID = ProcessExists("Helper.exe") ; Will return the PID or 0 if the process isn't found.
If $PID Then ProcessClose($PID)
; Zeilen Zähler
Local $CountLines = _FileCountLines("$line")
If $CountLines > $countoflines Then
Msgbox(64,"Fehler","Mehr als "&$countoflines&" Zeilen werden nicht unterstützt!")
Sleep(5000) ;five seconds
Exit
EndIf
; Automatische Überprüfung ob neue Version vorhanden ist
; Coming Soon
;Manuelle Versionsabfrage
;Infofenster
MsgBox ( 0, "Informationen", "In den nachfolgenden Fenster sollten Sie die Version in folgenden Format eingeben: 2_2_0_40")
Opt('GuiOnEventMode',1) ;Schaltet den 'GuiOnEventMode' an
Opt('OnExitFunc', 'Ende') ;Ruf die Funktion 'Ende' auf, wenn das Programm geschlossen wird
#Region .txt Datei Öffnen
$File_Handle = FileOpen($settingsfilename, 2) ;Öffnet die Datei
#EndRegion
#Region GUI Erstellen
$Form1 = GUICreate('Versionsnummer?', 181, 221, 192, 124) ;Erstellt ein Fenster
GUISetOnEvent($GUI_EVENT_CLOSE, 'Ende') ;Wenn auf das 'X' geklickt wird, wird die Funktion 'Ende' aufgerufen
$Edit1 = GUICtrlCreateEdit('', 0, 0, 180, 180) ;Erstellt ein Eingabefeld
$Button1 = GUICtrlCreateButton('Speichern', 0, 180, 180, 40, $WS_GROUP) ;Erstellt den 'Sperichern' Button
GUICtrlSetOnEvent(-1, 'Speichern') ;Wenn auf den Button 'Speichern' geklickt wird, wird die Funktion 'Speichern' aufgerufen
GUISetState(@SW_SHOW) ;Zeigt das GUI
#EndRegion
#Region Endlosschleife ;Sorgt dafür, dass das Programm sich nicht schließt
While 1
Sleep(100)
If $weiter == 1 Then
ExitLoop
EndIf
WEnd
#EndRegion
#Region Funktionen
Func Speichern()
FileWrite($File_Handle, GUICtrlRead($Edit1)) ;Überschreibt die Datei mit dem Wert aus dem Eingabefeld
EndFunc
Func Ende()
FileClose($File_Handle) ;Schließt die Datei. Erst dann sieht man den Inhalt!!!
Global $weiter = 1
GUISetState(@SW_HIDE)
EndFunc
#EndRegion
; Datei öffnen
Local $read = FileOpen("$settingsfilename", 0)
#Region HelperInstaller
[/autoit] [autoit][/autoit] [autoit]; Prüfen, ob Datei eingelesen wurde
If $settingsfilename = -1 Then
MsgBox(0, "Fehler", "Die Datei "&$settingsfilename&" konnte nicht eingelesen werden!")
Sleep(5000) ;five seconds
Exit
EndIf
; Textdokument zu Variable
$line2 = FileReadLine($settingsfilename)
; Globale Links für Download, Variable muss existieren
Global $sDownloadLink = "https://Blub.de/HelperInstaller_"&$line2&".zip?attredirects=0"
Global $sPath = @TempDir&"\HelperInstaller_"&$line2&".zip"
Global $sSavePath21 = @TempDir&"\HelperInstaller_"&$line2&"\HelperInstaller.exe"
Global $sSavePath22 = @TempDir&"\HelperInstaller_"&$line2&"\"
Global $s_a_ToZip = @TempDir&"\HelperInstaller_"&$line2&"\"
; Download des neuen Programmes
MsgBox(0, "Information", "Beginne Download des Programmes!")
Sleep(3000)
Local $DownloadFile = InetGet($sDownloadLink,$sPath,1,1)
Do
Sleep(250)
Until InetGetInfo($DownloadFile, 2)
; Überprüfung der Datei
If FileExists($sPath) Then
If FileGetSize($sPath) = InetGetSize($sDownloadLink) Then
Sleep(250)
; Entpacken und ausführen
_BuildInZIP($sPath, $s_a_ToZip, True, 0, True)
Sleep(10000)
$sPass = 1
Run($sSavePath21, $sSavePath22, @SW_SHOW)
If Not @error Then
;Installation
Sleep(2000)
WinActivate("Helper for rama Installation: Zielverzeichnis")
Sleep(500)
ControlClick("Helper for rama Installation: Zielverzeichnis", "", "1", "left")
Sleep(5000)
ControlClick("Helper for rama Installation: Fertig", "", "1", "left")
If SLeep(500) Then
;Variablen
Local $Split = StringSplit("$line", ",")
Local $text = "This\nline\ncontains\nC-style breaks."
Local $array = StringSplit($text, '\n', 1)
;Programm starten
ShellExecute (""&$sSavePath3&"")
For $Split = 1 To ubound($Split,1)
Sleep(500)
WinActivate ( "Helper for rama")
Sleep(2000)
ControlClick("Helper for rama", "", "40248", "left")
Sleep(500)
ControlClick("Account Liste", "", "40246", "left")
Sleep(500)
ControlClick("Account Liste", $Split[1]), "", "left"
Sleep(500)
ControlClick("Account Liste", "", "40245", "left")
Sleep(500)
Next
Sleep(10000)
ControlClick("Account Liste", "", "2", "left")
Sleep(500)
WinClose("Helper for rama")
Sleep(500)
MsgBox ( 0, "Informationen", "Alle Aufgaben erledigt!")
Sleep(5000)
Exit
Else
MsgBox(0, "Fehler", "Code:05. Installation fehlgeschlagen!")
Sleep(5000) ;five seconds
Exit
EndIf
Else
MsgBox(0, "Fehler", "Code:04. Die Datei "&$sSavePath21&" konnte nicht als Admin ausgeführt werden!")
Sleep(5000) ;five seconds
Exit
EndIf
Else
MsgBox(0, "Fehler", "Code:02. Die Datei "&$sPath&" entspricht nicht dieser Datei "&$sDownloadLink&" !")
Sleep(5000) ;five seconds
Exit
EndIf
Else
MsgBox(0, "Fehler", "Code:01. Die Datei "&$sPath&" existiert nicht!")
Sleep(5000) ;five seconds
Exit
EndIf
#EndRegion
HelperUpdate.txt
HelperUpdate.ini
Hallo,
ich habe hier nen Script geschrieben, wo ich nen bisschen Hilfe bräuchte Ich bin erst vor kurzem angefangen mit AutoIt. Beim Script werden keine Fehler angezeigt und beim compilieren auch nicht... Aber das Gui öffnet sich irgendwie nicht... Das Script bleibt in der Warteschleife...
Vielen Dank schon mal im voraus für eure Hilfe
EDIT: Script von HelperUpdate.au3 überarbeitet
EDIT2: Script von HelperUpdate.au3 überarbeitet