Guest
Public paste!

bene

By: a guest | Sep 30th, 2009 | Syntax: AutoIt | Size: 6.53 KB | Hits: 291 | Expires: Never
Copy text to clipboard
  1. #NoTrayIcon
  2. #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
  3. #AutoIt3Wrapper_icon=system-software-update.ico
  4. #AutoIt3Wrapper_outfile=Updater.exe
  5. #AutoIt3Wrapper_UseUpx=n
  6. #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
  7. #Region
  8. #EndRegion
  9.  
  10. #include <GUIConstantsEx.au3>
  11. #include <StaticConstants.au3>
  12. #include <WindowsConstants.au3>
  13. #include <ProgressConstants.au3>
  14. #include <HTTP.au3>
  15.  
  16. ; updater nur einmal starten
  17. #include <misc.au3>
  18. If _Singleton("Updater.exe", 0) = 0 Then
  19.         ProcessClose("Updater.exe")
  20.  
  21. ; chrome prozess schliessen
  22. ProcessClose( "chrome.exe" )
  23.  
  24. ; GUI für die Auswahl ob Beta oder Release Channel
  25. GUICreate( "Chrome Updater", 320, 75 )
  26. Opt( "GUICoordMode",2 )
  27. $dev = GUICtrlCreateButton ( "Dev Channel",  10, 30, 100 )
  28. $beta = GUICtrlCreateButton ( "Beta Channel",  0, -1 )
  29. $release = GUICtrlCreateButton ( "Release Channel",  0, -1 )
  30.  
  31. ; GUI laufen lassen bis geschlossen wird
  32.         $msg = GUIGetMsg()
  33.         Select
  34.                 Case $msg = $GUI_EVENT_CLOSE
  35.                         ExitLoop
  36.                 Case $msg = $dev
  37.                         ; 1 weiergeben an updater funktion fuer beta channel
  38.                         Updater(1)
  39.                 Case $msg = $beta
  40.                         ; 2 weitergeben an updater funktion fuer release channel
  41.                         Updater(2)
  42.                 Case $msg = $release
  43.                         ; 3 weitergeben an updater funktion fuer release channel
  44.                         Updater(3)
  45.         EndSelect
  46.  
  47. Func Updater($channel)
  48.         ; gui schliessen
  49.         GUIDelete()
  50.  
  51.         ; update ordner anlegen
  52.         DirCreate( @ScriptDir&"\Update" )
  53.  
  54.         ; updates ordner anlegen für versionskontrolle
  55.         DirCreate( @ScriptDir&"\Chrome\updates" )
  56.  
  57.         ; aktuellen chrome ermitteln
  58.         $host='tools.google.com'
  59.         $port=80
  60.         $page='/service/update2'
  61.         _HTTPSetUserAgent("Google Update", "1.2.183.7;winhttp")
  62.         $socket=_HTTPConnect($host, $port)
  63.  
  64.         If $channel = 1 Then
  65.                 ;Dev-Channel
  66.                 $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.7" 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>'
  67.         ElseIf $channel = 2 Then
  68.                 ;Beta-Channel
  69.                 $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.7" 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>'
  70.         ElseIf $channel = 3 Then
  71.                 ;Final-Channel
  72.                 $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.7" 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>'
  73.         EndIf
  74.  
  75.         _HTTPPost( $host, $page, $socket, $data )
  76.         $body=_HTTPRead( $socket, 0 )
  77.         $position=StringInStr( $body,"codebase=" )
  78.         $urltmp=StringMid( $body,$position+10,Stringlen($body)-$position-10 )
  79.         $url=StringSplit( $urltmp,'"' )
  80.         $update_url = $url[1]
  81.  
  82.         ; url splitten und version aus der url auslesen
  83.         $v_temp = StringSplit( $update_url, "/" ,0 )
  84.         $version = $v_temp[7]
  85.         ; falls versionsdatei existiert, updateurl zurücksetzen
  86.         If FileExists( @ScriptDir&"\Chrome\updates\"&$version&".txt" ) Then $update_url = ""
  87.  
  88.         ; nichts gefunden, beenden
  89.         If Not $update_url Then
  90.                 If @OSLang = 0407 Then
  91.                         MsgBox( 0,"Chrome Updater","Keine neue Version gefunden!" )
  92.                 Else
  93.                         MsgBox( 0,"Chrome Updater","No new version available!" )
  94.                 EndIf
  95.                 DirRemove( @ScriptDir&"\Update", 1)
  96.                 Exit
  97.         EndIf
  98.  
  99.         ; progress fenster
  100.         $window = GUICreate( "Chrome Download", 306, 40 )
  101.         $progressbar = GUICtrlCreateProgress( 9, 15, 286, 17 )
  102.         GUISetState( @SW_SHOW )
  103.  
  104.         ; dateigröße
  105.         $fileSize = InetGetSize( $update_url )
  106.  
  107.         ; setup holen
  108.         InetGet ( $update_url, @ScriptDir&"\Update\chrome_aktuell.exe" ,0 ,1 )
  109.  
  110.         ; progressfenster "refreshen", balken fortlaufend
  111.                 $percent = Round( ((@InetGetBytesRead / $fileSize) * 100) ) & "%"
  112.                 GUICtrlSetData( $progressbar, $percent )
  113.         $msg = GUIGetMsg()
  114.                 ; falls progressfenster geschlossen wird, Download abbrechen, Update Ordner löschen und dann Exit
  115.         if $msg = $GUI_EVENT_CLOSE then
  116.             InetGet( "abort" )
  117.                         DirRemove( @ScriptDir&"\Update", 1)
  118.             Exit
  119.         EndIf
  120.         Sleep(10)
  121.     WEnd
  122.  
  123.         ; gui schliessen
  124.         GUIDelete()
  125.  
  126.         ; 7za.exe inkludieren
  127.         FileInstall( "7za.exe", @ScriptDir&"\" )
  128.  
  129.         ; setup entpacken
  130.         RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome_aktuell.exe"" -o"""&@ScriptDir&"\Update""" )
  131.  
  132.         ; chrome.7z entpacken
  133.         RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome.7z"" -o"""&@ScriptDir&"\Update\extracted""" )
  134.  
  135.         ; alles aus dem versionsnummern ordner in den Chrome Ordner
  136.         $first = FileFindFirstFile( @ScriptDir&"\Update\extracted\Chrome-bin\*.*" )
  137.         $versions_ordner = FileFindNextFile( $first )
  138.         FileClose( $first )
  139.         DirCopy( @ScriptDir&"\Update\extracted\Chrome-bin\"&$versions_ordner&"\", @ScriptDir&"\Chrome\", 1 )
  140.  
  141.         ; restlichen Dateien und Ordner
  142.         FileCopy( @ScriptDir &"\Update\extracted\chrome.exe", @ScriptDir&"\Chrome\" ,1 )
  143.         DirCopy( @ScriptDir &"\Update\extraced\Dictionaries", @ScriptDir&"\Chrome\" ,1 )
  144.  
  145.         ; alles aufräumen
  146.         FileDelete( @ScriptDir &"\7za.exe" )
  147.         DirRemove( @ScriptDir &"\Update\" , 1 )
  148.  
  149.         ; versions datei nach Chrome\updates schreiben
  150.         $av_temp = FileFindFirstFile( @ScriptDir&"\Chrome\updates\*.txt" )
  151.         $alte_version = FileFindNextFile( $av_temp )
  152.         FileClose( $av_temp )
  153.         FileDelete( @ScriptDir&"\Chrome\updates\"&$alte_version )
  154.         FileWrite( @ScriptDir&"\Chrome\updates\"&$version&".txt", "" )
  155.  
  156.         ; message Box ausgeben wenn mit Update fertig
  157.         If @OSLang = 0407 Then
  158.                 MsgBox( 0,"Chrome Updater","Chrome wurde aktualisiert" )
  159.         Else
  160.                 MsgBox( 0,"Chrome Updater","Chrome updated" )
  161.         EndIf
  162.         ; updater beenden
  163.         Exit