TeamViewer 10 Host unattended Install - Tobi's Welt

TeamViewer 10 Host unattended Install

TeamViewer 10 Host ist jetzt bereits eine Weile verfügbar, es war also mehr als überfällig das ich meine unattended scripts aktualisieren. Zumal einige Nutzer in den Kommentaren zu der Standardversion Fehler gemeldet hatten mit der alten Version. Dieses Mal übrigens getestet unter Windows 7 (x86, UAC deaktiviert) anstatt Windows XP. So here we go…

Es ermöglicht es TeamViewer 10 Host unattended, also ohne Nutzerinteraktion, zu installieren, was eigentlich ja dem MSI-Paket vorbehalten ist – welches wiederum leider ausschließlich mit der (sehr kostspieligen) Corporate-Lizenz verfügbar ist.

Mögliche und nötige Anpassungen für die TeamViewer 10 Host unattended install

TeamViewer 9 unattended

TeamViewer 9 unattended

  • Das Verbindungs-Passwort, sowie die TeamViewer-Konto Daten, werden aus der INI-Datei „tv10_host.conf“ geladen. Dort gibt es auch eine Option um die Verzögerung zwischen simulierten Tastendrücken anzupassen (Beispiel-INI siehe Download)
  • Das Skript erwartet einen deutschen Installer, wenn die erwarteten Texte angepasst werden kann es aber auch für andere Sprachversionen genutzt werden.

Änderungen gegenüber der Vorversion

  • Anpassung an geänderten Installer-Ablauf
  • Der Import der Einstellungen erfolgt nur noch wenn ein entsprechender Export gefunden wird
  • In der Konfigurationsdatei gibt es eine neue Option: „SleepDelay“ unter „Advanced“ – ist dieser Wert größer als 0 legt das Script zusätzliche Pausen ein, an einigen Stellen die mir beim testen in einer langsamen VM als kritisch aufgefallen sind. Der Wert wird in Millisekunden angegeben, genau wie SendKeyDelay unter Setup. Default ist nicht zu warten (0), in der dem Download beiliegenden Config ist aber ein Wert von 750 hinterlegt – dieser hat alle Timingprobleme in meiner VM behoben. Wenn die Vorgänger-Versionen problemfrei funktionierten kann dieser Wert ruhig auf 0 gesetzt werden.
  • Accountname, Accountpasswort und Verbindungspasswort werden jetzt als „raw“ string gesendet. AutoIt wandelt standardmäßig einige Sonderzeichen in „modifier keys“ wie STRG, ALT usw. um – dies führte zu Problemen wenn einer dieser drei Strings eines der folgenden Zeichen enthielt: „!, +, ^, #“.
  • Fehlt in der Config das Verbindungspasswort, oder die Accountdaten, wird die Ausführung nun frühzeitig abgebrochen

