This commit is contained in:
Søren Theilgaard
2021-10-14 21:42:11 +02:00
45 changed files with 577 additions and 215 deletions

View File

@@ -1,6 +1,6 @@
## 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. - 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. - 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.
- We now detect App Store installed apps, and we do not replace them automatically. An example is Slack that will loose all settings if it is suddenly changed from App Store version to the "web" version (they differ in the handling of settings files). If `INSTALL=force` then we will replace the App Store app. We log all this. - We now detect App Store installed apps, and we do not replace them automatically. An example is Slack that will loose all settings if it is suddenly changed from App Store version to the "web" version (they differ in the handling of settings files). If `INSTALL=force` then we will replace the App Store app. We log all this.
- Change in finding installed apps. We now look in /Applications and /Applications/Utilities first. If not found there, we use spotligt to find it. (We discovered a problem when a user has Parallels Windows installed with Microsoft Edge in it. Then Installomator wanted to update the app all the time, becaus spotligt found that Windows version of the app that Parallels created.) - Change in finding installed apps. We now look in /Applications and /Applications/Utilities first. If not found there, we use spotligt to find it. (We discovered a problem when a user has Parallels Windows installed with Microsoft Edge in it. Then Installomator wanted to update the app all the time, becaus spotligt found that Windows version of the app that Parallels created.)
@@ -24,10 +24,10 @@
- Major update and now with help from @Theile and @Isaac - Major update and now with help from @Theile and @Isaac
- Added additional `BLOCKING_PROCESS_ACTION` handlings - Added additional `BLOCKING_PROCESS_ACTION` handlings
- Added additional `NOTIFY=all`. Usuful if used in Self Service, as the user will be notified before download, before install as well as when it is done. - Added additional `NOTIFY=all`. Usuful if used in Self Service, as the user will be notified before download, before install as well as when it is done.
- Added variable `LOGO` for icons i dialogs, use `LOGO=appstore` (or `jamf` or `mosyleb` or `mosylem` or `addigy`). It's also possible to set it to a direct path to a specific icon. Default is `appstore`. - Added variable `LOGO` for icons i dialogs, use `LOGO=appstore` (or `jamf` or `mosyleb` or `mosylem` or `addigy`). It's also possible to set it to a direct path to a specific icon. Default is `appstore`.
- Added variable `INSTALL` that can be set to `INSTALL=force` if software needs to be installed even though latest version is already installed (it will be a reinstall). - Added variable `INSTALL` that can be set to `INSTALL=force` if software needs to be installed even though latest version is already installed (it will be a reinstall).
- Version control now included. The variable `appNewVersion` in a label can be used to tell what the latest version from the web is. If this is not given, version checking is done after download. - Version control now included. The variable `appNewVersion` in a label can be used to tell what the latest version from the web is. If this is not given, version checking is done after download.
- For a label that only installs a pkg without an app in it, a variable `packageID` can be used for version checking. - For a label that only installs a pkg without an app in it, a variable `packageID` can be used for version checking.
- Labels now sorted alphabetically, except for the Microsoft ones (that are at the end of the list). A bunch of new labels added, and lots of them have either been changed or improved (with `appNewVersion` og `packageID`). - Labels now sorted alphabetically, except for the Microsoft ones (that are at the end of the list). A bunch of new labels added, and lots of them have either been changed or improved (with `appNewVersion` og `packageID`).
- If an app is asked to be closed down, it will now be opened again after the update. - If an app is asked to be closed down, it will now be opened again after the update.
- If your MDM cannot call a script with parameters, the label can be set in the top of the script. - If your MDM cannot call a script with parameters, the label can be set in the top of the script.

View File

