Script to Install & Update Zoom

omatsei
New Contributor III

We use Zoom a lot, so I modified a script that we were using for Firefox (Thanks Joe Farage!) to install or update to the newest version of Zoom. This one enables HD video, sets SSO logins to be default, and configures the URL for SSO. Below is the script:

#!/bin/sh
#####################################################################################################
#
# ABOUT THIS PROGRAM
#
# NAME
#       ZoomInstall.sh -- Installs or updates Zoom
#
# SYNOPSIS
#       sudo ZoomInstall.sh
#
####################################################################################################
#
# HISTORY
#
#       Version: 1.0
#
#       - Shannon Johnson, 28.9.2018
#       (Adapted from the FirefoxInstall.sh script by Joe Farage, 18.03.2015)
#
####################################################################################################
# Script to download and install Zoom.
# Only works on Intel systems.
#

# Set preferences - set to anything besides "true" to disable
hdvideo="true"
ssodefault="true"
ssohost="psu.zoom.us"


# choose language (en-US, fr, de)
lang=""
# CHECK TO SEE IF A VALUE WAS PASSED IN PARAMETER 1 AND, IF SO, ASSIGN TO "lang"
if [ "$4" != "" ] && [ "$lang" == "" ]; then
        lang=$4
else 
        lang="en-US"
fi

pkgfile="ZoomInstallerIT.pkg"
plistfile="us.zoom.config.plist"
logfile="/Library/Logs/ZoomInstallScript.log"

# Are we running on Intel?
if [ '`/usr/bin/uname -p`'="i386" -o '`/usr/bin/uname -p`'="x86_64" ]; then
        ## Get OS version and adjust for use with the URL string
        OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )

        ## Set the User Agent string for use with curl
        userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"

        # Get the latest version of Reader available from Zoom page.
        latestver=`/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`
        echo "Latest Version is: $latestver"

        # Get the version number of the currently-installed Zoom, if any.
        if [ -e "/Applications/zoom.us.app" ]; then
                currentinstalledver=`/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleShortVersionString`
                echo "Current installed version is: $currentinstalledver"
                if [ ${latestver} = ${currentinstalledver} ]; then
                        echo "Zoom is current. Exiting"
                        exit 0
                fi
        else
                currentinstalledver="none"
                echo "Zoom is not installed"
        fi

        url="https://zoom.us/client/${latestver}/ZoomInstallerIT.pkg"

        echo "Latest version of the URL is: $url"
        echo "`date`: Download URL: $url" >> ${logfile}

        # Compare the two versions, if they are different or Zoom is not present then download and install the new version.
        if [ "${currentinstalledver}" != "${latestver}" ]; then

                # Construct the plist file for preferences
                echo "<?xml version="1.0" encoding="UTF-8"?>
                 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
                 <plist version="1.0">
                 <dict>
                        <key>nogoogle</key>
                        <string>1</string>
                        <key>nofacebook</key>
                        <string>1</string>
                        <key>ZDisableVideo</key>
                        <true/>
                        <key>ZAutoJoinVoip</key>
                        <true/>
                        <key>ZDualMonitorOn</key>
                        <true/>" >> /tmp/${plistfile}

                if [ "${ssohost}" != "" ]; then
                        echo "
                        <key>ZAutoSSOLogin</key>
                        <true/>
                        <key>ZSSOHost</key>
                        <string>$ssohost</string>" >> /tmp/${plistfile}
                fi

                echo "<key>ZAutoFullScreenWhenViewShare</key>
                        <true/>
                        <key>ZAutoFitWhenViewShare</key>
                        <true/>" >> /tmp/${plistfile}

                if [ "${hdvideo}" == "true" ]; then
                        echo "<key>ZUse720PByDefault</key>
                        <true/>" >> /tmp/${plistfile}
                else
                        echo "<key>ZUse720PByDefault</key>
                        <false/>" >> /tmp/${plistfile}
                fi

                echo "<key>ZRemoteControlAllApp</key>
                        <true/>
                </dict>
                </plist>" >> /tmp/${plistfile}

                # Download and install new version
                /bin/echo "`date`: Current Zoom version: ${currentinstalledver}" >> ${logfile}
                /bin/echo "`date`: Available Zoom version: ${latestver}" >> ${logfile}
                /bin/echo "`date`: Downloading newer version." >> ${logfile}
                /usr/bin/curl -L -o /tmp/${pkgfile} ${url}
                /bin/echo "`date`: Installing PKG..." >> ${logfile}
                /usr/sbin/installer -allowUntrusted -pkg /tmp/${pkgfile} -target /

                /bin/sleep 10
                /bin/echo "`date`: Deleting downloaded PKG." >> ${logfile}
                /bin/rm /tmp/${pkgfile}

                #double check to see if the new version got updated
                newlyinstalledver=`/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleShortVersionString`
        if [ "${latestver}" = "${newlyinstalledver}" ]; then
                /bin/echo "`date`: SUCCESS: Zoom has been updated to version ${newlyinstalledver}" >> ${logfile}
                # /Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType hud -title "Zoom Installed" -description "Zoom has been updated." &
        else
                /bin/echo "`date`: ERROR: Zoom update unsuccessful, version remains at ${currentinstalledver}." >> ${logfile}
                /bin/echo "--" >> ${logfile}
                        exit 1
                fi

        # If Zoom is up to date already, just log it and exit.
        else
                /bin/echo "`date`: Zoom is already up to date, running ${currentinstalledver}." >> ${logfile}
        /bin/echo "--" >> ${logfile}
        fi      
