Teamviewer 8 Host Silent Install
Bei meinen PC-Kunden installiere ich gerne Teamviewer Host. Das erleichtert die Lösung kleinerer Probleme doch gewaltig. Problem: Die Teamviewer Installer unterstützen bekanntermaßen keine unattended bzw. silent install, man soll schließlich die Businessversion mit MSI-Paket kaufen.
Update 3. Mai 2014: Eine aktualisierte Variante für Teamviewer 9 Host steht hier bereit, eine aktualisierte Variante für TeamViewer 9 Voll/Normal hier.
Lösung: Automatisierung des Installers, in diesem Fall mit AutoIt (mal wieder). Es wird auf die spezifischen Fenster des Installationsassistenten gewartet, und entsprechend der gescripteten Vorgaben werden dann simulierte Eingaben an den Installer gesendet. Am Ende wird der gerade installierte Host noch dem eigenen Account / der eigenen „Kontaktliste“ hinzugefügt, und Einstellungen importiert. Die Reg-Datei mit Einstellungen kann man aus einer Installation heraus exportieren.
Bevor ich zum Code komme, hier ein paar Hinweise dazu:
- Zeile 9, Variable $strPassword → Das Passwort, das später zum verbinden genutzt wird.
- Zeile 14, Variable $strUser → Emailadresse oder Benutzername des Kontos, dem der Host hinzugefügt wird.
- Zeile 15, Variable $strPass → Passwort für das Konto, dem der Host hinzugefügt wird.
- Das Skript erwartet einen deutschen Installer, wenn die erwarteten Texte angepasst werden, kann es aber auch für andere Sprachversionen genutzt werden.
Hier das Skript:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=..\update.ico
#AutoIt3Wrapper_outfile=tv8host.exe
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
$verTag = "8"
$wTitle = "TeamViewer " & $verTag & " Host Installation"
$strPassword = "support"
$strMachineName = @ComputerName
$strTrayTitle = "TeamViewer " & $verTag & " Host Auto-Install"
$wTitle2 = "Unbeaufsichtigter Zugriff"
$strUser = "user"
$strPass = "pass"
Opt("SendKeyDelay", 250)
TrayTip($strTrayTitle, "Warte auf Setup...", 0, 1)
WinWait($wTitle)
TrayTip($strTrayTitle, "Konfiguriere Installation...", 0, 1)
WinActivate($wTitle)
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:4]") ; Erweiterte Einstellungen check
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle, "Einsatzbereich")
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:4]") ; Privat radio
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle, "Lizenzabkommen")
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, "Kennwort")
ControlSend($wTitle, "", "[CLASS:Edit; INSTANCE:1]", $strPassword) ; Passwort 1
ControlSend($wTitle, "", "[CLASS:Edit; INSTANCE:2]", $strPassword) ; Passwort confirm
;ControlSend($wTitle, "", "[CLASS:Edit; INSTANCE:3]", $strMachineName) ; Host name
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:4]") ; add to list check
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle, "VPN")
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle, "Zielverzeichnis auswählen")
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Weiter
WinWait($wTitle, "Startmenü-Ordner bestimmen")
ControlClick($wTitle, "", "[CLASS:Button; INSTANCE:2]") ; Fertigstellen
WinWaitClose($wTitle)
TrayTip($strTrayTitle, "Installation abgeschlossen, füge Computer zur Support-Liste hinzu...", 0, 1)
; Install done - adding to list
WinWait($wTitle2, "Ich habe bereits ein TeamViewer Konto")
WinActivate($wTitle2, "Ich habe bereits ein TeamViewer Konto")
ControlSend($wTitle2, "", "[CLASS:Edit; INSTANCE:2]", $strUser) ; User
ControlSend($wTitle2, "", "[CLASS:Edit; INSTANCE:3]", $strPass) ; Pass
ControlClick($wTitle2, "", "[CLASS:Button; INSTANCE:6]") ; Weiter
WinWait($wTitle2, "Dieser Computer wurde Ihrer Liste hinzugefügt")
ControlClick($wTitle2, "", "[CLASS:Button; INSTANCE:7]") ; Fertigstellen
WinWaitClose($wTitle2)
TrayTip($strTrayTitle, "", 0, 1)
; Close info dialog
WinWait("TeamViewer", "Bereit zum Verbinden")
WinActivate("TeamViewer")
WinClose("TeamViewer", "Bereit zum Verbinden")
TrayTip($strTrayTitle, "Alles erledigt, setze noch ein paar Einstellungen...", 0, 1)
; Import configuration
RunWait(@ComSpec & " /c net stop TeamViewer8", @ScriptDir)
RunWait(@ComSpec & " /c ""regedit.exe /s tv8host.reg""", @ScriptDir)
RunWait(@ComSpec & " /c net start TeamViewer8", @ScriptDir)
; Close info dialog
WinWait("Information", "TeamViewer Host ist nun auf diesem Computer installiert")
WinActivate("Information")
WinClose("Information", "TeamViewer Host ist nun auf diesem Computer installiert")
TrayTip($strTrayTitle, "Alles fertig - beende mich.", 15, 1)
Exit
Natürlich macht es nur kompiliert einen Sinn.
bitte weiter an timesnake arbeiten: http://timesnake.sourceforge.net/
wtf, im Internet geht echt nichts verloren. Ich wusste nicht mal das dass je bei Sourceforge gelandet ist. oO
Das waren meine allerersten Gehversuche in C – die mieserabel waren…
Ist aber definitiv tot dieses Projekt…
Wo wird die Setupdatei aufgerufen, und wie kann ich das Script auch ohne Admin Rechte ausführen, oder brauche ich dazu Admin Rechte für die Teamviewer Setup Datei aber keine Admin Rechte für das Script? Kann mir vlt jemand helfen?
Aufgerufen wird das Setup nirgends – Zeile 20 wartet bis das Fenster vom Setup existiert. Setup & Setupscript werden getrennt behandelt. Dieses Script steuert nur die Installationsdialoge.
Habe es geschrieben (und nutze es dafür auch noch immer) für meinen Basixx Installer (http://blog.mcdope.org/2012/07/01/basixx-installer-2-0/)
This is really stupid. Why don’t you just install it with the /S switch???? Check http://www.fasttrackscript.com/teamviewer
Your comment is stupid. I expect more friendliness from comment authors.
Obviously cuz the auto-add to the account
edit: plus, after reading instead of flying over your link, it’s free – unlike your product. I suppose your comment was intented as spam, got me…