@@ -34,7 +34,7 @@ NOTIFY=success
# behavior when blocking processes are found # behavior when blocking processes are found
BLOCKING_PROCESS_ACTION=prompt_user BLOCKING_PROCESS_ACTION=tell_user
# options: # options:
# - ignore continue even when blocking processes are found # - ignore continue even when blocking processes are found
# - quit app will be told to quit nicely, if running # - quit app will be told to quit nicely, if running
@@ -51,6 +51,9 @@ BLOCKING_PROCESS_ACTION=prompt_user
# - prompt_user_loop # - prompt_user_loop
# Like prompt-user, but clicking "Not Now", will just wait an hour, # Like prompt-user, but clicking "Not Now", will just wait an hour,
# and then it will ask again. # 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, # - tell_user User will be showed a notification about the important update,
# but user is only allowed to quit and continue, and then we # but user is only allowed to quit and continue, and then we
# ask the app to quit. # ask the app to quit.
@@ -68,7 +71,20 @@ LOGO=appstore
# - mosyleb Mosyle Business # - mosyleb Mosyle Business
# - mosylem Mosyle Manager (Education) # - mosylem Mosyle Manager (Education)
# - addigy Addigy # - 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 # install behavior
@@ -185,8 +201,8 @@ REOPEN="yes"
# - updateToolRunAsCurrentUser: # - updateToolRunAsCurrentUser:
# When this variable is set (any value), $updateTool will be run as the current user. # When this variable is set (any value), $updateTool will be run as the current user.
# #
VERSION="0.7.0b1" VERSION="0.7.0"
VERSIONDATE="2021-08-17" VERSIONDATE="2021-10-14"
# MARK: Functions # MARK: Functions
@@ -363,6 +379,16 @@ getAppVersion() {
#appversion=$(mdls -name kMDItemVersion -raw $installedAppPath ) #appversion=$(mdls -name kMDItemVersion -raw $installedAppPath )
appversion=$(defaults read $installedAppPath/Contents/Info.plist $versionKey) #Not dependant on Spotlight indexing appversion=$(defaults read $installedAppPath/Contents/Info.plist $versionKey) #Not dependant on Spotlight indexing
printlog "found app at $installedAppPath, version $appversion" 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 else
printlog "could not determine location of $appName" printlog "could not determine location of $appName"
fi fi
@@ -963,6 +989,13 @@ airserver)
#appNewVersion=$() # Cannot find version history or release notes on home page #appNewVersion=$() # Cannot find version history or release notes on home page
expectedTeamID="6C755KS5W3" 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) aldente)
name="AlDente" name="AlDente"
type="dmg" type="dmg"
@@ -1032,14 +1065,14 @@ appcleaner)
applenyfonts) applenyfonts)
name="Apple New York Font Collection" name="Apple New York Font Collection"
type="pkgInDmg" 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" packageID="com.apple.pkg.NYFonts"
expectedTeamID="Development Update" expectedTeamID="Development Update"
;; ;;
applesfcompact) applesfcompact)
name="San Francisco Compact" name="San Francisco Compact"
type="pkgInDmg" 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" packageID="com.apple.pkg.SanFranciscoCompact"
expectedTeamID="Development Update" expectedTeamID="Development Update"
;; ;;
@@ -1053,10 +1086,17 @@ applesfmono)
applesfpro) applesfpro)
name="San Francisco Pro" name="San Francisco Pro"
type="pkgInDmg" 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" packageID="com.apple.pkg.SanFranciscoPro"
expectedTeamID="Development Update" expectedTeamID="Development Update"
;; ;;
applesfsymbols|\
sfsymbols)
name="SF Symbols"
type="pkgInDmg"
downloadURL="https://developer.apple.com/design/downloads/SF-Symbols.dmg"
expectedTeamID="Software Update"
;;
aquaskk) aquaskk)
# credit: Tadayuki Onishi (@kenchan0130) # credit: Tadayuki Onishi (@kenchan0130)
name="aquaskk" name="aquaskk"
@@ -1103,6 +1143,13 @@ audacity)
appNewVersion=$(versionFromGit audacity audacity) appNewVersion=$(versionFromGit audacity audacity)
expectedTeamID="T3N4JQ7YY6" 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) autodmg)
# credit: Mischa van der Bent (@mischavdbent) # credit: Mischa van der Bent (@mischavdbent)
name="AutoDMG" name="AutoDMG"
@@ -1197,7 +1244,7 @@ bitwarden)
blender) blender)
name="blender" name="blender"
type="dmg" 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' ) appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
expectedTeamID="68UA947AUU" expectedTeamID="68UA947AUU"
;; ;;
@@ -1224,12 +1271,19 @@ boxdrive)
fi fi
expectedTeamID="M683GB7CPW" 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) boxtools)
name="Box Tools" name="Box Tools"
type="pkg" type="pkg"
downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg" downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg"
expectedTeamID="M683GB7CPW" expectedTeamID="M683GB7CPW"
;;brave) ;;
brave)
# credit: @securitygeneration # credit: @securitygeneration
name="Brave Browser" name="Brave Browser"
type="dmg" type="dmg"
@@ -1265,6 +1319,10 @@ calibre)
type="dmg" type="dmg"
downloadURL="https://calibre-ebook.com/dist/osx" 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' ) 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" expectedTeamID="NTY7FVCEKP"
;; ;;
camostudio) camostudio)
@@ -1281,6 +1339,13 @@ camtasia)
downloadURL=https://download.techsmith.com/camtasiamac/releases/Camtasia.dmg downloadURL=https://download.techsmith.com/camtasiamac/releases/Camtasia.dmg
expectedTeamID="7TQL462TU8" 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) citrixworkspace)
#credit: Erik Stam (@erikstam) and #Philipp on MacAdmins Slack #credit: Erik Stam (@erikstam) and #Philipp on MacAdmins Slack
name="Citrix Workspace" name="Citrix Workspace"
@@ -1290,10 +1355,9 @@ citrixworkspace)
expectedTeamID="S272Y5R93J" expectedTeamID="S272Y5R93J"
;; ;;
clevershare2) clevershare2)
# credit: Søren Theilgaard (@theilgaard)
name="Clevershare" name="Clevershare"
type="dmg" 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' ) appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z-]*_Mac\.([0-9.]*)\.[0-9]*\.dmg$/\1/g' )
expectedTeamID="P76M9BE8DQ" 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) 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" 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) code42)
# credit: Isaac Ordonez, Mann consulting (@mannconsulting) # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
name="Code42" name="Code42"
@@ -1320,13 +1391,14 @@ coderunner)
expectedTeamID="R4GD98AJF9" expectedTeamID="R4GD98AJF9"
;; ;;
colourcontrastanalyser) colourcontrastanalyser)
name="Colour Contrast Analyser (CCA)" name="Colour Contrast Analyser (CCA)"
type="dmg" type="dmg"
downloadURL=$(downloadURLFromGit ThePacielloGroup CCAe) downloadURL=$(downloadURLFromGit ThePacielloGroup CCAe)
appNewVersion=$(versionFromGit ThePacielloGroup CCAe) appNewVersion=$(versionFromGit ThePacielloGroup CCAe)
expectedTeamID="34RS4UC3M6" expectedTeamID="34RS4UC3M6"
blockingProcesses=( NONE ) blockingProcesses=( NONE )
;;cormorant) ;;
cormorant)
# credit: Søren Theilgaard (@theilgaard) # credit: Søren Theilgaard (@theilgaard)
name="Cormorant" name="Cormorant"
type="zip" 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}') appNewVersion=$(curl -fs https://eclecticlight.co/downloads/ | grep zip | grep -o -E "$name [0-9.]*" | awk '{print $2}')
expectedTeamID="QWY4LRW926" 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) cryptomator)
name="Cryptomator" name="Cryptomator"
type="dmg" type="dmg"
@@ -1416,7 +1496,14 @@ devonthink)
appNewVersion=$( echo ${downloadURL} | tr '/' '\n' | grep "[0-9]" | grep "[.]" | head -1 ) appNewVersion=$( echo ${downloadURL} | tr '/' '\n' | grep "[0-9]" | grep "[.]" | head -1 )
expectedTeamID="679S2QUWR8" expectedTeamID="679S2QUWR8"
;; ;;
dialpad) dialog)
name="Dialog"
type="pkg"
downloadURL=$(downloadURLFromGit bartreardon Dialog-public )
appNewVersion=$(versionFromGit bartreardon Dialog-public )
expectedTeamID="PWA5E9TQ59"
;;
dialpad)
# credit: @ehosaka # credit: @ehosaka
name="Dialpad" name="Dialpad"
type="dmg" type="dmg"
@@ -1538,7 +1625,12 @@ ferdi)
figma) figma)
name="Figma" name="Figma"
type="zip" type="zip"
downloadURL="https://desktop.figma.com/mac/Figma.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" expectedTeamID="T8RA8NE3B7"
;; ;;
firefox) firefox)
@@ -1620,6 +1712,14 @@ firefoxpkg)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) 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) front)
name="Front" name="Front"
type="dmg" type="dmg"
@@ -1667,11 +1767,11 @@ googlechrome)
if [[ $(arch) != "i386" ]]; then if [[ $(arch) != "i386" ]]; then
printlog "Architecture: arm64 (not i386)" printlog "Architecture: arm64 (not i386)"
downloadURL="https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg" 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 else
printlog "Architecture: i386" printlog "Architecture: i386"
downloadURL="https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg" 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 fi
expectedTeamID="EQHXZ8M8AV" expectedTeamID="EQHXZ8M8AV"
;; ;;
@@ -1791,9 +1891,8 @@ hancock)
handbrake) handbrake)
name="HandBrake" name="HandBrake"
type="dmg" type="dmg"
downloadURL=$(curl --silent --fail "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" \ downloadURL=$(downloadURLFromGit HandBrake HandBrake )
| awk -F '"' "/browser_download_url/ && /dmg/ && ! /sig/ && ! /CLI/ { print \$4 }") appNewVersion=$(versionFromGit HandBrake HandBrake )
appNewVersion=$(curl -sf "https://api.github.com/repos/HandBrake/HandBrake/releases/latest" | awk -F '"' "/tag_name/ { print \$4 }")
expectedTeamID="5X9DE89KYV" expectedTeamID="5X9DE89KYV"
;; ;;
hazel) hazel)
@@ -1839,7 +1938,7 @@ icons)
expectedTeamID="7R5ZEU67FQ" expectedTeamID="7R5ZEU67FQ"
;; ;;
imazingprofileeditor) imazingprofileeditor)
# Credit: Bilal Habib @Pro4TLZZZ # Credit: Bilal Habib @Pro4TLZZ
name="iMazing Profile Editor" name="iMazing Profile Editor"
type="dmg" type="dmg"
downloadURL="https://downloads.imazing.com/mac/iMazing-Profile-Editor/iMazingProfileEditorMac.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)" #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" expectedTeamID="SW3D6BB6A6"
;; ;;
insomnia)
name="insomnia"
type="dmg"
downloadURL=$(downloadURLFromGit kong insomnia)
appNewVersion=$(versionFromGit kong insomnia)
expectedTeamID="FX44YY62GV"
;;
installomator_theile) installomator_theile)
# credit: Søren Theilgaard (@theilgaard) # credit: Søren Theilgaard (@theilgaard)
name="Installomator" name="Installomator"
@@ -1883,7 +1989,7 @@ iterm2)
;; ;;
jabradirect) jabradirect)
name="Jabra Direct" name="Jabra Direct"
type="dmg" type="pkgInDmg"
downloadURL="https://jabraxpressonlineprdstor.blob.core.windows.net/jdo/JabraDirectSetup.dmg" downloadURL="https://jabraxpressonlineprdstor.blob.core.windows.net/jdo/JabraDirectSetup.dmg"
expectedTeamID="55LV32M29R" 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) 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" downloadURL="https://files.jamfconnect.com/JamfConnect.dmg"
expectedTeamID="483DWKW443" expectedTeamID="483DWKW443"
;; ;;
jamfconnectconfiguration)
name="Jamf Connect Configuration"
type="dmg"
downloadURL="https://files.jamfconnect.com/JamfConnect.dmg"
expectedTeamID="483DWKW443"
;;
jamfmigrator) jamfmigrator)
# credit: Mischa van der Bent # credit: Mischa van der Bent
name="jamf-migrator" name="jamf-migrator"
@@ -1919,64 +2031,119 @@ jamfreenroller)
#appNewVersion=$(versionFromGit jamf ReEnroller) #appNewVersion=$(versionFromGit jamf ReEnroller)
expectedTeamID="PS2F6S478M" 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) jetbrainsdatagrip)
# credit: AP Orlebeke (@apizz) name="DataGrip"
name="DataGrip" type="dmg"
type="dmg" jetbrainscode="DG"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3) if [[ $(arch) == i386 ]]; then
if [[ $(arch) == "arm64" ]]; then jetbrainsdistribution="mac"
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'macM1*.*,' | cut -d '"' -f5) elif [[ $(arch) == arm64 ]]; then
elif [[ $(arch) == "i386" ]]; then jetbrainsdistribution="macM1"
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'mac*.*,' | cut -d '"' -f5) fi
fi downloadURL="https://download.jetbrains.com/product?code=${jetbrainscode}&latest&distribution=${jetbrainsdistribution}"
expectedTeamID="2ZEFAR8TH3" appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
;;jetbrainsintellijidea) expectedTeamID="2ZEFAR8TH3"
# credit: Gabe Marchan (gabemarchan.com - @darklink87) ;;
jetbrainsintellijidea)
name="IntelliJ IDEA" name="IntelliJ IDEA"
type="dmg" type="dmg"
downloadURL="https://download.jetbrains.com/product?code=II&latest&distribution=mac" jetbrainscode="II"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=II&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3) 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" expectedTeamID="2ZEFAR8TH3"
;; ;;
jetbrainsintellijideace|\ jetbrainsintellijideace|\
intellijideace) intellijideace)
name="IntelliJ IDEA CE" name="IntelliJ IDEA CE"
type="dmg" type="dmg"
downloadURL="https://download.jetbrains.com/product?code=IIC&latest&distribution=mac" jetbrainscode="IIC"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=IIC&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3) 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" expectedTeamID="2ZEFAR8TH3"
;; ;;
jetbrainsphpstorm) jetbrainsphpstorm)
# credit: Casey Jensen (@cajenson01 on MacAdmins Slack)Appended by Skylar Damiano @catdad on MacAdmins Slack name="PHPStorm"
name="JetBrains PHPStorm"
type="dmg" 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) jetbrainscode="PS"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PS&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3) 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" expectedTeamID="2ZEFAR8TH3"
;; ;;
jetbrainspycharm) jetbrainspycharm)
# This is the Pro version of PyCharm. # This is the Pro version of PyCharm. Do not confuse with PyCharm CE.
# Do not confuse with PyCharm CE.
name="PyCharm" name="PyCharm"
type="dmg" type="dmg"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PCP&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3) jetbrainscode="PCP"
if [[ $(arch) == i386 ]]; then jetbrainsdistribution="mac"
downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=mac" if [[ $(arch) == arm64 ]]; then
elif [[ $(arch) == arm64 ]]; then jetbrainsdistribution="macM1"
downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=macM1"
fi 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" expectedTeamID="2ZEFAR8TH3"
;; ;;
jetbrainspycharmce|\ jetbrainspycharmce|\
pycharmce) pycharmce)
name="PyCharm CE" name="PyCharm CE"
type="dmg" type="dmg"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=PCC&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3) jetbrainscode="PCC"
if [[ $(arch) == i386 ]]; then jetbrainsdistribution="mac"
downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=mac" if [[ $(arch) == arm64 ]]; then
elif [[ $(arch) == arm64 ]]; then jetbrainsdistribution="macM1"
downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=macM1"
fi 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" expectedTeamID="2ZEFAR8TH3"
;; ;;
karabinerelements) karabinerelements)
@@ -2006,6 +2173,12 @@ keka)
appNewVersion=$(versionFromGit aonez Keka) appNewVersion=$(versionFromGit aonez Keka)
expectedTeamID="4FG648TM2A" 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) keyboardmaestro)
# credit: Søren Theilgaard (@theilgaard) # credit: Søren Theilgaard (@theilgaard)
name="Keyboard Maestro" name="Keyboard Maestro"
@@ -2103,8 +2276,10 @@ lucifer)
lulu) lulu)
name="LuLu" name="LuLu"
type="dmg" type="dmg"
downloadURL=$( curl -fs "https://objective-see.com/products/lulu.html" | grep https | grep "$type" | head -1 | tr '"' "\n" | grep "^http" ) #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' ) #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" expectedTeamID="VBG97UB4TA"
;; ;;
macfuse) macfuse)
@@ -2152,6 +2327,14 @@ microsoftautoupdate)
#updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" #updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
#updateToolArguments=( --install --apps MSau04 ) #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) microsoftcompanyportal)
name="Company Portal" name="Company Portal"
type="pkg" type="pkg"
@@ -2229,6 +2412,7 @@ microsoftofficebusinesspro)
name="MicrosoftOfficeBusinessPro" name="MicrosoftOfficeBusinessPro"
type="pkg" type="pkg"
downloadURL="https://go.microsoft.com/fwlink/?linkid=2009112" 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" expectedTeamID="UBF8T346G9"
# using MS PowerPoint as the 'stand-in' for the entire suite # using MS PowerPoint as the 'stand-in' for the entire suite
appName="Microsoft PowerPoint.app" appName="Microsoft PowerPoint.app"
@@ -2310,10 +2494,8 @@ microsoftteams)
type="pkg" type="pkg"
packageID="com.microsoft.teams" packageID="com.microsoft.teams"
downloadURL="https://go.microsoft.com/fwlink/?linkid=869428" 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/') 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" expectedTeamID="UBF8T346G9"
blockingProcesses=( Teams "Microsoft Teams Helper" ) blockingProcesses=( Teams "Microsoft Teams Helper" )
# Commenting out msupdate as it is not really supported *yet* for teams # 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" downloadURL="https://desktop.miro.com/platforms/darwin/Miro.dmg"
expectedTeamID="M3GM7MFY7U" expectedTeamID="M3GM7MFY7U"
;; ;;
montereyblocker)
name="montereyblocker"
type="pkg"
packageID="dk.envo-it.montereyblocker"
downloadURL=$(downloadURLFromGit Theile montereyblocker )
appNewVersion=$(versionFromGit Theile montereyblocker )
expectedTeamID="FXW6QXBFW5"
;;
musescore) musescore)
name="MuseScore 3" name="MuseScore 3"
type="dmg" type="dmg"
@@ -2365,6 +2555,13 @@ musescore)
appNewVersion=$(versionFromGit musescore MuseScore) appNewVersion=$(versionFromGit musescore MuseScore)
expectedTeamID="6EPAF2X3PR" 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) netnewswire)
name="NetNewsWire" name="NetNewsWire"
type="zip" type="zip"
@@ -2544,6 +2741,12 @@ pacifist)
downloadURL="https://charlessoft.com/cgi-bin/pacifist_download.cgi?type=dmg" downloadURL="https://charlessoft.com/cgi-bin/pacifist_download.cgi?type=dmg"
expectedTeamID="HRLUCP7QP4" expectedTeamID="HRLUCP7QP4"
;; ;;
parsec)
name="Parsec"
type="pkg"
downloadURL="https://builds.parsecgaming.com/package/parsec-macos.pkg"
expectedTeamID="Y9MY52XZDB"
;;
pdfsam) pdfsam)
name="PDFsam Basic" name="PDFsam Basic"
type="dmg" type="dmg"
@@ -2551,6 +2754,13 @@ pdfsam)
appNewVersion=$(versionFromGit torakiki pdfsam) appNewVersion=$(versionFromGit torakiki pdfsam)
expectedTeamID="8XM3GHX436" 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) pitch)
name="Pitch" name="Pitch"
type="dmg" type="dmg"
@@ -2565,12 +2775,13 @@ plantronicshub)
appNewVersion=$(curl -fs "https://www.poly.com/in/en/support/knowledge-base/kb-article-page?lang=en_US&urlName=Hub-Release-Notes&type=Product_Information__kav" | grep -o "(*.*<span>)" | head -1 | cut -d "(" -f2 | sed 's/\<\/span\>//g' | cut -d "<" -f1) appNewVersion=$(curl -fs "https://www.poly.com/in/en/support/knowledge-base/kb-article-page?lang=en_US&urlName=Hub-Release-Notes&type=Product_Information__kav" | grep -o "(*.*<span>)" | head -1 | cut -d "(" -f2 | sed 's/\<\/span\>//g' | cut -d "<" -f1)
;; ;;
platypus) platypus)
name="Platypus" name="Platypus"
type="zip" type="zip"
downloadURL=$(downloadURLFromGit sveinbjornt Platypus) downloadURL=$(downloadURLFromGit sveinbjornt Platypus)
appNewVersion=$(versionFromGit sveinbjornt Platypus) appNewVersion=$(versionFromGit sveinbjornt Platypus)
expectedTeamID="55GP2M789L" expectedTeamID="55GP2M789L"
;;plisteditpro) ;;
plisteditpro)
name="PlistEdit Pro" name="PlistEdit Pro"
type="zip" type="zip"
downloadURL="https://www.fatcatsoftware.com/plisteditpro/PlistEditPro.zip" downloadURL="https://www.fatcatsoftware.com/plisteditpro/PlistEditPro.zip"
@@ -2589,7 +2800,6 @@ prism9)
type="dmg" type="dmg"
downloadURL="https://cdn.graphpad.com/downloads/prism/9/InstallPrism9.dmg" downloadURL="https://cdn.graphpad.com/downloads/prism/9/InstallPrism9.dmg"
expectedTeamID="YQ2D36NS9M" expectedTeamID="YQ2D36NS9M"
Company="GraphPad Software"
;; ;;
privileges) privileges)
# credit: Erik Stam (@erikstam) # credit: Erik Stam (@erikstam)
@@ -2722,11 +2932,19 @@ rocketchat)
expectedTeamID="S6UPZG7ZR3" expectedTeamID="S6UPZG7ZR3"
blockingProcesses=( Rocket.Chat ) 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) royaltsx)
name="Royal TSX" name="Royal TSX"
type="dmg" 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) 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-v4.royalapps.com/updates_stable | xpath '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 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" expectedTeamID="VXP8K9EDP6"
;; ;;
rstudio) rstudio)
@@ -2746,37 +2964,34 @@ santa)
expectedTeamID="EQHXZ8M8AV" expectedTeamID="EQHXZ8M8AV"
;; ;;
scaleft) scaleft)
name="ScaleFT" name="ScaleFT"
type="pkg" type="pkg"
downloadURL="https://dist.scaleft.com/client-tools/mac/latest/ScaleFT.pkg" downloadURL="https://dist.scaleft.com/client-tools/mac/latest/ScaleFT.pkg"
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') 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" expectedTeamID="HV2G9Z3RP5"
blockingProcesses=( ScaleFT ) blockingProcesses=( ScaleFT )
;;screamingfrogseospider) ;;
screamingfrogseospider)
name="Screaming Frog SEO Spider" name="Screaming Frog SEO Spider"
type="dmg" 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" expectedTeamID="CAHEVC3HZC"
;; ;;
screencloudplayer) screencloudplayer)
# credit: AP Orlebeke (@apizz) # credit: AP Orlebeke (@apizz)
name="ScreenCloud Player" name="ScreenCloud Player"
type="dmg" type="dmg"
downloadURL=$(curl -sL "https://screencloud.com/download" | sed -n 's/^.*"url":"\([^"]*\)".*$/\1/p') downloadURL=$(curl -sL "https://screencloud.com/download" | sed -n 's/^.*"url":"\([^"]*\)".*$/\1/p')
expectedTeamID="3C4F953K6P" expectedTeamID="3C4F953K6P"
;;screenflick) ;;
screenflick)
# credit: Gabe Marchan (gabemarchan.com - @darklink87) # credit: Gabe Marchan (gabemarchan.com - @darklink87)
name="Screenflick" name="Screenflick"
type="zip" type="zip"
downloadURL="https://www.araelium.com/screenflick/downloads/Screenflick.zip" downloadURL="https://www.araelium.com/screenflick/downloads/Screenflick.zip"
expectedTeamID="28488A87JB" expectedTeamID="28488A87JB"
;; ;;
sfsymbols)
name="SF Symbols"
type="pkgInDmg"
downloadURL="https://developer.apple.com/design/downloads/SF-Symbols.dmg"
expectedTeamID="Software Update"
;;
shield) shield)
# credit: Søren Theilgaard (@theilgaard) # credit: Søren Theilgaard (@theilgaard)
name="Shield" name="Shield"
@@ -2825,12 +3040,12 @@ sizeup)
expectedTeamID="GVZ7RF955D" expectedTeamID="GVZ7RF955D"
;; ;;
sketch) sketch)
name="Sketch" name="Sketch"
type="zip" type="zip"
downloadURL=$(curl -sf https://www.sketch.com/downloads/mac/ | grep 'href="https://download.sketch.com' | sed -E 's/.*href=\"(.*)\".?/\1/g') downloadURL=$(curl -sf https://www.sketch.com/downloads/mac/ | grep 'href="https://download.sketch.com' | sed -E 's/.*href=\"(.*)\".?/\1/g')
appNewVersion=$(curl -fs https://www.sketch.com/updates/ | grep "Sketch Version" | head -1 | sed -E 's/.*Version ([0-9.]*)<.*/\1/g') # version from update page appNewVersion=$(curl -fs https://www.sketch.com/updates/ | grep "Sketch Version" | head -1 | sed -E 's/.*Version ([0-9.]*)<.*/\1/g') # version from update page
expectedTeamID="WUGMZZ5K46" expectedTeamID="WUGMZZ5K46"
;; ;;
skype) skype)
name="Skype" name="Skype"
type="dmg" type="dmg"
@@ -2843,14 +3058,16 @@ slack)
name="Slack" name="Slack"
type="dmg" type="dmg"
downloadURL="https://slack.com/ssb/download-osx-universal" # Universal downloadURL="https://slack.com/ssb/download-osx-universal" # Universal
# if [[ $(arch) == "arm64" ]]; then appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | cut -d "/" -f6 )
# 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' )
expectedTeamID="BQR82RBBHL" 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|\ snagit|\
snagit2021|\ snagit2021|\
snagit2020) snagit2020)
@@ -2887,10 +3104,20 @@ sourcetree)
appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/Sourcetree_([0-9.]*)_[0-9]*\.zip/\1/g') appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/Sourcetree_([0-9.]*)_[0-9]*\.zip/\1/g')
expectedTeamID="UPXU4CQZ5P" expectedTeamID="UPXU4CQZ5P"
;; ;;
splashtopsos)
name="Splashtop SOS"
type="dmg"
downloadURL="https://download.splashtop.com/sos/SplashtopSOS.dmg"
expectedTeamID="CPQQ3AW49Y"
;;
spotify) spotify)
name="Spotify" name="Spotify"
type="dmg" type="dmg"
downloadURL="https://download.scdn.co/Spotify.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 # 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" 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" downloadURL="https://updates.cdn-apple.com/2019/cert/061-41823-20191025-5efc5a59-d7dc-46d3-9096-396bb8cb4a73/SwiftRuntimeForCommandLineTools.dmg"
expectedTeamID="Software Update" 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) tableaudesktop)
name="Tableau Desktop" name="Tableau Desktop"
type="pkgInDmg" type="pkgInDmg"
@@ -2940,6 +3174,13 @@ tableaureader)
downloadURL="https://www.tableau.com/downloads/reader/mac" downloadURL="https://www.tableau.com/downloads/reader/mac"
expectedTeamID="QJ4XPRK37C" 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) taskpaper)
# credit: Drew Diver (@grumpydrew on MacAdmins Slack) # credit: Drew Diver (@grumpydrew on MacAdmins Slack)
name="TaskPaper" name="TaskPaper"
@@ -3024,12 +3265,6 @@ thunderbird)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( thunderbird ) 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) toggltrack)
name="Toggl Track" name="Toggl Track"
type="dmg" type="dmg"
@@ -3037,6 +3272,13 @@ toggltrack)
appNewVersion=$(versionFromGit toggl-open-source toggldesktop ) appNewVersion=$(versionFromGit toggl-open-source toggldesktop )
expectedTeamID="B227VTMZ94" 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) torbrowser)
# credit: Søren Theilgaard (@theilgaard) # credit: Søren Theilgaard (@theilgaard)
name="Tor Browser" 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" ) 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" expectedTeamID="J6MMHGD9D6"
;; ;;
utm)
name="UTM"
type="dmg"
downloadURL=$(downloadURLFromGit utmapp UTM )
appNewVersion=$(versionFromGit utmapp UTM )
expectedTeamID="WDNLXAD4W8"
;;
vagrant) vagrant)
# credit: AP Orlebeke (@apizz) # credit: AP Orlebeke (@apizz)
name="Vagrant" name="Vagrant"
@@ -3148,11 +3397,10 @@ vlc)
expectedTeamID="75GAHG3SZQ" expectedTeamID="75GAHG3SZQ"
;; ;;
vmwarehorizonclient) vmwarehorizonclient)
# credit: Oh4sh0 https://github.com/Oh4sh0
name="VMware Horizon Client" name="VMware Horizon Client"
type="dmg" 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) 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 -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/') 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" expectedTeamID="EG7KH642X6"
;; ;;
vscodium) vscodium)
@@ -3166,6 +3414,14 @@ vscodium)
appName="VSCodium.app" appName="VSCodium.app"
blockingProcesses=( Electron ) 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|\ webex|\
webexteams) webexteams)
# credit: Erik Stam (@erikstam) # credit: Erik Stam (@erikstam)
@@ -3188,13 +3444,6 @@ webexmeetings)
#blockingProcessesMaxCPU="5" #blockingProcessesMaxCPU="5"
blockingProcesses=( Webex ) 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) whatsapp)
name="WhatsApp" name="WhatsApp"
type="dmg" type="dmg"
@@ -3254,6 +3503,14 @@ xquartz)
appNewVersion=$(versionFromGit XQuartz XQuartz) appNewVersion=$(versionFromGit XQuartz XQuartz)
expectedTeamID="NA574AWV7E" 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) yubikeymanagerqt)
# credit: Tadayuki Onishi (@kenchan0130) # credit: Tadayuki Onishi (@kenchan0130)
name="YubiKey Manager GUI" name="YubiKey Manager GUI"
@@ -3269,14 +3526,29 @@ zappy)
downloadURL="https://zappy.zapier.com/releases/zappy-latest.zip" downloadURL="https://zappy.zapier.com/releases/zappy-latest.zip"
expectedTeamID="6LS97Q5E79" 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) zoom)
# credit: Isaac Ordonez, Mann consulting (@mannconsulting) name="zoom.us"
name="Zoom.us"
type="pkg" type="pkg"
downloadURL="https://zoom.us/client/latest/ZoomInstallerIT.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" expectedTeamID="BJ4HAAB9B3"
blockingProcesses=( zoom.us )
;; ;;
zoomclient) zoomclient)
name="zoom.us" name="zoom.us"
@@ -3292,15 +3564,22 @@ zoomclient)
blockingProcesses=( zoom.us ) blockingProcesses=( zoom.us )
#blockingProcessesMaxCPU="5" #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) zoomrooms)
   name="ZoomRooms" name="ZoomRooms"
   type="pkg" type="pkg"
   packageID="us.zoom.pkg.zp" packageID="us.zoom.pkg.zp"
   downloadURL="https://zoom.us/client/latest/ZoomRooms.pkg" downloadURL="https://zoom.us/client/latest/ZoomRooms.pkg"
   appNewVersion="$(curl -fsIL ${downloadURL} | grep -i location | cut -d "/" -f5)" appNewVersion="$(curl -fsIL ${downloadURL} | grep -i location | cut -d "/" -f5)"
   expectedTeamID="BJ4HAAB9B3" expectedTeamID="BJ4HAAB9B3"