else
        /bin/echo "`date`: ERROR: This script is for Intel Macs only." >> ${logfile}
fi

exit 0
142 REPLIES 142

beeboo
Contributor

@GregE use this instead

currentinstalledver='/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleVersion'

this will give you the correct value
Current version as of 3/10/20 is 4.6.18176.0301 (what the script calls for along with the download link) - technically 4.6.7.18176.0301 is whats installed, so its missing the .7.

@omatsei im curious about one thing, maybe its just difficult for me to understand.
you have all the settings go to a temp PLIST location but i dont see what its called for or written elsewhere.

</plist>" >> /tmp/${plistfile}

how does that write to or even overwrite the current/nonexistent us.zoom.config.plist located in /Library/Preferences/us.zoom.config.plist?

currently im doing the slowpoke version of deploying via composer > JSS to ensure things go as expected.

i am updating and testing your script, but would it not be more prudent to write directly to the file location, the information?

eg

#!/bin/sh

zoomPLIST='/Library/Preferences/us.zoom.config.plist'


        <key>ZAutoSSOLogin</key>
    <string>https://example.zoom.us</string>
    </dict>
    </plist>" >${zoomPLIST}

technically, i would do a

#!/bin/sh
zoomPLIST='/Library/Preferences/us.zoom.config.plist'
/bin/cat <<'EOF' >$zoomPLIST
<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
                <key>ZRemoteControlAllApp</key>
        <true/>
        <key>ConfirmWhenLeave</key>
        <true/>
EOF

unless i am missing something with the where the PLIST data goes, cuz thats the intriguing part.

you can add some error checking in there, for example, if your last addition to the PLIST was

            <key>ZAutoFitWhenViewShare</key>
            <true/>

then you can grep that in an if/then statement to the write.

Can you clarify the plist part?

thanks!

EDIT:

we can ignore that, but still wondering if cat makes sense also

from ZOOM doc:
Once the .plist file is complete, it will need to be named us.zoom.config.plist. When deploying, as long as this file is in the same folder as the ZoomInstallerIT.pkg, the installation will automatically put the .plist file into the /Library/Preferences folder.

stephen_watson
New Contributor

Thanks @GregE, I made the changes you suggested. The script still works when executed manually from a file, but fails when Jamf executes the script as a policy. I get "Policy error code: 2100" when I verbose the policy using "jamf policy -event"

beeboo
Contributor

@stephen.watson i think you missed my post. it gives you the answer you need :)

stephen_watson
New Contributor

Apologies @beeboo, I thanked the wrong user in my last post. It's still not working after applying your change :(

beeboo
Contributor

@stephen.watson can you post the part where you think its broken, or even the whole part?

for reference, here are some changes i made

#!/bin/sh
installedVERS=$(/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleVersion)

is yours in quotes or a variable like that?
this should replace my previous line of current version

let me know if that works for you

CaptainCarl
New Contributor

I have tried the script update 9/27/2019 by omatsei, and the updates posted 10/22/2019 by kbingham, the script looks good, but I am getting syntax errors: Script result: /Library/Application Support/JAMF/tmp/Zoom Update: line 153: unexpected EOF while looking for matching ``'
/Library/Application Support/JAMF/tmp/Zoom Update: line 157: syntax error: unexpected end of file

