SHARE
TWEET

Portable Chrome Updater

a guest Aug 21st, 2010 389 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. $canary = GUICtrlCreateButton ( "Canary Channel",  10, 30, 100 )
  62. $dev = GUICtrlCreateButton ( "Dev Channel",  0, -1 )
  63. $beta = GUICtrlCreateButton ( "Beta Channel",  0, -1 )
  64. $release = GUICtrlCreateButton ( "Release Channel",  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 = $canary
  75.                         ; 1 weitergeben an updater funktion fuer canary channel
  76.                         Updater(1)
  77.                 Case $msg = $dev
  78.                         ; 2 weiergeben an updater funktion fuer beta channel
  79.                         Updater(2)
  80.                 Case $msg = $beta
  81.                         ; 3 weitergeben an updater funktion fuer release channel
  82.                         Updater(3)
  83.                 Case $msg = $release
  84.                         ; 4 weitergeben an updater funktion fuer release channel
  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.                 ;Canary-Channel
  105.                 $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="{4EA16AC7-FD5A-47C3-875B-DBF4A2008C20}" version="" lang="de" brand="" client="" iid="{11111111-1111-1111-1111-111111111111}"><o:updatecheck/></o:app></o:gupdate>'
  106.         ElseIf $channel = 2 Then
  107.                 ;Dev-Channel
  108.                 $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>'
  109.         ElseIf $channel = 3 Then
  110.                 ;Beta-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 tag="1.1-beta"/></o:app></o:gupdate>'
  112.         ElseIf $channel = 4 Then
  113.                 ;Final-Channel
  114.                 $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>'
  115.         EndIf
  116.  
  117.                 ; aktuellen chrome ermitteln
  118.                 $hw_open = _WinHttpOpen()
  119.                 $hw_connect = _WinHttpConnect($hw_open, "tools.google.com")
  120.                 $h_openRequest = _WinHttpOpenRequest($hw_connect,"POST", "/service/update2","HTTP/1.1", "http://tools.google.com/")
  121.                 _WinHttpSendRequest($h_openRequest, "Content-Type: application/x-www-form-urlencoded"& @CRLF, $data)
  122.                 _WinHttpReceiveResponse($h_openRequest)
  123.  
  124.                 Local $body=""
  125.                 Do
  126.                         $body&=_WinHttpReadData($h_openRequest)
  127.                 Until @error
  128.                 $position = StringInStr( $body,"codebase=" )
  129.                 $urltmp = StringMid( $body,$position+10,Stringlen($body)-$position-10 )
  130.                 $url = StringSplit( $urltmp, '"')
  131.  
  132.                 ; keine url geliefert
  133.                 If Not $url[1] Then
  134.                         If @OSLang = 0407 Then
  135.                                 MsgBox( 0,"Chrome Updater","Es wurde keine URL zurückgegeben!" )
  136.                         Else
  137.                                 MsgBox( 0,"Chrome Updater","Request failure!" )
  138.                         EndIf
  139.                         DirRemove( @ScriptDir&"\Update", 1)
  140.                         Exit
  141.                 EndIf
  142.  
  143.                 _WinHttpCloseHandle($h_openRequest)
  144.                 _WinHttpCloseHandle($hw_connect)
  145.                 _WinHttpCloseHandle($hw_open)
  146.  
  147.                 $update_url = $url[1]
  148.  
  149.                 ; url splitten und version aus der url auslesen
  150.                 $v_temp = StringSplit( $update_url, "/" ,0 )
  151.                 $version = $v_temp[7]
  152.  
  153.                 ; versionskontrolle an/aus
  154.                 If $vstate > 1 Then
  155.                         ; falls versionsdatei existiert, updateurl zurücksetzen
  156.                         If FileExists( @ScriptDir&"\Chrome\updates\"&$version&".txt" ) Then $update_url = ""
  157.                 Else
  158.                         ; versionskontrolle nicht beachten, vorhandene versions.txt löschen
  159.                         FileDelete( @ScriptDir&"\Chrome\updates\"&$version&".txt" )
  160.                 EndIf
  161.  
  162.                 ; nichts gefunden, beenden
  163.                 If Not $update_url Then
  164.                         If @OSLang = 0407 Then
  165.                                 MsgBox( 0,"Chrome Updater","Keine neue Version gefunden!" )
  166.                         Else
  167.                                 MsgBox( 0,"Chrome Updater","No new version available!" )
  168.                         EndIf
  169.                         DirRemove( @ScriptDir&"\Update", 1)
  170.                         Exit
  171.                 EndIf
  172.  
  173.                 ; progress fenster
  174.                         ; chrome download
  175.                         $window = GUICreate( "Chrome Download", 306, 40 )
  176.  
  177.                 $progressbar = GUICtrlCreateProgress( 9, 15, 286, 17 )
  178.                 GUISetState( @SW_SHOW )
  179.  
  180.                 ; dateigröße
  181.                 $fileSize = InetGetSize( $update_url )
  182.  
  183.                 ; setup holen
  184.                 $hDownload = InetGet ( $update_url, @ScriptDir&"\Update\chrome_aktuell.exe" ,0 ,1 )
  185.  
  186.                 Do
  187.                         $percent = Round( ((InetGetInfo($hDownload,0) / $fileSize) * 100) ) & "%"
  188.                         GUICtrlSetData( $progressbar, $percent )
  189.                         $msg = GUIGetMsg()
  190.                         ; falls progressfenster geschlossen wird, Download abbrechen, Update Ordner löschen und dann Exit
  191.                         If $msg = $GUI_EVENT_CLOSE Then
  192.                                 InetClose($hDownload)
  193.                                 DirRemove( @ScriptDir&"\Update", 1)
  194.                                 Exit
  195.                         EndIf
  196.                         Sleep(10)
  197.                 Until InetGetInfo($hDownload, 2) ; schauen ob der download fertig ist
  198.                 InetClose($hDownload) ; download ist fertig, inetget schliessen
  199.  
  200.                 ; gui schliessen
  201.                 GUIDelete()
  202.  
  203.         Sleep(50)
  204.  
  205.         ; Resources\Inspector Ordner löschen
  206.         DirRemove( @ScriptDir & "\Chrome\Resources\Inspector", 1 )
  207.  
  208.         ; 7za.exe inkludieren
  209.         FileInstall( "7za.exe", @ScriptDir&"\" )
  210.  
  211.                 ; chrome setup entpacken
  212.                 RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome_aktuell.exe"" -o"""&@ScriptDir&"\Update""" )
  213.  
  214.                 ; chrome.7z entpacken
  215.                 RunWait( "7za.exe x """&@ScriptDir&"\Update\chrome.7z"" -o"""&@ScriptDir&"\Update\extracted""" )
  216.  
  217.                 ; alles aus dem versionsnummern ordner in den Chrome Ordner
  218.                 $first = FileFindFirstFile( @ScriptDir&"\Update\extracted\Chrome-bin\*.*" )
  219.                 $versions_ordner = FileFindNextFile( $first )
  220.                 FileClose( $first )
  221.                 DirCopy( @ScriptDir&"\Update\extracted\Chrome-bin\"&$versions_ordner&"\", @ScriptDir&"\Chrome\", 1 )
  222.  
  223.                 ; restlichen Dateien und Ordner
  224.                 FileCopy( @ScriptDir &"\Update\extracted\Chrome-bin\chrome.exe", @ScriptDir&"\Chrome\" ,1 )
  225.                 FileCopy( @ScriptDir &"\Update\extracted\Chrome-bin\wow_helper.exe", @ScriptDir&"\Chrome\" ,1 )
  226.                 DirCopy( @ScriptDir &"\Update\extraced\Dictionaries", @ScriptDir&"\Chrome\" ,1 )
  227.  
  228.                 ; versions datei nach Chrome\updates schreiben
  229.                 $av_temp = FileFindFirstFile( @ScriptDir&"\Chrome\updates\*.txt" )
  230.                 $alte_version = FileFindNextFile( $av_temp )
  231.                 FileClose( $av_temp )
  232.                 FileDelete( @ScriptDir&"\Chrome\updates\"&$alte_version )
  233.                 FileWrite( @ScriptDir&"\Chrome\updates\"&$version&".txt", "" )
  234.  
  235.         ; alles aufräumen
  236.         FileDelete( @ScriptDir &"\7za.exe" )
  237.         DirRemove( @ScriptDir &"\Update\" , 1 )
  238.  
  239.         ; message Box ausgeben wenn mit Update fertig
  240.         If @OSLang = 0407 Then
  241.                         MsgBox( 0,"Chrome Updater","Chrome aktualisiert" )
  242.         Else
  243.                         MsgBox( 0,"Chrome Updater","Chrome updated" )
  244.         EndIf
  245.         ; updater beenden
  246.         Exit
  247. 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