blockingProcesses=( "ZoomPresence" ) blockingProcesses=( "ZoomPresence" )
   ;; ;;
zulujdk11) zulujdk11)
name="Zulu JDK 11" name="Zulu JDK 11"
type="pkgInDmg" type="pkgInDmg"
@@ -3341,18 +3620,18 @@ zulujdk15)
appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
;; ;;
zulujdk8) zulujdk8)
name="Zulu JDK 8" name="Zulu JDK 8"
type="pkgInDmg" type="pkgInDmg"
packageID="com.azulsystems.zulu.8" packageID="com.azulsystems.zulu.8"
if [[ $(arch) == i386 ]]; then if [[ $(arch) == i386 ]]; then
downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*x64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1) downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*x64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1)
elif [[ $(arch) == arm64 ]]; then elif [[ $(arch) == arm64 ]]; then
downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*aarch64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1) downloadURL=https://cdn.azul.com/zulu/bin/$(curl -fs "https://cdn.azul.com/zulu/bin/" | grep -Eio '">zulu8.*ca-jdk8.*aarch64.dmg(.*)' | cut -c3- | sed 's/<\/a>//' | sed -E 's/([0-9.]*)M//' | awk '{print $2 $1}' | sort | cut -c11- | tail -1)
fi fi
expectedTeamID="TDTHCUPYFR" expectedTeamID="TDTHCUPYFR"
appCustomVersion(){ if [ -f "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" ]; then /usr/bin/defaults read "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" "CFBundleName" | sed 's/Zulu //'; fi } appCustomVersion(){ if [ -f "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" ]; then /usr/bin/defaults read "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" "CFBundleName" | sed 's/Zulu //'; fi }
appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
;; ;;
*) *)
# unknown label # unknown label
#printlog "unknown label $label" #printlog "unknown label $label"