Any thoughts on this? I combed through the script and am not finding much to shed light on this. Any help is greatly appreciated.

GregE
Contributor

Post a screenshot @CaptainCarl but I'll place my bet that you have/don't have a space in the correct spot.

mschroder
Valued Contributor

Sounds to me as if a closing quote sign is missing somewhere. Multi-line echo commands are not really to my liking.

GregE
Contributor

Finally found my failure point. 10 seconds wasn't enough time for some Macs to install Zoom before it deleted the install package. Changing it to 20s resolved the random failures.

/usr/sbin/installer -allowUntrusted -pkg /tmp/${pkgfile} -target /

/bin/sleep 20
/bin/echo "`date`: Deleting downloaded PKG." >> ${logfile}
/bin/rm /tmp/${pkgfile}

evacchio
New Contributor II

Can anyone post a perfected version of this script and your guidelines for deploying it? We would use it, but I could not retroactively install any/all of the modifications mentioned in this thread myself ;-(

GregE
Contributor

Added a few echo outs when troubleshooting the failures I was getting.
Policy 1:
Recurring check-in, Script (below), Smart Group (Application Title does not have zoom.us.app)
Policy 2: Login, run once per week, Script (same one), Smart Group (Application Title has zoom.us.app).
* You'll need to modify: sso host

#!/bin/sh
#####################################################################################################
#
# ABOUT THIS PROGRAM
#
# NAME
#       ZoomInstall.sh -- Installs or updates Zoom
#
# SYNOPSIS
#       sudo ZoomInstall.sh
#
####################################################################################################
#
# HISTORY
#
#       Version: 1.1
#
#       1.1 - Shannon Johnson, 27.9.2019
#       Updated for new zoom numbering scheme
#       Fixed the repeated plist modifications
#   
#       1.0 - Shannon Johnson, 28.9.2018
#       (Adapted from the FirefoxInstall.sh script by Joe Farage, 18.03.2015)
#
####################################################################################################
# Script to download and install Zoom.
# Only works on Intel systems.
#

# Set preferences
hdvideo="true"
ssodefault="true"
ssohost="xxx.zoom.us"


# choose language (en-US, fr, de)
lang=""
# CHECK TO SEE IF A VALUE WAS PASSED IN PARAMETER 1 AND, IF SO, ASSIGN TO "lang"
if [ "$4" != "" ] && [ "$lang" == "" ]; then
        lang=$4
else 
        lang="en-US"
fi

pkgfile="ZoomInstallerIT.pkg"
plistfile="us.zoom.config.plist"
logfile="/Library/Logs/ZoomInstallScript.log"

# Are we running on Intel?
if [ '`/usr/bin/uname -p`'="i386" -o '`/usr/bin/uname -p`'="x86_64" ]; then
        ## Get OS version and adjust for use with the URL string
        OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )

        ## Set the User Agent string for use with curl
        userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"

        # Get the latest version of Reader available from Zoom page.
        latestver=$(/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}')
        echo "Latest Version is: $latestver"

        # Get the version number of the currently-installed Zoom, if any.
        if [ -e "/Applications/zoom.us.app" ]; then
        currentinstalledver=$(/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleVersion)
                echo "Current installed version is: $currentinstalledver"
                if [ ${latestver} = ${currentinstalledver} ]; then
                        echo "Zoom is current. Exiting"
                        exit 0
                fi
        else
                currentinstalledver="none"
                echo "Zoom is not installed"
        fi

        url="https://zoom.us/client/${latestver}/ZoomInstallerIT.pkg"

        echo "Latest version of the URL is: $url"
        echo "`date`: Download URL: $url" >> ${logfile}

        # Compare the two versions, if they are different or Zoom is not present then download and install the new version.
        if [ "${currentinstalledver}" != "${latestver}" ]; then

                # Construct the plist file for preferences
                echo "<?xml version="1.0" encoding="UTF-8"?>
                 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
                 <plist version="1.0">
                 <dict>
                        <key>nogoogle</key>
                        <string>1</string>
                        <key>nofacebook</key>
                        <string>1</string>
                        <key>ZDisableVideo</key>
                        <true/>
                        <key>ZAutoJoinVoip</key>
                        <true/>
                        <key>ZDualMonitorOn</key>
                        <true/>" > /tmp/${plistfile}

                if [ "${ssohost}" != "" ]; then
                        echo "
                        <key>ZAutoSSOLogin</key>
                        <true/>
                        <key>ZSSOHost</key>
                        <string>$ssohost</string>" >> /tmp/${plistfile}
                fi

                echo "<key>ZAutoFullScreenWhenViewShare</key>
                        <true/>
                        <key>ZAutoFitWhenViewShare</key>
                        <true/>" >> /tmp/${plistfile}

                if [ "${hdvideo}" == "true" ]; then
                        echo "<key>ZUse720PByDefault</key>
                        <true/>" >> /tmp/${plistfile}
                else
                        echo "<key>ZUse720PByDefault</key>
                        <false/>" >> /tmp/${plistfile}
                fi

                echo "<key>ZRemoteControlAllApp</key>
                        <true/>
                </dict>
                </plist>" >> /tmp/${plistfile}

                # Download and install new version
                /bin/echo "`date`: Current Zoom version: ${currentinstalledver}" >> ${logfile}
                /bin/echo "`date`: Available Zoom version: ${latestver}" >> ${logfile}
                /bin/echo "`date`: Downloading newer version." >> ${logfile}
                /usr/bin/curl -sLo /tmp/${pkgfile} ${url}
                /bin/echo "`date`: Installing PKG..." >> ${logfile}
                /usr/sbin/installer -allowUntrusted -pkg /tmp/${pkgfile} -target /

                /bin/sleep 20
                /bin/echo "`date`: Deleting downloaded PKG." >> ${logfile}
                /bin/rm /tmp/${pkgfile}

                #double check to see if the new version got updated
                newlyinstalledver=$(/usr/bin/defaults read /Applications/zoom.us.app/Contents/Info CFBundleVersion)
        echo "Version on Mac is ${newlyinstalledver}"
        if [ "${latestver}" = "${newlyinstalledver}" ]; then
                /bin/echo "`date`: SUCCESS: Zoom has been updated to version ${newlyinstalledver}" >> ${logfile}
                echo "Zoom updated successfully"
                # /Library/Application Support/JAMF/bin/jamfHelper.app/Contents/MacOS/jamfHelper -windowType hud -title "Zoom Installed" -description "Zoom has been updated." &
        else
                /bin/echo "`date`: ERROR: Zoom update unsuccessful, version remains at ${currentinstalledver}." >> ${logfile}
                /bin/echo "--" >> ${logfile}
                echo "Zoom not updated - Installation error"
                        exit 1
                fi

        # If Zoom is up to date already, just log it and exit.
        else
                /bin/echo "`date`: Zoom is already up to date, running ${currentinstalledver}." >> ${logfile}
        /bin/echo "--" >> ${logfile}
        fi      
