TeamViewer 10 unattended Install - Tobi's Welt

TeamViewer 10 unattended Install

TeamViewer 10 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 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 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 unattended install

TeamViewer 9 unattended

TeamViewer 9 unattended

  • Das Verbindungs-Passwort, sowie die TeamViewer-Konto Daten, werden aus der INI-Datei „tv10_full.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

  • 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_full.exe
  4. #AutoIt3Wrapper_Compression=4
  5. #AutoIt3Wrapper_Res_Comment=TeamViewer 10 unattented installscript
  6. #AutoIt3Wrapper_Res_Description=This script automates the TeamViewer 10 setup
  7. #AutoIt3Wrapper_Res_Fileversion=1.4.0.1
  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 & " Auto-Install"
  15.  
  16. $wTitle = "TeamViewer " & $verTag & " 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 & "_full.conf", "Setup", "AccountUsername", "")
  21. $strPass = IniRead(@ScriptDir & "\tv" & $verTag & "_full.conf", "Setup", "AccountPassword", "")
  22. $strPassword = IniRead(@ScriptDir & "\tv" & $verTag & "_full.conf", "Setup", "ConnectPassword", "")
  23. $iDelay = Int(IniRead(@ScriptDir & "\tv" & $verTag & "_full.conf", "Advanced", "SleepDelay", "0"))
  24. Opt("SendKeyDelay", Int(IniRead(@ScriptDir & "\tv" & $verTag & "_full.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 & "_full.conf gefunden werden!");
  29.         $iErr = 1;
  30. If $strPass == "" Then
  31.         MsgBox(0, "Fehler!", "Das Teamviewer-Account Passwort (‚AccountPassword‘) konnte nicht in tv" & $verTag & "_full.conf  gefunden werden!");
  32.         $iErr = 1;
  33. If $strPassword == "" Then
  34.         MsgBox(0, "Fehler!", "Das Verbindungs-Passwort (‚ConnectPassword‘) konnte nicht in tv" & $verTag & "_full.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, "Installieren, um später aus der Ferne auf diesen Computer zuzugreifen")
  42. TrayTip($strTrayTitle, "Konfiguriere Installation…", 0, 1)
  43. WinActivate($wTitle)
  44. Sleep($iDelay)
  45. WinWaitActive($wTitle)
  46. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:5]") ; Installieren, um später aus der Ferne auf diesen Computer zuzugreifen check
  47. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:8]") ; privat / nicht-kommerziell check
  48. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:10]") ; Erweiterte Einstellungen check
  49. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Stimme zu – weiter
  50. WinWait($wTitle, "Erweiterte Einstellungen")
  51. Sleep($iDelay)
  52. ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Fertig stellen
  53. WinWaitClose($wTitle)
  54.  
  55. ; Install done – adding to list
  56. TrayTip($strTrayTitle, "Installation abgeschlossen, füge Computer zur Support-Liste hinzu…", 0, 1)
  57. WinWait($wTitle2, "Unbeaufsichtigten Zugriff einrichten")
  58. WinActivate($wTitle2)
  59. Sleep($iDelay)
  60. WinWaitActive($wTitle2)
  61. ControlClick($wTitle2, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
  62. WinWait($wTitle3, "Kennwort")
  63. WinActivate($wTitle3)
  64. Sleep($iDelay)
  65. WinWaitActive($wTitle3)
  66. ControlSend($wTitle3, "", "[CLASS:Edit; INSTANCE:2]", $strPassword, 1) ; Passwort 1
  67. Sleep($iDelay)
  68. ControlSend($wTitle3, "", "[CLASS:Edit; INSTANCE:3]", $strPassword, 1) ; Passwort confirm
  69. Sleep($iDelay)
  70. ControlClick($wTitle3, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
  71. WinWait($wTitle4, "Ich habe bereits ein TeamViewer Konto")
  72. WinActivate($wTitle4)
  73. Sleep($iDelay)
  74. WinWaitActive($wTitle4)
  75. ControlClick($wTitle4, "", "[CLASS:Button; INSTANCE:2]") ; Ich habe bereits ein TeamViewer Konto
  76. ControlSend($wTitle4, "", "[CLASS:Edit; INSTANCE:2]", $strUser, 1) ; User
  77. Sleep($iDelay)
  78. ControlSend($wTitle4, "", "[CLASS:Edit; INSTANCE:3]", $strPass, 1) ; Pass
  79. Sleep($iDelay)
  80. ControlClick($wTitle4, "", "[CLASS:Button; INSTANCE:6]") ; Weiter
  81. WinWait($wTitle2, "Abschluss des Assistenten")
  82. WinActivate($wTitle2)
  83. Sleep($iDelay)
  84. WinWaitActive($wTitle2)
  85. ControlClick($wTitle2, "", "[CLASS:Button; INSTANCE:7]") ; Fertigstellen
  86. Sleep($iDelay)
  87. WinWaitClose($wTitle2)
  88. TrayTip($strTrayTitle, "", 0, 1)
  89.  
  90. ; Close initial launch
  91. WinWait("TeamViewer", "Bitte geben Sie die ID Ihres Partners ein, um dessen Computer fernzusteuern.")
  92. WinActivate("TeamViewer", "Bitte geben Sie die ID Ihres Partners ein, um dessen Computer fernzusteuern.")
  93. Sleep($iDelay)
  94. WinClose("TeamViewer", "Bitte geben Sie die ID Ihres Partners ein, um dessen Computer fernzusteuern.")
  95.  
  96. ; Import configuration (if exists)
  97. Local $iFileExists = FileExists(@ScriptDir & "\tv" & $verTag & "_full.reg")
  98. If $iFileExists Then
  99.         TrayTip($strTrayTitle, "Alles erledigt, setze noch ein paar Einstellungen…", 0, 1)
  100.         RunWait(@ComSpec & " /c net stop TeamViewer", @ScriptDir)
  101.         RunWait(@ComSpec & " /c ""regedit.exe /s tv" & $verTag & "_full.reg""", @ScriptDir)
  102.         RunWait(@ComSpec & " /c net start TeamViewer", @ScriptDir)
  103.  
  104. TrayTip($strTrayTitle, "Alles fertig – beende mich.", 15, 1)

Natürlich macht es nur kompiliert Sinn.

Download TeamViewer 10 unattended script

In diesem Archiv sind der Quelltext, die kompilierte Executable und eine Beispielkonfiguration. Vor Benutzung muss die Datei „tv10_full.conf“ mit den eigenen Daten gefüllt werden. Um die TeamViewer 10 unattended Installation zu starten muss dann einfach das TeamViewer 10 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 unattented setupscript (194 Downloads)

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

Gelesen: 2183 · Heute: 5 · Zuletzt: 13. November 2019

Kommentare (4)

  1. Auch das Skript funktioniert super. Viel zu geil. Nochmal THX !

    Wobei eine Frage hätte ich noch: Wäre es noch irgendwie möglich die Benutzerdaten in der .conf Datei zu verschlüsseln? Ich weiss, das ist evtl etwas unnötig, aber ich hab ungern Benutzername und Passwort im Klartext wo stehen :).

    • Möglich ja – aber nicht sinnvoll.

      Sie müssen vom Script ja im Klartext eingegeben werden, in so fern käme nur eine reversible Verschlüsselung und kein Hashing (zB md5, sha1 etc) in Frage. Da der Key zusammen mit dem Script verteilt werden müsste wäre das sinnlos.

      Ok, man könnte natürlich davon ausgehen das auf den Clients ein geeigneter Key hinterlegt ist den man zur Ver-/Entschlüsselung nutzen könnte. Aber das dürfte selbst in Enterprise-Umgebungen nicht immer gegeben sein…

      Also: Nein, meiner Meinung nach nicht sinnvoll realisierbar. Falls du das anders siehst, feel free – der Code ist ja da…

      edit: Und danke für’s testen

  2. Pingback: Lebenszeichen ;) - Tobi's Welt

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

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: