diff --git a/CHANGELOG.md b/CHANGELOG.md index f4d3ff6..0bc345c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,62 @@ +## v10beta2 + +- fixed problem with GitHub labels (#659) +- bz2 archive support (#659) +- fixed WorkspaceOne support (#653) + +Plus everything from v10beta1 + +- new labels: + - abetterfinderrename11 (#552) + - carboncopycloner (#553) + - cocoapods (#659) + - coconutbattery (#588) + - cricutdesignspace (#562) + - dynalist (#591) + - fellow (#591) + - flexoptixapp (#554) + - googleadseditor (#652, #541) + - kap (#568) + - keepingyouawake (#549) + - lcadvancedvpnclient (#584) + - masv (#569) + - merlinproject (#555) + - mongodbcompass (#654) + - netspot (#556) + - relatel (#619) + - sonicvisualiser (#575) + - strongdm (#559) + - synologyassistant (#557) + - synologydriveclient (#582) + - tencentmeeting (#570) + - typinator (#583) + - xcreds (#675) +- updated labels: + - acroniscyberprotectconnect/remotix (#664) + - acroniscyberprotectconnectagent/remotixagent (#664) + - awsvpnclient (#586) + - boxtools (#589) + - clevershare2 (#664) + - coderunner (#664) + - colourcontrastanalyser (#664) + - cryptomator (#664) + - dangerzone (#664) + - drawio (#664) + - golang (#664) + - icons (#664) + - insomnia (#664) + - knockknock (#664) + - libreoffice (#672) + - macports + - opera (#664) + - supportapp (#664) + - vmwarehorizonclient (#645, #511) +- deleted/deactivated labels: + - microsoftyammer (#664) + - wickrme (#664) + - wickrpro (#664) + + ## v10beta1 - [swiftDialog](https://github.com/bartreardon/swiftDialog) integration (#641, #632), many thanks to @bartreardon, [sample scripts](in the MDM folder) diff --git a/Installomator.sh b/Installomator.sh index 927b911..53f45f3 100755 --- a/Installomator.sh +++ b/Installomator.sh @@ -80,6 +80,7 @@ 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). @@ -322,7 +323,7 @@ if [[ $(/usr/bin/arch) == "arm64" ]]; then fi fi VERSION="10.0beta2" -VERSIONDATE="2022-08-31" +VERSIONDATE="2022-09-02" # MARK: Functions @@ -390,9 +391,12 @@ displaynotification() { # $1: message $2: title message=${1:-"Message"} title=${2:-"Notification"} manageaction="/Library/Application Support/JAMF/bin/Management Action.app/Contents/MacOS/Management Action" + hubcli="/usr/local/bin/hubcli" 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 @@ -486,10 +490,10 @@ downloadURLFromGit() { # $1 git user name, $2 git repo name 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=https://github.com$(curl -sL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -o "\/$gitusername\/$gitreponame.*$archiveName.*") + downloadURL=https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*$archiveName" | head -1) 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=https://github.com$(curl -sL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -o "\/$gitusername\/$gitreponame.*\.$filetype") + downloadURL=https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1) fi if [ -z "$downloadURL" ]; then cleanupAndExit 14 "could not retrieve download URL for $gitusername/$gitreponame" ERROR @@ -1311,7 +1315,7 @@ updateDialog() { fi # when to cmdfile is set, do nothing - if [[ $$cmd_file == "" ]]; then + if [[ $cmd_file == "" ]]; then return fi @@ -1521,6 +1525,13 @@ valuesfromarguments) appNewVersion=$(curl -fs -L https://support.8x8.com/cloud-phone-service/voice/work-desktop/download-8x8-work-for-desktop | grep -m 1 -o "https.*dmg" | sed 's/\"//' | awk '{print $1}' | sed -E 's/.*-v([0-9\.]*)[-\.]*.*/\1/' ) expectedTeamID="FC967L3QRG" ;; +abetterfinderrename11) + name="A Better Finder Rename 11" + type="dmg" + downloadURL="https://www.publicspace.net/download/ABFRX11.dmg" + appNewVersion=$(curl -fs "https://www.publicspace.net/app/signed_abfr11.xml" | xpath '(//rss/channel/item/enclosure/@sparkle:version)' 2>/dev/null | cut -d '"' -f 2) + expectedTeamID="7Y9KW4ND8W" + ;; abstract) name="Abstract" type="zip" @@ -1528,6 +1539,25 @@ abstract) appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' ) expectedTeamID="77MZLZE47D" ;; +acroniscyberprotectconnect|\ +remotix) + name="Acronis Cyber Protect Connect" + type="dmg" + downloadURL="https://go.acronis.com/AcronisCyberProtectConnect_ForMac" + versionKey="CFBundleVersion" + appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i "^location" | sed -E 's/.*\/[a-zA-Z]*-[0-9.]*-([0-9.]*)\.dmg/\1/g') + expectedTeamID="ZU2TV78AA6" + ;; +acroniscyberprotectconnectagent|\ +remotixagent) + name="Acronis Cyber Protect Connect Agent" + type="pkg" + #packageID="com.nulana.rxagentmac" + downloadURL="https://go.acronis.com/AcronisCyberProtectConnect_AgentForMac" + versionKey="CFBundleVersion" + appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i "^location" | sed -E 's/.*\/[a-zA-Z]*-[0-9.]*-([0-9.]*)\.pkg/\1/g') + expectedTeamID="H629V387SY" + ;; adobebrackets) name="Brackets" type="dmg" @@ -1852,7 +1882,7 @@ awsvpnclient) type="pkg" downloadURL="https://d20adtppz83p9s.cloudfront.net/OSX/latest/AWS_VPN_Client.pkg" expectedTeamID="94KV3E626L" - appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/AWSVPNClient" | grep currentVersion | tr ',' '\n' | grep currentVersion | cut -d '"' -f 4) + #appNewVersion=$(curl -is "https://beta2.communitypatch.com/jamf/v1/ba1efae22ae74a9eb4e915c31fef5dd2/patch/AWSVPNClient" | grep currentVersion | tr ',' '\n' | grep currentVersion | cut -d '"' -f 4) ;; axurerp10) name="Axure RP 10" @@ -1969,6 +1999,7 @@ boxtools) name="Box Tools" type="pkg" downloadURL="https://box-installers.s3.amazonaws.com/boxedit/mac/currentrelease/BoxToolsInstaller.pkg" + packageID="com.box.boxtools.installer.boxedit" expectedTeamID="M683GB7CPW" ;; brave) @@ -2073,6 +2104,13 @@ canva) fi expectedTeamID="5HD2ARTBFS" ;; +carboncopycloner) + name="Carbon Copy Cloner" + type="zip" + downloadURL=$(curl -fsIL "https://bombich.com/software/download_ccc.php?v=latest" | grep -i ^location | sed -E 's/.*(https.*\.zip).*/\1/g') + appNewVersion=$(sed -E 's/.*-([0-9.]*)\.zip/\1/g' <<< $downloadURL | sed 's/\.[^.]*$//') + expectedTeamID="L4F2DED5Q7" + ;; chatwork) name="Chatwork" type="dmg" @@ -2097,8 +2135,9 @@ citrixworkspace) clevershare2) name="Clevershare" type="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' ) + printlog "Label for $name broken in test" ERROR + downloadURL=$(curl -fs https://www.clevertouch.com/eu/clevershare2g | grep -i -o -E "https.*notarized.*\.dmg") + appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/([0-9.]*)\/[0-9]*\/.*\.dmg$/\1/') expectedTeamID="P76M9BE8DQ" ;; clickshare) @@ -2147,6 +2186,20 @@ cluefull) versionKey="CFBundleVersion" expectedTeamID="3NX6B9TB2F" ;; +cocoapods) + name="CocoaPods" + type="bz2" + downloadURL="$(downloadURLFromGit CocoaPods CocoaPods-app)" + appNewVersion="$(versionFromGit CocoaPods CocoaPods-app)" + expectedTeamID="AX2Q2BH2XR" + ;; +coconutbattery) + name="coconutBattery" + type="zip" + downloadURL="https://coconut-flavour.com/downloads/coconutBattery_latest.zip" + appNewVersion=$(curl -fs https://www.coconut-flavour.com/coconutbattery/ | grep "" | sed -e 's/.*coconutBattery \(.*\) - by coconut-flavour.co.*/\1/') + expectedTeamID="R5SC3K86L5" + ;; code42) name="Code42" type="pkgInDmg" @@ -2159,14 +2212,14 @@ code42) blockingProcesses=( NONE ) ;; coderunner) - # credit: Erik Stam (@erikstam) name="CodeRunner" type="zip" downloadURL="https://coderunnerapp.com/download" + appNewVersion=$(curl -fsIL ${downloadURL} | grep -i "^location" | cut -d " " -f2 | sed -E 's/.*CodeRunner-([0-9.]*).zip/\1/') expectedTeamID="R4GD98AJF9" ;; colourcontrastanalyser) - name="Colour Contrast Analyser (CCA)" + name="Colour Contrast Analyser" type="dmg" downloadURL=$(downloadURLFromGit ThePacielloGroup CCAe) appNewVersion=$(versionFromGit ThePacielloGroup CCAe) @@ -2196,9 +2249,22 @@ craftmanagerforsketch) appNewVersion=$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f2) expectedTeamID="VRXQSNCL5W" ;; +cricutdesignspace) + name="Cricut Design Space" + type="dmg" + appNewVersion=$(getJSONValue "$(curl -fsL https://s3-us-west-2.amazonaws.com/staticcontent.cricut.com/a/software/osx-native/latest.json)" "rolloutVersion") + downloadURL=$(getJSONValue $(curl -fsL "https://apis.cricut.com/desktopdownload/InstallerFile?shard=a&operatingSystem=osxnative&fileName=CricutDesignSpace-Install-v${appNewVersion}.dmg") "result") + expectedTeamID="25627ZFVT7" + ;; cryptomator) name="Cryptomator" type="dmg" + if [[ $(arch) == "arm64" ]]; then + archiveName="Cryptomator-[0-9.]*-arm64.dmg" + + elif [[ $(arch) == "i386" ]]; then + archiveName="Cryptomator-[0-9.]*.dmg" + fi downloadURL=$(downloadURLFromGit cryptomator cryptomator) appNewVersion=$(versionFromGit cryptomator cryptomator) expectedTeamID="YZQJQUHA3L" @@ -2220,8 +2286,8 @@ daisydisk) dangerzone) name="Dangerzone" type="dmg" - downloadURL="$(downloadURLFromGit firstlookmedia dangerzone)" - appNewVersion="$(versionFromGit firstlookmedia dangerzone)" + downloadURL="$(downloadURLFromGit freedomofpress dangerzone)" + appNewVersion="$(versionFromGit freedomofpress dangerzone)" expectedTeamID="N9B95FDWH4" ;; darktable) @@ -2354,7 +2420,7 @@ dockutil) drawio) name="draw.io" type="dmg" - archiveName="draw.io-universal-[0-9.]*.dmg" + archiveName="draw.io-universal-[0-9.]*.dmg$" downloadURL="$(downloadURLFromGit jgraph drawio-desktop)" appNewVersion="$(versionFromGit jgraph drawio-desktop)" expectedTeamID="UZEUFB4N53" @@ -2393,6 +2459,13 @@ duodevicehealth) expectedTeamID="FNN8Z5JMFP" ;; +dynalist) + name="Dynalist" + type="dmg" + downloadURL="https://dynalist.io/standalone/download?file=Dynalist.dmg" + appNewVersion="" + expectedTeamID="6JSW4SJWN9" + ;; easeusdatarecoverywizard) # credit: Søren Theilgaard (@theilgaard) name="EaseUS Data Recovery Wizard" @@ -2500,6 +2573,13 @@ favro) appNewVersion="$(curl -fs https://download.favro.com/FavroDesktop/macOS/x64/Latest.html | cut -d ">" -f1 | cut -d "=" -f 4 | cut -d '"' -f1 | sed -E 's/.*-([0-9.]*)\.dmg/\1/g')" expectedTeamID="PUA8Q354ZF" ;; +fellow) + name="Fellow" + type="dmg" + downloadURL="https://cdn.fellow.app/desktop/1.3.11/darwin/stable/universal/Fellow-1.3.11-universal.dmg" + appNewVersion="" + expectedTeamID="2NF46HY8D8" + ;; ferdi) name="Ferdi" type="zip" @@ -2658,6 +2738,13 @@ firefoxpkg_intl) expectedTeamID="43AQ936H96" blockingProcesses=( firefox ) ;; +flexoptixapp) + name="FLEXOPTIX App" + type="dmg" + downloadURL="https://flexbox.reconfigure.me/download/electron/mac/x64/current" + appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i ^location | sed -E 's/.*-([0-9.]*)\.dmg/\1/g') + expectedTeamID="C5JETSFPHL" + ;; flowjo) name="FlowJo-OSX64-10.8.0" type="dmg" @@ -2731,11 +2818,22 @@ golang) name="GoLang" type="pkg" packageID="org.golang.go" - downloadURL="https://go.dev$(curl -fs "https://go.dev/dl/" | grep -i "downloadBox" | grep "pkg" | tr '"' '\n' | grep "pkg")" + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://go.dev$(curl -fs "https://go.dev/dl/" | grep -i "downloadBox" | grep "darwin-arm" | tr '"' '\n' | grep "pkg")" + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://go.dev$(curl -fs "https://go.dev/dl/" | grep -i "downloadBox" | grep "darwin-amd" | tr '"' '\n' | grep "pkg")" + fi appNewVersion="$( echo "${downloadURL}" | sed -E 's/.*\/(go[0-9.]*)\..*/\1/g' )" # Version includes letters "go" in the beginning expectedTeamID="EQHXZ8M8AV" blockingProcesses=( NONE ) ;; +googleadseditor) + name="Google Ads Editor" + type="dmg" + downloadURL="https://dl.google.com/adwords_editor/google_ads_editor.dmg" + appNewVersion="" + expectedTeamID="EQHXZ8M8AV" + ;; googlechrome) name="Google Chrome" type="dmg" @@ -2951,11 +3049,10 @@ ibarcoder) expectedTeamID="JAXVB9AH9M" ;; icons) - # credit: Mischa van der Bent (@mischavdbent) name="Icons" type="zip" - downloadURL=$(downloadURLFromGit sap macOS-icon-generator ) - appNewVersion=$(versionFromGit sap macOS-icon-generator ) + downloadURL=$(downloadURLFromGit SAP macOS-icon-generator ) + appNewVersion=$(versionFromGit SAP macOS-icon-generator ) expectedTeamID="7R5ZEU67FQ" ;; idrive) @@ -3009,10 +3106,12 @@ inkscape) expectedTeamID="SW3D6BB6A6" ;; insomnia) - name="insomnia" + name="Insomnia" type="dmg" - downloadURL=$(downloadURLFromGit kong insomnia) - appNewVersion=$(versionFromGit kong insomnia) + #downloadURL=$(downloadURLFromGit kong insomnia) + downloadURL=$(curl -fs "https://updates.insomnia.rest/downloads/mac/latest?app=com.insomnia.app&source=website" | grep -o "https.*\.dmg") + #appNewVersion=$(versionFromGit kong insomnia) + appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\/Insomnia.Core.([0-9.]*)\.dmg/\1/') expectedTeamID="FX44YY62GV" ;; installomator|\ @@ -3230,6 +3329,20 @@ jetbrainswebstorm) appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "location" | tail -1 | sed -E 's/.*\/[a-zA-Z-]*-([0-9.]*).*[-.].*dmg/\1/g' ) expectedTeamID="2ZEFAR8TH3" ;; +kap) + # credit: Lance Stephens (@pythoninthegrass on MacAdmins Slack) + name="Kap" + type="dmg" + if [[ $(arch) = "i386" ]]; then + archiveName="${name}-[0-9.]*-x64.${type}" + downloadURL=$(downloadURLFromGit wulkano kap | grep -i x64) + else + archiveName="${name}-[0-9.]*-arm64.${type}" + downloadURL=$(downloadURLFromGit wulkano kap | grep -i arm64) + fi + appNewVersion=$(versionFromGit wulkano Kap) + expectedTeamID="2KEEHXF6R6" + ;; karabinerelements) # credit: Tadayuki Onishi (@kenchan0130) name="Karabiner-Elements" @@ -3250,6 +3363,14 @@ keepassxc) appNewVersion=$(versionFromGit keepassxreboot keepassxc) expectedTeamID="G2S7P7J672" ;; +keepingyouawake) + name="KeepingYouAwake" + type="zip" + downloadURL=$(downloadURLFromGit newmarcel KeepingYouAwake) + appNewVersion=$(versionFromGit newmarcel KeepingYouAwake) + expectedTeamID="5KESHV9W85" + blockingProcesses=( "KeepingYouAwake" ) + ;; keka) name="Keka" type="dmg" @@ -3283,8 +3404,8 @@ klokki) knockknock) name="KnockKnock" type="zip" - downloadURL=$( curl -fs "https://objective-see.com/products/knockknock.html" | grep https | grep "$type" | head -1 | tr '"' "\n" | grep "^http" ) - appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)\..*/\1/g' ) + downloadURL="$(downloadURLFromGit objective-see KnockKnock)" + appNewVersion="$(versionFromGit objective-see KnockKnock)" expectedTeamID="VBG97UB4TA" ;; krisp) @@ -3316,6 +3437,13 @@ launchbar) appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' ) expectedTeamID="MLZF7K7B5R" ;; +lcadvancedvpnclient) + name="LANCOM Advanced VPN Client" + type="pkgInDmg" + appNewVersion=$(curl -fs https://www.ncp-e.com/de/service/download-vpn-client/ | grep -m 1 "NCP Secure Entry macOS Client" -A 1 | grep -i Version | sed "s|.*Version \(.*\) Rev.*|\\1|") + downloadURL=$(appShortVersion=`sed 's/[^0-9]//g' <<< $appNewVersion` && echo https://ftp.lancom.de/LANCOM-Releases/LC-VPN-Client/LC-Advanced-VPN-Client-macOS-"${appShortVersion}"-Rel-x86-64.dmg) + expectedTeamID="LL3KBL2M3A" + ;; lexarrecoverytool) name="Lexar Recovery Tool" type="appInDmgInZip" @@ -3326,11 +3454,11 @@ libreoffice) name="LibreOffice" type="dmg" if [[ $(arch) == "arm64" ]]; then - downloadURL="https://download.documentfoundation.org/libreoffice/stable/$(curl -s https://www.libreoffice.org/download/download/ | grep dl_version_number | head -n 1 | cut -d'>' -f3 | cut -d'<' -f1)/mac/aarch64/LibreOffice_$(curl -s https://www.libreoffice.org/download/download/ | grep dl_version_number | head -n 1 | cut -d'>' -f3 | cut -d'<' -f1)_MacOS_aarch64.dmg" - elif [[ $(arch) == "i386" ]]; then - downloadURL="https://download.documentfoundation.org/libreoffice/stable/$(curl -s https://www.libreoffice.org/download/download/ | grep dl_version_number | head -n 1 | cut -d'>' -f3 | cut -d'<' -f1)/mac/x86_64/LibreOffice_$(curl -s https://www.libreoffice.org/download/download/ | grep dl_version_number | head -n 1 | cut -d'>' -f3 | cut -d'<' -f1)_MacOS_x86-64.dmg" + arch_type="aarch64" fi - appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)_.*/\1/g' ) + libreoffice_latest_version="$(curl -Ls https://www.libreoffice.org/download/download-libreoffice/ | grep dl_version_number | head -n 1 | cut -d'>' -f3 | cut -d'<' -f1)" + downloadURL="https://download.documentfoundation.org/libreoffice/stable/${libreoffice_latest_version}/mac/${arch_type:-x86_64}/LibreOffice_${libreoffice_latest_version}_MacOS_${arch_type:-x86-64}.dmg" + appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*_([0-9.]*)_.*/\1/g') expectedTeamID="7P5S3ZLCN7" blockingProcesses=( soffice ) ;; @@ -3497,6 +3625,12 @@ marathoninfinity) appNewVersion="$(versionFromGit Aleph-One-Marathon alephone)" expectedTeamID="E8K89CXZE7" ;; +masv) + name="MASV" + type="dmg" + downloadURL="https://dl.massive.io/MASV.dmg" + expectedTeamID="VHKX7RCAY7" + ;; mattermost) name="Mattermost" type="dmg" @@ -3513,6 +3647,13 @@ menumeters) appNewVersion=$(versionFromGit yujitach MenuMeters ) expectedTeamID="95AQ7YKR5A" ;; +merlinproject) + name="Merlin Project" + type="zip" + downloadURL="https://www.projectwizards.net/downloads/MerlinProject.zip" + appNewVersion="$(curl -fs "https://www.projectwizards.net/de/support/release-notes" | grep Version | head -n 6 | tail -n 1 | sed 's/[^0-9.]*//g')" + expectedTeamID="9R6P9VZV27" + ;; microsoftautoupdate) name="Microsoft AutoUpdate" type="pkg" @@ -3774,16 +3915,6 @@ microsoftword) updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" updateToolArguments=( --install --apps MSWD2019 ) ;; -microsoftyammer) - name="Yammer" - type="dmg" - downloadURL="https://aka.ms/yammer_desktop_mac" - #appNewVersion=$(curl -fs https://macadmins.software/latest.xml | xpath '//latest/oldpackage[id="com.microsoft.yammer.standalone"]/cfbundleshortversionstring' 2>/dev/null | sed -E 's/<cfbundleshortversionstring>([0-9.]*)<.*/\1/') - appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location: | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g') - expectedTeamID="UBF8T346G9" - #updateTool="/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate --list; /Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app/Contents/MacOS/msupdate" - #updateToolArguments=( --install --apps ?????? ) - ;; mightymike) name="Mighty Mike" type="dmg" @@ -3905,6 +4036,14 @@ mochatn5250) appNewVersion="" expectedTeamID="RR9F5EPNVW" ;; +mongodbcompass) + name="MongoDB Compass" + type="dmg" + archiveName="mongodb-compass-[0-9.]*-darwin-x64.dmg" + downloadURL="$(downloadURLFromGit mongodb-js compass)" + appNewVersion="$(versionFromGit mongodb-js compass)" + expectedTeamID="4XWMY46275" + ;; montereyblocker) name="montereyblocker" type="pkg" @@ -3950,6 +4089,13 @@ netnewswire) appNewVersion=$(curl -fs https://ranchero.com/downloads/netnewswire-release.xml | xpath '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2) expectedTeamID="M8L2WTLA8W" ;; +netspot) + name="NetSpot" + type="dmg" + downloadURL="https://cdn.netspotapp.com/download/NetSpot.dmg" + appNewVersion=$(curl -fs "https://www.netspotapp.com/updates/netspot2-appcast.xml" | xpath '(//rss/channel/item/enclosure/@sparkle:version)' 2>/dev/null | cut -d '"' -f 2) + expectedTeamID="5QLDY8TU83" + ;; nextcloud) name="nextcloud" type="pkg" @@ -4131,8 +4277,8 @@ openvpnconnectv3) opera) name="Opera" type="dmg" - downloadURL=$(curl -fsIL "$(curl -fs "$(curl -fsIL "https://download.opera.com/download/get/?partner=www&opsys=MacOS" | grep -i "^location" | cut -d " " -f2 | tail -1 | tr -d '\r')" | grep download.opera.com | grep -io "https.*yes" | sed 's/\&/\&/g')" | grep -i "^location" | cut -d " " -f2 | tr -d '\r') - appNewVersion="$(curl -fs "https://get.geo.opera.com/ftp/pub/opera/desktop/" | grep "href=\"\d" | sort -V | tail -1 | tr '"' '\n' | grep "/" | head -1 | tr -d '/')" + downloadURL="$(curl -fsIL "$(curl -fs "$(curl -fsL "https://download.opera.com/download/get/?partner=www&opsys=MacOS" | tr '"' "\n" | grep -e "www.opera.com.*thanks.*opera" | sed 's/\&\;/\&/g')" | tr '"' "\n" | grep "download.opera.com" | sed 's/\&\;/\&/g')" | grep -i "^location" | grep -io "https.*dmg")" + appNewVersion="$(printf "$downloadURL" | sed -E 's/https.*\/([0-9.]*)\/mac\/.*/\1/')" versionKey="CFBundleVersion" expectedTeamID="A2P9LX4JPN" ;; @@ -4378,6 +4524,13 @@ redeye) appNewVersion=$( curl -fs "https://www.hexedbits.com/redeye/" | grep "Latest version" | sed -E 's/.*Latest version ([0-9.]*),.*/\1/g' ) expectedTeamID="5VRJU68BZ5" ;; +relatel) + name="Relatel" + type="dmg" + downloadURL="https://cdn.rela.tel/www/public/junotron/Relatel.dmg" + appNewVersion="$(curl -fs "https://cdn.firmafon.dk/www/public/junotron/latest-mac.yml" | grep -i "version" | cut -w -f2)" + expectedTeamID="B9358QF55B" + ;; remotedesktopmanagerenterprise) name="Remote Desktop Manager" type="dmg" @@ -4393,21 +4546,6 @@ remotedesktopmanagerfree) appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g') expectedTeamID="N592S9ASDB" ;; -remotix) - name="Remotix" - type="dmg" - downloadURL="https://remotix.com/downloads/latest-remotix-mac/" - appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*\.dmg/\1/g' ) - expectedTeamID="K293Y6CVN4" - ;; -remotixagent) - name="RemotixAgent" - type="pkg" - packageID="com.nulana.rxagentmac" - downloadURL="https://remotix.com/downloads/latest-agent-mac/" - appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*\.pkg/\1/g' ) - expectedTeamID="K293Y6CVN4" - ;; resiliosynchome) name="Resilio Sync" type="dmg" @@ -4700,6 +4838,13 @@ snapgeneviewer) appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | tr '/' '\n' | grep -i "dmg" | sed -E 's/[a-zA-Z_]*_([0-9.]*)_mac\.dmg/\1/g' ) expectedTeamID="WVCV9Q8Y78" ;; +sonicvisualiser) + name="Sonic Visualiser" + type="dmg" + downloadURL="$(downloadURLFromGit sonic-visualiser sonic-visualiser)" + appNewVersion="$(versionFromGit sonic-visualiser sonic-visualiser)" + expectedTeamID="73F996B92S" + ;; sonobus) name="Sonobus" type="pkgInDmg" @@ -4768,6 +4913,15 @@ steelseriesengine) appNewVersion="$(curl -fsIL "$downloadURL" | grep -i "^location" | sed -E 's/.*SteelSeriesGG([0-9.]*)\.pkg/\1/')" expectedTeamID="6WGL6CHFH2" ;; +strongdm) + name="strongDM" + type="dmg" + downloadURL="https://app.strongdm.com/downloads/client/darwin" + appNewVersion=$(curl -fsLIXGET "https://app.strongdm.com/downloads/client/darwin" | grep -i "^content-disposition" | sed -e 's/.*filename\=\"SDM\-\(.*\)\.dmg\".*/\1/') + appName="SDM.app" + blockingProcesses=( "SDM" ) + expectedTeamID="W5HSYBBJGA" + ;; strongsync) name="Strongsync" type="dmg" @@ -4803,8 +4957,7 @@ supportapp) downloadURL=$(downloadURLFromGit root3nl SupportApp) appNewVersion=$(versionFromGit root3nl SupportApp) expectedTeamID="98LJ4XBGYK" - uid=$(id -u "$currentUser") - launchctl bootout gui/${uid} "/Library/LaunchAgents/nl.root3.support.plist" + blockingProcesses=( NONE ) ;; suspiciouspackage) # credit: Mischa van der Bent (@mischavdbent) @@ -4828,6 +4981,22 @@ sync) 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" ;; +synologyassistant) + name="SynologyAssistant" + type="dmg" + packageID="com.synology.DSAssistant" + appNewVersion="$(curl -sf https://archive.synology.com/download/Utility/Assistant | grep -m 1 /download/Utility/Assistant/ | sed "s|.*>\(.*\)<.*|\\1|")" + downloadURL="https://global.download.synology.com/download/Utility/Assistant/${appNewVersion}/Mac/synology-assistant-${appNewVersion}.dmg" + expectedTeamID="X85BAK35Y4" + ;; +synologydriveclient) + name="Synology Drive Client" + type="pkgInDmg" + packageID="com.synology.CloudStation" + downloadURL=$(appVersion=`curl -sf https://archive.synology.com/download/Utility/SynologyDriveClient | grep -m 1 /download/Utility/SynologyDriveClient/ | sed "s|.*>\(.*\)<.*|\\1|"` && appShortVersion=`sed 's#.*-\(\)#\1#' <<< $appVersion` && echo https://global.download.synology.com/download/Utility/SynologyDriveClient/"$appVersion"/Mac/Installer/synology-drive-client-"${appShortVersion}".dmg) + appNewVersion=$(appVersionP1=`curl -sf https://archive.synology.com/download/Utility/SynologyDriveClient | grep -m 1 /download/Utility/SynologyDriveClient/ | sed "s|.*>\(.*\)-.*|\\1|"` && sed 's/\(.\{0\}\)./\17/' <<< $appVersionP1) + expectedTeamID="X85BAK35Y4" + ;; tableaudesktop) name="Tableau Desktop" type="pkgInDmg" @@ -4928,6 +5097,21 @@ tembo) appNewVersion="$(curl -fs https://www.houdah.com/tembo/updates/cast2.xml | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)" expectedTeamID="DKGQD8H8ZY" ;; +tencentmeeting) + name="TencentMeeting" + type="dmg" + if [[ $(arch) == "arm64" ]]; then + downloadURL="$(curl -fs 'https://meeting.tencent.com/web-service/query-download-info?q=%5B%7B%22package-type%22%3A%22app%22%2C%22channel%22%3A%220300000000%22%2C%22platform%22%3A%22mac%22%2C%22arch%22%3A%22arm64%22%7D%5D&c_os=web&c_os_version=1&c_os_model=web&c_timestamp=1653366550252&c_instance_id=5&c_nonce=DcaDam4y&c_app_id=1400143280&c_app_version=1&c_lang=zh-cn&c_district=0&nonce=miwSceJNQaSZttma' -H 'authority: meeting.tencent.com' -H 'referer: https://meeting.tencent.com/download-mac.html?from=1000&fromSource=1&macType=apple' -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' | grep -o "https://updatecdn.meeting.qq.com[^']*\.publish.arm64.dmg")" + appNewVersion=$(curl -fs 'https://meeting.tencent.com/web-service/query-download-info?q=%5B%7B%22package-type%22%3A%22app%22%2C%22channel%22%3A%220300000000%22%2C%22platform%22%3A%22mac%22%2C%22arch%22%3A%22arm64%22%7D%5D&c_os=web&c_os_version=1&c_os_model=web&c_timestamp=1653366550252&c_instance_id=5&c_nonce=DcaDam4y&c_app_id=1400143280&c_app_version=1&c_lang=zh-cn&c_district=0&nonce=miwSceJNQaSZttma' -H 'authority: meeting.tencent.com' -H 'referer: https://meeting.tencent.com/download-mac.html?from=1000&fromSource=1&macType=apple' -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' | grep -o "https://updatecdn.meeting.qq.com[^']*\.publish.arm64.dmg" | sed -e 's/.*TencentMeeting\_0300000000\_\(.*\)\.publish\.arm64\.dmg.*/\1/') + elif [[ $(arch) == "i386" ]]; then + downloadURL="$(curl -fs 'https://meeting.tencent.com/web-service/query-download-info?q=%5B%7B%22package-type%22%3A%22app%22%2C%22channel%22%3A%220300000000%22%2C%22platform%22%3A%22mac%22%2C%22arch%22%3A%22x86_64%22%7D%5D&c_os=web&c_os_version=1&c_os_model=web&c_timestamp=1653366500890&c_instance_id=5&c_nonce=jA4P4JPY&c_app_id=1400143280&c_app_version=1&c_lang=zh-cn&c_district=0&nonce=tF6Bm4FYHJwdPeGH' -H 'authority: meeting.tencent.com' -H 'referer: https://meeting.tencent.com/download-mac.html?from=1000&fromSource=1' -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' | grep -o "https://updatecdn.meeting.qq.com[^']*\.publish.x86_64.dmg")" + appNewVersion=$(curl -fs 'https://meeting.tencent.com/web-service/query-download-info?q=%5B%7B%22package-type%22%3A%22app%22%2C%22channel%22%3A%220300000000%22%2C%22platform%22%3A%22mac%22%2C%22arch%22%3A%22x86_64%22%7D%5D&c_os=web&c_os_version=1&c_os_model=web&c_timestamp=1653366500890&c_instance_id=5&c_nonce=jA4P4JPY&c_app_id=1400143280&c_app_version=1&c_lang=zh-cn&c_district=0&nonce=tF6Bm4FYHJwdPeGH' -H 'authority: meeting.tencent.com' -H 'referer: https://meeting.tencent.com/download-mac.html?from=1000&fromSource=1' -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' | grep -o "https://updatecdn.meeting.qq.com[^']*\.publish.x86_64.dmg" | sed -e 's/.*TencentMeeting\_0300000000\_\(.*\)\.publish\.x86_64\.dmg.*/\1/') + fi + 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" ) + appCustomVersion() { echo "$(defaults read /Applications/TencentMeeting.app/Contents/Info.plist CFBundleShortVersionString)$(echo ".")$(defaults read /Applications/TencentMeeting.app/Contents/Info.plist CFBundleVersion)" } + expectedTeamID="88L2Q4487U" + ;; + textexpander) name="TextExpander" type="dmg" @@ -5038,6 +5222,13 @@ tunnelblick) downloadURL=$(downloadURLFromGit TunnelBlick Tunnelblick ) expectedTeamID="Z2SG5H3HC8" ;; +typinator) + name="Typinator" + type="zip" + downloadURL=https://update.ergonis.com/downloads/products/typinator/Typinator.app.zip + appNewVersion="$(curl -fs https://update.ergonis.com/vck/typinator.xml | grep -i Program_Version | sed "s|.*>\(.*\)<.*|\\1|")" + expectedTeamID="TU7D9Y7GTQ" + ;; typora) name="Typora" type="dmg" @@ -5231,22 +5422,6 @@ whatsapp) downloadURL="https://web.whatsapp.com/desktop/mac/files/WhatsApp.dmg" expectedTeamID="57T9237FN3" ;; -wickrme) - # credit: Søren Theilgaard (@theilgaard) - name="WickrMe" - type="dmg" - downloadURL=$( curl -fs https://me-download.wickr.com/api/download/me/download/mac | tr '"' '\n' | grep -e '^https://' ) - appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' ) - expectedTeamID="W8RC3R952A" - ;; -wickrpro) - # credit: Søren Theilgaard (@theilgaard) - name="WickrPro" - type="dmg" - downloadURL=$( curl -fs https://me-download.wickr.com/api/download/pro/download/mac | tr '"' '\n' | grep -e '^https://' ) - appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' ) - expectedTeamID="W8RC3R952A" - ;; wireshark) name="Wireshark" type="dmg" @@ -5274,6 +5449,17 @@ wwdc) appNewVersion=$(versionFromGit insidegui WWDC) expectedTeamID="8C7439RJLG" ;; +xcreds) + name="XCreds" + #type="pkgInZip" + #packageID="com.twocanoes.pkg.secureremoteaccess" + #downloadURL=$(curl -fs "https://twocanoes.com/products/mac/xcreds/" | grep -ioE "https://.*\.zip" | head -1) + #appNewVersion=$(curl -fs "https://twocanoes.com/products/mac/xcreds/" | grep -io "Current Version:.*" | sed -E 's/.*XCreds *([0-9.]*)<.*/\1/g') + type="pkg" + downloadURL="$(downloadURLFromGit twocanoes xcreds)" + appNewVersion="$(versionFromGit twocanoes xcreds)" + expectedTeamID="UXP6YEHSPW" + ;; xeroxphaser7800) name="XeroxPhaser" type="pkgInDmg" @@ -5493,6 +5679,29 @@ fi # MARK: application download and installation starts here +# Debug output of all variables in a label +printlog "name=${name}" DEBUG +printlog "appName=${appName}" DEBUG +printlog "type=${type}" DEBUG +printlog "archiveName=${archiveName}" DEBUG +printlog "downloadURL=${downloadURL}" DEBUG +printlog "curlOptions=${curlOptions}" DEBUG +printlog "appNewVersion=${appNewVersion}" DEBUG +printlog "appCustomVersion function: $(if type 'appCustomVersion' 2>/dev/null | grep -q 'function'; then echo "Defined. ${appCustomVersion}"; else; echo "Not defined"; fi)" DEBUG +printlog "versionKey=${versionKey}" DEBUG +printlog "packageID=${packageID}" DEBUG +printlog "pkgName=${pkgName}" DEBUG +printlog "choiceChangesXML=${choiceChangesXML}" DEBUG +printlog "expectedTeamID=${expectedTeamID}" DEBUG +printlog "blockingProcesses=${blockingProcesses}" DEBUG +printlog "installerTool=${installerTool}" DEBUG +printlog "CLIInstaller=${CLIInstaller}" DEBUG +printlog "CLIArguments=${CLIArguments}" DEBUG +printlog "updateTool=${updateTool}" DEBUG +printlog "updateToolArguments=${updateToolArguments}" DEBUG +printlog "updateToolRunAsCurrentUser=${updateToolRunAsCurrentUser}" DEBUG +#printlog "Company=${Company}" DEBUG # Not used + if [[ ${INTERRUPT_DND} = "no" ]]; then # Check if a fullscreen app is active if hasDisplaySleepAssertion; then @@ -5538,6 +5747,11 @@ 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 (AirWatch) + 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 @@ -5553,7 +5767,7 @@ printlog "Label type: $type" INFO # MARK: extract info from data if [ -z "$archiveName" ]; then case $type in - dmg|pkg|zip|tbz) + dmg|pkg|zip|tbz|bz2) archiveName="${name}.$type" ;; pkgInDmg) @@ -5579,7 +5793,7 @@ fi if [ -z "$targetDir" ]; then case $type in - dmg|zip|tbz|app*) + dmg|zip|tbz|bz2|app*) targetDir="/Applications" ;; pkg*) @@ -5760,7 +5974,7 @@ case $type in zip) installFromZIP ;; - tbz) + tbz|bz2) installFromTBZ ;; pkgInDmg) diff --git a/Labels.txt b/Labels.txt index 26072be..c0de3d3 100644 --- a/Labels.txt +++ b/Labels.txt @@ -3,7 +3,10 @@ 1passwordcli 4kvideodownloader 8x8 +abetterfinderrename11 abstract +acroniscyberprotectconnect +acroniscyberprotectconnectagent adobebrackets adobeconnect adobecreativeclouddesktop @@ -72,6 +75,7 @@ camtasia2019 camtasia2020 camtasia2021 canva +carboncopycloner chatwork cisdem-documentreader citrixworkspace @@ -82,12 +86,15 @@ closeio cloudya clue cluefull +cocoapods +coconutbattery code42 coderunner colourcontrastanalyser cormorant craftmanager craftmanagerforsketch +cricutdesignspace cryptomator cyberduck daisydisk @@ -112,6 +119,7 @@ drift dropbox duckduckgo duodevicehealth +dynalist easeusdatarecoverywizard easyfind egnyte @@ -126,6 +134,7 @@ exifrenamer fantastical fastscripts favro +fellow ferdi figma filezilla @@ -138,6 +147,7 @@ firefoxesr_intl firefoxesrpkg firefoxpkg firefoxpkg_intl +flexoptixapp flowjo flux flycut @@ -147,6 +157,7 @@ fsmonitor gimp githubdesktop golang +googleadseditor googlechrome googlechromeenterprise googlechromepkg @@ -207,6 +218,7 @@ jetbrainswebstorm kap karabinerelements keepassxc +keepingyouawake keka keybase keyboardmaestro @@ -216,6 +228,7 @@ krisp krita lastpass launchbar +lcadvancedvpnclient lexarrecoverytool libreoffice linear @@ -235,8 +248,10 @@ malwarebytes marathon marathon2 marathoninfinity +masv mattermost menumeters +merlinproject microsoftautoupdate microsoftazuredatastudio microsoftazurestorageexplorer @@ -260,7 +275,6 @@ microsoftskypeforbusiness microsoftteams microsoftvisualstudiocode microsoftword -microsoftyammer mightymike mindmanager miro @@ -271,12 +285,14 @@ mochatelnet mochatn3270 mochatn3812 mochatn5250 +mongodbcompass montereyblocker mowgliiitsycal musescore muzzle nanosaur netnewswire +netspot nextcloud nomad nomadlogin @@ -333,6 +349,7 @@ ramboxce rancherdesktop rectangle redeye +relatel remotedesktopmanagerenterprise remotedesktopmanagerfree remotix @@ -377,6 +394,7 @@ snagit2020 snagit2021 snagit2022 snapgeneviewer +sonicvisualiser sonobus sonos sonoss1 @@ -387,6 +405,7 @@ spotify sqlpropostgres sqlprostudio steelseriesengine +strongdm strongsync sublimetext superhuman @@ -395,6 +414,8 @@ suspiciouspackage swiftdialog swiftruntimeforcommandlinetools sync +synologyassistant +synologydriveclient tableaudesktop tableaupublic tableaureader @@ -408,6 +429,7 @@ teamviewerqs techsmithcapture telegram tembo +tencentmeeting textexpander textmate theunarchiver @@ -421,6 +443,7 @@ torbrowser trex tunnelbear tunnelblick +typinator typora ultimakercura umbrellaroamingclient @@ -447,11 +470,10 @@ webexteams wechat whatroute whatsapp -wickrme -wickrpro wireshark wordservice wwdc +xcreds xeroxphaser7800 xeroxworkcentre7800 xink