else
        /bin/echo "`date`: ERROR: This script is for Intel Macs only." >> ${logfile}
fi

exit 0

stephen_watson
New Contributor

I have copied the latest script (above) but I still get Policy Error Code 2100 when running "jamf policy -event zoom -verbose"

ok, script now running fine. I found this support thread regarding a '/' in the policy title.
https://www.jamf.com/jamf-nation/discussions/20342/script-runs-fine-on-machine-fails-as-a-policy

Thank again for your help :)

supson
New Contributor III

What can I do if we do not use a domain and are using the free upgrade due to COVID-19? This script forces a domain?

beeboo
Contributor

you can remove the line item for domain

<key>ZAutoSSOLogin</key> <true/> <key>ZSSOHost</key> <string>$ssohost</string>"

can be removed to be suited to your needs

atomczynski
Valued Contributor

The script from 4-5-2020 runs and completes for me.

I do have one problem. the .plist file is not being updated and I'm unable to locate it.
Ideas?

andrew_nicholas
Valued Contributor

@atomczynski its located at /Library/Preferences/us.zoom.config.plist.

dmarcnw
New Contributor III

Here's what we do for ours. It's a multi pronged approach that several pieces need to be in place before updated.

  1. We have an extension attribute that runs on the endpoint and compares what the current shipping version of Zoom vs what the user has installed. If it's out of date it gets the attribute 'Old'. If it's the current version, it is 'Latest'.

  2. We have a smart group that is scoped to that extension attribute and only add 'Old' devices.

  3. Once a day a policy runs against machines that are in the 'Old' smart group. The script within the policy pulls the latest IT installer version from Zoom and installs it to their computer.