Hier das Skript, wieder mit AutoIt realisiert:

  1. #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
  2. #AutoIt3Wrapper_Icon=..\update.ico
  3. #AutoIt3Wrapper_Outfile=tv10_host.exe
  4. #AutoIt3Wrapper_Compression=4
  5. #AutoIt3Wrapper_Res_Comment=TeamViewer 10 Host unattented installscript
  6. #AutoIt3Wrapper_Res_Description=This script automates the TeamViewer 10 Host setup
  7. #AutoIt3Wrapper_Res_Fileversion=1.4.0.0
  8. #AutoIt3Wrapper_Res_LegalCopyright=© 2015 <https://blog.mcdope.org/>
  9. #AutoIt3Wrapper_Res_Language=1031
  10. #AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
  11. #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
  12.  
  13. $verTag = "10" ; Tested with installer version 10.0.38475.0
  14. $strTrayTitle = "TeamViewer " & $verTag & " Host Auto-Install"
  15.  
  16. $wTitle = "TeamViewer " & $verTag & " Host Installation"
  17. $wTitle2 = "Unbeaufsichtigter Zugriff"
  18. $wTitle3 = "Unbeaufsichtigter Zugriff – Schritt 1 von 2"
  19. $wTitle4 = "Unbeaufsichtigter Zugriff – Schritt 2 von 2"
  20. $strUser = IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "AccountUsername", "")
  21. $strPass = IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "AccountPassword", "")
  22. $strPassword = IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "ConnectPassword", "")
  23. $iDelay = Int(IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Advanced", "SleepDelay", "0"))
  24. Opt("SendKeyDelay", Int(IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "SendKeyDelay", "250")) )
  25.  
  26. $iErr = 0;
  27. If $strUser == "" Then
  28.         MsgBox(0, "Fehler!", "Der Teamviewer-Account (‚AccountUsername‘) konnte nicht in tv" & $verTag & "_host.conf gefunden werden!");
  29.         $iErr = 1;
  30. If $strPass == "" Then
  31.         MsgBox(0, "Fehler!", "Das Teamviewer-Account Passwort (‚AccountPassword‘) konnte nicht in tv" & $verTag & "_host.conf  gefunden werden!");
  32.         $iErr = 1;
  33. If $strPassword == "" Then
  34.         MsgBox(0, "Fehler!", "Das Verbindungs-Passwort (‚ConnectPassword‘) konnte nicht in tv" & $verTag & "_host.conf gefunden werden!");
  35.         $iErr = 1;
  36. If $iErr == 1 Then
  37.         Exit
  38.  
  39. ; Install
  40. TrayTip($strTrayTitle, "Warte auf Setup…", 0, 1)
  41. WinWait($wTitle)
  42. Sleep($iDelay)
  43. TrayTip($strTrayTitle, "Konfiguriere Installation…", 0, 1)
  44. WinActivate($wTitle)
  45. WinWaitActive($wTitle)
  46. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:4]") ; Erweiterte Einstellungen check
  47. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
  48. WinWait($wTitle, "Einsatzbereich")
  49. Sleep($iDelay)
  50. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:4]") ; Privat radio
  51. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
  52. WinWait($wTitle, "Lizenzabkommen")
  53. Sleep($iDelay)
  54. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:4]") ; Akzeptiere… check
  55. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:5]") ; Privat check
  56. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
  57. WinWait($wTitle, "TeamViewer Komponenten verwenden")
  58. Sleep($iDelay)
  59. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
  60. WinWait($wTitle, "Zielverzeichnis")
  61. Sleep($iDelay)
  62. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
  63. WinWaitClose($wTitle)
  64.  
  65. ; Install done – adding to list
  66. TrayTip($strTrayTitle, "Installation abgeschlossen, füge Computer zur Support-Liste hinzu…", 0, 1)
  67. WinWait($wTitle2, "Unbeaufsichtigten Zugriff einrichten")
  68. WinActivate($wTitle2)
  69. Sleep($iDelay)
  70. WinWaitActive($wTitle2)
  71. ControlClick($wTitle2, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
  72. WinWait($wTitle3, "Kennwort")
  73. WinActivate($wTitle3)
  74. Sleep($iDelay)
  75. WinWaitActive($wTitle3)
  76. ControlSend($wTitle3, "", "[CLASS:Edit; INSTANCE:2]", $strPassword, 1) ; Passwort 1
  77. Sleep($iDelay)
  78. ControlSend($wTitle3, "", "[CLASS:Edit; INSTANCE:3]", $strPassword, 1) ; Passwort confirm
  79. Sleep($iDelay)
  80. ControlClick($wTitle3, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
  81. WinWait($wTitle4, "Ich habe bereits ein TeamViewer Konto")
  82. WinActivate($wTitle4)
  83. Sleep($iDelay)
  84. WinWaitActive($wTitle4)
  85. ControlClick($wTitle4, "", "[CLASS:Button; INSTANCE:2]") ; Ich habe bereits ein TeamViewer Konto
  86. ControlSend($wTitle4, "", "[CLASS:Edit; INSTANCE:2]", $strUser, 1) ; User
  87. Sleep($iDelay)
  88. ControlSend($wTitle4, "", "[CLASS:Edit; INSTANCE:3]", $strPass, 1) ; Pass
  89. Sleep($iDelay)
  90. ControlClick($wTitle4, "", "[CLASS:Button; INSTANCE:6]") ; Weiter
  91. WinWait($wTitle2, "Abschluss des Assistenten")
  92. WinActivate($wTitle2)
  93. Sleep($iDelay)
  94. WinWaitActive($wTitle2)
  95. ControlClick($wTitle2, "", "[CLASS:Button; INSTANCE:7]") ; Fertigstellen
  96. WinWaitClose($wTitle2)
  97. TrayTip($strTrayTitle, "", 0, 1)
  98.  
  99. ; Close info dialog
  100. WinWait("TeamViewer", "www.teamviewer.com")
  101. WinActivate("TeamViewer")
  102. Sleep($iDelay)
  103. WinWaitActive("TeamViewer")
  104. ControlClick("TeamViewer", "", "[CLASS:Button; INSTANCE:1]") ; OK
  105.  
  106. ; Import configuration (if exists)
  107. Local $iFileExists = FileExists(@ScriptDir & "\tv" & $verTag & "_host.reg")
  108. If $iFileExists Then
  109.         TrayTip($strTrayTitle, "Alles erledigt, setze noch ein paar Einstellungen…", 0, 1)
  110.         RunWait(@ComSpec & " /c net stop TeamViewer", @ScriptDir)
  111.         RunWait(@ComSpec & " /c ""regedit.exe /s tv" & $verTag & "_host.reg""", @ScriptDir)
  112.         RunWait(@ComSpec & " /c net start TeamViewer", @ScriptDir)
  113.  
  114. ; Close info dialog
  115. WinWait("Information", "TeamViewer Host ist nun auf diesem Computer installiert und startet automatisch mit Windows. Nutzen Sie Ihre ID und das von Ihnen bei der Installation eingegebene Kennwort, um aus der Ferne auf diesen Computer zuzugreifen.")
  116. WinActivate("Information", "TeamViewer Host ist nun auf diesem Computer installiert und startet automatisch mit Windows. Nutzen Sie Ihre ID und das von Ihnen bei der Installation eingegebene Kennwort, um aus der Ferne auf diesen Computer zuzugreifen.")
  117. Sleep($iDelay)
  118. WinWaitActive("Information")
  119. ControlClick("Information", "", "[CLASS:Button; INSTANCE:1]") ; OK
  120.  
  121. TrayTip($strTrayTitle, "Alles fertig – beende mich.", 15, 1)

Natürlich macht es nur kompiliert Sinn.

Download TeamViewer 10 Host unattended script

In diesem Archiv sind der Quelltext, die kompilierte Executable und eine Beispielkonfiguration. Vor Benutzung muss die Datei „tv10_host.conf“ mit den eigenen Daten gefüllt werden. Um die TeamViewer 10 Host unattended Installation zu starten muss dann einfach das TeamViewer 10 Host Setup, gefolgt vom Script gestartet werden. Da das Script aber sowieso auf die Setup-Fenster wartet spielt die Reihenfolge eigentlich keine Rolle, es kann genauso gut zuerst das Script und dann erst das Setup gestartet werden.

TeamViewer 10 Host unattented setupscript (434 Downloads)

8. Februar 2015 von Tobias
Kategorien: Programmierung
Schlagwörter: , , , , ,
22 Kommentare

Gelesen: 10213 · Heute: 3 · Zuletzt: 13. September 2019

Kommentare (22)

  1. Ja sauber. Funktioniert einwandfrei ! Einfach die Daten ohne irgendwelche Klammern in die .conf Datei und die Installation flutscht wie von selbst !

    VIELEN DANK für das geniale Script. Werd jetzt noch schnell das Skript für die full Installation testen, aber bin sehr guter Dinge.

    • Danke für’s Feedback – gut zu wissen.

      • Hallo! In welchen Ordner muss die Datei-Installateure und welchen Namen Sie ihm zuweisen. Danke.

        • Ähm… Wie bitte?

          Falls du meinst wo die Dateien hin müssen: ist egal, hauptsache alle Dateien des unattended scripts liegen im selben Ordner.

          Allerdings habe ich nie getestet ob Leerzeichen evtl. ein Problem sind, wenn es also nicht funktioniert einfach mal einen Ordner ohne Leerzeichen im Pfad verwenden.

      • Ich meine den Namen der Installationsdatei. Ich benannte die „TeamViewer_Setup de“, aber die Installation auf geführt. In der Taskleistensymbol hängt „Warte auf Setup“. Weitere Installation nicht fortgesetzt.

        • Ich zitiere mich mal selbst: „Um die TeamViewer 10 Host unattended Installation zu starten muss dann einfach das TeamViewer 10 Host Setup, gefolgt vom Script gestartet werden. Da das Script aber sowieso auf die Setup-Fenster wartet spielt die Reihenfolge eigentlich keine Rolle, es kann genauso gut zuerst das Script und dann erst das Setup gestartet werden. “

          Does english work better for you? The script doesn’t run the setup. You need to do that yourself (or by your launcher script, which is how I use it). Start the setup, then the script. Or otherway, doesn’t matter.

          • Thank you for your English. Now everything is clear. Cool script. Thank you!

          • No problem, I just used german because you have used it

            By the way, are you using it for german Teamviewer or some other language? Because if you have, or will, translate it I could do a multi-language release for all people

  2. I use it for Russian version. It would be good if you adjust your script for English version.

    • Since I myself don’t need it, no But if some reader provides a translated version i will be happy to integrate localization and merge it.

  3. Gibt es eine Möglichkeit, auch den Computername in der tv10_host.conf, zusätzlich zur Verbindungspasswort und Accountdaten, vorgeben zu können?
    Danke!

    • Jein. Derzeit nicht, lässt sich aber relativ banal ergänzen – man müsste halt nur den entsprechenden Installationsschritt abbilden.

      In älteren Versionen war es, wenn auch auskommentiert, sogar vorhanden. Fragt der Installer den Hostname denn überhaupt noch ab? Bin da gerade nicht sicher…

      Da ich das ganze zur automatischen Installation auf div. Systemen nutze war ein fix gesetzter Hostname für mich zu unflexibel.

      Alternativ lässt sich der Hostname aber auch genauso wie die meisten Optionen nach Installation per .reg-Import setzen.

  4. Getestet mit der aktuellen Version 10.0.45471: läuft problemlos.

  5. Auch mit der aktuellen Version 10.0.45862 keine Probleme!

  6. Diesmal ist meine Meldung so erfreulich, leider!

    Mit der heute freigegebene Version 10.0.47484 scheint der Script ein Zeitproblem zwischen Installation und Einrichtung der automatischen Anmeldung in der Kontaktliste.
    Ich habe mehrmals Windows 7, zusammen mit TV-AutoIt, auf verschiedenen virtuellen Maschinen (x86 & x64, Deutsch & Italienisch) und das obengenannte Problem ist immer aufgetreten:
    TeamViewerHost wurde installiert, aber nicht in die Kontaktliste eingetragen.

    Allerdings auf einem Testrechner (SSD) hat es funktioniert.

    Mit der letzten Version 10.0.45862 taucht das Problem NICHT auf.

    Tobi, wenn ich bis übermorgen keinen Kommentar hier lese, schicke ich dir ein Email

    • Im ersten Satz fehlen zwei Worte am Ende: …zu haben.
      Sorry.

      • Timingproblem würde ich jetzt mal ausschließen, damit bin ich in der Vergangenheit schon richtig auf die Nase gefallen – deswegen mache ich so etwas nicht mehr zeitbasiert

        Das Script wartet auf ein bestimmtes Fenster, die werden dann irgendeinen Text auf den das Script wartet geändert haben.

        Schaue ich mir morgen direkt mal an.

  7. Pingback: TeamViewer unattended Setup (new v2) - Tobi's Welt

  8. super Sache. Echt genial. Funktioniert ohne Probleme. Bin noch am Versuchen es so umzustellen dass es ohne ein Teamviewer Konto durchläuft

    • Freut mich das es dir hilft.

      Wenn ich mich nicht irre habe ich es so gebaut das genau das passiert wenn die Accountdaten fehlen. Bin aber nicht sicher gerade, schon länger nicht mehr dran gearbeitet.

      Ansonsten: ist relativ einfach zu ergänzen mit etwas AutoIt Übung. Der Code ist ja dabei / bei Github. Bei Fragen gerne her damit

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Follow

Get every new post delivered to your Inbox

Join other followers: