updated changelog

This commit is contained in:
Armin Briegel
2021-10-14 15:42:20 +02:00
parent 39f67c9e89
commit 4c38386c53
2 changed files with 432 additions and 153 deletions

View File

@@ -1,4 +1,4 @@
## v0.7 - pre-release
## v0.7
- default for `BLOCKING_PROCESS_ACTION`is now `BLOCKING_PROCESS_ACTION=tell_user` and not `prompt_user`. It will demand the user to quit the app to get it updated, and not present any option to skip it. In considering various use cases in different MDM solutions this is the best option going forward. Users usually choose to update, and is most often not bothered much with this information. If it's absoultely a bad time, then they can move the dialog box to the side, and click it when ready.
- script is now assembled from fragments. This helps avoid merging conflicts on git and allows the core team to work on the script logic while also accepting new labels. See the "Assemble Script ReadMe" for details.

View File

@@ -34,7 +34,7 @@ NOTIFY=success
# behavior when blocking processes are found
BLOCKING_PROCESS_ACTION=prompt_user
BLOCKING_PROCESS_ACTION=tell_user
# options:
# - ignore continue even when blocking processes are found
# - quit app will be told to quit nicely, if running
@@ -51,6 +51,9 @@ BLOCKING_PROCESS_ACTION=prompt_user
# - prompt_user_loop
# Like prompt-user, but clicking "Not Now", will just wait an hour,
# and then it will ask again.
# WARNING! It might block the MDM agent on the machine, as
# the scripts gets stuct in waiting until the hour has passed,
# possibly blocking for other management actions in this time.
# - tell_user User will be showed a notification about the important update,
# but user is only allowed to quit and continue, and then we
# ask the app to quit.
@@ -68,7 +71,20 @@ LOGO=appstore
# - mosyleb Mosyle Business
# - mosylem Mosyle Manager (Education)
# - addigy Addigy
# path can also be set in the command call, and if file exists, it will be used, like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"' (spaces are escaped).
# path can also be set in the command call, and if file exists, it will be used.
# Like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"'
# (spaces have to be escaped).
# App Store apps handling
IGNORE_APP_STORE_APPS=no
# options:
# - no If installed app is from App Store (which include VPP installed apps)
# it will not be touched, no matter it's version (default)
# - yes Replace App Store (and VPP) version of app and handle future
# updates using Installomator, even if latest version.
# Shouldnt give any problems for the user in most cases.
# Known bad example: Slack will loose all settings.
# install behavior
@@ -185,8 +201,8 @@ REOPEN="yes"
# - updateToolRunAsCurrentUser:
# When this variable is set (any value), $updateTool will be run as the current user.
#
VERSION="0.7.0b1"
VERSIONDATE="2021-08-17"
VERSION="0.7.0"
VERSIONDATE="2021-10-14"
# MARK: Functions
@@ -363,6 +379,16 @@ getAppVersion() {
#appversion=$(mdls -name kMDItemVersion -raw $installedAppPath )
appversion=$(defaults read $installedAppPath/Contents/Info.plist $versionKey) #Not dependant on Spotlight indexing
printlog "found app at $installedAppPath, version $appversion"
# Is current app from App Store
if [[ -d "$installedAppPath"/Contents/_MASReceipt ]];then
printlog "Installed $appName is from App Store, use “IGNORE_APP_STORE_APPS=yes” to replace."
if [[ $IGNORE_APP_STORE_APPS == "yes" ]]; then
printlog "Replacing App Store apps, no matter the version"
appversion=0
else
cleanupAndExit 1 "App previously installed from App Store, and we respect that"
fi
fi
else
printlog "could not determine location of $appName"
fi
@@ -963,6 +989,13 @@ airserver)
#appNewVersion=$() # Cannot find version history or release notes on home page
expectedTeamID="6C755KS5W3"
;;
airtame)
name="Airtame"
type="dmg"
downloadURL="$(curl -fs https://airtame.com/download/ | grep -i platform=mac | head -1 | grep -o -i -E "https.*" | cut -d '"' -f1)"
appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i ^location | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g')"
expectedTeamID="4TPSP88HN2"
;;
aldente)
name="AlDente"
type="dmg"
@@ -1032,14 +1065,14 @@ appcleaner)
applenyfonts)
name="Apple New York Font Collection"
type="pkgInDmg"
downloadURL="https://devimages-cdn.apple.com/design/resources/download/NY-Font.dmg"
downloadURL="https://devimages-cdn.apple.com/design/resources/download/NY.dmg"
packageID="com.apple.pkg.NYFonts"
expectedTeamID="Development Update"
;;
applesfcompact)
name="San Francisco Compact"
type="pkgInDmg"
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Font-Compact.dmg"
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg"
packageID="com.apple.pkg.SanFranciscoCompact"
expectedTeamID="Development Update"
;;
@@ -1053,10 +1086,17 @@ applesfmono)
applesfpro)
name="San Francisco Pro"
type="pkgInDmg"
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Font-Pro.dmg"
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg"
packageID="com.apple.pkg.SanFranciscoPro"
expectedTeamID="Development Update"
;;
applesfsymbols|\
sfsymbols)
name="SF Symbols"
type="pkgInDmg"
downloadURL="https://developer.apple.com/design/downloads/SF-Symbols.dmg"
expectedTeamID="Software Update"
;;
aquaskk)
# credit: Tadayuki Onishi (@kenchan0130)
name="aquaskk"
@@ -1103,6 +1143,13 @@ audacity)
appNewVersion=$(versionFromGit audacity audacity)
expectedTeamID="T3N4JQ7YY6"
;;
authydesktop)
name="Authy Desktop"
type="dmg"
downloadURL="https://electron.authy.com/download?channel=stable&arch=x64&platform=darwin&version=latest&product=authy"
appNewVersion="$(curl -sfL --output /dev/null -r 0-0 "${downloadURL}" --remote-header-name --remote-name -w "%{url_effective}\n" | grep -o -E '([a-zA-Z0-9\_.%-]*)\.(dmg|pkg|zip|tbz)$' | sed -E 's/.*-([0-9.]*)\.dmg/\1/g')"
expectedTeamID="9EVH78F4V4"
;;
autodmg)
# credit: Mischa van der Bent (@mischavdbent)
name="AutoDMG"
@@ -1197,7 +1244,7 @@ bitwarden)
blender)
name="blender"
type="dmg"
downloadURL=$(redirect=$(curl -sfL https://www.blender.org/download/ | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) && curl -sfL "$redirect" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg)
downloadURL=$(redirect=$(curl -sfL https://www.blender.org/download/ | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) && curl -sfL "$redirect" | sed 's/.*href="//' | sed 's/".*//' | grep -m1 .dmg)
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
expectedTeamID="68UA947AUU"
;;
@@ -1224,12 +1271,19 @@ boxdrive)
fi
expectedTeamID="M683GB7CPW"
;;
boxsync)
name="Box Sync"
type="dmg"
downloadURL="https://e3.boxcdn.net/box-installers/sync/Sync+4+External/Box%20Sync%20Installer.dmg"
expectedTeamID="M683GB7CPW"
;;
boxtools)
name="Box Tools"
type="pkg"
downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg"
expectedTeamID="M683GB7CPW"
;;brave)
;;
brave)
# credit: @securitygeneration
name="Brave Browser"
type="dmg"
@@ -1265,6 +1319,10 @@ calibre)
type="dmg"
downloadURL="https://calibre-ebook.com/dist/osx"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
#Maybe change to GitHub for this title. Looks like 5.28.0 release is the first to also release a binary, so maybe see what the next release will be to decide if we should switch.
#downloadURL=$(downloadURLFromGit kovidgoyal calibre )
#appNewVersion=$(versionFromGit kovidgoyal calibre )
#archiveName="OS X dmg"
expectedTeamID="NTY7FVCEKP"
;;
camostudio)
@@ -1281,6 +1339,13 @@ camtasia)
downloadURL=https://download.techsmith.com/camtasiamac/releases/Camtasia.dmg
expectedTeamID="7TQL462TU8"
;;
cisdem-documentreader)
name="cisdem-documentreader"
type="dmg"
downloadURL="https://download.cisdem.com/cisdem-documentreader.dmg"
expectedTeamID="5HGV8EX6BQ"
appName="Cisdem Document Reader.app"
;;
citrixworkspace)
#credit: Erik Stam (@erikstam) and #Philipp on MacAdmins Slack
name="Citrix Workspace"
@@ -1290,10 +1355,9 @@ citrixworkspace)
expectedTeamID="S272Y5R93J"
;;
clevershare2)
# credit: Søren Theilgaard (@theilgaard)
name="Clevershare"
type="dmg"
downloadURL=$(curl -fs https://archive.clevertouch.com/clevershare2g | grep -i "_Mac" | tr '"' "\n" | grep "^http.*dmg")
downloadURL=$(curl -fs https://www.clevertouch.com/eu/clevershare2g | grep -i -o -E "https.*Mac.*\.dmg")
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z-]*_Mac\.([0-9.]*)\.[0-9]*\.dmg$/\1/g' )
expectedTeamID="P76M9BE8DQ"
;;
@@ -1304,6 +1368,13 @@ clickshare)
downloadURL=https://www.barco.com$(curl -fs "https://www.barco.com/en/clickshare/app" | grep -E -o '(\/\S*Download\?FileNumber=R3306192\S*ShowDownloadPage=False)' | tail -1)
expectedTeamID="P6CDJZR997"
;;
cloudya)
name="Cloudya"
type="appInDmgInZip"
downloadURL="$(curl -fs https://www.nfon.com/de/service/downloads | grep -i -E -o "https://cdn.cloudya.com/Cloudya-[.0-9]+-mac.zip")"
appNewVersion="$(curl -fs https://www.nfon.com/de/service/downloads | grep -i -E -o "Cloudya Desktop App MAC [0-9.]*" | sed 's/^.*\ \([^ ]\{0,7\}\)$/\1/g')"
expectedTeamID="X26F74J8TH"
;;
code42)
# credit: Isaac Ordonez, Mann consulting (@mannconsulting)
name="Code42"
@@ -1326,7 +1397,8 @@ colourcontrastanalyser)
appNewVersion=$(versionFromGit ThePacielloGroup CCAe)
expectedTeamID="34RS4UC3M6"
blockingProcesses=( NONE )
;;cormorant)
;;
cormorant)
# credit: Søren Theilgaard (@theilgaard)
name="Cormorant"
type="zip"
@@ -1334,6 +1406,14 @@ colourcontrastanalyser)
appNewVersion=$(curl -fs https://eclecticlight.co/downloads/ | grep zip | grep -o -E "$name [0-9.]*" | awk '{print $2}')
expectedTeamID="QWY4LRW926"
;;
craftmanager)
name="CraftManager"
type="zip"
#downloadURL="https://craft-assets.invisionapp.com/CraftManager/production/CraftManager.zip"
downloadURL="$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)"
appNewVersion="$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)"
expectedTeamID="VRXQSNCL5W"
;;
cryptomator)
name="Cryptomator"
type="dmg"
@@ -1416,6 +1496,13 @@ devonthink)
appNewVersion=$( echo ${downloadURL} | tr '/' '\n' | grep "[0-9]" | grep "[.]" | head -1 )
expectedTeamID="679S2QUWR8"
;;
dialog)
name="Dialog"
type="pkg"
downloadURL=$(downloadURLFromGit bartreardon Dialog-public )
appNewVersion=$(versionFromGit bartreardon Dialog-public )
expectedTeamID="PWA5E9TQ59"
;;
dialpad)
# credit: @ehosaka
name="Dialpad"
@@ -1538,7 +1625,12 @@ ferdi)
figma)
name="Figma"
type="zip"
if [[ $(arch) == "arm64" ]]; then
downloadURL="https://desktop.figma.com/mac-arm/Figma.zip"
elif [[ $(arch) == "i386" ]]; then
downloadURL="https://desktop.figma.com/mac/Figma.zip"
fi
appNewVersion="$(curl -fsL https://desktop.figma.com/mac/RELEASE.json | awk -F '"' '{ print $8 }')"
expectedTeamID="T8RA8NE3B7"
;;
firefox)
@@ -1620,6 +1712,14 @@ firefoxpkg)
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;
flowjo)
name="FlowJo-OSX64-10.8.0"
type="dmg"
downloadURL="$(curl -fs "https://www.flowjo.com/solutions/flowjo/downloads" | grep -i -o -E "https.*\.dmg")"
appNewVersion=$(echo "${downloadURL}" | tr "-" "\n" | grep dmg | sed -E 's/([0-9.]*)\.dmg/\1/g')
expectedTeamID="C79HU5AD9V"
appName="FlowJo.app"
;;
front)
name="Front"
type="dmg"
@@ -1667,11 +1767,11 @@ googlechrome)
if [[ $(arch) != "i386" ]]; then
printlog "Architecture: arm64 (not i386)"
downloadURL="https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg"
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}') # Credit: William Smith (@meck)
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}')
else
printlog "Architecture: i386"
downloadURL="https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg"
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac,stable/{print $3; exit}') # Credit: William Smith (@meck)
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac,stable/{print $3; exit}')
fi
expectedTeamID="EQHXZ8M8AV"
;;
@@ -1791,9 +1891,8 @@ hancock)
handbrake)
name="HandBrake"
type="dmg"
downloadURL=$(curl --silent --fail "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" \
| awk -F '"' "/browser_download_url/ && /dmg/ && ! /sig/ && ! /CLI/ { print \$4 }")
appNewVersion=$(curl -sf "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" | awk -F '"' "/tag_name/ { print \$4 }")
downloadURL=$(downloadURLFromGit HandBrake HandBrake )
appNewVersion=$(versionFromGit HandBrake HandBrake )
expectedTeamID="5X9DE89KYV"
;;
hazel)
@@ -1839,7 +1938,7 @@ icons)
expectedTeamID="7R5ZEU67FQ"
;;
imazingprofileeditor)
# Credit: Bilal Habib @Pro4TLZZZ
# Credit: Bilal Habib @Pro4TLZZ
name="iMazing Profile Editor"
type="dmg"
downloadURL="https://downloads.imazing.com/mac/iMazing-Profile-Editor/iMazingProfileEditorMac.dmg"
@@ -1853,6 +1952,13 @@ inkscape)
#appNewVersion=$(curl -fsJL https://inkscape.org/release/ | grep "<h2>Inkscape" | cut -d '>' -f 3 | cut -d '<' -f 1 | sed 's/[^0-9.]*//g') # Can't figure out where exact new version is found. Currently returns 1.0, but version is "1.0.0 (4035a4f)"
expectedTeamID="SW3D6BB6A6"
;;
insomnia)
name="insomnia"
type="dmg"
downloadURL=$(downloadURLFromGit kong insomnia)
appNewVersion=$(versionFromGit kong insomnia)
expectedTeamID="FX44YY62GV"
;;
installomator_theile)
# credit: Søren Theilgaard (@theilgaard)
name="Installomator"
@@ -1883,7 +1989,7 @@ iterm2)
;;
jabradirect)
name="Jabra Direct"
type="dmg"
type="pkgInDmg"
downloadURL="https://jabraxpressonlineprdstor.blob.core.windows.net/jdo/JabraDirectSetup.dmg"
expectedTeamID="55LV32M29R"
appNewVersion=$(curl -fs https://www.jabra.com/Support/release-notes/release-note-jabra-direct | grep -o "Jabra Direct macOS:*.*<" | head -1 | cut -d ":" -f2 | cut -d " " -f2 | cut -d "<" -f1)
@@ -1895,6 +2001,12 @@ jamfconnect)
downloadURL="https://files.jamfconnect.com/JamfConnect.dmg"
expectedTeamID="483DWKW443"
;;
jamfconnectconfiguration)
name="Jamf Connect Configuration"
type="dmg"
downloadURL="https://files.jamfconnect.com/JamfConnect.dmg"
expectedTeamID="483DWKW443"
;;
jamfmigrator)
# credit: Mischa van der Bent
name="jamf-migrator"
@@ -1919,64 +2031,119 @@ jamfreenroller)
#appNewVersion=$(versionFromGit jamf ReEnroller)
expectedTeamID="PS2F6S478M"
;;
jetbrainsclion)
name="CLion"
type="dmg"
jetbrainscode="CL"
jetbrainsdistribution="mac"
if [[ $(arch) == arm64 ]]; then
jetbrainsdistribution="macM1"
fi
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3"
;;
jetbrainsdatagrip)
# credit: AP Orlebeke (@apizz)
name="DataGrip"
type="dmg"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
if [[ $(arch) == "arm64" ]]; then
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'macM1*.*,' | cut -d '"' -f5)
elif [[ $(arch) == "i386" ]]; then
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'mac*.*,' | cut -d '"' -f5)
jetbrainscode="DG"
if [[ $(arch) == i386 ]]; then
jetbrainsdistribution="mac"
elif [[ $(arch) == arm64 ]]; then
jetbrainsdistribution="macM1"
fi
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3"
;;jetbrainsintellijidea)
# credit: Gabe Marchan (gabemarchan.com - @darklink87)
;;
jetbrainsintellijidea)
name="IntelliJ IDEA"
type="dmg"
downloadURL="https://download.jetbrains.com/product?code=II&latest&distribution=mac"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=II&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
jetbrainscode="II"
if [[ $(arch) == i386 ]]; then
jetbrainsdistribution="mac"
elif [[ $(arch) == arm64 ]]; then
jetbrainsdistribution="macM1"
fi
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3"
;;
jetbrainsintellijideace|\
intellijideace)
name="IntelliJ IDEA CE"
type="dmg"
downloadURL="https://download.jetbrains.com/product?code=IIC&latest&distribution=mac"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=IIC&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
jetbrainscode="IIC"
if [[ $(arch) == i386 ]]; then
jetbrainsdistribution="mac"
elif [[ $(arch) == arm64 ]]; then
jetbrainsdistribution="macM1"
fi
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3"
;;
jetbrainsphpstorm)
# credit: Casey Jensen (@cajenson01 on MacAdmins Slack)Appended by Skylar Damiano @catdad on MacAdmins Slack
name="JetBrains PHPStorm"
name="PHPStorm"
type="dmg"
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PS&latest=true&type=release" | grep -o "mac*.*.dmg" | cut -d '"' -f5)
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PS&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
jetbrainscode="PS"
if [[ $(arch) == i386 ]]; then
jetbrainsdistribution="mac"
elif [[ $(arch) == arm64 ]]; then
jetbrainsdistribution="macM1"
fi
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3"
;;
jetbrainspycharm)
# This is the Pro version of PyCharm.
# Do not confuse with PyCharm CE.
# This is the Pro version of PyCharm. Do not confuse with PyCharm CE.
name="PyCharm"
type="dmg"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PCP&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
if [[ $(arch) == i386 ]]; then
downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=mac"
elif [[ $(arch) == arm64 ]]; then
downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=macM1"
jetbrainscode="PCP"
jetbrainsdistribution="mac"
if [[ $(arch) == arm64 ]]; then
jetbrainsdistribution="macM1"
fi
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3"
;;
jetbrainspycharmce|\
pycharmce)
name="PyCharm CE"
type="dmg"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PCC&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3)
if [[ $(arch) == i386 ]]; then
downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=mac"
elif [[ $(arch) == arm64 ]]; then
downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=macM1"
jetbrainscode="PCC"
jetbrainsdistribution="mac"
if [[ $(arch) == arm64 ]]; then
jetbrainsdistribution="macM1"
fi
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3"
;;
jetbrainstoolbox)
name="JetBrains Toolbox"
type="dmg"
jetbrainscode="TBA"
jetbrainsdistribution="mac"
if [[ $(arch) == arm64 ]]; then
jetbrainsdistribution="macM1"
fi
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3"
;;
jetbrainswebstorm)
name="Webstorm"
type="dmg"
jetbrainscode="WS"
jetbrainsdistribution="mac"
if [[ $(arch) == arm64 ]]; then
jetbrainsdistribution="macM1"
fi
downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3"
;;
karabinerelements)
@@ -2006,6 +2173,12 @@ keka)
appNewVersion=$(versionFromGit aonez Keka)
expectedTeamID="4FG648TM2A"
;;
keybase)
name="Keybase"
type="dmg"
downloadURL=$(curl -s https://keybase.io/docs/the_app/install_macos | grep data-target | cut -d '"' -f2)
expectedTeamID="99229SGT5K"
;;
keyboardmaestro)
# credit: Søren Theilgaard (@theilgaard)
name="Keyboard Maestro"
@@ -2103,8 +2276,10 @@ lucifer)
lulu)
name="LuLu"
type="dmg"
downloadURL=$( curl -fs "https://objective-see.com/products/lulu.html" | grep https | grep "$type" | head -1 | tr '"' "\n" | grep "^http" )
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)\..*/\1/g' )
#downloadURL=$( curl -fs "https://objective-see.com/products/lulu.html" | grep https | grep "$type" | head -1 | tr '"' "\n" | grep "^http" )
#appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)\..*/\1/g' )
downloadURL=$(downloadURLFromGit objective-see LuLu)
appNewVersion=$(versionFromGit objective-see LuLu)
expectedTeamID="VBG97UB4TA"
;;
macfuse)
@@ -2152,6 +2327,14 @@ microsoftautoupdate)
#updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
#updateToolArguments=( --install --apps MSau04 )
;;
microsoftazurestorageexplorer)
name="Microsoft Azure Storage Explorer"
type="zip"
downloadURL=$(downloadURLFromGit microsoft AzureStorageExplorer )
appNewVersion=$(versionFromGit microsoft AzureStorageExplorer )
expectedTeamID="UBF8T346G9"
archiveName="Mac_StorageExplorer.zip"
;;
microsoftcompanyportal)
name="Company Portal"
type="pkg"
@@ -2229,6 +2412,7 @@ microsoftofficebusinesspro)
name="MicrosoftOfficeBusinessPro"
type="pkg"
downloadURL="https://go.microsoft.com/fwlink/?linkid=2009112"
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | grep -o "/Microsoft_.*pkg" | cut -d "_" -f 3)
expectedTeamID="UBF8T346G9"
# using MS PowerPoint as the 'stand-in' for the entire suite
appName="Microsoft PowerPoint.app"
@@ -2310,10 +2494,8 @@ microsoftteams)
type="pkg"
packageID="com.microsoft.teams"
downloadURL="https://go.microsoft.com/fwlink/?linkid=869428"
#appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.teams.standalone"]/version' 2>/dev/null | sed -E 's/<version>([0-9.]*) .*/\1/')
# Still using macadmin.software for version, as the path does not contain the version in a matching format. packageID can be used, but version is the same.
appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/package[id="com.microsoft.teams.standalone"]/version' 2>/dev/null | sed -E 's/<version>([0-9.]*) .*/\1/')
# Looks like macadmin.software has package ID version. At least on 2021-05-28 version 1.00.411161 is matched on installed version and homepage.
# Looks like macadmin.software has package ID version. At least on 202105-28 version 1.00.411161 is matched on installed version and homepage.
expectedTeamID="UBF8T346G9"
blockingProcesses=( Teams "Microsoft Teams Helper" )
# Commenting out msupdate as it is not really supported *yet* for teams
@@ -2358,6 +2540,14 @@ miro)
downloadURL="https://desktop.miro.com/platforms/darwin/Miro.dmg"
expectedTeamID="M3GM7MFY7U"
;;
montereyblocker)
name="montereyblocker"
type="pkg"
packageID="dk.envo-it.montereyblocker"
downloadURL=$(downloadURLFromGit Theile montereyblocker )
appNewVersion=$(versionFromGit Theile montereyblocker )
expectedTeamID="FXW6QXBFW5"
;;
musescore)
name="MuseScore 3"
type="dmg"
@@ -2365,6 +2555,13 @@ musescore)
appNewVersion=$(versionFromGit musescore MuseScore)
expectedTeamID="6EPAF2X3PR"
;;
muzzle)
name="Muzzle"
type="zip"
downloadURL="https://muzzleapp.com/binaries/muzzle.zip"
appNewVersion=$(curl -fs https://muzzleapp.com/updates/ | grep -io 'h2.*Version.* [0-9.]*.*h2' | head -1 | sed -E 's/.*ersion *([0-9.]*).*/\1/g')
expectedTeamID="49EYHPJ4Q3"
;;
netnewswire)
name="NetNewsWire"
type="zip"
@@ -2544,6 +2741,12 @@ pacifist)
downloadURL="https://charlessoft.com/cgi-bin/pacifist_download.cgi?type=dmg"
expectedTeamID="HRLUCP7QP4"
;;
parsec)
name="Parsec"
type="pkg"
downloadURL="https://builds.parsecgaming.com/package/parsec-macos.pkg"
expectedTeamID="Y9MY52XZDB"
;;
pdfsam)
name="PDFsam Basic"
type="dmg"
@@ -2551,6 +2754,13 @@ pdfsam)
appNewVersion=$(versionFromGit torakiki pdfsam)
expectedTeamID="8XM3GHX436"
;;
perimeter81)
name="Perimeter 81"
type="pkg"
downloadURL="https://static.perimeter81.com/agents/mac/snapshot/latest/Perimeter81.pkg"
appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i ^x-amz-meta-version | sed -E 's/x-amz-meta-version: //' | cut -d"." -f1-3)"
expectedTeamID="924635PD62"
;;
pitch)
name="Pitch"
type="dmg"
@@ -2570,7 +2780,8 @@ platypus)
downloadURL=$(downloadURLFromGit sveinbjornt Platypus)
appNewVersion=$(versionFromGit sveinbjornt Platypus)
expectedTeamID="55GP2M789L"
;;plisteditpro)
;;
plisteditpro)
name="PlistEdit Pro"
type="zip"
downloadURL="https://www.fatcatsoftware.com/plisteditpro/PlistEditPro.zip"
@@ -2589,7 +2800,6 @@ prism9)
type="dmg"
downloadURL="https://cdn.graphpad.com/downloads/prism/9/InstallPrism9.dmg"
expectedTeamID="YQ2D36NS9M"
Company="GraphPad Software"
;;
privileges)
# credit: Erik Stam (@erikstam)
@@ -2722,11 +2932,19 @@ rocketchat)
expectedTeamID="S6UPZG7ZR3"
blockingProcesses=( Rocket.Chat )
;;
rodeconnect)
name="RODE Connect"
type="pkgInZip"
#packageID="com.rodeconnect.installer" #Versioned wrong as 0 in 1.1.0 pkg
downloadURL="https://cdn1.rode.com/rodeconnect_installer_mac.zip"
appNewVersion="$(curl -fs https://rode.com/software/rode-connect | grep -i -o ">Current version .*<" | cut -d " " -f4)"
expectedTeamID="Z9T72PWTJA"
;;
royaltsx)
name="Royal TSX"
type="dmg"
downloadURL=$(curl -fs https://royaltsx-v4.royalapps.com/updates_stable | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
appNewVersion=$(curl -fs https://royaltsx-v4.royalapps.com/updates_stable | xpath '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2)
downloadURL=$(curl -fs https://royaltsx-v5.royalapps.com/updates_stable | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
appNewVersion=$(curl -fs https://royaltsx-v5.royalapps.com/updates_stable | xpath '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2)
expectedTeamID="VXP8K9EDP6"
;;
rstudio)
@@ -2752,10 +2970,12 @@ scaleft)
appNewVersion=$(curl -sf "https://dist.scaleft.com/client-tools/mac/" | awk '/dir/{i++}i==2' | sed -nre 's/^[^0-9]*(([0-9]+\.)*[0-9]+).*/\1/p')
expectedTeamID="HV2G9Z3RP5"
blockingProcesses=( ScaleFT )
;;screamingfrogseospider)
;;
screamingfrogseospider)
name="Screaming Frog SEO Spider"
type="dmg"
downloadURL="https://download.screamingfrog.co.uk/products/seo-spider/ScreamingFrogSEOSpider-14.3.dmg"
downloadURL=$(curl -fs "https://www.screamingfrog.co.uk/wp-content/themes/screamingfrog/inc/download-modal.php" | grep -i -o "https.*\.dmg" | head -1)
appNewVersion=$(print "$downloadURL" | sed -E 's/https.*\/[a-zA-Z]*-([0-9.]*)\.dmg/\1/g')".0"
expectedTeamID="CAHEVC3HZC"
;;
screencloudplayer)
@@ -2764,19 +2984,14 @@ screencloudplayer)
type="dmg"
downloadURL=$(curl -sL "https://screencloud.com/download" | sed -n 's/^.*"url":"\([^"]*\)".*$/\1/p')
expectedTeamID="3C4F953K6P"
;;screenflick)
;;
screenflick)
# credit: Gabe Marchan (gabemarchan.com - @darklink87)
name="Screenflick"
type="zip"
downloadURL="https://www.araelium.com/screenflick/downloads/Screenflick.zip"
expectedTeamID="28488A87JB"
;;
sfsymbols)
name="SF Symbols"
type="pkgInDmg"
downloadURL="https://developer.apple.com/design/downloads/SF-Symbols.dmg"
expectedTeamID="Software Update"
;;
shield)
# credit: Søren Theilgaard (@theilgaard)
name="Shield"
@@ -2843,14 +3058,16 @@ slack)
name="Slack"
type="dmg"
downloadURL="https://slack.com/ssb/download-osx-universal" # Universal
# if [[ $(arch) == "arm64" ]]; then
# downloadURL="https://slack.com/ssb/download-osx-silicon"
# elif [[ $(arch) == "i386" ]]; then
# downloadURL="https://slack.com/ssb/download-osx"
# fi
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | tr -d '\r\n' | sed -E 's/.*macos\/([0-9.]*)\/.*/\1/g' )
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | cut -d "/" -f6 )
expectedTeamID="BQR82RBBHL"
;;
smartgit)
name="SmartGit"
type="dmg"
downloadURL="https://www.syntevo.com$(curl -fs "https://www.syntevo.com/smartgit/download/" | grep -i -o -E "/downloads/.*/smartgit.*\.dmg")"
appNewVersion="$(curl -fs "https://www.syntevo.com/smartgit/changelog.txt" | grep -i -E "SmartGit *[0-9.]* *.*" | head -1 | awk '{print $2}')"
expectedTeamID="PHMY45PTNW"
;;
snagit|\
snagit2021|\
snagit2020)
@@ -2887,10 +3104,20 @@ sourcetree)
appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/Sourcetree_([0-9.]*)_[0-9]*\.zip/\1/g')
expectedTeamID="UPXU4CQZ5P"
;;
splashtopsos)
name="Splashtop SOS"
type="dmg"
downloadURL="https://download.splashtop.com/sos/SplashtopSOS.dmg"
expectedTeamID="CPQQ3AW49Y"
;;
spotify)
name="Spotify"
type="dmg"
if [[ $(arch) == arm64 ]]; then
downloadURL="https://download.scdn.co/SpotifyARM64.dmg"
elif [[ $(arch) == i386 ]]; then
downloadURL="https://download.scdn.co/Spotify.dmg"
fi
# appNewVersion=$(curl -fs https://www.spotify.com/us/opensource/ | cat | grep -o "<td>.*.</td>" | head -1 | cut -d ">" -f2 | cut -d "<" -f1) # does not result in the same version as downloaded
expectedTeamID="2FNC3A47ZF"
;;
@@ -2926,6 +3153,13 @@ swiftruntimeforcommandlinetools)
downloadURL="https://updates.cdn-apple.com/2019/cert/061-41823-20191025-5efc5a59-d7dc-46d3-9096-396bb8cb4a73/SwiftRuntimeForCommandLineTools.dmg"
expectedTeamID="Software Update"
;;
sync)
name="Sync"
type="dmg"
downloadURL="https://www.sync.com/download/apple/Sync.dmg"
appNewVersion="$(curl -fs "https://www.sync.com/blog/category/desktop/feed/" | xpath '(//channel/item/title)[1]' 2>/dev/null | sed -E 's/^.* ([0-9.]*) .*$/\1/g')"
expectedTeamID="7QR39CMJ3W"
;;
tableaudesktop)
name="Tableau Desktop"
type="pkgInDmg"
@@ -2940,6 +3174,13 @@ tableaureader)
downloadURL="https://www.tableau.com/downloads/reader/mac"
expectedTeamID="QJ4XPRK37C"
;;
tageditor)
name="Tag Editor"
type="dmg"
downloadURL="https://amvidia.com/downloads/tag-editor-mac.dmg"
appNewVersion=curl -sf "https://amvidia.com/tag-editor" | grep -o -E '"softwareVersion":.'"{8}" | sed 's/\"//g' | awk -F ': ' '{print $2}'
expectedTeamID="F2TH9XX9CJ"
;;
taskpaper)
# credit: Drew Diver (@grumpydrew on MacAdmins Slack)
name="TaskPaper"
@@ -3024,12 +3265,6 @@ thunderbird)
expectedTeamID="43AQ936H96"
blockingProcesses=( thunderbird )
;;
tigervnc)
name="TigerVNC Viewer"
type="dmg"
downloadURL=https://dl.bintray.com/tigervnc/stable/$(curl -s -l https://dl.bintray.com/tigervnc/stable/ | grep .dmg | sed 's/<pre><a onclick="navi(event)" href="://' | sed 's/".*//' | sort -V | tail -1)
expectedTeamID="S5LX88A9BW"
;;
toggltrack)
name="Toggl Track"
type="dmg"
@@ -3037,6 +3272,13 @@ toggltrack)
appNewVersion=$(versionFromGit toggl-open-source toggldesktop )
expectedTeamID="B227VTMZ94"
;;
tom4aconverter)
name="To M4A Converter"
type="dmg"
downloadURL="https://amvidia.com/downloads/to-m4a-converter-mac.dmg"
appNewVersion=curl -sf "https://amvidia.com/to-m4a-converter" | grep -o -E '"softwareVersion":.'"{8}" | sed 's/\"//g' | awk -F ': ' '{print $2}'
expectedTeamID="F2TH9XX9CJ"
;;
torbrowser)
# credit: Søren Theilgaard (@theilgaard)
name="Tor Browser"
@@ -3086,6 +3328,13 @@ universaltypeclient)
downloadURL=https://bin.extensis.com/$( curl -fs https://www.extensis.com/support/universal-type-server-7/ | grep -o "UTC-[0-9].*M.zip" )
expectedTeamID="J6MMHGD9D6"
;;
utm)
name="UTM"
type="dmg"
downloadURL=$(downloadURLFromGit utmapp UTM )
appNewVersion=$(versionFromGit utmapp UTM )
expectedTeamID="WDNLXAD4W8"
;;
vagrant)
# credit: AP Orlebeke (@apizz)
name="Vagrant"
@@ -3148,11 +3397,10 @@ vlc)
expectedTeamID="75GAHG3SZQ"
;;
vmwarehorizonclient)
# credit: Oh4sh0 https://github.com/Oh4sh0
name="VMware Horizon Client"
type="dmg"
downloadURL=$(curl -fs "https://my.vmware.com/channel/public/api/v1.0/dlg/details?locale=en_US&downloadGroup=CART21FQ2_MAC_800&productId=1027&rPId=48989" | grep -o 'Url.*..dmg"' | cut -d '"' -f3)
appNewVersion=$(curl -fs "https://my.vmware.com/channel/public/api/v1.0/dlg/details?locale=en_US&downloadGroup=CART21FQ2_MAC_800&productId=1027&rPId=48989" | sed 's/.*-\(.*\)-.*/\1/')
downloadURL=$(curl -fsL "https://my.vmware.com/channel/public/api/v1.0/dlg/details?locale=en_US&downloadGroup=CART21FQ2_MAC_800&productId=1027&rPId=48989" | grep -o 'Url.*..dmg"' | cut -d '"' -f3)
appNewVersion=$(curl -fsL "https://my.vmware.com/channel/public/api/v1.0/dlg/details?locale=en_US&downloadGroup=CART21FQ2_MAC_800&productId=1027&rPId=48989" | sed 's/.*-\(.*\)-.*/\1/')
expectedTeamID="EG7KH642X6"
;;
vscodium)
@@ -3166,6 +3414,14 @@ vscodium)
appName="VSCodium.app"
blockingProcesses=( Electron )
;;
wallyezflash)
name="Wally"
type="dmg"
downloadURL="https://configure.zsa.io/wally/osx"
#appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i ^location | head -1 | sed -E 's/.*\/[a-zA-Z\-]*-([0-9.]*)\..*/\1/g')
expectedTeamID="V32BWKSNYH"
#versionKey="CFBundleVersion"
;;
webex|\
webexteams)
# credit: Erik Stam (@erikstam)
@@ -3188,13 +3444,6 @@ webexmeetings)
#blockingProcessesMaxCPU="5"
blockingProcesses=( Webex )
;;
webexteams)
# credit: Erik Stam (@erikstam)
name="Webex Teams"
type="dmg"
downloadURL="https://binaries.webex.com/WebexTeamsDesktop-MACOS-Gold/WebexTeams.dmg"
expectedTeamID="DE8Y96K9QP"
;;
whatsapp)
name="WhatsApp"
type="dmg"
@@ -3254,6 +3503,14 @@ xquartz)
appNewVersion=$(versionFromGit XQuartz XQuartz)
expectedTeamID="NA574AWV7E"
;;
yed)
# This label assumes accept of these T&Cs: https://www.yworks.com/resources/yed/license.html
name="yEd"
type="dmg"
downloadURL="https://www.yworks.com"$(curl -fs "https://www.yworks.com/products/yed/download" | grep -o -e "/resources/.*\.dmg" | tr " " '\n' | grep -o -e "/resources/.*\.dmg")
appNewVersion=$(echo $downloadURL | sed -E 's/.*-([0-9.]*)_.*\.dmg/\1/')
expectedTeamID="JD89S887M2"
;;
yubikeymanagerqt)
# credit: Tadayuki Onishi (@kenchan0130)
name="YubiKey Manager GUI"
@@ -3269,14 +3526,29 @@ zappy)
downloadURL="https://zappy.zapier.com/releases/zappy-latest.zip"
expectedTeamID="6LS97Q5E79"
;;
zeplin)
name="Zeplin"
type="zip"
downloadURL="https://zpl.io/download-mac"
appNewVersion="$(curl -fs "https://api.appcenter.ms/v0.1/public/sparkle/apps/8926efff-e734-b6d3-03d0-9f41d90c34fc" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f 2)"
expectedTeamID="8U3Y4X5WDQ"
;;
zohoworkdrive)
# Using this label expects you to agree to these:
# License Areemant: https://www.zoho.com/workdrive/zohoworkdrive-license-agreement.html
# Privacy policy: https://www.zoho.com/privacy.html
name="Zoho WorkDrive"
type="dmg"
lines=$(curl -fs https://www.zohowebstatic.com/sites/all/themes/zoho/scripts/workdrive.js | grep files-accl.zohopublic.com | tr '"' "\n")
downloadURL=$(echo "$lines" | grep -i "files-accl.zohopublic.com")$(echo "$lines" | grep -i -A17 "files-accl.zohopublic.com" | grep -i -A2 macintosh | tail -1)
expectedTeamID="TZ824L8Y37"
;;
zoom)
# credit: Isaac Ordonez, Mann consulting (@mannconsulting)
name="Zoom.us"
name="zoom.us"
type="pkg"
downloadURL="https://zoom.us/client/latest/ZoomInstallerIT.pkg"
appNewVersion=$(curl -fs -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" "https://zoom.us/download" | grep Version | head -n 1 | sed -E 's/.* ([0-9.]* \(.*\)).*/\1/') # credit: Søren Theilgaard (@theilgaard)
appNewVersion="$(curl -fsIL ${downloadURL} | grep -i ^location | cut -d "/" -f5)"
expectedTeamID="BJ4HAAB9B3"
blockingProcesses=( zoom.us )
;;
zoomclient)
name="zoom.us"
@@ -3292,15 +3564,22 @@ zoomclient)
blockingProcesses=( zoom.us )
#blockingProcessesMaxCPU="5"
;;
zoomgov)
name="zoom.us"
type="pkg"
downloadURL="https://www.zoomgov.com/client/latest/ZoomInstallerIT.pkg"
appNewVersion="$(curl -fsIL ${downloadURL} | grep -i ^location | cut -d "/" -f5)"
expectedTeamID="BJ4HAAB9B3"
;;
zoomrooms)
   name="ZoomRooms"
   type="pkg"
   packageID="us.zoom.pkg.zp"
   downloadURL="https://zoom.us/client/latest/ZoomRooms.pkg"
   appNewVersion="$(curl -fsIL ${downloadURL} | grep -i location | cut -d "/" -f5)"
   expectedTeamID="BJ4HAAB9B3"
name="ZoomRooms"
type="pkg"
packageID="us.zoom.pkg.zp"
downloadURL="https://zoom.us/client/latest/ZoomRooms.pkg"
appNewVersion="$(curl -fsIL ${downloadURL} | grep -i location | cut -d "/" -f5)"
expectedTeamID="BJ4HAAB9B3"
blockingProcesses=( "ZoomPresence" )
   ;;
;;
zulujdk11)
name="Zulu JDK 11"
type="pkgInDmg"