This is the installer script for the policy.

#!/bin/bash
# This script runs within a policy is scoped to devices listed as 'Old' in the Extension Attribute.
OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )

userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"

# Get the latest version of Reader available from Zoom page.
latestver=`/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`

echo "Installing version ${latestver}";

url="https://zoom.us/client/${latestver}/ZoomInstallerIT.pkg"

# Construct the plist file for preferences
echo "<?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
      <key>nogoogle</key>
      <true/>
      <key>nofacebook</key>
      <true/>
      <key>disableloginwithemail</key>
      <true/>
      <key>LastLoginType</key>
      <true/>
      <key>ZAutoUpdate</key>
      <true/>
      <key>ZAutoJoinVoip</key>
      <true/>
      <key>ZAutoSSOLogin</key>
      <true/>
      <key>ZSSOHost</key>
      <string>pretendco.zoom.us</string>
      <key>ZRemoteControlAllApp</key>
      <true/>
      </dict>
      </plist>" >> /var/tmp/us.zoom.config.plist;

/usr/bin/curl -L -o /var/tmp/ZoomInstallerIT.pkg ${url};

/usr/sbin/installer -pkg /var/tmp/ZoomInstallerIT.pkg -target /;

This is the extension attribute to label the device as 'Old' or 'Latest'

#!/bin/bash
# This script is used as an extension attribute and compares
# the IT installer version on the Zoom site vs what the user is running
if [ ! -d "/Applications/zoom.us.app" ]; then
  echo "<result>Not Installed</result>"
  exit 0

else

# Determine current OS version to pass to user string
  OSvers_URL=$( sw_vers -productVersion | sed 's/[.]/_/g' )
# Create useragent to pass into curl command
  userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X ${OSvers_URL}) AppleWebKit/535.6.2 (KHTML, like Gecko) Version/5.2 Safari/535.6.2"
# Pull current available version of Zoom from their site
  latestver=`/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`
# Get current version installed on computer
  installedVersion=$( defaults read /Applications/zoom.us.app/Contents/Info.plist CFBundleVersion )
# Compare zoom version vs installed version, print result

if [ "$latestver" == "$installedVersion" ]; then
  echo "<result>Latest</result>"
  exit 0
else
  echo "<result>Old</result>"
  exit 0
fi
fi

JMenacker
New Contributor III

This is great, thanks for sharing, @dmarcnw ! Has anyone created something similar or recommend a way to modify this EA to show the current installed version? This would be more for reporting than scoping.

MacPapi
New Contributor II

Hey @JMenacker

I modified the EA by @dmarcnw so it will display the version of Zoom installed for you:

#!/bin/bash
# This script is used as an extension attribute and displays
# the current version of Zoom installed on a Mac
if [ ! -d "/Applications/zoom.us.app" ]; then
  echo "<result>Not Installed</result>"
  exit 0

else

# Get current version installed on Mac
  installedVersion=$( defaults read /Applications/zoom.us.app/Contents/Info.plist CFBundleVersion )

# Display current version installed on Mac
  echo "Current Zoom version is: $installedVersion"
  exit 0
fi

ajhstn
New Contributor II

Hi, thank you and this is brilliant...

However, i wish to simply push the us.zoom.config.plist to the /Library/Preferences/ directory, for existing Zoom installations. Doing this does NOT change the Zoom client config. Should this be possible, or does it REQUIRE a full reinstall with the plist file alongside with the pkg?

talkingmoose
Moderator
Moderator

@ajhstn, you may find this useful. It’s a manifest to help you set Zoom settings using a configuration profile.

https://www.jamf.com/jamf-nation/discussions/35399/zoom-update-is-requiring-admin-credentials-in-sel...

ajhstn
New Contributor II

I want to answer my own question i posted here, it might be useful to someone.

However, i wish to simply push the us.zoom.config.plist to the /Library/Preferences/ directory, for existing Zoom installations. Doing this does NOT change the Zoom client config. Should this be possible, or does it REQUIRE a full reinstall with the plist file alongside with the pkg?

The answer is;
-- https://zoom.us/client/latest/Zoom.pkg does not recognise /Library/Managed Preferences/ or /Library/Preferences
-- https://zoom.us/client/latest/ZoomInstallerIT.pkg does recognise both paths above.

