mirror of
https://github.com/mtan93/Installomator.git
synced 2026-03-08 05:31:53 +00:00
preparing for 10beta1 release
This commit is contained in:
185
Installomator.sh
185
Installomator.sh
@@ -81,7 +81,6 @@ LOGO=appstore
|
||||
# - mosylem Mosyle Manager (Education)
|
||||
# - addigy Addigy
|
||||
# - microsoft Microsoft Endpoint Manager (Intune)
|
||||
# - ws1 Workspace ONE (AirWatch)
|
||||
# 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).
|
||||
@@ -303,8 +302,8 @@ if [[ $(/usr/bin/arch) == "arm64" ]]; then
|
||||
rosetta2=no
|
||||
fi
|
||||
fi
|
||||
VERSION="10.0beta"
|
||||
VERSIONDATE="2022-05-19"
|
||||
VERSION="10.0beta1"
|
||||
VERSIONDATE="2022-08-12"
|
||||
|
||||
# MARK: Functions
|
||||
|
||||
@@ -330,7 +329,7 @@ cleanupAndExit() { # $1 = exit code, $2 message, $3 level
|
||||
printlog "$2" $3
|
||||
fi
|
||||
printlog "################## End Installomator, exit code $1 \n" REQ
|
||||
|
||||
|
||||
# if label is wrong and we wanted name of the label, then return ##################
|
||||
if [[ $RETURN_LABEL_NAME -eq 1 ]]; then
|
||||
1=0 # If only label name should be returned we exit without any errors
|
||||
@@ -368,13 +367,10 @@ displaydialogContinue() { # $1: message $2: title
|
||||
displaynotification() { # $1: message $2: title
|
||||
message=${1:-"Message"}
|
||||
title=${2:-"Notification"}
|
||||
hubcli="/usr/local/bin/hubcli"
|
||||
manageaction="/Library/Application Support/JAMF/bin/Management Action.app/Contents/MacOS/Management Action"
|
||||
|
||||
if [[ -x "$manageaction" ]]; then
|
||||
"$manageaction" -message "$message" -title "$title"
|
||||
elif [[ -x "$hubcli" ]]; then
|
||||
"$hubcli" notify -t "$title" -i "$message" -c "Dismiss"
|
||||
else
|
||||
runAsUser osascript -e "display notification \"$message\" with title \"$title\""
|
||||
fi
|
||||
@@ -467,11 +463,11 @@ downloadURLFromGit() { # $1 git user name, $2 git repo name
|
||||
fi
|
||||
|
||||
if [ -n "$archiveName" ]; then
|
||||
downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
|
||||
| awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }")
|
||||
#downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }")
|
||||
downloadURL=https://github.com$(curl -sL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -o "\/$gitusername\/$gitreponame.*$archiveName.*")
|
||||
else
|
||||
downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" \
|
||||
| awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
|
||||
#downloadURL=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }")
|
||||
downloadURL=https://github.com$(curl -sL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -o "\/$gitusername\/$gitreponame.*\.$filetype")
|
||||
fi
|
||||
if [ -z "$downloadURL" ]; then
|
||||
cleanupAndExit 9 "could not retrieve download URL for $gitusername/$gitreponame" ERROR
|
||||
@@ -487,7 +483,8 @@ versionFromGit() {
|
||||
gitusername=${1?:"no git user name"}
|
||||
gitreponame=${2?:"no git repo name"}
|
||||
|
||||
appNewVersion=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g')
|
||||
#appNewVersion=$(curl -L --silent --fail "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | grep tag_name | cut -d '"' -f 4 | sed 's/[^0-9\.]//g')
|
||||
appNewVersion=$(curl -sLI "https://github.com/$gitusername/$gitreponame/releases/latest" | grep -i "^location" | tr "/" "\n" | tail -1 | sed 's/[^0-9\.]//g')
|
||||
if [ -z "$appNewVersion" ]; then
|
||||
printlog "could not retrieve version number for $gitusername/$gitreponame" WARN
|
||||
appNewVersion=""
|
||||
@@ -510,6 +507,16 @@ xpath() {
|
||||
fi
|
||||
}
|
||||
|
||||
# from @Pico: https://macadmins.slack.com/archives/CGXNNJXJ9/p1652222365989229?thread_ts=1651786411.413349&cid=CGXNNJXJ9
|
||||
getJSONValue() {
|
||||
# $1: JSON string OR file path to parse (tested to work with up to 1GB string and 2GB file).
|
||||
# $2: JSON key path to look up (using dot or bracket notation).
|
||||
printf '%s' "$1" | /usr/bin/osascript -l 'JavaScript' \
|
||||
-e "let json = $.NSString.alloc.initWithDataEncoding($.NSFileHandle.fileHandleWithStandardInput.readDataToEndOfFile$(/usr/bin/uname -r | /usr/bin/awk -F '.' '($1 > 18) { print "AndReturnError(ObjC.wrap())" }'), $.NSUTF8StringEncoding)" \
|
||||
-e 'if ($.NSFileManager.defaultManager.fileExistsAtPath(json)) json = $.NSString.stringWithContentsOfFileEncodingError(json, $.NSUTF8StringEncoding, ObjC.wrap())' \
|
||||
-e "const value = JSON.parse(json.js)$([ -n "${2%%[.[]*}" ] && echo '.')$2" \
|
||||
-e 'if (typeof value === "object") { JSON.stringify(value, null, 4) } else { value }'
|
||||
}
|
||||
|
||||
getAppVersion() {
|
||||
# modified by: Søren Theilgaard (@theilgaard) and Isaac Ordonez
|
||||
@@ -1375,10 +1382,11 @@ adobecreativeclouddesktop)
|
||||
name="Adobe Creative Cloud"
|
||||
#appName="Install.app"
|
||||
type="dmg"
|
||||
adobeurl="https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html"
|
||||
if [[ $(arch) == "arm64" ]]; then
|
||||
downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*macarm64.*dmg" | cut -d '"' -f1 | head -1)
|
||||
downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'osx10')][contains(text(),'Download')]/@href)" - 2> /dev/null)
|
||||
elif [[ $(arch) == "i386" ]]; then
|
||||
downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*osx10.*dmg" | cut -d '"' -f1 | head -1)
|
||||
downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'macarm64')][contains(text(),'Download')]/@href)" - 2> /dev/null)
|
||||
fi
|
||||
#downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*dmg" | head -1)
|
||||
appNewVersion=$(curl -fs "https://helpx.adobe.com/creative-cloud/release-note/cc-release-notes.html" | grep "mandatory" | head -1 | grep -o "Version *.* released" | cut -d " " -f2)
|
||||
@@ -1747,7 +1755,11 @@ 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 -m1 .dmg)
|
||||
if [[ $(arch) == "arm64" ]]; then
|
||||
downloadURL=$(curl -sfL "https://www.blender.org/download/" | xmllint --html --format - 2>/dev/null | grep -o "https://.*blender.*arm64.*.dmg" | sed '2p;d' | sed 's/www.blender.org\/download/download.blender.org/g')
|
||||
elif [[ $(arch) == "i386" ]]; then
|
||||
downloadURL=$(curl -sfL "https://www.blender.org/download/" | xmllint --html --format - 2>/dev/null | grep -o "https://.*blender.*x64.*.dmg" | sed '2p;d' | sed 's/www.blender.org\/download/download.blender.org/g')
|
||||
fi
|
||||
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
|
||||
expectedTeamID="68UA947AUU"
|
||||
;;
|
||||
@@ -1762,6 +1774,18 @@ bluejeans)
|
||||
appNewVersion=$(echo $downloadURL | cut -d '/' -f6)
|
||||
expectedTeamID="HE4P42JBGN"
|
||||
;;
|
||||
bluejeanswithaudiodriver)
|
||||
name="BlueJeans"
|
||||
type="pkg"
|
||||
if [[ $(arch) == "arm64" ]]; then
|
||||
downloadURL=$(curl -fs "https://www.bluejeans.com/downloads" | xmllint --html --format - 2>/dev/null | grep -o "https://.*BlueJeans.*Installer.*arm.*.pkg" )
|
||||
elif [[ $(arch) == "i386" ]]; then
|
||||
downloadURL=$(curl -fs "https://www.bluejeans.com/downloads" | xmllint --html --format - 2>/dev/null | grep -o "https://.*BlueJeansInstaller.*x86.*.dmg" | sed 's/dmg/pkg/g')
|
||||
fi
|
||||
appNewVersion=$(echo $downloadURL | cut -d '/' -f6)
|
||||
choiceChangesXML='<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><array><dict><key>attributeSetting</key><integer>1</integer><key>choiceAttribute</key><string>selected</string><key>choiceIdentifier</key><string>com.tatvikmohit.BlueJeans-Audio</string></dict></array></plist>'
|
||||
expectedTeamID="HE4P42JBGN"
|
||||
;;
|
||||
boxdrive)
|
||||
name="Box"
|
||||
type="pkg"
|
||||
@@ -1911,10 +1935,10 @@ clevershare2)
|
||||
expectedTeamID="P76M9BE8DQ"
|
||||
;;
|
||||
clickshare)
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="ClickShare"
|
||||
type="appInDmgInZip"
|
||||
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 -A6 -i "macos" | grep -i "FileNumber" | tr '"' "\n" | grep -i "FileNumber" )"
|
||||
appNewVersion="$(eval "$( echo $downloadURL | sed -E 's/.*(MajorVersion.*BuildVersion=[0-9]*).*/\1/' | sed 's/&//g' )" ; ((MajorVersion++)) ; ((MajorVersion--)); ((MinorVersion++)) ; ((MinorVersion--)); ((PatchVersion++)) ; ((PatchVersion--)); ((BuildVersion++)) ; ((BuildVersion--)); echo "${MajorVersion}.${MinorVersion}.${PatchVersion}-b${BuildVersion}")"
|
||||
expectedTeamID="P6CDJZR997"
|
||||
;;
|
||||
clipy)
|
||||
@@ -2193,6 +2217,15 @@ duckduckgo)
|
||||
appNewVersion=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/sparkle:shortVersionString)[1]' 2>/dev/null | cut -d ">" -f2 | cut -d "<" -f1)
|
||||
expectedTeamID="HKE973VLUW"
|
||||
;;
|
||||
duodevicehealth)
|
||||
name="Duo Device Health"
|
||||
type="pkgInDmg"
|
||||
downloadURL="https://dl.duosecurity.com/DuoDeviceHealth-latest.dmg"
|
||||
appNewVersion=$(curl -fsLIXGET "https://dl.duosecurity.com/DuoDeviceHealth-latest.dmg" | grep -i "^content-disposition" | sed -e 's/.*filename\=\"DuoDeviceHealth\-\(.*\)\.dmg\".*/\1/')
|
||||
appName="Duo Device Health.app"
|
||||
expectedTeamID="FNN8Z5JMFP"
|
||||
;;
|
||||
|
||||
easeusdatarecoverywizard)
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="EaseUS Data Recovery Wizard"
|
||||
@@ -2213,6 +2246,7 @@ egnyte)
|
||||
name="Egnyte Connect"
|
||||
type="pkg"
|
||||
downloadURL="https://egnyte-cdn.egnyte.com/egnytedrive/mac/en-us/latest/EgnyteConnectMac.pkg"
|
||||
appNewVersion=$(curl -fs "https://egnyte-cdn.egnyte.com/egnytedrive/mac/en-us/versions/default.xml" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' | cut -d '"' -f 2)
|
||||
expectedTeamID="FELUD555VC"
|
||||
blockingProcesses=( NONE )
|
||||
;;
|
||||
@@ -2343,7 +2377,8 @@ firefox)
|
||||
name="Firefox"
|
||||
type="dmg"
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
|
||||
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
|
||||
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
|
||||
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
|
||||
@@ -2352,7 +2387,8 @@ firefox_da)
|
||||
name="Firefox"
|
||||
type="dmg"
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=da"
|
||||
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
|
||||
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
|
||||
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
printlog "WARNING for ERROR: Label firefox, firefox_da and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
|
||||
@@ -2378,7 +2414,8 @@ firefox_intl)
|
||||
printlog "Download not found for '$userLanguage', using default ('en-US')."
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-latest-ssl&os=osx"
|
||||
fi
|
||||
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"/"); print a[1]}')
|
||||
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
|
||||
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
|
||||
@@ -2388,7 +2425,8 @@ firefoxesrpkg)
|
||||
name="Firefox"
|
||||
type="pkg"
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-esr-pkg-latest-ssl&os=osx"
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*releases\/([0-9.]*)esr.*/\1/g')
|
||||
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
|
||||
appNewVersion=$(getJSONValue "$firefoxVersions" "FIREFOX_ESR")
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
;;
|
||||
@@ -2413,7 +2451,8 @@ firefoxesr_intl)
|
||||
printlog "Download not found for '$userLanguage', using default ('en-US')."
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-esr-latest-ssl&os=osx"
|
||||
fi
|
||||
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"esr/"); print a[1]}')
|
||||
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
|
||||
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
|
||||
@@ -2422,7 +2461,8 @@ firefoxpkg)
|
||||
name="Firefox"
|
||||
type="pkg"
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
|
||||
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
|
||||
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
|
||||
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
;;
|
||||
@@ -2446,7 +2486,8 @@ firefoxpkg_intl)
|
||||
printlog "Download not found for that language. Using en-US" WARN
|
||||
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
|
||||
fi
|
||||
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location | cut -d "/" -f7)
|
||||
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
|
||||
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
|
||||
expectedTeamID="43AQ936H96"
|
||||
blockingProcesses=( firefox )
|
||||
;;
|
||||
@@ -2536,6 +2577,16 @@ googlechrome)
|
||||
expectedTeamID="EQHXZ8M8AV"
|
||||
printlog "WARNING for ERROR: Label googlechrome should not be used. Instead use googlechromepkg as per recommendations from Google. It's not fully certain that the app actually gets updated here. googlechromepkg will have built in updates and make sure the client is updated in the future." REQ
|
||||
;;
|
||||
googlechromeenterprise)
|
||||
name="Google Chrome"
|
||||
type="pkg"
|
||||
downloadURL="https://dl.google.com/dl/chrome/mac/universal/stable/gcem/GoogleChrome.pkg"
|
||||
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}')
|
||||
expectedTeamID="EQHXZ8M8AV"
|
||||
updateTool="/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent"
|
||||
updateToolArguments=( -runMode oneshot -userInitiated YES )
|
||||
updateToolRunAsCurrentUser=1
|
||||
;;
|
||||
googlechromepkg)
|
||||
name="Google Chrome"
|
||||
type="pkg"
|
||||
@@ -2555,9 +2606,14 @@ googledrivefilestream)
|
||||
# credit: Isaac Ordonez, Mann consulting (@mannconsulting)
|
||||
name="Google Drive File Stream"
|
||||
type="pkgInDmg"
|
||||
packageID="com.google.drivefs"
|
||||
if [[ $(arch) == "arm64" ]]; then
|
||||
packageID="com.google.drivefs.arm64"
|
||||
elif [[ $(arch) == "i386" ]]; then
|
||||
packageID="com.google.drivefs.x86_64"
|
||||
fi
|
||||
downloadURL="https://dl.google.com/drive-file-stream/GoogleDriveFileStream.dmg" # downloadURL="https://dl.google.com/drive-file-stream/GoogleDrive.dmg"
|
||||
blockingProcesses=( "Google Docs" "Google Drive" "Google Sheets" "Google Slides" )
|
||||
appName="Google Drive.app"
|
||||
expectedTeamID="EQHXZ8M8AV"
|
||||
;;
|
||||
googledrivebackupandsync)
|
||||
@@ -2618,9 +2674,8 @@ grammarly)
|
||||
name="Grammarly Desktop"
|
||||
type="dmg"
|
||||
packageID="com.grammarly.ProjectLlama"
|
||||
downloadURL=$(curl -fsL "https://download-mac.grammarly.com/appcast.xml" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2)
|
||||
downloadURL="https://download-mac.grammarly.com/Grammarly.dmg"
|
||||
expectedTeamID="W8F64X92K3"
|
||||
appNewVersion=$(curl -is "https://download-mac.grammarly.com/appcast.xml" | grep sparkle:version | tr ',' '\n' | grep sparkle:version | cut -d '"' -f 4)
|
||||
# appName="Grammarly Installer.app"
|
||||
installerTool="Grammarly Installer.app"
|
||||
CLIInstaller="Grammarly Installer.app/Contents/MacOS/Grammarly Desktop"
|
||||
@@ -2803,6 +2858,14 @@ installomator_theile)
|
||||
expectedTeamID="JME5BW3F3R"
|
||||
blockingProcesses=( NONE )
|
||||
;;
|
||||
ipswupdater)
|
||||
name="IPSW Updater"
|
||||
type="zip"
|
||||
ipswupdaterVersions=$(curl -fs "https://ipsw.app/download/updates.php?current_version=0.9.16")
|
||||
downloadURL=$(getJSONValue "$ipswupdaterVersions" "[0].url")
|
||||
appNewVersion=$(getJSONValue "$ipswupdaterVersions" "[0].version")
|
||||
expectedTeamID="YRW6NUGA63"
|
||||
;;
|
||||
istatmenus)
|
||||
# credit: AP Orlebeke (@apizz)
|
||||
name="iStat Menus"
|
||||
@@ -3244,6 +3307,7 @@ marathon)
|
||||
name="Marathon"
|
||||
type="dmg"
|
||||
archiveName="Marathon-[0-9.]*-Mac.dmg"
|
||||
versionKey="CFBundleVersion"
|
||||
downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)"
|
||||
appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)"
|
||||
expectedTeamID="E8K89CXZE7"
|
||||
@@ -3252,6 +3316,7 @@ marathon2)
|
||||
name="Marathon 2"
|
||||
type="dmg"
|
||||
archiveName="Marathon2-[0-9.]*-Mac.dmg"
|
||||
versionKey="CFBundleVersion"
|
||||
downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)"
|
||||
appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)"
|
||||
expectedTeamID="E8K89CXZE7"
|
||||
@@ -3260,6 +3325,7 @@ marathoninfinity)
|
||||
name="Marathon Infinity"
|
||||
type="dmg"
|
||||
archiveName="MarathonInfinity-[0-9.]*-Mac.dmg"
|
||||
versionKey="CFBundleVersion"
|
||||
downloadURL="$(downloadURLFromGit Aleph-One-Marathon alephone)"
|
||||
appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)"
|
||||
expectedTeamID="E8K89CXZE7"
|
||||
@@ -3569,9 +3635,21 @@ miro)
|
||||
# credit: @matins
|
||||
name="Miro"
|
||||
type="dmg"
|
||||
downloadURL="https://desktop.miro.com/platforms/darwin/Miro.dmg"
|
||||
if [[ $(arch) == arm64 ]]; then
|
||||
downloadURL="https://desktop.miro.com/platforms/darwin-arm64/Miro.dmg"
|
||||
elif [[ $(arch) == i386 ]]; then
|
||||
downloadURL="https://desktop.miro.com/platforms/darwin/Miro.dmg"
|
||||
fi
|
||||
expectedTeamID="M3GM7MFY7U"
|
||||
;;
|
||||
mmhmm)
|
||||
name="mmhmm"
|
||||
type="pkg"
|
||||
downloadURL="https://updates.mmhmm.app/mac/mmhmm.pkg"
|
||||
curlOptions=( -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15" )
|
||||
appNewVersion=$(curl -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15" -fs "https://help.mmhmm.app/hc/en-us/articles/4420969712151-mmhmm-for-Mac" | grep 'The latest version of mmhmm for Mac is <strong>*' | sed -e 's/.*\<strong\>\(.*\)\.\<\/strong\>.*/\1/')
|
||||
expectedTeamID="M3KUT44L48"
|
||||
;;
|
||||
mobikinassistantforandroid)
|
||||
name="MobiKin Assistant for Android"
|
||||
type="dmg"
|
||||
@@ -3733,16 +3811,24 @@ nomadlogin)
|
||||
appNewVersion=$(curl -fs https://nomad.menu/support/ | grep "NoMAD Login AD Downloads" | sed -E 's/.*Current Version ([0-9\.]*)<.*/\1/g')
|
||||
expectedTeamID="AAPZK3CB24"
|
||||
;;
|
||||
nordlayer)
|
||||
# credit: Taboc741 (https://github.com/taboc741)
|
||||
name="NordLayer"
|
||||
type="pkg"
|
||||
downloadURL="https://downloads.nordlayer.com/mac/latest/NordLayer.pkg"
|
||||
expectedTeamID="W5W395V82Y"
|
||||
;;
|
||||
notion)
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="Notion"
|
||||
type="dmg"
|
||||
if [[ $(arch) == "arm64" ]]; then
|
||||
downloadURL="https://www.notion.so/desktop/apple-silicon/download"
|
||||
appNewVersion=$( curl -fsIL "https://www.notion.so/desktop/apple-silicon/download" | grep -i "^location" | awk '{print $2}' | sed -e 's/.*Notion\-\(.*\)\-arm64.dmg.*/\1/' )
|
||||
elif [[ $(arch) == "i386" ]]; then
|
||||
downloadURL="https://www.notion.so/desktop/mac/download"
|
||||
appNewVersion=$( curl -fsIL "https://www.notion.so/desktop/mac/download" | grep -i "^location" | awk '{print $2}' | sed -e 's/.*Notion\-\(.*\).dmg.*/\1/' )
|
||||
fi
|
||||
appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | tr -d '\r\n' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
|
||||
expectedTeamID="LBQJ96FQ8D"
|
||||
;;
|
||||
nudge)
|
||||
@@ -4062,6 +4148,13 @@ proxyman)
|
||||
appNewVersion="$(versionFromGit ProxymanApp Proxyman)"
|
||||
expectedTeamID="3X57WP8E8V"
|
||||
;;
|
||||
prune)
|
||||
name="Prune"
|
||||
type="zip"
|
||||
downloadURL=$(downloadURLFromGit BIG-RAT Prune)
|
||||
appNewVersion=$(versionFromGit BIG-RAT Prune)
|
||||
expectedTeamID="PS2F6S478M"
|
||||
;;
|
||||
pymol)
|
||||
name="PyMOL"
|
||||
type="dmg"
|
||||
@@ -4170,7 +4263,7 @@ ricohpsprinters)
|
||||
;;
|
||||
ringcentralapp)
|
||||
# credit: Isaac Ordonez, Mann consulting (@mannconsulting)
|
||||
name="Ringcentral"
|
||||
name="RingCentral"
|
||||
type="pkg"
|
||||
if [[ $(arch) != "i386" ]]; then
|
||||
downloadURL="https://app.ringcentral.com/download/RingCentral-arm64.pkg"
|
||||
@@ -4178,7 +4271,7 @@ ringcentralapp)
|
||||
downloadURL="https://app.ringcentral.com/download/RingCentral.pkg"
|
||||
fi
|
||||
expectedTeamID="M932RC5J66"
|
||||
blockingProcesses=( "Ringcentral" )
|
||||
blockingProcesses=( "RingCentral" )
|
||||
;;
|
||||
ringcentralclassicapp)
|
||||
name="Glip"
|
||||
@@ -4521,7 +4614,7 @@ sublimetext)
|
||||
# credit: Søren Theilgaard (@theilgaard)
|
||||
name="Sublime Text"
|
||||
type="zip"
|
||||
downloadURL="$(curl -fs https://www.sublimetext.com/download | grep -io "https://download.*_mac.zip")"
|
||||
downloadURL="$(curl -fs "https://www.sublimetext.com/download_thanks?target=mac#direct-downloads" | grep -io "https://download.*_mac.zip" | head -1)"
|
||||
appNewVersion=$(curl -fs https://www.sublimetext.com/download | grep -i -A 4 "id.*changelog" | grep -io "Build [0-9]*")
|
||||
expectedTeamID="Z6D26JE4Y4"
|
||||
;;
|
||||
@@ -4600,14 +4693,16 @@ tageditor)
|
||||
talkdeskcallbar)
|
||||
name="Callbar"
|
||||
type="dmg"
|
||||
appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*$/\1/p')
|
||||
talkdeskcallbarVersions=$(curl -fsL "https://downloadcallbar.talkdesk.com/release_metadata.json")
|
||||
appNewVersion=$(getJSONValue "$talkdeskcallbarVersions" "version")
|
||||
downloadURL=https://downloadcallbar.talkdesk.com/Callbar-${appNewVersion}.dmg
|
||||
expectedTeamID="YGGJX44TB8"
|
||||
;;
|
||||
talkdeskcxcloud)
|
||||
name="Talkdesk"
|
||||
type="dmg"
|
||||
appNewVersion=$(curl -fs https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-latest-metadata.json | sed -n -e 's/^.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*$/\1/p' | head -n 1)
|
||||
talkdeskcxcloudVersions=$(curl -fs "https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-latest-metadata.json")
|
||||
appNewVersion=$(getJSONValue "$talkdeskcxcloudVersions" "[0].version")
|
||||
downloadURL="https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-${appNewVersion}.dmg"
|
||||
expectedTeamID="YGGJX44TB8"
|
||||
;;
|
||||
@@ -4955,6 +5050,13 @@ wechat)
|
||||
downloadURL="https://dldir1.qq.com/weixin/mac/WeChatMac.dmg"
|
||||
expectedTeamID="5A4RE8SF68"
|
||||
;;
|
||||
whatroute)
|
||||
name="WhatRoute"
|
||||
type="zip"
|
||||
downloadURL="$(curl -fs https://www.whatroute.net/whatroute2appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f2)"
|
||||
appNewVersion="$(curl -fs https://www.whatroute.net/whatroute2appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f2)"
|
||||
expectedTeamID="H5879E8LML"
|
||||
;;
|
||||
whatsapp)
|
||||
name="WhatsApp"
|
||||
type="dmg"
|
||||
@@ -4980,12 +5082,12 @@ wickrpro)
|
||||
wireshark)
|
||||
name="Wireshark"
|
||||
type="dmg"
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20Latest%20Intel%2064.dmg"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20Latest%20Arm%2064.dmg"
|
||||
fi
|
||||
appNewVersion=$(curl -fs https://www.wireshark.org/download.html | grep -i "href.*_stable" | sed -E 's/.*\(([0-9.]*)\).*/\1/g')
|
||||
if [[ $(arch) == i386 ]]; then
|
||||
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20$appNewVersion%20Intel%2064.dmg"
|
||||
elif [[ $(arch) == arm64 ]]; then
|
||||
downloadURL="https://1.as.dl.wireshark.org/osx/Wireshark%20$appNewVersion%20Arm%2064.dmg"
|
||||
fi
|
||||
expectedTeamID="7Z6EMTD2C6"
|
||||
;;
|
||||
wordservice)
|
||||
@@ -5268,11 +5370,6 @@ case $LOGO in
|
||||
LOGO="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
|
||||
if [[ -z $MDMProfileName ]]; then; MDMProfileName="Management Profile"; fi
|
||||
;;
|
||||
ws1)
|
||||
# Workspace ONE
|
||||
LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
|
||||
if [[ -z $MDMProfileName ]]; then; MDMProfileName="Device Manager"; fi
|
||||
;;
|
||||
esac
|
||||
if [[ ! -a "${LOGO}" ]]; then
|
||||
if [[ $(sw_vers -buildVersion) > "19" ]]; then
|
||||
|
||||
Reference in New Issue
Block a user