View File

@@ -58,6 +58,7 @@ cisdem-documentreader
citrixworkspace citrixworkspace
clevershare2 clevershare2
clickshare clickshare
cloudya
code42 code42
coderunner coderunner
colourcontrastanalyser colourcontrastanalyser
@@ -74,7 +75,7 @@ depnotify
desktoppr desktoppr
detectxswift detectxswift
devonthink devonthink
dialpad dialog
discord discord
docker docker
drift drift
@@ -134,9 +135,11 @@ istatmenus
iterm2 iterm2
jabradirect jabradirect
jamfconnect jamfconnect
jamfconnectconfiguration
jamfmigrator jamfmigrator
jamfpppcutility jamfpppcutility
jamfreenroller jamfreenroller
jetbrainsclion
jetbrainsdatagrip jetbrainsdatagrip
jetbrainsintellijidea jetbrainsintellijidea
jetbrainsintellijideace jetbrainsintellijideace
@@ -144,6 +147,7 @@ jetbrainsphpstorm
jetbrainspycharm jetbrainspycharm
jetbrainspycharmce jetbrainspycharmce
jetbrainstoolbox jetbrainstoolbox
jetbrainswebstorm
karabinerelements karabinerelements
keepassxc keepassxc
keka keka
@@ -188,6 +192,7 @@ microsoftvisualstudiocode
microsoftword microsoftword
microsoftyammer microsoftyammer
miro miro
montereyblocker
musescore musescore
muzzle muzzle
netnewswire netnewswire
@@ -215,6 +220,7 @@ opera
pacifist pacifist
parsec parsec
pdfsam pdfsam
perimeter81
pitch pitch
plantronicshub plantronicshub
platypus platypus
@@ -276,6 +282,7 @@ swiftruntimeforcommandlinetools
sync sync
tableaudesktop tableaudesktop
tableaureader tableaureader
tageditor
taskpaper taskpaper
teamviewer teamviewer
teamviewerhost teamviewerhost
@@ -288,6 +295,7 @@ theunarchiver
things things
thunderbird thunderbird
toggltrack toggltrack
tom4aconverter
torbrowser torbrowser
trex trex
tunnelbear tunnelbear
@@ -295,6 +303,7 @@ tunnelblick
umbrellaroamingclient umbrellaroamingclient
uniconverter uniconverter
universaltypeclient universaltypeclient
utm
vagrant vagrant
vanilla vanilla
veracrypt veracrypt

