SHARE
TWEET

Chrome Updater

a guest Mar 30th, 2010 658 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #NoTrayIcon
  2. #Region
  3. #AutoIt3Wrapper_icon=system-software-update.ico
  4. #AutoIt3Wrapper_outfile=Updater.exe
  5. #AutoIt3Wrapper_UseUpx=n
  6. #AutoIt3Wrapper_UseX64=n
  7. #AutoIt3Wrapper_Res_Comment=Updater for portable Google Chrome
  8. #AutoIt3Wrapper_Res_Description=Updater for portable Google Chrome
  9. #AutoIt3Wrapper_Res_Fileversion=0.5.0.0
  10. #AutoIt3Wrapper_Res_LegalCopyright=http://stadt-bremerhaven.de
  11. #AutoIt3Wrapper_Res_Field=UsbDump by|http://stadt-bremerhaven.de
  12. #AutoIt3Wrapper_Res_Field=Developed by|Bene
  13. #AutoIt3Wrapper_Res_Field=Productname|Chrome Updater
  14. #AutoIt3Wrapper_Res_Field=Productversion|0.5.0
  15. #AutoIt3Wrapper_Res_Field=Made by|Bene
  16. #EndRegion
  17.  
  18.  
  19. Opt("MustDeclareVars", 0)
  20.  
  21. #include <GUIConstantsEx.au3>
  22. #include <StaticConstants.au3>
  23. #include <WindowsConstants.au3>
  24. #include <ProgressConstants.au3>
  25. #include <Inet.au3>
  26. #include <Array.au3>
  27. #include <WinHTTP.au3>
  28.  
  29.  
  30. ; updater nur einmal starten
  31. #include <misc.au3>
  32. If _Singleton("Updater.exe", 0) = 0 Then
  33.         ProcessClose("Updater.exe")
  34. EndIf
  35.  
  36. ; schauen ob chrome.exe prozess existiert
  37. If ProcessExists( "chrome.exe" ) Then
  38.         ; prozess existiert, abfrage ob beendet werden soll
  39.         If @OSLang = 0407 Then
  40.                 $ask = MsgBox(4,"Chrome Updater", "Laufender Chrome muss beendet werden bevor das Update gestartet werden kann. Chrome jetzt beenden?")
  41.         Else
  42.                 $ask = MsgBox(4,"Chrome Updater", "Existing chrome must be quit before update can start. Quit chrome now?")
  43.         EndIf
  44.         If $ask = 7 Then
  45.                 ; mit nein geantwortet, also updater beenden
  46.                 If @OSLang = 0407 Then
  47.                         MsgBox(0,"Chrome Updater", "Chrome Updater beenden.")
  48.                 Else
  49.                         MsgBox(0,"Chrome Updater", "Quit chrome updater.")
  50.                 EndIf
  51.                 Exit
  52.         Else
  53.                 ; mit ja geantwortet, also chrome.exe beenden und warten bis beendet wurde, danach erst weiter
  54.                 ProcessClose( "chrome.exe" )
  55.         EndIf
  56. EndIf
  57.  
  58. ; GUI für die Auswahl ob Beta oder Release Channel
  59. GUICreate( "Chrome Updater", 420, 95 )
  60. Opt( "GUICoordMode",2 )
  61. $dev = GUICtrlCreateButton ( "Dev Channel",  10, 30, 100 )
  62. $beta = GUICtrlCreateButton ( "Beta Channel",  0, -1 )
  63. $release = GUICtrlCreateButton ( "Release Channel",  0, -1 )
  64. $chromium = GUICtrlCreateButton ( "Chromium",  0, -1 )
  65. $vcheck = GUICtrlCreateCheckbox( "Versionskontrolle ignorieren", -400, 10, 220, 20 )
  66. GUISetState()
  67.  
  68. ; GUI laufen lassen bis geschlossen wird
  69. While 1
  70.         $msg = GUIGetMsg()
  71.         Select
  72.                 Case $msg = $GUI_EVENT_CLOSE
  73.                         ExitLoop
  74.                 Case $msg = $dev
  75.                         ; 1 weiergeben an updater funktion fuer beta channel
  76.                         Updater(1)
  77.                 Case $msg = $beta
  78.                         ; 2 weitergeben an updater funktion fuer release channel
  79.                         Updater(2)
  80.                 Case $msg = $release
  81.                         ; 3 weitergeben an updater funktion fuer release channel
  82.                         Updater(3)
  83.                 Case $msg = $chromium
  84.                         ; 4 weitergeben an updater funktion fuer chromium latest
  85.                         Updater(4)
  86.         EndSelect
  87. WEnd
  88.  
  89. Func Updater($channel)
  90.  
  91.         ; versionskontrolle checkbox auslesen
  92.         $vstate = GUICtrlRead($vcheck)
  93.  
  94.         ; gui schliessen
  95.         GUIDelete()
  96.  
  97.         ; update ordner anlegen
  98.         DirCreate( @ScriptDir&"\Update" )
  99.  
  100.         ; updates ordner anlegen für versionskontrolle
  101.         DirCreate( @ScriptDir&"\Chrome\updates" )
  102.  
  103.         If $channel = 1 Then
  104.                 ;Dev-Channel
  105.                 $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>'
  106.         ElseIf $channel = 2 Then
  107.                 ;Beta-Channel
  108.                 $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>'
  109.         ElseIf $channel = 3 Then
  110.                 ;Final-Channel
  111.                 $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>'
  112.         ElseIf $channel = 4 Then
  113.                 ;Chromium
  114.                 $data = "http://build.chromium.org/buildbot/continuous/LATEST/chrome-win32.zip"
  115.         EndIf
  116.  
  117.         If $channel < 4 Then
  118.                 ; aktuellen chrome ermitteln
  119.                 $hw_open = _WinHttpOpen()
  120.                 $hw_connect = _WinHttpConnect($hw_open, "tools.google.com")
  121.                 $h_openRequest = _WinHttpOpenRequest($hw_connect,"POST", "/service/update2","HTTP/1.1", "http://tools.google.com/")
  122.                 _WinHttpSendRequest($h_openRequest, "Content-Type: application/x-www-form-urlencoded"& @CRLF, $data)
  123.                 _WinHttpReceiveResponse($h_openRequest)
  124.  
  125.                 Local $body=""
  126.                 Do
  127.                         $body&=_WinHttpReadData($h_openRequest)
  128.                 Until @error
  129.                 $position = StringInStr( $body,"codebase=" )
  130.                 $urltmp = StringMid( $body,$position+10,Stringlen($body)-$position-10 )
  131.                 $url = StringSplit( $urltmp, '"')
  132.  
  133.                 ; keine url geliefert
  134.                 If Not $url[1] Then
  135.                         If @OSLang = 0407 Then
  136.                                 MsgBox( 0,"Chrome Updater","Es wurde keine URL zurückgegeben!" )
  137.                         Else
  138.                                 MsgBox( 0,"Chrome Updater","Request failure!" )
  139.                         EndIf
  140.                         DirRemove( @ScriptDir&"\Update", 1)
  141.                         Exit
  142.                 EndIf
  143.  
  144.                 _WinHttpCloseHandle($h_openRequest)
  145.                 _WinHttpCloseHandle($hw_connect)
  146.                 _WinHttpCloseHandle($hw_open)
  147.  
  148.                 $update_url = $url[1]
  149.  
  150.                 ; url splitten und version aus der url auslesen
  151.                 $v_temp = StringSplit( $update_url, "/" ,0 )
  152.                 $version = $v_temp[7]
  153.  
  154.                 ; versionskontrolle an/aus
  155.                 If $vstate > 1 Then
  156.                         ; falls versionsdatei existiert, updateurl zurücksetzen
  157.                         If FileExists( @ScriptDir&"\Chrome\updates\"&$version&".txt" ) Then $update_url = ""
  158.                 Else
  159.                         ; versionskontrolle nicht beachten, vorhandene versions.txt löschen
  160.                         FileDelete( @ScriptDir&"\Chrome\updates\"&$version&".txt" )
  161.                 EndIf
  162.  
  163.                 ; nichts gefunden, beenden
  164.                 If Not $update_url Then
  165.                         If @OSLang = 0407 Then
  166.                                 MsgBox( 0,"Chrome Updater","Keine neue Version gefunden!" )
  167.                         Else
  168.                                 MsgBox( 0,"Chrome Updater","No new version available!" )
  169.                         EndIf
  170.                         DirRemove( @ScriptDir&"\Update", 1)
  171.                         Exit
  172.                 EndIf
  173.         Else
  174.                 ; chromium, also update_url auf $data setzen
  175.                 $update_url = $data
  176.         EndIf
  177.  
  178.         ; wget.exe gefunden, datei mit wget downloaden
  179.         If FileExists( @ScriptDir & "\wget.exe" ) Then
  180.                 RunWait( @ScriptDir & "\wget.exe "&$update_url&"", @ScriptDir&"\Update" )
  181.                 ; erste Datei suchen im Ordner Update
  182.                 $chrome_temp = FileFindFirstFile( @ScriptDir&"\Update\*.exe" )
  183.                 $chrome_setup = FileFindNextFile( $chrome_temp )
  184.                 FileClose( $chrome_setup )
  185.                 FileMove( @ScriptDir&"\Update\"&$chrome_setup, @ScriptDir&"\Update\chrome_aktuell.exe" )
  186.         Else
  187.                 ; kein wget gefunden, also normal mit autoit downloaden
  188.  
  189.                 ; progress fenster
  190.                 If $channel < 4 Then
  191.                         ; chrome download
  192.                         $window = GUICreate( "Chrome Download", 306, 40 )
  193.                 Else
  194.                         ; chromium
  195.                         $window = GUICreate( "Chromium Download", 306, 40 )
  196.                 EndIf
  197.                 $progressbar = GUICtrlCreateProgress( 9, 15, 286, 17 )
  198.                 GUISetState( @SW_SHOW )
  199.  
  200.                 ; dateigröße
  201.                 $fileSize = InetGetSize( $update_url )
  202.  
  203.                 ; setup holen
  204.                 $hDownload = InetGet ( $update_url, @ScriptDir&"\Update\chrome_aktuell.exe" ,0 ,1 )
  205.  
  206.                 Do
  207.                         $percent = Round( ((InetGetInfo($hDownload,0) / $fileSize) * 100) ) & "%"
  208.                         GUICtrlSetData( $progressbar, $percent )
  209.                         $msg = GUIGetMsg()
  210.                         ; falls progressfenster geschlossen wird, Download abbrechen, Update Ordner löschen und dann Exit
  211.                         If $msg = $GUI_EVENT_CLOSE Then
  212.                                 InetClose($hDownload)
  213.                                 DirRemove( @ScriptDir&"\Update", 1)
  214.                                 Exit
  215.                         EndIf
  216.                         Sleep(10)
  217.                 Until InetGetInfo($hDownload, 2) ; schauen ob der download fertig ist
  218.                 InetClose($hDownload) ; download ist fertig, inetget schliessen
  219.  
  220.                 ; gui schliessen
  221.                 GUIDelete()
  222.         EndIf
  223.  
  224.         Sleep(50)
  225.  
  226.         ; Resources\Inspector Ordner löschen
  227.         DirRemove( @ScriptDir & "\Chrome\Resources\Inspector", 1 )
  228.  
  229.         ; 7za.exe inkludieren
  230.         FileInstall( "7za.exe", @ScriptDir&"\" )
  231.  
  232.         If $channel < 4 Then
  233.                 ; chrome setup entpacken
  234.                 RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome_aktuell.exe"" -o"""&@ScriptDir&"\Update""" )
  235.  
  236.                 ; chrome.7z entpacken
  237.                 RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome.7z"" -o"""&@ScriptDir&"\Update\extracted""" )
  238.         Else
  239.                 ; chromium setup entpacken
  240.                 RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome_aktuell.exe"" -o"""&@ScriptDir&"\Update""" )
  241.         EndIf
  242.  
  243.         If $channel < 4 Then
  244.                 ; alles aus dem versionsnummern ordner in den Chrome Ordner
  245.                 $first = FileFindFirstFile( @ScriptDir&"\Update\extracted\Chrome-bin\*.*" )
  246.                 $versions_ordner = FileFindNextFile( $first )
  247.                 FileClose( $first )
  248.                 DirCopy( @ScriptDir&"\Update\extracted\Chrome-bin\"&$versions_ordner&"\", @ScriptDir&"\Chrome\", 1 )
  249.  
  250.                 ; restlichen Dateien und Ordner
  251.                 FileCopy( @ScriptDir &"\Update\extracted\chrome.exe", @ScriptDir&"\Chrome\" ,1 )
  252.                 DirCopy( @ScriptDir &"\Update\extraced\Dictionaries", @ScriptDir&"\Chrome\" ,1 )
  253.  
  254.                 ; versions datei nach Chrome\updates schreiben
  255.                 $av_temp = FileFindFirstFile( @ScriptDir&"\Chrome\updates\*.txt" )
  256.                 $alte_version = FileFindNextFile( $av_temp )
  257.                 FileClose( $av_temp )
  258.                 FileDelete( @ScriptDir&"\Chrome\updates\"&$alte_version )
  259.                 FileWrite( @ScriptDir&"\Chrome\updates\"&$version&".txt", "" )
  260.         Else
  261.                 ; chromium benutzt chrome-win32, also alles aus diesem ordner kopieren
  262.                 DirCopy( @ScriptDir&"\Update\chrome-win32\", @ScriptDir&"\Chrome\", 1 )
  263.                 ; versions datei löschen
  264.                 $av_temp = FileFindFirstFile( @ScriptDir&"\Chrome\updates\*.txt" )
  265.                 $alte_version = FileFindNextFile( $av_temp )
  266.                 FileClose( $av_temp )
  267.                 FileDelete( @ScriptDir&"\Chrome\updates\"&$alte_version )
  268.         EndIf
  269.  
  270.         ; alles aufräumen
  271.         FileDelete( @ScriptDir &"\7za.exe" )
  272.         DirRemove( @ScriptDir &"\Update\" , 1 )
  273.  
  274.         ; message Box ausgeben wenn mit Update fertig
  275.         If @OSLang = 0407 Then
  276.                 If $channel < 4 Then
  277.                         MsgBox( 0,"Chrome Updater","Chrome aktualisiert" )
  278.                 Else
  279.                         MsgBox( 0,"Chrome Updater","Chromium aktualisiert" )
  280.                 EndIf
  281.         Else
  282.                 If $channel < 4 Then
  283.                         MsgBox( 0,"Chrome Updater","Chrome updated" )
  284.                 Else
  285.                         MsgBox( 0,"Chrome Updater","Chromium updated" )
  286.                 EndIf
  287.         EndIf
  288.         ; updater beenden
  289.         Exit
  290. EndFunc
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top