So if you want to just push a config to an existing Zoom client, you must make sure that Zoom was installed using the ZoomInstallerIT.pkg package, not Zoom.pkg.

sammich
New Contributor II

@ajhstn, a zillion thanks for this tip. I literally spent most than half the day trying to figure out why my plists would not stick. The funny thing was that some things like auto sso login were loading and some were not and so I was convinced that I entering the plist wrong. I also found out the Zoom client was also storing some settings in ~/Library/Application Support/zoom.us/data/zoomus.db -- really fustrating!

CommandShiftK
New Contributor III

@talkingmoose that manifest worked really well for me. thank you!

talkingmoose
Moderator
Moderator

[~mmark - childrensnational], thanks for feedback! Glad to hear it's working.

atomczynski
Valued Contributor

Today I see some failures of install.

Script result: Latest Version is: 5.0.23508.0430
Current installed version is: 4.6.20561.0413
Latest version of the URL is: https://zoom.us/client/5.0.23508.0430/ZoomInstallerIT.pkg
installer: Package name is Zoom
installer: Upgrading at base path /
installer: The upgrade was successful.
Version on Mac is 4.6.20561.0413
Zoom not updated - Installation error

GregE
Contributor

I am also getting that but suspect it may be due to Zoom running at the time it's trying to upgrade? I have mine set to run at login so it shouldn't be that reason, but there's no consistency to the Macs that fail (OS versions).

Gary_R
New Contributor III

I see that error too and you are correct that this is because Zoom is running. I will try some more logic with buttons but for now I added to the jamf helper notification in the Script to notify that the end user will need to quit zoom and reopen for the update to take effect.

jyergatian
Contributor

Out of curiosity, is including the .plist with the .pkg better practice compared to utilizing a configuration profile and the Custom Settings payload?

SlidewaysF30
New Contributor III

Is anyone having problems with this line? I am not returning any result for this...

EDIT: Nvm, I forgot to include the variables inside the command. Disregard.

#!/bin/sh
latestver=`/usr/bin/curl -s -A "$userAgent" https://zoom.us/download | grep 'ZoomInstallerIT.pkg' | awk -F'/' '{print $3}'`
echo "Latest Version is: $latestver"

stmpl10
New Contributor II

@ajhstn What method did you use or how did you push the us.zoom.config.plist to the /Library/Preferences/ directory? I'm not having any luck with Composer?

beeboo
Contributor

@stmpl10

https://www.jamf.com/jamf-nation/discussions/35399/zoom-update-is-requiring-admin-credentials-in-self-service#responseChild202203

answered you other thread, but you can just make the plist as you want then drop it into composer.

rafael_oliveira
New Contributor

Do I actually have to have the *.pkg file in the local disk of the Computers in the Scope?

erichughes
Contributor II

I would like to use the above script without the plist options. We don't use Zoom SSO or control how users connect. Can I just edit the plist section out of the script?

beeboo
Contributor

@erichughes yes ofc, just deploy the zoomIT pkg if thats all you desire.

pbileci
Contributor

How do I modify the script to allow Google instead of an SSO?

erichughes
Contributor II

@beeboo That is what we do now. Gets old uploading a new package every week. Need to get an AutoPKG workflow set up at some point.

kwoodard
Valued Contributor

My brain is not working right tonight. We don’t use SSO on our campus for Zoom, I’m not figuring out how to make this script work to install Zoom and update Zoom without needing admin credentials. How should the script look?

AdamCraig
Contributor III

@kwoodard

This is what I use. We don't manage zooms preferences or settings at all. Just want the people who are using it to have the newest version.

#!/bin/bash

#https://www.jamf.com/jamf-nation/third-party-products/files/1051/install-latest-zoom-client

# this is the full URL
url="https://zoom.us/client/latest/ZoomInstallerIT.pkg"

# change directory to /private/tmp to make this the working directory
cd /private/tmp/

# download the installer package and name it for the linkID
/usr/bin/curl -JL "$url" -o "ZoomInstallerIT.pkg"

# install the package
/usr/sbin/installer -pkg "ZoomInstallerIT.pkg" -target /

# remove the installer package when done
/bin/rm -f "ZoomInstallerIT.pkg"

exit 0

kwoodard
Valued Contributor

@strayer Thank you for this. This won't prompt for admin credentials?