View File

@@ -1,7 +1,5 @@
# Installomator # Installomator
__Please note, that if you are contributing to this project with new labels or other suggestions in PRs, please put your changes in the fragmented files, not the full `Installomator.sh` script. The full script is now a build of the fragments, and will be overwritten.__
_The one installer script to rule them all._ _The one installer script to rule them all._
![](https://img.shields.io/github/v/release/scriptingosx/Installomator)&nbsp;![](https://img.shields.io/github/downloads/scriptingosx/Installomator/latest/total)&nbsp;![](https://img.shields.io/badge/macOS-10.14%2B-success)&nbsp;![](https://img.shields.io/github/license/scriptingosx/Installomator) ![](https://img.shields.io/github/v/release/scriptingosx/Installomator)&nbsp;![](https://img.shields.io/github/downloads/scriptingosx/Installomator/latest/total)&nbsp;![](https://img.shields.io/badge/macOS-10.14%2B-success)&nbsp;![](https://img.shields.io/github/license/scriptingosx/Installomator)
@@ -14,6 +12,8 @@ I have put a lot of work into making it stable and safe, but I cannot - of cours
## Support and Contributing ## Support and Contributing
__Please note, that if you are contributing to this project with new labels or other suggestions in PRs, please put your changes in the fragmented files, not the full `Installomator.sh` script. The full script is now a build of the fragments, and will be overwritten. See the REAMDME.md file in the `utils` directory for detailed instructions.__
Discussion, support and advice around Installomator happens in the `#installomator` channel in the [MacAdmins.org Slack](https://macadmins.org). Go there for support questions. Discussion, support and advice around Installomator happens in the `#installomator` channel in the [MacAdmins.org Slack](https://macadmins.org). Go there for support questions.
Do not create an issue just when you have a questions, but do file an issue or pull request (PR) for bugs or wrong behavior. When in doubt, ask in the above Slack channel. Do not create an issue just when you have a questions, but do file an issue or pull request (PR) for bugs or wrong behavior. When in doubt, ask in the above Slack channel.
@@ -87,7 +87,7 @@ Installomator can work with the following common archive and installer types:
- dmg: for the common 'drag app to /Applications' installation style - dmg: for the common 'drag app to /Applications' installation style
- zip: the application is just compressed with zip or or tbz - zip: the application is just compressed with zip or or tbz
When the download yields a pkg file, Installomator will run `installer` to install it on the current system. When the download yields a pkg file, Installomator will run `installer` to install it on the current system.
Applications in dmgs or zips will be copied to `/Applications` and their owner will be set to the current user, so the install works like a standard drag'n drop installation. Applications in dmgs or zips will be copied to `/Applications` and their owner will be set to the current user, so the install works like a standard drag'n drop installation.
@@ -236,7 +236,7 @@ WARNING! It might block the MDM agent on the machine, as the scripts gets stuct
- `tell_user_then_kill`: Show dialog 2 times, and if the quitting fails, the blocking processes will be killed. - `tell_user_then_kill`: Show dialog 2 times, and if the quitting fails, the blocking processes will be killed.
- `kill`: kill process without prompting or giving the user a chance to save. - `kill`: kill process without prompting or giving the user a chance to save.
If any process was closed, Installomator will try to open the app again, after the update process is done. If any process was closed, Installomator will try to open the app again, after the update process is done.
### Notification ### Notification
@@ -350,7 +350,7 @@ Depending on the application or pkg there are a few more variables you can or ne
dmg or zip: dmg or zip:
Applications will be copied to this directory. Applications will be copied to this directory.
Default value is '`/Applications`' for dmg and zip installations. Default value is '`/Applications`' for dmg and zip installations.
pkg: pkg:
`targetDir` is used as the install-location. Default is '`/`'. `targetDir` is used as the install-location. Default is '`/`'.
- `blockingProcesses`: (optional) - `blockingProcesses`: (optional)
@@ -375,7 +375,7 @@ Depending on the application or pkg there are a few more variables you can or ne
e.g. `msupdate` (see microsoft installations) e.g. `msupdate` (see microsoft installations)
- `updateToolRunAsCurrentUser`: - `updateToolRunAsCurrentUser`:
When this variable is set (any value), `$updateTool` will be run as the current user. Default is unset and When this variable is set (any value), `$updateTool` will be run as the current user. Default is unset and
### Configuration from Arguments ### Configuration from Arguments

View File

@@ -4,4 +4,4 @@ airtame)
downloadURL="$(curl -fs https://airtame.com/download/ | grep -i platform=mac | head -1 | grep -o -i -E "https.*" | cut -d '"' -f1)" 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')" appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i ^location | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g')"
expectedTeamID="4TPSP88HN2" expectedTeamID="4TPSP88HN2"
;; ;;

