Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #NoTrayIcon
- #Region
- #AutoIt3Wrapper_icon=system-software-update.ico
- #AutoIt3Wrapper_outfile=Updater.exe
- #AutoIt3Wrapper_UseUpx=n
- #AutoIt3Wrapper_UseX64=n
- #AutoIt3Wrapper_Res_Comment=Updater for portable Google Chrome
- #AutoIt3Wrapper_Res_Description=Updater for portable Google Chrome
- #AutoIt3Wrapper_Res_Fileversion=0.5.0.0
- #AutoIt3Wrapper_Res_LegalCopyright=http://stadt-bremerhaven.de
- #AutoIt3Wrapper_Res_Field=UsbDump by|http://stadt-bremerhaven.de
- #AutoIt3Wrapper_Res_Field=Developed by|Bene
- #AutoIt3Wrapper_Res_Field=Productname|Chrome Updater
- #AutoIt3Wrapper_Res_Field=Productversion|0.5.0
- #AutoIt3Wrapper_Res_Field=Made by|Bene
- #EndRegion
- Opt("MustDeclareVars", 0)
- #include <GUIConstantsEx.au3>
- #include <StaticConstants.au3>
- #include <WindowsConstants.au3>
- #include <ProgressConstants.au3>
- #include <Inet.au3>
- #include <Array.au3>
- #include <WinHTTP.au3>
- ; updater nur einmal starten
- #include <misc.au3>
- If _Singleton("Updater.exe", 0) = 0 Then
- ProcessClose("Updater.exe")
- EndIf
- ; schauen ob chrome.exe prozess existiert
- If ProcessExists( "chrome.exe" ) Then
- ; prozess existiert, abfrage ob beendet werden soll
- If @OSLang = 0407 Then
- $ask = MsgBox(4,"Chrome Updater", "Laufender Chrome muss beendet werden bevor das Update gestartet werden kann. Chrome jetzt beenden?")
- Else
- $ask = MsgBox(4,"Chrome Updater", "Existing chrome must be quit before update can start. Quit chrome now?")
- EndIf
- If $ask = 7 Then
- ; mit nein geantwortet, also updater beenden
- If @OSLang = 0407 Then
- MsgBox(0,"Chrome Updater", "Chrome Updater beenden.")
- Else
- MsgBox(0,"Chrome Updater", "Quit chrome updater.")
- EndIf
- Exit
- Else
- ; mit ja geantwortet, also chrome.exe beenden und warten bis beendet wurde, danach erst weiter
- ProcessClose( "chrome.exe" )
- EndIf
- EndIf
- ; GUI für die Auswahl ob Beta oder Release Channel
- GUICreate( "Chrome Updater", 420, 95 )
- Opt( "GUICoordMode",2 )
- $dev = GUICtrlCreateButton ( "Dev Channel", 10, 30, 100 )
- $beta = GUICtrlCreateButton ( "Beta Channel", 0, -1 )
- $release = GUICtrlCreateButton ( "Release Channel", 0, -1 )
- $chromium = GUICtrlCreateButton ( "Chromium", 0, -1 )
- $vcheck = GUICtrlCreateCheckbox( "Versionskontrolle ignorieren", -400, 10, 220, 20 )
- GUISetState()
- ; GUI laufen lassen bis geschlossen wird
- While 1
- $msg = GUIGetMsg()
- Select
- Case $msg = $GUI_EVENT_CLOSE
- ExitLoop
- Case $msg = $dev
- ; 1 weiergeben an updater funktion fuer beta channel
- Updater(1)
- Case $msg = $beta
- ; 2 weitergeben an updater funktion fuer release channel
- Updater(2)
- Case $msg = $release
- ; 3 weitergeben an updater funktion fuer release channel
- Updater(3)
- Case $msg = $chromium
- ; 4 weitergeben an updater funktion fuer chromium latest
- Updater(4)
- EndSelect
- WEnd
- Func Updater($channel)
- ; versionskontrolle checkbox auslesen
- $vstate = GUICtrlRead($vcheck)
- ; gui schliessen
- GUIDelete()
- ; update ordner anlegen
- DirCreate( @ScriptDir&"\Update" )
- ; updates ordner anlegen für versionskontrolle
- DirCreate( @ScriptDir&"\Chrome\updates" )
- If $channel = 1 Then
- ;Dev-Channel
- $data='<?xml version="1.0" encoding="UTF-8"?><o:gupdate xmlns:o="http://www.google.com/update2/response" protocol="2.0" version="1.2.183.13" ismachine="0" machineid="{11111111-1111-1111-1111-111111111111}" userid="{11111111-1111-1111-1111-111111111111}" requestid="{11111111-1111-1111-1111-111111111111}"><o:os platform="win" version="5.1" sp="Service Pack 3"/><o:app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" version="" lang="de" brand="" client="" iid="{11111111-1111-1111-1111-111111111111}"><o:updatecheck tag="2.0-dev"/></o:app></o:gupdate>'
- ElseIf $channel = 2 Then
- ;Beta-Channel
- $data='<?xml version="1.0" encoding="UTF-8"?><o:gupdate xmlns:o="http://www.google.com/update2/request" protocol="2.0" version="1.2.183.13" ismachine="0" machineid="{11111111-1111-1111-1111-111111111111}" userid="{11111111-1111-1111-1111-111111111111}" requestid="{11111111-1111-1111-1111-111111111111}"><o:os platform="win" version="5.1" sp="Service Pack 3"/><o:app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" version="" lang="de" brand="" client="" iid="{11111111-1111-1111-1111-111111111111}"><o:updatecheck tag="1.1-beta"/></o:app></o:gupdate>'
- ElseIf $channel = 3 Then
- ;Final-Channel
- $data='<?xml version="1.0" encoding="UTF-8"?><o:gupdate xmlns:o="http://www.google.com/update2/request" protocol="2.0" version="1.2.183.13" ismachine="0" machineid="{11111111-1111-1111-1111-111111111111}" userid="{11111111-1111-1111-1111-111111111111}" requestid="{11111111-1111-1111-1111-111111111111}"><o:os platform="win" version="5.1" sp="Service Pack 3"/><o:app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" version="" lang="de" brand="" client="" iid="{11111111-1111-1111-1111-111111111111}"><o:updatecheck/></o:app></o:gupdate>'
- ElseIf $channel = 4 Then
- ;Chromium
- $data = "http://build.chromium.org/buildbot/continuous/LATEST/chrome-win32.zip"
- EndIf
- If $channel < 4 Then
- ; aktuellen chrome ermitteln
- $hw_open = _WinHttpOpen()
- $hw_connect = _WinHttpConnect($hw_open, "tools.google.com")
- $h_openRequest = _WinHttpOpenRequest($hw_connect,"POST", "/service/update2","HTTP/1.1", "http://tools.google.com/")
- _WinHttpSendRequest($h_openRequest, "Content-Type: application/x-www-form-urlencoded"& @CRLF, $data)
- _WinHttpReceiveResponse($h_openRequest)
- Local $body=""
- Do
- $body&=_WinHttpReadData($h_openRequest)
- Until @error
- $position = StringInStr( $body,"codebase=" )
- $urltmp = StringMid( $body,$position+10,Stringlen($body)-$position-10 )
- $url = StringSplit( $urltmp, '"')
- ; keine url geliefert
- If Not $url[1] Then
- If @OSLang = 0407 Then
- MsgBox( 0,"Chrome Updater","Es wurde keine URL zurückgegeben!" )
- Else
- MsgBox( 0,"Chrome Updater","Request failure!" )
- EndIf
- DirRemove( @ScriptDir&"\Update", 1)
- Exit
- EndIf
- _WinHttpCloseHandle($h_openRequest)
- _WinHttpCloseHandle($hw_connect)
- _WinHttpCloseHandle($hw_open)
- $update_url = $url[1]
- ; url splitten und version aus der url auslesen
- $v_temp = StringSplit( $update_url, "/" ,0 )
- $version = $v_temp[7]
- ; versionskontrolle an/aus
- If $vstate > 1 Then
- ; falls versionsdatei existiert, updateurl zurücksetzen
- If FileExists( @ScriptDir&"\Chrome\updates\"&$version&".txt" ) Then $update_url = ""
- Else
- ; versionskontrolle nicht beachten, vorhandene versions.txt löschen
- FileDelete( @ScriptDir&"\Chrome\updates\"&$version&".txt" )
- EndIf
- ; nichts gefunden, beenden
- If Not $update_url Then
- If @OSLang = 0407 Then
- MsgBox( 0,"Chrome Updater","Keine neue Version gefunden!" )
- Else
- MsgBox( 0,"Chrome Updater","No new version available!" )
- EndIf
- DirRemove( @ScriptDir&"\Update", 1)
- Exit
- EndIf
- Else
- ; chromium, also update_url auf $data setzen
- $update_url = $data
- EndIf
- ; wget.exe gefunden, datei mit wget downloaden
- If FileExists( @ScriptDir & "\wget.exe" ) Then
- RunWait( @ScriptDir & "\wget.exe "&$update_url&"", @ScriptDir&"\Update" )
- ; erste Datei suchen im Ordner Update
- $chrome_temp = FileFindFirstFile( @ScriptDir&"\Update\*.exe" )
- $chrome_setup = FileFindNextFile( $chrome_temp )
- FileClose( $chrome_setup )
- FileMove( @ScriptDir&"\Update\"&$chrome_setup, @ScriptDir&"\Update\chrome_aktuell.exe" )
- Else
- ; kein wget gefunden, also normal mit autoit downloaden
- ; progress fenster
- If $channel < 4 Then
- ; chrome download
- $window = GUICreate( "Chrome Download", 306, 40 )
- Else
- ; chromium
- $window = GUICreate( "Chromium Download", 306, 40 )
- EndIf
- $progressbar = GUICtrlCreateProgress( 9, 15, 286, 17 )
- GUISetState( @SW_SHOW )
- ; dateigröße
- $fileSize = InetGetSize( $update_url )
- ; setup holen
- $hDownload = InetGet ( $update_url, @ScriptDir&"\Update\chrome_aktuell.exe" ,0 ,1 )
- Do
- $percent = Round( ((InetGetInfo($hDownload,0) / $fileSize) * 100) ) & "%"
- GUICtrlSetData( $progressbar, $percent )
- $msg = GUIGetMsg()
- ; falls progressfenster geschlossen wird, Download abbrechen, Update Ordner löschen und dann Exit
- If $msg = $GUI_EVENT_CLOSE Then
- InetClose($hDownload)
- DirRemove( @ScriptDir&"\Update", 1)
- Exit
- EndIf
- Sleep(10)
- Until InetGetInfo($hDownload, 2) ; schauen ob der download fertig ist
- InetClose($hDownload) ; download ist fertig, inetget schliessen
- ; gui schliessen
- GUIDelete()
- EndIf
- Sleep(50)
- ; Resources\Inspector Ordner löschen
- DirRemove( @ScriptDir & "\Chrome\Resources\Inspector", 1 )
- ; 7za.exe inkludieren
- FileInstall( "7za.exe", @ScriptDir&"\" )
- If $channel < 4 Then
- ; chrome setup entpacken
- RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome_aktuell.exe"" -o"""&@ScriptDir&"\Update""" )
- ; chrome.7z entpacken
- RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome.7z"" -o"""&@ScriptDir&"\Update\extracted""" )
- Else
- ; chromium setup entpacken
- RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome_aktuell.exe"" -o"""&@ScriptDir&"\Update""" )
- EndIf
- If $channel < 4 Then
- ; alles aus dem versionsnummern ordner in den Chrome Ordner
- $first = FileFindFirstFile( @ScriptDir&"\Update\extracted\Chrome-bin\*.*" )
- $versions_ordner = FileFindNextFile( $first )
- FileClose( $first )
- DirCopy( @ScriptDir&"\Update\extracted\Chrome-bin\"&$versions_ordner&"\", @ScriptDir&"\Chrome\", 1 )
- ; restlichen Dateien und Ordner
- FileCopy( @ScriptDir &"\Update\extracted\chrome.exe", @ScriptDir&"\Chrome\" ,1 )
- DirCopy( @ScriptDir &"\Update\extraced\Dictionaries", @ScriptDir&"\Chrome\" ,1 )
- ; versions datei nach Chrome\updates schreiben
- $av_temp = FileFindFirstFile( @ScriptDir&"\Chrome\updates\*.txt" )
- $alte_version = FileFindNextFile( $av_temp )
- FileClose( $av_temp )
- FileDelete( @ScriptDir&"\Chrome\updates\"&$alte_version )
- FileWrite( @ScriptDir&"\Chrome\updates\"&$version&".txt", "" )
- Else
- ; chromium benutzt chrome-win32, also alles aus diesem ordner kopieren
- DirCopy( @ScriptDir&"\Update\chrome-win32\", @ScriptDir&"\Chrome\", 1 )
- ; versions datei löschen
- $av_temp = FileFindFirstFile( @ScriptDir&"\Chrome\updates\*.txt" )
- $alte_version = FileFindNextFile( $av_temp )
- FileClose( $av_temp )
- FileDelete( @ScriptDir&"\Chrome\updates\"&$alte_version )
- EndIf
- ; alles aufräumen
- FileDelete( @ScriptDir &"\7za.exe" )
- DirRemove( @ScriptDir &"\Update\" , 1 )
- ; message Box ausgeben wenn mit Update fertig
- If @OSLang = 0407 Then
- If $channel < 4 Then
- MsgBox( 0,"Chrome Updater","Chrome aktualisiert" )
- Else
- MsgBox( 0,"Chrome Updater","Chromium aktualisiert" )
- EndIf
- Else
- If $channel < 4 Then
- MsgBox( 0,"Chrome Updater","Chrome updated" )
- Else
- MsgBox( 0,"Chrome Updater","Chromium updated" )
- EndIf
- EndIf
- ; updater beenden
- Exit
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement