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:

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\update.ico
#AutoIt3Wrapper_Outfile=tv10_host.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=TeamViewer 10 Host unattented installscript
#AutoIt3Wrapper_Res_Description=This script automates the TeamViewer 10 Host setup
#AutoIt3Wrapper_Res_Fileversion=1.4.0.0
#AutoIt3Wrapper_Res_LegalCopyright=© 2015 
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

$verTag = "10" ; Tested with installer version 10.0.38475.0
$strTrayTitle = "TeamViewer " & $verTag & " Host Auto-Install"

$wTitle = "TeamViewer " & $verTag & " Host Installation"
$wTitle2 = "Unbeaufsichtigter Zugriff"
$wTitle3 = "Unbeaufsichtigter Zugriff - Schritt 1 von 2"
$wTitle4 = "Unbeaufsichtigter Zugriff - Schritt 2 von 2"
$strUser = IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "AccountUsername", "")
$strPass = IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "AccountPassword", "")
$strPassword = IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "ConnectPassword", "")
$iDelay = Int(IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Advanced", "SleepDelay", "0"))
Opt("SendKeyDelay", Int(IniRead(@ScriptDir & "\tv" & $verTag & "_host.conf", "Setup", "SendKeyDelay", "250")) )

$iErr = 0;
If $strUser == "" Then
	MsgBox(0, "Fehler!", "Der Teamviewer-Account ('AccountUsername') konnte nicht in tv" & $verTag & "_host.conf gefunden werden!");
	$iErr = 1;
EndIf
If $strPass == "" Then
	MsgBox(0, "Fehler!", "Das Teamviewer-Account Passwort ('AccountPassword') konnte nicht in tv" & $verTag & "_host.conf  gefunden werden!");
	$iErr = 1;
EndIf
If $strPassword == "" Then
	MsgBox(0, "Fehler!", "Das Verbindungs-Passwort ('ConnectPassword') konnte nicht in tv" & $verTag & "_host.conf gefunden werden!");
	$iErr = 1;
EndIf
If $iErr == 1 Then
	Exit
EndIf

; Install
TrayTip($strTrayTitle, "Warte auf Setup...", 0, 1)
WinWait($wTitle)
Sleep($iDelay)
TrayTip($strTrayTitle, "Konfiguriere Installation...", 0, 1)
WinActivate($wTitle)
WinWaitActive($wTitle)
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:4]") ; Erweiterte Einstellungen check
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle, "Einsatzbereich")
Sleep($iDelay)
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:4]") ; Privat radio
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle, "Lizenzabkommen")
Sleep($iDelay)
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:4]") ; Akzeptiere... check
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:5]") ; Privat check
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle, "TeamViewer Komponenten verwenden")
Sleep($iDelay)
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle, "Zielverzeichnis")
Sleep($iDelay)
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWaitClose($wTitle)

; Install done - adding to list
TrayTip($strTrayTitle, "Installation abgeschlossen, füge Computer zur Support-Liste hinzu...", 0, 1)
WinWait($wTitle2, "Unbeaufsichtigten Zugriff einrichten")
WinActivate($wTitle2)
Sleep($iDelay)
WinWaitActive($wTitle2)
ControlClick($wTitle2, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle3, "Kennwort")
WinActivate($wTitle3)
Sleep($iDelay)
WinWaitActive($wTitle3)
ControlSend($wTitle3, "", "[CLASS:Edit; INSTANCE:2]", $strPassword, 1) ; Passwort 1
Sleep($iDelay)
ControlSend($wTitle3, "", "[CLASS:Edit; INSTANCE:3]", $strPassword, 1) ; Passwort confirm
Sleep($iDelay)
ControlClick($wTitle3, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle4, "Ich habe bereits ein TeamViewer Konto")
WinActivate($wTitle4)
Sleep($iDelay)
WinWaitActive($wTitle4)
ControlClick($wTitle4, "", "[CLASS:Button; INSTANCE:2]") ; Ich habe bereits ein TeamViewer Konto
ControlSend($wTitle4, "", "[CLASS:Edit; INSTANCE:2]", $strUser, 1) ; User
Sleep($iDelay)
ControlSend($wTitle4, "", "[CLASS:Edit; INSTANCE:3]", $strPass, 1) ; Pass
Sleep($iDelay)
ControlClick($wTitle4, "", "[CLASS:Button; INSTANCE:6]") ; Weiter
WinWait($wTitle2, "Abschluss des Assistenten")
WinActivate($wTitle2)
Sleep($iDelay)
WinWaitActive($wTitle2)
ControlClick($wTitle2, "", "[CLASS:Button; INSTANCE:7]") ; Fertigstellen
WinWaitClose($wTitle2)
TrayTip($strTrayTitle, "", 0, 1)

; Close info dialog
WinWait("TeamViewer", "www.teamviewer.com")
WinActivate("TeamViewer")
Sleep($iDelay)
WinWaitActive("TeamViewer")
ControlClick("TeamViewer", "", "[CLASS:Button; INSTANCE:1]") ; OK

; Import configuration (if exists)
Local $iFileExists = FileExists(@ScriptDir & "\tv" & $verTag & "_host.reg")
If $iFileExists Then
	TrayTip($strTrayTitle, "Alles erledigt, setze noch ein paar Einstellungen...", 0, 1)
	RunWait(@ComSpec & " /c net stop TeamViewer", @ScriptDir)
	RunWait(@ComSpec & " /c ""regedit.exe /s tv" & $verTag & "_host.reg""", @ScriptDir)
	RunWait(@ComSpec & " /c net start TeamViewer", @ScriptDir)
EndIf

; Close info dialog
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.")
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.")
Sleep($iDelay)
WinWaitActive("Information")
ControlClick("Information", "", "[CLASS:Button; INSTANCE:1]") ; OK

TrayTip($strTrayTitle, "Alles fertig - beende mich.", 15, 1)
Exit

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 (614 Downloads)

Gelesen: 14032 · Heute: 2 · Zuletzt: 28. June 2022

Das könnte dich auch interessieren …

22 Antworten

  1. Thunderhawk sagt:

    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.

    • Tobias sagt:

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

      • NIckolas sagt:

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

        • mcdope sagt:

          Ä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.

      • NIckolas sagt:

        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.

        • mcdope sagt:

          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.

          • NIckolas sagt:

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

          • mcdope sagt:

            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. NIckolas sagt:

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

    • mcdope sagt:

      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. Thiersee sagt:

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

    • Tobias sagt:

      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. Thiersee sagt:

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

  5. Thiersee sagt:

    Auch mit der aktuellen Version 10.0.45862 keine Probleme!

  6. Thiersee sagt:

    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

    • Thiersee sagt:

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

      • mcdope sagt:

        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. Markus sagt:

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

    • mcdope sagt:

      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

  1. 31. Oktober 2015

    […] most of you will know, I’m creating AutoIt scripts to automate the TeamViewer installers for quite some time now. In their last versions they allowed […]

Kommentar verfassen

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