View File

@@ -4,4 +4,4 @@ applenyfonts)
downloadURL="https://devimages-cdn.apple.com/design/resources/download/NY.dmg" downloadURL="https://devimages-cdn.apple.com/design/resources/download/NY.dmg"
packageID="com.apple.pkg.NYFonts" packageID="com.apple.pkg.NYFonts"
expectedTeamID="Development Update" expectedTeamID="Development Update"
;; ;;

View File

@@ -4,4 +4,4 @@ applesfcompact)
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg"
packageID="com.apple.pkg.SanFranciscoCompact" packageID="com.apple.pkg.SanFranciscoCompact"
expectedTeamID="Development Update" expectedTeamID="Development Update"
;; ;;

View File

@@ -4,4 +4,4 @@ applesfmono)
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg" downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg"
packageID="com.apple.pkg.SFMonoFonts" packageID="com.apple.pkg.SFMonoFonts"
expectedTeamID="Software Update" expectedTeamID="Software Update"
;; ;;

View File

@@ -4,4 +4,4 @@ applesfpro)
downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" downloadURL="https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg"
packageID="com.apple.pkg.SanFranciscoPro" packageID="com.apple.pkg.SanFranciscoPro"
expectedTeamID="Development Update" expectedTeamID="Development Update"
;; ;;

