Prevent TeamViewer from opening during package installation
Update for 2023 and beyond
The contents of the TeamViewer installation package have changed since this article was written. However, you should be able to prevent TeamViewer launching at installation with the following script run BEFORE installation:
#!/bin/sh
## preinstall script
# Set TeamViewer to only restart the service on installation
# This is achieved by creating the following files
# before installing the package.
touch /tmp/tvonlystartservice
Original article from 2019 follows
A customer pointed out to us that when a new version of TeamViewer was pushed to a client managed by Jamf Pro, the application would open during the installation of the package. That can be confusing to users, or badly timed.
Note: by TeamViewer I mean the full application that acts both as client and server. TeamViewer QuickSupport does not have this problem.
TeamViewer provide their installer as a package. We use AutoPkg to obtain the package automatically, namely the TeamViewer.pkg
recipe from autopkg/cgerke-recipes
, which has as a parent recipe TeamViewer.download
from autopkg/hjuutilainen-recipes
. The .pkg
recipe simply extracts the version and renames the package accordingly, but does not repackage. Our own internal .jss
recipe uploads the package to our Jamf Pro distribution points.
I could not find any documentation on how to prevent the application opening, so had a look at the package using Suspicious Package, which revealed that a script named functions
is sourced by the postinstall
script within the package. In functions
, a function restartService
determines whether the application is opened or not based on the existence of ${pathToAppPath}
.
${pathToAppPath}
is defined as a file path further up the functions
file:
So all we need to do is ensure the file /tmp/tvPath
exists before installing.
Chris Dietrich (@cdietrich
on MacAdmins Slack) helpfully spotted that if the /tmp/tvPath
file exists, the contents determine where TeamViewer will be installed, so we need to take care to add /Applications
as the contents of the file:
#!/bin/sh
## preinstall script
# Set TeamViewer to only restart the service on installation
# This is achieved by creating the following file
# before installing the package. the file should contain the
# path to which TeamViewer should be installed, as this is
# used elsewhere in the TeamViewer pkg postinstall script.
# (thanks to @cdietrich)
echo "/Applications" > /tmp/tvPath
We’ve added this as a preinstall
script to our internal .jss
recipe.