View File

@@ -4,4 +4,4 @@ sfsymbols)
type="pkgInDmg" type="pkgInDmg"
downloadURL="https://developer.apple.com/design/downloads/SF-Symbols.dmg" downloadURL="https://developer.apple.com/design/downloads/SF-Symbols.dmg"
expectedTeamID="Software Update" expectedTeamID="Software Update"
;; ;;

View File

@@ -3,4 +3,4 @@ boxsync)
type="dmg" type="dmg"
downloadURL="https://e3.boxcdn.net/box-installers/sync/Sync+4+External/Box%20Sync%20Installer.dmg" downloadURL="https://e3.boxcdn.net/box-installers/sync/Sync+4+External/Box%20Sync%20Installer.dmg"
expectedTeamID="M683GB7CPW" expectedTeamID="M683GB7CPW"
;; ;;

View File

@@ -3,4 +3,4 @@ boxtools)
type="pkg" type="pkg"
downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg" downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg"
expectedTeamID="M683GB7CPW" expectedTeamID="M683GB7CPW"
;; ;;

View File

@@ -4,4 +4,4 @@ cisdem-documentreader)
downloadURL="https://download.cisdem.com/cisdem-documentreader.dmg" downloadURL="https://download.cisdem.com/cisdem-documentreader.dmg"
expectedTeamID="5HGV8EX6BQ" expectedTeamID="5HGV8EX6BQ"
appName="Cisdem Document Reader.app" appName="Cisdem Document Reader.app"
;; ;;

View File

@@ -4,4 +4,4 @@ clevershare2)
downloadURL=$(curl -fs https://www.clevertouch.com/eu/clevershare2g | grep -i -o -E "https.*Mac.*\.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' ) appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z-]*_Mac\.([0-9.]*)\.[0-9]*\.dmg$/\1/g' )
expectedTeamID="P76M9BE8DQ" expectedTeamID="P76M9BE8DQ"
;; ;;

View File

@@ -5,4 +5,4 @@ colourcontrastanalyser)
appNewVersion=$(versionFromGit ThePacielloGroup CCAe) appNewVersion=$(versionFromGit ThePacielloGroup CCAe)
expectedTeamID="34RS4UC3M6" expectedTeamID="34RS4UC3M6"
blockingProcesses=( NONE ) blockingProcesses=( NONE )
;; ;;

View File

@@ -5,4 +5,4 @@ craftmanager)
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)" 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)" 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" expectedTeamID="VRXQSNCL5W"
;; ;;

View File

@@ -5,4 +5,4 @@ flowjo)
appNewVersion=$(echo "${downloadURL}" | tr "-" "\n" | grep dmg | sed -E 's/([0-9.]*)\.dmg/\1/g') appNewVersion=$(echo "${downloadURL}" | tr "-" "\n" | grep dmg | sed -E 's/([0-9.]*)\.dmg/\1/g')
expectedTeamID="C79HU5AD9V" expectedTeamID="C79HU5AD9V"
appName="FlowJo.app" appName="FlowJo.app"
;; ;;

View File

@@ -4,4 +4,4 @@ insomnia)
downloadURL=$(downloadURLFromGit kong insomnia) downloadURL=$(downloadURLFromGit kong insomnia)
appNewVersion=$(versionFromGit kong insomnia) appNewVersion=$(versionFromGit kong insomnia)
expectedTeamID="FX44YY62GV" expectedTeamID="FX44YY62GV"
;; ;;

View File

@@ -0,0 +1,6 @@
jamfconnectconfiguration)
name="Jamf Connect Configuration"
type="dmg"
downloadURL="https://files.jamfconnect.com/JamfConnect.dmg"
expectedTeamID="483DWKW443"
;;

View File

@@ -0,0 +1,12 @@
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"
;;

View File

@@ -1,11 +1,13 @@
jetbrainsdatagrip) jetbrainsdatagrip)
name="DataGrip" name="DataGrip"
type="dmg" type="dmg"
appNewVersion=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'version*.*,' | cut -d '"' -f3) jetbrainscode="DG"
if [[ $(arch) == "arm64" ]]; then if [[ $(arch) == i386 ]]; then
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'macM1*.*,' | cut -d '"' -f5) jetbrainsdistribution="mac"
elif [[ $(arch) == "i386" ]]; then elif [[ $(arch) == arm64 ]]; then
downloadURL=$(curl -fs "https://data.services.jetbrains.com/products/releases?code=DG&latest=true&type=release" | grep -o 'mac*.*,' | cut -d '"' -f5) jetbrainsdistribution="macM1"
fi 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" expectedTeamID="2ZEFAR8TH3"
;; ;;

View File

@@ -1,7 +1,13 @@
jetbrainsintellijidea) jetbrainsintellijidea)
name="IntelliJ IDEA" name="IntelliJ IDEA"
type="dmg" type="dmg"
downloadURL="https://download.jetbrains.com/product?code=II&latest&distribution=mac" 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' ) appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3" expectedTeamID="2ZEFAR8TH3"
;; ;;

View File

@@ -2,7 +2,13 @@ jetbrainsintellijideace|\
intellijideace) intellijideace)
name="IntelliJ IDEA CE" name="IntelliJ IDEA CE"
type="dmg" type="dmg"
downloadURL="https://download.jetbrains.com/product?code=IIC&latest&distribution=mac" 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' ) appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3" expectedTeamID="2ZEFAR8TH3"
;; ;;

View File

@@ -1,7 +1,13 @@
jetbrainsphpstorm) jetbrainsphpstorm)
name="PHPStorm" name="PHPStorm"
type="dmg" type="dmg"
downloadURL="https://download.jetbrains.com/product?code=PS&latest&distribution=mac" 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' ) appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3" expectedTeamID="2ZEFAR8TH3"
;; ;;

View File

@@ -2,11 +2,12 @@ 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" name="PyCharm"
type="dmg" type="dmg"
if [[ $(arch) == i386 ]]; then jetbrainscode="PCP"
downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=mac" jetbrainsdistribution="mac"
elif [[ $(arch) == arm64 ]]; then if [[ $(arch) == arm64 ]]; then
downloadURL="https://download.jetbrains.com/product?code=PCP&latest&distribution=macM1" jetbrainsdistribution="macM1"
fi 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' ) appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3" expectedTeamID="2ZEFAR8TH3"
;; ;;

View File

@@ -2,11 +2,12 @@ jetbrainspycharmce|\
pycharmce) pycharmce)
name="PyCharm CE" name="PyCharm CE"
type="dmg" type="dmg"
if [[ $(arch) == i386 ]]; then jetbrainscode="PCC"
downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=mac" jetbrainsdistribution="mac"
elif [[ $(arch) == arm64 ]]; then if [[ $(arch) == arm64 ]]; then
downloadURL="https://download.jetbrains.com/product?code=PCC&latest&distribution=macM1" jetbrainsdistribution="macM1"
fi 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' ) appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3" expectedTeamID="2ZEFAR8TH3"
;; ;;

View File

@@ -1,11 +1,12 @@
jetbrainstoolbox) jetbrainstoolbox)
name="JetBrains Toolbox" name="JetBrains Toolbox"
type="dmg" type="dmg"
if [[ $(arch) == i386 ]]; then jetbrainscode="TBA"
downloadURL="https://download.jetbrains.com/product?code=TB&latest&distribution=mac" jetbrainsdistribution="mac"
elif [[ $(arch) == arm64 ]]; then if [[ $(arch) == arm64 ]]; then
downloadURL="https://download.jetbrains.com/product?code=TB&latest&distribution=macM1" jetbrainsdistribution="macM1"
fi 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' ) appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' )
expectedTeamID="2ZEFAR8TH3" expectedTeamID="2ZEFAR8TH3"
;; ;;

View File

@@ -0,0 +1,12 @@
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"
;;

View File

@@ -10,4 +10,4 @@ microsoftteams)
# Commenting out msupdate as it is not really supported *yet* for teams # Commenting out msupdate as it is not really supported *yet* for teams
# updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" # updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate"
# updateToolArguments=( --install --apps TEAM01 ) # updateToolArguments=( --install --apps TEAM01 )
;; ;;

View File

@@ -4,4 +4,4 @@ muzzle)
downloadURL="https://muzzleapp.com/binaries/muzzle.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') 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" expectedTeamID="49EYHPJ4Q3"
;; ;;

View File

@@ -3,4 +3,4 @@ parsec)
type="pkg" type="pkg"
downloadURL="https://builds.parsecgaming.com/package/parsec-macos.pkg" downloadURL="https://builds.parsecgaming.com/package/parsec-macos.pkg"
expectedTeamID="Y9MY52XZDB" expectedTeamID="Y9MY52XZDB"
;; ;;

View File

@@ -0,0 +1,7 @@
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"
;;

View File

@@ -4,4 +4,4 @@ platypus)
downloadURL=$(downloadURLFromGit sveinbjornt Platypus) downloadURL=$(downloadURLFromGit sveinbjornt Platypus)
appNewVersion=$(versionFromGit sveinbjornt Platypus) appNewVersion=$(versionFromGit sveinbjornt Platypus)
expectedTeamID="55GP2M789L" expectedTeamID="55GP2M789L"
;; ;;

View File

@@ -3,4 +3,4 @@ prism9)
type="dmg" type="dmg"
downloadURL="https://cdn.graphpad.com/downloads/prism/9/InstallPrism9.dmg" downloadURL="https://cdn.graphpad.com/downloads/prism/9/InstallPrism9.dmg"
expectedTeamID="YQ2D36NS9M" expectedTeamID="YQ2D36NS9M"
;; ;;

View File

@@ -5,4 +5,4 @@ ringcentralclassicapp)
expectedTeamID="M932RC5J66" expectedTeamID="M932RC5J66"
blockingProcesses=( "Glip" ) blockingProcesses=( "Glip" )
#blockingProcessesMaxCPU="5" #blockingProcessesMaxCPU="5"
;; ;;

View File

@@ -4,4 +4,4 @@ royaltsx)
downloadURL=$(curl -fs https://royaltsx-v5.royalapps.com/updates_stable | xpath '//rss/channel/item[1]/enclosure/@url' 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) 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" expectedTeamID="VXP8K9EDP6"
;; ;;

View File

@@ -4,4 +4,4 @@ screencloudplayer)
type="dmg" type="dmg"
downloadURL=$(curl -sL "https://screencloud.com/download" | sed -n 's/^.*"url":"\([^"]*\)".*$/\1/p') downloadURL=$(curl -sL "https://screencloud.com/download" | sed -n 's/^.*"url":"\([^"]*\)".*$/\1/p')
expectedTeamID="3C4F953K6P" expectedTeamID="3C4F953K6P"
;; ;;

View File

@@ -4,4 +4,4 @@ sketch)
downloadURL=$(curl -sf https://www.sketch.com/downloads/mac/ | grep 'href="https://download.sketch.com' | sed -E 's/.*href=\"(.*)\".?/\1/g') downloadURL=$(curl -sf https://www.sketch.com/downloads/mac/ | grep 'href="https://download.sketch.com' | sed -E 's/.*href=\"(.*)\".?/\1/g')
appNewVersion=$(curl -fs https://www.sketch.com/updates/ | grep "Sketch Version" | head -1 | sed -E 's/.*Version ([0-9.]*)<.*/\1/g') # version from update page appNewVersion=$(curl -fs https://www.sketch.com/updates/ | grep "Sketch Version" | head -1 | sed -E 's/.*Version ([0-9.]*)<.*/\1/g') # version from update page
expectedTeamID="WUGMZZ5K46" expectedTeamID="WUGMZZ5K46"
;; ;;

View File

@@ -5,4 +5,4 @@ skype)
appNewVersion=$(curl -is "https://get.skype.com/go/getskype-skypeformac" | grep ocation: | grep -o "Skype-.*dmg" | cut -d "-" -f 2 | cut -d "." -f1-2) appNewVersion=$(curl -is "https://get.skype.com/go/getskype-skypeformac" | grep ocation: | grep -o "Skype-.*dmg" | cut -d "-" -f 2 | cut -d "." -f1-2)
expectedTeamID="AL798K98FX" expectedTeamID="AL798K98FX"
Company="Microsoft" Company="Microsoft"
;; ;;

View File

@@ -5,4 +5,4 @@ snagit2020)
type="dmg" type="dmg"
downloadURL="https://download.techsmith.com/snagitmac/releases/Snagit.dmg" downloadURL="https://download.techsmith.com/snagitmac/releases/Snagit.dmg"
expectedTeamID="7TQL462TU8" expectedTeamID="7TQL462TU8"
;; ;;

View File

@@ -0,0 +1,7 @@
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"
;;

View File

@@ -0,0 +1,7 @@
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"
;;

View File

@@ -6,4 +6,4 @@ zoomrooms)
appNewVersion="$(curl -fsIL ${downloadURL} | grep -i location | cut -d "/" -f5)" appNewVersion="$(curl -fsIL ${downloadURL} | grep -i location | cut -d "/" -f5)"
expectedTeamID="BJ4HAAB9B3" expectedTeamID="BJ4HAAB9B3"
blockingProcesses=( "ZoomPresence" ) blockingProcesses=( "ZoomPresence" )
;; ;;

View File

@@ -10,4 +10,4 @@ zulujdk8)
expectedTeamID="TDTHCUPYFR" expectedTeamID="TDTHCUPYFR"
appCustomVersion(){ if [ -f "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" ]; then /usr/bin/defaults read "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" "CFBundleName" | sed 's/Zulu //'; fi } appCustomVersion(){ if [ -f "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" ]; then /usr/bin/defaults read "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Info.plist" "CFBundleName" | sed 's/Zulu //'; fi }
appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything appNewVersion=$(echo "$downloadURL" | cut -d "-" -f 1 | sed -e "s/.*zulu//") # Cannot be compared to anything
;; ;;

View File

@@ -1 +1 @@
0.7.0b1 0.8.0