From ed8e9ef9134dc412c37a0b1375d8b8f19316e988 Mon Sep 17 00:00:00 2001 From: Armin Briegel <1933192+scriptingosx@users.noreply.github.com> Date: Mon, 16 May 2022 20:12:48 +0200 Subject: [PATCH] general cleanup in prep for release --- CHANGELOG.md | 71 ++- Installomator.sh | 563 +++++++++++++++--- Labels.txt | 38 ++ fragments/labels/1password8.sh | 2 +- fragments/labels/amazoncorretto8jdk.sh | 2 +- fragments/labels/androidstudio.sh | 2 +- fragments/labels/camtasia2020.sh | 1 - fragments/labels/postman.sh | 2 +- fragments/labels/propresenter7.sh | 2 +- fragments/labels/snagit2019.sh | 1 - fragments/labels/snagit2020.sh | 1 - fragments/labels/sonobus.sh | 16 +- .../{UltimakerCura.sh => ultimakercura.sh} | 0 fragments/labels/unnaturalscrollwheels.sh | 2 +- fragments/version.sh | 2 +- 15 files changed, 607 insertions(+), 98 deletions(-) rename fragments/labels/{UltimakerCura.sh => ultimakercura.sh} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51dd579..2abbe4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,75 @@ +## v9.2 + +**Note**: Both Google and Mozilla recommend using the pkg installers instead of the dmg downloads for managed deployments. So far, Installomator has provided labels for both. (`googlechrome` and `googlechromepkg` or `firefox` and `firefoxpkg`, respectively) Since there are problems with the dmg downloads, a future release of Installomator will _disable_ the `firefox` and `googlechrome` dmg labels. You should switch to using `googlechromepkg` and `firefoxpkg` labels instead. + +- bug fix (#434) +- documentation updates (#485, #494) +- new labels: + - 1password8 (#514) + - UltimakerCura + - androidstudio (#547) + - atextlegacy (#464) + - camtasia2019, camtasia2020 (#499) + - clue, cluefull (#481) + - craftmanagerforsketch + - displaylinkmanager (#448) + - drawio (#480) + - duckduckgo + - egnytewebedit (#512) + - filezilla (#522) + - firefoxpkg_intl + - flycut (#501) + - fontexplorer (#523) + - hype (#524) + - idrive (#507), idrivethin (#509) + - imageoptim (#525) + - linear (#519) + - macoslaps (#502) + - mightymike + - mindmanager (#479) + - pika (#526) + - propresenter7 (#394) + - qgis-pr + - shottr (#516) + - slab (#487) + - snagit2019, snagit2020, snagit2021 (#498) + - sonobus (#490) + - talkdeskcxcloud (#452) + - thunderbird_intl (#497) + - unnaturalscrollwheels (#503) + - wechat (#510) + - xeroxworkcentre7800 (#527) + - zohoworkdrivegenie +- updated labels + - adobereaderdc-update, adobereaderdc (#503) + - amazoncorretto8jdk (#461) + - camtasia (#499) + - citrixworkspace (#508) + - dbeaverce (#450) + - dropbox + - firefox + - firefox_da + - firefox_intl (#495) + - firefoxesr_intl (#496) + - firefoxpkg + - googlechrome, googlechromepkg (#484) + - gpgsuite (#465) + - grammarly (#515) + - logitechoptions (#478) + - onlyofficedesktop (#454) + - postman (#458) + - rancherdesktop (#463) + - remotedesktopmanagerenterprise + - remotedesktopmanagerfree + - ringcentralapp (#492) + - sketch + - snagit (#498) + - talkdeskcallbar (#453) + + + ## v9.1 -**Note**: Both Google and Mozilla recommend using the pkg installers instead of the dmg downloads for managed deployments. So far, Installomator has provided labels for both. (`googlechrome` and `googlechromepkg` or `firefox` and `firefoxpkg`, respectively) Since there are problems with the dmg downloads, a future release of Installomator will _disable_ the `firefox` and `googlechrome` dmg labels. You should switch to using the respective pkg labels instead. - added option for Microsoft Endpoint Manager (Intune) to `LOGO` (#446) - minor fixes (#427, #434, #436) diff --git a/Installomator.sh b/Installomator.sh index 206a741..8a70fb1 100755 --- a/Installomator.sh +++ b/Installomator.sh @@ -238,7 +238,7 @@ IGNORE_DND_APPS="" # - updateToolArguments: # When Installomator detects an existing installation of the application, # and the updateTool variable is set -# $updateTool $updateArguments +# $updateTool $updateArguments # Will be run instead of of downloading and installing a complete new version. # Use this when the updateTool does differential and optimized downloads. # e.g. msupdate on various Microsoft labels @@ -253,7 +253,7 @@ IGNORE_DND_APPS="" # We need to define `name` for the installed app (to be version checked), as well as # `installerTool` for the installer app (if named differently than `name`. Installomator # will add the path to the folder/disk image with the binary, and it will be called like this: - `$CLIInstaller $CLIArguments` +# $CLIInstaller $CLIArguments # For most installations `CLIInstaller` should contain the `installerTool` for the CLI call # (if it’s the same). # We can support a whole range of other software titles by implementing this. @@ -302,8 +302,8 @@ if [[ $(/usr/bin/arch) == "arm64" ]]; then rosetta2=no fi fi -VERSION="9.1" -VERSIONDATE="2022-03-18" +VERSION="9.2" +VERSIONDATE="2022-05-16" # MARK: Functions @@ -549,8 +549,8 @@ getAppVersion() { # printlog "App(s) found: ${applist}" DEBUG # applist=$(mdfind "kind:application AND name:$appName" -0 ) fi - if [[ -z applist ]]; then - printlog "No previous app found" INFO + if [[ -z $applist ]]; then + printlog "No previous app found" WARN else printlog "App(s) found: ${applist}" INFO fi @@ -572,7 +572,7 @@ getAppVersion() { 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" + printlog "Replacing App Store apps, no matter the version" WARN appversion=0 else cleanupAndExit 1 "App previously installed from App Store, and we respect that" ERROR @@ -1387,7 +1387,7 @@ adobecreativeclouddesktop) adobereaderdc-update) name="Adobe Acrobat Reader DC" type="pkgInDmg" - downloadURL=$(adobecurrent=`curl --fail --silent https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt | tr -d '.'` && echo http://ardownload.adobe.com/pub/adobe/reader/mac/AcrobatDC/"$adobecurrent"/AcroRdrDCUpd"$adobecurrent"_MUI.dmg) + downloadURL=$(adobecurrent=`curl --fail --silent https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt | tr -d '.'` && echo https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/"$adobecurrent"/AcroRdrDC_"$adobecurrent"_MUI.dmg) appNewVersion=$(curl -s https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt) #appNewVersion=$(curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" https://get.adobe.com/reader/ | grep ">Version" | sed -E 's/.*Version 20([0-9.]*)<.*/\1/g') # credit: Søren Theilgaard (@theilgaard) expectedTeamID="JQ525L2MZD" @@ -1398,7 +1398,8 @@ adobereaderdc-install) name="Adobe Acrobat Reader DC" type="pkgInDmg" packageID="com.adobe.acrobat.DC.reader.app.pkg.MUI" - downloadURL=$(curl --silent --fail -H "Sec-Fetch-Site: same-origin" -H "Accept-Encoding: gzip, deflate, br" -H "Accept-Language: en-US;q=0.9,en;q=0.8" -H "DNT: 1" -H "Sec-Fetch-Mode: cors" -H "X-Requested-With: XMLHttpRequest" -H "Referer: https://get.adobe.com/reader/enterprise/" -H "Accept: */*" "https://get.adobe.com/reader/webservices/json/standalone/?platform_type=Macintosh&platform_dist=OSX&platform_arch=x86-32&language=English&eventname=readerotherversions" | grep -Eo '"download_url":.*?[^\]",' | head -n 1 | cut -d \" -f 4) + #downloadURL=$(curl --silent --fail -H "Sec-Fetch-Site: same-origin" -H "Accept-Encoding: gzip, deflate, br" -H "Accept-Language: en-US;q=0.9,en;q=0.8" -H "DNT: 1" -H "Sec-Fetch-Mode: cors" -H "X-Requested-With: XMLHttpRequest" -H "Referer: https://get.adobe.com/reader/enterprise/" -H "Accept: */*" "https://get.adobe.com/reader/webservices/json/standalone/?platform_type=Macintosh&platform_dist=OSX&platform_arch=x86-32&language=English&eventname=readerotherversions" | grep -Eo '"download_url":.*?[^\]",' | head -n 1 | cut -d \" -f 4) + downloadURL=$(adobecurrent=`curl --fail --silent https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt | tr -d '.'` && echo https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/"$adobecurrent"/AcroRdrDC_"$adobecurrent"_MUI.dmg) appNewVersion=$(curl -s https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt) #appNewVersion=$(curl -s -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15)" https://get.adobe.com/reader/ | grep ">Version" | sed -E 's/.*Version 20([0-9.]*)<.*/\1/g') # credit: Søren Theilgaard (@theilgaard) expectedTeamID="JQ525L2MZD" @@ -1467,8 +1468,13 @@ amazonchime) amazoncorretto8jdk) name="Amazon Corretto 8 JDK" type="pkg" - downloadURL="https://corretto.aws/downloads/latest/amazon-corretto-8-x64-macos-jdk.pkg" - appNewVersion=$(curl -s https://raw.githubusercontent.com/corretto/corretto-8/develop/CHANGELOG.md | grep "## Corretto version" | head -n 1 | awk '{ print $4; exit}') + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://corretto.aws/downloads/latest/amazon-corretto-8-aarch64-macos-jdk.pkg" + appNewVersion=$(curl -s https://raw.githubusercontent.com/corretto/corretto-8/develop/CHANGELOG.md | grep "## Corretto version" | head -n 1 | awk '{ print $4; exit}') + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://corretto.aws/downloads/latest/amazon-corretto-8-x64-macos-jdk.pkg" + appNewVersion=$(curl -s https://raw.githubusercontent.com/corretto/corretto-8/develop/CHANGELOG.md | grep "## Corretto version" | head -n 1 | awk '{ print $4; exit}') + fi expectedTeamID="94KV3E626L" ;; amazonworkspaces) @@ -1485,6 +1491,19 @@ androidfiletransfer) downloadURL="https://dl.google.com/dl/androidjumper/mtp/current/AndroidFileTransfer.dmg" expectedTeamID="EQHXZ8M8AV" ;; +androidstudio) + name="Android Studio" + type="dmg" + if [[ $(arch) == arm64 ]]; then + downloadURL=$(curl -fsL "https://developer.android.com/studio#downloads" | grep -i arm.dmg | head -2 | grep -o -i -E "https.*" | cut -d '"' -f1) + appNewVersion=$( echo "${downloadURL}" | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*$/\1/' ) + elif [[ $(arch) == i386 ]]; then + downloadURL=$(curl -fsL "https://developer.android.com/studio#downloads" | grep -i mac.dmg | head -2 | grep -o -i -E "https.*" | cut -d '"' -f1) + appNewVersion=$( echo "${downloadURL}" | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\).*$/\1/' ) + fi + expectedTeamID="EQHXZ8M8AV" + blockingProcesses=( androidstudio ) + ;; anydesk) name="AnyDesk" type="dmg" @@ -1580,12 +1599,12 @@ atext) expectedTeamID="KHEMQ2FD9E" ;; atextlegacy) - # credit: Gabe Marchan (gabemarchan.com - @darklink87) - name="aText" - type="dmg" - downloadURL="https://trankynam.com/atext/downloads/aTextLegacy.dmg" - expectedTeamID="KHEMQ2FD9E" - ;; + # credit: Gabe Marchan (gabemarchan.com - @darklink87) + name="aText" + type="dmg" + downloadURL="https://trankynam.com/atext/downloads/aTextLegacy.dmg" + expectedTeamID="KHEMQ2FD9E" + ;; atom) name="Atom" type="zip" @@ -1825,13 +1844,29 @@ camostudio) # Camo Studio will ask for admin permissions to install som plug-ins. that has not been handled. expectedTeamID="Q248YREB53" ;; -camtasia) - name="Camtasia 2020" +camtasia|\ +camtasia2021) + name="Camtasia 2021" type="dmg" - downloadURL=https://download.techsmith.com/camtasiamac/releases/Camtasia.dmg + downloadURL=$(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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep -A 3 "Camtasia (Mac) 2021" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) + 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Camtasia (Mac) 2021" | sed -e 's/.*Camtasia (Mac) //' -e 's/<\/td>.*//') expectedTeamID="7TQL462TU8" ;; -canva) +camtasia2019) + name="Camtasia 2019" + type="dmg" + downloadURL=$(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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep -A 3 "Camtasia (Mac) 2019" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) + 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Camtasia (Mac) 2019" | sed -e 's/.*Camtasia (Mac) //' -e 's/<\/td>.*//') + expectedTeamID="7TQL462TU8" + ;; + camtasia2020) + name="Camtasia 2020" + type="dmg" + downloadURL=$(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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep -A 3 "Camtasia (Mac) 2020" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) + 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Camtasia (Mac) 2020" | sed -e 's/.*Camtasia (Mac) //' -e 's/<\/td>.*//') + expectedTeamID="7TQL462TU8" + ;; + canva) name="Canva" type="dmg" if [[ $(arch) == "arm64" ]]; then @@ -1861,7 +1896,7 @@ citrixworkspace) name="Citrix Workspace" type="pkgInDmg" downloadURL="https:"$(curl -s -L "https://www.citrix.com/downloads/workspace-app/mac/workspace-app-for-mac-latest.html#ctx-dl-eula-external" | grep "dmg?" | sed "s/.*rel=.\(.*\)..id=.*/\1/") # http://downloads.citrix.com/18823/CitrixWorkspaceApp.dmg?__gda__=1605791892_edc6786a90eb5197fb226861a8e27aa8 - appNewVersion=$(curl -fs https://www.citrix.com/downloads/workspace-app/mac/workspace-app-for-mac-latest.html | grep "

Version" | head -1 | cut -d " " -f1 | cut -d ";" -f2 | cut -d "." -f 1-3) + appNewVersion=$(curl -fs https://www.citrix.com/downloads/workspace-app/mac/workspace-app-for-mac-latest.html | grep "

Version" | head -1 | awk '{print $2}' | cut -d "." -f 1-3) expectedTeamID="S272Y5R93J" ;; clevershare2) @@ -1899,6 +1934,24 @@ cloudya) 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" ;; +clue) + #For personal use and students + name="Clue" + type="dmg" + downloadURL=$(curl -fsL https://clue.no/en/download | grep "For personal use and students:" | sed 's/.*href="//' | sed 's/".*//') + appNewVersion="$(echo "${downloadURL}" | sed -E 's/.*Clue*([0-9.]*)\..*/\1/g')" + versionKey="CFBundleVersion" + expectedTeamID="3NX6B9TB2F" + ;; +cluefull) + #For companies and schools + name="Clue" + type="dmg" + downloadURL=$(curl -fsL https://clue.no/en/download | grep "For companies and schools:" | sed 's/.*href="//' | sed 's/".*//') + appNewVersion="$(echo "${downloadURL}" | sed -E 's/.*Clue*([0-9.]*)\F.*/\1/g')" + versionKey="CFBundleVersion" + expectedTeamID="3NX6B9TB2F" + ;; code42) name="Code42" type="pkgInDmg" @@ -1941,6 +1994,13 @@ craftmanager) 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" ;; +craftmanagerforsketch) + name="CraftManager" + type="zip" + downloadURL="https://craft-assets.invisionapp.com/CraftManager/production/CraftManager.zip" + 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" + ;; cryptomator) name="Cryptomator" type="dmg" @@ -1980,7 +2040,13 @@ darktable) dbeaverce) name="DBeaver" type="dmg" - downloadURL="https://dbeaver.io/files/dbeaver-ce-latest-macos.dmg" + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://dbeaver.io/files/dbeaver-ce-latest-macos-aarch64.dmg" + appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i ^location | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/' | head -1)" + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://dbeaver.io/files/dbeaver-ce-latest-macos.dmg" + appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i ^location | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/' | head -1)" + fi expectedTeamID="42B6MDKMW8" blockingProcesses=( dbeaver ) ;; @@ -2061,6 +2127,14 @@ diskspace) appNewVersion="$(versionFromGit scriptingosx diskspace)" expectedTeamID="JME5BW3F3R" ;; +displaylinkmanager) + name="DisplayLink Manager" + type="pkg" + #packageID="com.displaylink.displaylinkmanagerapp" + downloadURL=https://www.synaptics.com$(redirect=$(curl -sfL https://www.synaptics.com/products/displaylink-graphics/downloads/macos | grep 'class="download-link">Download' | head -n 1 | sed 's/.*href="//' | sed 's/".*//') && curl -sfL "https://www.synaptics.com$redirect" | grep Accept | head -n 1 | sed 's/.*href="//' | sed 's/".*//') + appNewVersion=$(curl -sfL https://www.synaptics.com/products/displaylink-graphics/downloads/macos | grep "Release:" | head -n 1 | cut -d ' ' -f2) + expectedTeamID="73YQY62QM3" + ;; docker) name="Docker" type="dmg" @@ -2082,6 +2156,15 @@ dockutil) expectedTeamID="Z5J8CJBUWC" blockingProcesses=( NONE ) ;; +drawio) + name="draw.io" + type="dmg" + archiveName="draw.io-universal-[0-9.]*.dmg" + downloadURL="$(downloadURLFromGit jgraph drawio-desktop)" + appNewVersion="$(versionFromGit jgraph drawio-desktop)" + expectedTeamID="UZEUFB4N53" + blockingProcesses=( draw.io ) + ;; drift) # credit Elena Ackley (@elenaelago) name="Drift" @@ -2093,8 +2176,19 @@ dropbox) name="Dropbox" type="dmg" downloadURL="https://www.dropbox.com/download?plat=mac&full=1" + appNewVersion=$(curl -fsIL "$downloadURL" | grep -i "^location" | sed -E 's/.*%20([0-9.]*)\.dmg/\1/g') expectedTeamID="G7HH3F8CAK" ;; +duckduckgo) + name="DuckDuckGo" + type="dmg" + #downloadURL="https://staticcdn.duckduckgo.com/macos-desktop-browser/duckduckgo.dmg" + #downloadURL=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[last()]' 2>/dev/null | cut -d '"' -f2) + downloadURL=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f2) + #appNewVersion=$(curl -fs https://staticcdn.duckduckgo.com/macos-desktop-browser/appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:version)[last()]' 2>/dev/null | cut -d '"' -f2) + 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" + ;; easeusdatarecoverywizard) # credit: Søren Theilgaard (@theilgaard) name="EaseUS Data Recovery Wizard" @@ -2118,6 +2212,15 @@ egnyte) expectedTeamID="FELUD555VC" blockingProcesses=( NONE ) ;; +egnytewebedit) + name="EgnyteWebEdit" + type="pkg" + downloadURL="https://egnyte-cdn.egnyte.com/webedit/mac/en-us/latest/EgnyteWebEdit.pkg" + expectedTeamID="FELUD555VC" + appName="Egnyte WebEdit.app" + blockingProcesses=( NONE ) + ;; + element) name="Element" type="dmg" @@ -2215,6 +2318,16 @@ figma) appNewVersion="$(curl -fsL https://desktop.figma.com/mac/RELEASE.json | awk -F '"' '{ print $8 }')" expectedTeamID="T8RA8NE3B7" ;; +filezilla) + name="FileZilla" + type="tbz" + packageID="org.filezilla-project.filezilla" + downloadURL=$(curl -fsL https://filezilla-project.org/download.php\?show_all=1 | grep macosx | head -n 1 | awk -F '"' '{print $2}' ) + appNewVersion=$( curl -fsL https://filezilla-project.org/download.php\?show_all=1 | grep macosx | head -n 1 | awk -F '_' '{print $2}' ) + expectedTeamID="5VPGKXL75N" + blockingProcesses=( NONE ) + ;; + findanyfile) name="Find Any File" type="zip" @@ -2229,6 +2342,7 @@ firefox) appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '/dev/null | cut -d '"' -f 2) - 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" - ;; + 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) + 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" +;; grandperspective) name="GrandPerspective" type="dmg" @@ -2529,6 +2696,15 @@ hpeasystart) downloadURL="https://ftp.hp.com/pub/softlib/software12/HP_Quick_Start/osx/Applications/HP_Easy_Start.app.zip" expectedTeamID="6HB5Y2QTA3" ;; +hype) + name="Hype4" + type="dmg" + packageID="com.tumult.Hype4" + downloadURL="https://static.tumult.com/hype/download/Hype.dmg" + appNewVersion=$( curl -fsL https://tumult.com/hype/download/all/ | grep Ongoing | awk -F '<' '{print $4}' | sed 's/[^0-9.]//g' ) + expectedTeamID="8J356DM772" + blockingProcesses=( NONE ) + ;; hyper) name="Hyper" type="dmg" @@ -2556,6 +2732,24 @@ icons) appNewVersion=$(versionFromGit sap macOS-icon-generator ) expectedTeamID="7R5ZEU67FQ" ;; +idrive) + name="IDrive" + type="pkgInDmg" + pkgName="IDrive.pkg" + downloadURL=$(curl -fs https://static.idriveonlinebackup.com/downloads/version_mac.js | sed -E 's/.*(https.*dmg).*/\1/g') + appNewVersion=$(curl -fs https://static.idriveonlinebackup.com/downloads/version_mac.js | sed -E 's/.*mac_vernum\=\"Version\ ([0-9.]*).*/\1/g') + versionKey="CFBundleVersion" + expectedTeamID="JWDCNYZ922" + ;; +idrivethin) + name="IDrive" + type="pkgInDmg" + pkgName="IDriveThin.pkg" + downloadURL=$(curl -fs https://static.idriveonlinebackup.com/downloads/idrivethin/thin_version.js | sed -E 's/.*thinclient-mac([^;]*).*/\1/g' | sed -E 's/.*(https.*dmg).*/\1/g') + appNewVersion=$(curl -fs https://static.idriveonlinebackup.com/downloads/idrivethin/thin_version.js | sed -E 's/.*thin\_mac\_ver\=\"Version\ ([0-9.]*).*/\1/g') + versionKey="CFBundleVersion" + expectedTeamID="JWDCNYZ922" + ;; iina) name="IINA" type="dmg" @@ -2563,6 +2757,15 @@ iina) appNewVersion=$(versionFromGit iina iina ) expectedTeamID="67CQ77V27R" ;; +imageoptim) + name="imageoptim" + type="tbz" + packageID="net.pornel.ImageOptim" + downloadURL="https://imageoptim.com/ImageOptim.tbz2" + appNewVersion=$( curl -fsL https://imageoptim.com/appcast.xml | grep "title" | tail -n 1 | sed 's/[^0-9.]//g' ) + expectedTeamID="59KZTZA4XR" + blockingProcesses=( NONE ) + ;; imazingprofileeditor) # Credit: Bilal Habib @Pro4TLZZ name="iMazing Profile Editor" @@ -2897,8 +3100,24 @@ libreoffice) expectedTeamID="7P5S3ZLCN7" blockingProcesses=( soffice ) ;; +linear) + name="Linear" + type="dmg" + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://desktop.linear.app/mac/dmg/arm64" + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://desktop.linear.app/mac/dmg" + fi + appNewVersion=$(curl -sIkL $downloadURL | sed -r '/filename=/!d;s/.*filename=(.*)$/\1/' | awk '{print $2}') + expectedTeamID="7VZ2S3V9RV" + versionKey="CFBundleShortVersionString" + appName="Linear.app" + blockingProcesses=( "Linear" ) + ;; + +logioptions|\ logitechoptions) - name="Logitech Options" + name="Logi Options" type="pkgInZip" #downloadURL=$(curl -fs "https://support.logi.com/api/v2/help_center/en-us/articles.json?label_names=webcontent=productdownload,webos=mac-macos-x-11.0" | tr "," "\n" | grep -A 10 "macOS" | grep -oie "https.*/.*/options/.*\.zip" | head -1) downloadURL="https://download01.logi.com/web/ftp/pub/techsupport/options/options_installer.zip" @@ -2979,6 +3198,14 @@ macfuse) appNewVersion=$(versionFromGit osxfuse osxfuse) expectedTeamID="3T5GSNBU6W" ;; +macoslaps) + name="macOSLAPS" + type="pkg" + packageID="edu.psu.macOSLAPS" + downloadURL="$(downloadURLFromGit joshua-d-miller macOSLAPS)" + appNewVersion="$(versionFromGit joshua-d-miller macOSLAPS)" + expectedTeamID="9UYK4F9BSM" + ;; macports) name="MacPorts" type="pkg" @@ -3320,6 +3547,20 @@ microsoftyammer) #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" + downloadURL=$(downloadURLFromGit jorio MightyMike) + appNewVersion=$(versionFromGit jorio MightyMike) + expectedTeamID="RVNL7XC27G" + ;; +mindmanager) + name="MindManager" + type="dmg" + downloadURL="https://www.mindmanager.com/mm-mac-dmg" + appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*_Mac_*([0-9.]*)\..*/\1/g')" + expectedTeamID="ZF6ZZ779N5" + ;; miro) # credit: @matins name="Miro" @@ -3607,7 +3848,12 @@ onionshare) onlyofficedesktop) name="ONLYOFFICE" type="dmg" - downloadURL="https://download.onlyoffice.com/install/desktop/editors/mac/distrib/onlyoffice/ONLYOFFICE.dmg" + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://download.onlyoffice.com/install/desktop/editors/mac/arm/distrib/ONLYOFFICE.dmg" + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://download.onlyoffice.com/install/desktop/editors/mac/x86_64/distrib/ONLYOFFICE.dmg" + fi + appNewVersion=$(versionFromGit ONLYOFFICE DesktopEditors) expectedTeamID="2WH24U26GJ" ;; openvpnconnect) @@ -3699,6 +3945,15 @@ perimeter81) appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i ^x-amz-meta-version | sed -E 's/x-amz-meta-version: //' | cut -d"." -f1-3)" expectedTeamID="924635PD62" ;; +pika) + name="Pika" + type="dmg" + packageID="com.superhighfives.Pika" + downloadURL=$(downloadURLFromGit "superhighfives" "pika") + appNewVersion=$(versionFromGit "superhighfives" "pika") + expectedTeamID="TGHU37N6EX" + blockingProcesses=( NONE ) + ;; pitch) name="Pitch" type="dmg" @@ -3726,11 +3981,15 @@ plisteditpro) expectedTeamID="8NQ43ND65V" ;; postman) - # credit: Mischa van der Bent name="Postman" type="zip" - downloadURL="https://dl.pstmn.io/download/latest/osx" - appNewVersion=$(curl -Ifs https://dl.pstmn.io/download/latest/osx | grep "content-disposition:" | sed -n -e 's/^.*Postman-osx-//p' | sed 's/\.zip//' | sed $'s/[^[:print:]\t]//g' ) + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://dl.pstmn.io/download/latest/osx_arm64" + appNewVersion=$(curl -fsL --head "${downloadURL}" | grep "content-disposition:" | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/') + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://dl.pstmn.io/download/latest/osx_64" + appNewVersion=$(curl -fsL --head "${downloadURL}" | grep "content-disposition:" | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/') + fi expectedTeamID="H7H8Q7M5CK" ;; prism9) @@ -3775,6 +4034,15 @@ promiseutilityr) downloadURL="https://www.promise.com/DownloadFile.aspx?DownloadFileUID=6533" expectedTeamID="268CCUR4WN" ;; +propresenter7) + name="ProPresenter 7" + appName="ProPresenter.app" + type="zip" + blockingProcesses="ProPresenter" + downloadURL=$(curl -s "https://api.renewedvision.com/v1/pro/upgrade?platform=macos&osVersion=12&appVersion=771&buildNumber=117899527&includeNotes=false" | grep -Eo '"downloadUrl":.*?[^\]",' | head -n 1 | cut -d \" -f 4 | sed -e 's/\\//g') + appNewVersion=$(curl -s "https://api.renewedvision.com/v1/pro/upgrade?platform=macos&osVersion=12&appVersion=771&buildNumber=117899527&includeNotes=false" | grep -Eo '"version":.*?[^\]",' | head -n 1 | cut -d \" -f 4) + expectedTeamID="97GAAZ6CPX" + ;; protonvpn) name="ProtonVPN" type="dmg" @@ -3796,6 +4064,13 @@ pymol) downloadURL=$(curl -s -L "https://pymol.org/" | grep -m 1 -Eio 'href="https://pymol.org/installers/PyMOL-(.*)-MacOS(.*).dmg"' | cut -c7- | sed -e 's/"$//') expectedTeamID="26SDDJ756N" ;; +qgis-pr) + name="QGIS" + type="dmg" + downloadURL="https://download.qgis.org/downloads/macos/qgis-macos-pr.dmg" + appNewVersion="$(curl -fs "https://www.qgis.org/da/_static/documentation_options.js" | grep -i version | cut -d "'" -f2)" + expectedTeamID="4F7N4UDA22" + ;; r) name="R" type="pkg" @@ -3811,10 +4086,15 @@ ramboxce) expectedTeamID="7F292FPD69" ;; rancherdesktop) - name="Rancher.Desktop-1.0.0-mac" + name="Rancher Desktop" type="zip" - archiveName="Rancher.Desktop-[0-9.]*-mac.zip" - downloadURL="$(downloadURLFromGit rancher-sandbox rancher-desktop)" + if [[ $(arch) == "arm64" ]]; then + archiveName="Rancher.Desktop-[0-9.]*-mac.aarch64.zip" + downloadURL="$(downloadURLFromGit rancher-sandbox rancher-desktop)" + elif [[ $(arch) == "i386" ]]; then + archiveName="Rancher.Desktop-[0-9.]*-mac.x86_64.zip" + downloadURL="$(downloadURLFromGit rancher-sandbox rancher-desktop)" + fi appNewVersion="$(versionFromGit rancher-sandbox rancher-desktop)" expectedTeamID="2Q6FHJR3H3" appName="Rancher Desktop.app" @@ -3837,14 +4117,15 @@ redeye) remotedesktopmanagerenterprise) name="Remote Desktop Manager" type="dmg" - downloadURL=$(curl -fs https://remotedesktopmanager.com/home/thankyou/rdmmacbin | grep -oe "http.*\.dmg" | head -1) + downloadURL=$(curl -fs https://devolutions.net/remote-desktop-manager/home/thankyou/rdmmacbin | grep -oe "http.*\.dmg" | head -1) appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g') expectedTeamID="N592S9ASDB" + blockingProcesses=( "$name" ) ;; remotedesktopmanagerfree) name="Remote Desktop Manager Free" type="dmg" - downloadURL=$(curl -fs https://remotedesktopmanager.com/home/thankyou/rdmmacfreebin | grep -oe "http.*\.dmg" | head -1) + downloadURL=$(curl -fs https://devolutions.net/remote-desktop-manager/home/thankyou/rdmmacfreebin | grep -oe "http.*\.dmg" | head -1) appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g') expectedTeamID="N592S9ASDB" ;; @@ -3885,11 +4166,15 @@ ricohpsprinters) ;; ringcentralapp) # credit: Isaac Ordonez, Mann consulting (@mannconsulting) - name="Glip" - type="dmg" - downloadURL="https://downloads.ringcentral.com/glip/rc/GlipForMac" + name="Ringcentral" + type="pkg" + if [[ $(arch) != "i386" ]]; then + downloadURL="https://app.ringcentral.com/download/RingCentral-arm64.pkg" + else + downloadURL="https://app.ringcentral.com/download/RingCentral.pkg" + fi expectedTeamID="M932RC5J66" - blockingProcesses=( "Glip" ) + blockingProcesses=( "Ringcentral" ) ;; ringcentralclassicapp) name="Glip" @@ -4019,6 +4304,13 @@ shield) appNewVersion=$(versionFromGit theevilbit Shield) expectedTeamID="33YRLYRBYV" ;; +shottr) + name="Shottr" + type="dmg" + downloadURL="https://shottr.cc/dl/Shottr-1.5.3.dmg" + appNewVersion=$( echo ${downloadURL} | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' ) + expectedTeamID="2Y683PRQWN" + ;; sidekick) name="Sidekick" type="dmg" @@ -4060,7 +4352,7 @@ sizeup) sketch) name="Sketch" 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' | tr '"' "\n" | grep -E "https.*.zip") 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" ;; @@ -4078,6 +4370,18 @@ skype) expectedTeamID="AL798K98FX" Company="Microsoft" ;; +slab) + name="Slab" + type="dmg" + if [[ $(arch) == i386 ]]; then + archiveName="Slab-[0-9.]*-darwin-x64.dmg" + elif [[ $(arch) == arm64 ]]; then + archiveName="Slab-[0-9.]*-darwin-arm64.dmg" + fi + downloadURL=$(downloadURLFromGit slab desktop-releases) + appNewVersion=$(versionFromGit slab desktop-releases) + expectedTeamID="Q67SW996Z5" + ;; slack) name="Slack" type="dmg" @@ -4097,11 +4401,32 @@ smartgit) expectedTeamID="PHMY45PTNW" ;; snagit|\ -snagit2021|\ -snagit2020) +snagit2022) + name="Snagit 2022" + type="dmg" + downloadURL=$(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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep -A 3 "Snagit (Mac) 2022" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) + 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Snagit (Mac) 2022" | sed -e 's/.*Snagit (Mac) //' -e 's/<\/td>.*//') + expectedTeamID="7TQL462TU8" + ;; +snagit2019) + name="Snagit 2019" + type="dmg" + downloadURL=$(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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep -A 3 "Snagit (Mac) 2019" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) + 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Snagit (Mac) 2019" | sed -e 's/.*Snagit (Mac) //' -e 's/<\/td>.*//') + expectedTeamID="7TQL462TU8" + ;; + snagit2020) + name="Snagit 2020" + type="dmg" + downloadURL=$(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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep -A 3 "Snagit (Mac) 2020" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) + 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Snagit (Mac) 2020" | sed -e 's/.*Snagit (Mac) //' -e 's/<\/td>.*//') + expectedTeamID="7TQL462TU8" + ;; + snagit2021) name="Snagit 2021" type="dmg" - downloadURL="https://download.techsmith.com/snagitmac/releases/Snagit.dmg" + downloadURL=$(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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep -A 3 "Snagit (Mac) 2021" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) + 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Snagit (Mac) 2021" | sed -e 's/.*Snagit (Mac) //' -e 's/<\/td>.*//') expectedTeamID="7TQL462TU8" ;; snapgeneviewer) @@ -4111,6 +4436,15 @@ 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" ;; +sonobus) + name="Sonobus" + type="pkgInDmg" + html_page_source="$(curl -fs 'https://www.sonobus.net')" + downloadFile="$(echo "${html_page_source}" | xmllint --html --xpath "string(//a[contains(@href, 'mac.dmg')]/@href)" - 2> /dev/null)" + downloadURL="https://www.sonobus.net/$downloadFile" + appNewVersion="$(echo "${downloadFile}" | sed 's/releases\/sonobus-//' | sed 's/\-mac.dmg//' )" + expectedTeamID="XCS435894D" + ;; sonos|\ sonoss1) # credit: Erik Stam (@erikstam) @@ -4262,8 +4596,15 @@ tageditor) talkdeskcallbar) name="Callbar" type="dmg" - downloadURL=https://downloadcallbar.talkdesk.com/Callbar-$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version":"\([^"]*\)".*$/\1/p').dmg - appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version":"\([^"]*\)".*$/\1/p') + appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*$/\1/p') + 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) + downloadURL="https://td-infra-prd-us-east-1-s3-atlaselectron.s3.amazonaws.com/talkdesk-${appNewVersion}.dmg" expectedTeamID="YGGJX44TB8" ;; taskpaper) @@ -4357,6 +4698,31 @@ thunderbird) expectedTeamID="43AQ936H96" blockingProcesses=( thunderbird ) ;; +thunderbird_intl) + # This label will try to figure out the selected language of the user, + # and install corrosponding version of Thunderbird + name="Thunderbird" + type="dmg" + userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale | tr '_' '-') + printlog "Found language $userLanguage to be used for $name." + releaseURL="https://ftp.mozilla.org/pub/thunderbird/releases/latest/README.txt" + until curl -fs $releaseURL | grep -q "=$userLanguage"; do + if [ ${#userLanguage} -eq 2 ]; then + break + fi + printlog "No locale matching '$userLanguage', trying '${userLanguage:0:2}'" + userLanguage=${userLanguage:0:2} + done + printlog "Using language '$userLanguage' for download." + downloadURL="https://download.mozilla.org/?product=thunderbird-latest&os=osx&lang=$userLanguage" + if ! curl -sfL --output /dev/null -r 0-0 $downloadURL; then + printlog "Download not found for '$userLanguage', using default ('en-US')." + downloadURL="https://download.mozilla.org/?product=thunderbird-latest&os=osx" + fi + appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"/"); print a[1]}') + expectedTeamID="43AQ936H96" + blockingProcesses=( thunderbird ) + ;; tidal) name="TIDAL" type="dmg" @@ -4415,6 +4781,14 @@ typora) appNewVersion=$(curl -fs "https://www.typora.io/download/dev_update.xml" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f2) expectedTeamID="9HWK5273G4" ;; +ultimakercura) + name="Ultimaker Cura" + type="dmg" + downloadURL="$(downloadURLFromGit Ultimaker Cura)" + archiveName="Ultimaker_Cura-[0-9].*-Darwin.dmg" + appNewVersion=$(versionFromGit Ultimaker Cura ) + expectedTeamID="V4B3JXRRQS" + ;; umbrellaroamingclient) # credit: Tadayuki Onishi (@kenchan0130) name="Umbrella Roaming Client" @@ -4436,6 +4810,14 @@ universaltypeclient) downloadURL=https://bin.extensis.com/$( curl -fs https://www.extensis.com/support/universal-type-server-7/ | grep -o "UTC-[0-9].*M.zip" ) expectedTeamID="J6MMHGD9D6" ;; +unnaturalscrollwheels) + name="UnnaturalScrollWheels" + type="dmg" + downloadURL="$(downloadURLFromGit ther0n UnnaturalScrollWheels)" + appNewVersion="$(versionFromGit ther0n UnnaturalScrollWheels)" + expectedTeamID="D6H5W2T379" + blockingProcesses=( UnnaturalScrollWheels ) + ;; utm) name="UTM" type="dmg" @@ -4563,6 +4945,12 @@ webexmeetings) #blockingProcessesMaxCPU="5" blockingProcesses=( Webex ) ;; +wechat) + name="WeChat" + type="dmg" + downloadURL="https://dldir1.qq.com/weixin/mac/WeChatMac.dmg" + expectedTeamID="5A4RE8SF68" + ;; whatsapp) name="WhatsApp" type="dmg" @@ -4618,6 +5006,15 @@ xeroxphaser7800) downloadURL=$(curl -fs "https://www.support.xerox.com/en-us/product/phaser-7800/downloads?platform=macOSx11" | xmllint --html --format - 2>/dev/null | grep -o "https://.*XeroxDrivers.*.dmg") expectedTeamID="G59Y3XFNFR" ;; +xeroxworkcentre7800) + name="XeroxWorkCentre" + type="pkgInDmg" + appCustomVersion(){ lpinfo -m | grep 783 | tail -n 1 | awk -F ', ' '{print $2}' } + appNewVersion=$( curl -fsL "https://www.support.xerox.com/nl-nl/product/workcentre-7800-series/downloads?platform=macOSx11" | grep .dmg | head -n 1 | awk -F '_' '{print $2}' ) + downloadURL=$( curl -fsL "https://www.support.xerox.com/nl-nl/product/workcentre-7800-series/downloads?platform=macOSx11" | xmllint --html --format - 2>/dev/null | grep -o "https://.*XeroxDrivers.*.dmg" ) + expectedTeamID="G59Y3XFNFR" + blockingProcesses=( NONE ) +;; xink) name="Xink" type="pkg" @@ -4682,6 +5079,14 @@ zohoworkdrive) 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" ;; +zohoworkdrivegenie) + name="Zoho WorkDrive Genie" + type="dmg" + # https://www.zoho.com/workdrive/genie.html + downloadURL="https://www.zoho.com/workdrive/downloads/edit-tool/Zoho_WorkDrive_Genie.dmg" + CLIInstaller="Zoho WorkDrive Genie.app/Contents/MacOS/Zoho WorkDrive Genie" + expectedTeamID="TZ824L8Y37" + ;; zohoworkdrivetruesync) # Using this label expects you to agree to these: # License Areemant: https://www.zoho.com/workdrive/zohoworkdrive-license-agreement.html diff --git a/Labels.txt b/Labels.txt index 96652a8..cabdcf4 100644 --- a/Labels.txt +++ b/Labels.txt @@ -21,6 +21,7 @@ amazonchime amazoncorretto8jdk amazonworkspaces androidfiletransfer +androidstudio anydesk apparency appcleaner @@ -34,6 +35,7 @@ aquaskk arq7 asana atext +atextlegacy atom audacity authydesktop @@ -65,6 +67,8 @@ calcservice calibre camostudio camtasia +camtasia2019 +camtasia2021 canva chatwork cisdem-documentreader @@ -74,11 +78,14 @@ clickshare clipy closeio cloudya +clue +cluefull code42 coderunner colourcontrastanalyser cormorant craftmanager +craftmanagerforsketch cryptomator cyberduck daisydisk @@ -95,13 +102,17 @@ dialog dialpad discord diskspace +displaylinkmanager docker dockutil +drawio drift dropbox +duckduckgo easeusdatarecoverywizard easyfind egnyte +egnytewebedit element eraseinstall eshareosx @@ -114,6 +125,7 @@ fastscripts favro ferdi figma +filezilla findanyfile firefox firefox_da @@ -122,8 +134,11 @@ firefoxesr firefoxesr_intl firefoxesrpkg firefoxpkg +firefoxpkg_intl flowjo flux +flycut +fontexplorer front fsmonitor gimp @@ -151,10 +166,14 @@ hazel houdahspot hpeasyadmin hpeasystart +hype hyper ibarcoder icons +idrive +idrivethin iina +imageoptim imazingprofileeditor inkscape insomnia @@ -193,6 +212,8 @@ lastpass launchbar lexarrecoverytool libreoffice +linear +logioptions logitechoptions logseq loom @@ -202,6 +223,7 @@ lulu macadminspython maccyapp macfuse +macoslaps macports malwarebytes marathon @@ -233,6 +255,8 @@ microsoftteams microsoftvisualstudiocode microsoftword microsoftyammer +mightymike +mindmanager miro mobikinassistantforandroid mochakeyboard @@ -277,6 +301,7 @@ paretosecurity parsec pdfsam perimeter81 +pika pitch plantronicshub platypus @@ -288,10 +313,12 @@ privileges proctortrack promiseutility promiseutilityr +propresenter7 protonvpn proxyman pycharmce pymol +qgis-pr r ramboxce rancherdesktop @@ -332,12 +359,16 @@ sizeup sketch sketchupviewer skype +slab slack smartgit snagit +snagit2019 snagit2020 snagit2021 +snagit2022 snapgeneviewer +sonobus sonos sonoss1 sonoss2 @@ -360,6 +391,7 @@ tableaupublic tableaureader tageditor talkdeskcallbar +talkdeskcxcloud taskpaper teamviewer teamviewerhost @@ -372,6 +404,7 @@ textmate theunarchiver things thunderbird +thunderbird_intl tidal toggltrack tom4aconverter @@ -380,9 +413,11 @@ trex tunnelbear tunnelblick typora +ultimakercura umbrellaroamingclient uniconverter universaltypeclient +unnaturalscrollwheels utm vagrant vanilla @@ -400,6 +435,7 @@ wallyezflash webex webexmeetings webexteams +wechat whatsapp wickrme wickrpro @@ -407,6 +443,7 @@ wireshark wordservice wwdc xeroxphaser7800 +xeroxworkcentre7800 xink xmenu xquartz @@ -415,6 +452,7 @@ yubikeymanagerqt zappy zeplin zohoworkdrive +zohoworkdrivegenie zohoworkdrivetruesync zoom zoomclient diff --git a/fragments/labels/1password8.sh b/fragments/labels/1password8.sh index 8ca3e78..c426113 100644 --- a/fragments/labels/1password8.sh +++ b/fragments/labels/1password8.sh @@ -12,4 +12,4 @@ expectedTeamID="2BUA8C4S2C" blockingProcesses=( "1Password Extension Helper" "1Password 7" "1Password" "1Password (Safari)" "1PasswordNativeMessageHost" "1PasswordSafariAppExtension" ) #forcefulQuit=YES - ;; \ No newline at end of file + ;; diff --git a/fragments/labels/amazoncorretto8jdk.sh b/fragments/labels/amazoncorretto8jdk.sh index 48d6b5e..38696f6 100644 --- a/fragments/labels/amazoncorretto8jdk.sh +++ b/fragments/labels/amazoncorretto8jdk.sh @@ -9,4 +9,4 @@ type="pkg" appNewVersion=$(curl -s https://raw.githubusercontent.com/corretto/corretto-8/develop/CHANGELOG.md | grep "## Corretto version" | head -n 1 | awk '{ print $4; exit}') fi expectedTeamID="94KV3E626L" -;; \ No newline at end of file +;; diff --git a/fragments/labels/androidstudio.sh b/fragments/labels/androidstudio.sh index 2fe2307..b016f65 100644 --- a/fragments/labels/androidstudio.sh +++ b/fragments/labels/androidstudio.sh @@ -10,4 +10,4 @@ androidstudio) fi expectedTeamID="EQHXZ8M8AV" blockingProcesses=( androidstudio ) - ;; \ No newline at end of file + ;; diff --git a/fragments/labels/camtasia2020.sh b/fragments/labels/camtasia2020.sh index 9f2bea3..8dba168 100644 --- a/fragments/labels/camtasia2020.sh +++ b/fragments/labels/camtasia2020.sh @@ -5,4 +5,3 @@ camtasia2020) 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Camtasia (Mac) 2020" | sed -e 's/.*Camtasia (Mac) //' -e 's/<\/td>.*//') expectedTeamID="7TQL462TU8" ;; - \ No newline at end of file diff --git a/fragments/labels/postman.sh b/fragments/labels/postman.sh index 4fc3285..e59860c 100644 --- a/fragments/labels/postman.sh +++ b/fragments/labels/postman.sh @@ -9,4 +9,4 @@ postman) appNewVersion=$(curl -fsL --head "${downloadURL}" | grep "content-disposition:" | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/') fi expectedTeamID="H7H8Q7M5CK" - ;; \ No newline at end of file + ;; diff --git a/fragments/labels/propresenter7.sh b/fragments/labels/propresenter7.sh index 786ce0b..56a366c 100644 --- a/fragments/labels/propresenter7.sh +++ b/fragments/labels/propresenter7.sh @@ -6,4 +6,4 @@ propresenter7) downloadURL=$(curl -s "https://api.renewedvision.com/v1/pro/upgrade?platform=macos&osVersion=12&appVersion=771&buildNumber=117899527&includeNotes=false" | grep -Eo '"downloadUrl":.*?[^\]",' | head -n 1 | cut -d \" -f 4 | sed -e 's/\\//g') appNewVersion=$(curl -s "https://api.renewedvision.com/v1/pro/upgrade?platform=macos&osVersion=12&appVersion=771&buildNumber=117899527&includeNotes=false" | grep -Eo '"version":.*?[^\]",' | head -n 1 | cut -d \" -f 4) expectedTeamID="97GAAZ6CPX" - ;; \ No newline at end of file + ;; diff --git a/fragments/labels/snagit2019.sh b/fragments/labels/snagit2019.sh index 2133138..baab34f 100644 --- a/fragments/labels/snagit2019.sh +++ b/fragments/labels/snagit2019.sh @@ -5,4 +5,3 @@ snagit2019) 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Snagit (Mac) 2019" | sed -e 's/.*Snagit (Mac) //' -e 's/<\/td>.*//') expectedTeamID="7TQL462TU8" ;; - \ No newline at end of file diff --git a/fragments/labels/snagit2020.sh b/fragments/labels/snagit2020.sh index eb03c39..7a92964 100644 --- a/fragments/labels/snagit2020.sh +++ b/fragments/labels/snagit2020.sh @@ -5,4 +5,3 @@ snagit2020) 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://support.techsmith.com/hc/en-us/articles/360004908652-Desktop-Product-Download-Links" | grep "Snagit (Mac) 2020" | sed -e 's/.*Snagit (Mac) //' -e 's/<\/td>.*//') expectedTeamID="7TQL462TU8" ;; - \ No newline at end of file diff --git a/fragments/labels/sonobus.sh b/fragments/labels/sonobus.sh index 0aa9d9a..a5f9508 100644 --- a/fragments/labels/sonobus.sh +++ b/fragments/labels/sonobus.sh @@ -1,9 +1,9 @@ sonobus) -name="Sonobus" -type="pkgInDmg" -html_page_source="$(curl -fs 'https://www.sonobus.net')" -downloadFile="$(echo "${html_page_source}" | xmllint --html --xpath "string(//a[contains(@href, 'mac.dmg')]/@href)" - 2> /dev/null)" -downloadURL="https://www.sonobus.net/$downloadFile" -appNewVersion="$(echo "${downloadFile}" | sed 's/releases\/sonobus-//' | sed 's/\-mac.dmg//' )" -expectedTeamID="XCS435894D" -;; \ No newline at end of file + name="Sonobus" + type="pkgInDmg" + html_page_source="$(curl -fs 'https://www.sonobus.net')" + downloadFile="$(echo "${html_page_source}" | xmllint --html --xpath "string(//a[contains(@href, 'mac.dmg')]/@href)" - 2> /dev/null)" + downloadURL="https://www.sonobus.net/$downloadFile" + appNewVersion="$(echo "${downloadFile}" | sed 's/releases\/sonobus-//' | sed 's/\-mac.dmg//' )" + expectedTeamID="XCS435894D" + ;; diff --git a/fragments/labels/UltimakerCura.sh b/fragments/labels/ultimakercura.sh similarity index 100% rename from fragments/labels/UltimakerCura.sh rename to fragments/labels/ultimakercura.sh diff --git a/fragments/labels/unnaturalscrollwheels.sh b/fragments/labels/unnaturalscrollwheels.sh index 18608ef..35cfea0 100644 --- a/fragments/labels/unnaturalscrollwheels.sh +++ b/fragments/labels/unnaturalscrollwheels.sh @@ -5,4 +5,4 @@ unnaturalscrollwheels) appNewVersion="$(versionFromGit ther0n UnnaturalScrollWheels)" expectedTeamID="D6H5W2T379" blockingProcesses=( UnnaturalScrollWheels ) - ;; \ No newline at end of file + ;; diff --git a/fragments/version.sh b/fragments/version.sh index c1d513b..1a2c355 100644 --- a/fragments/version.sh +++ b/fragments/version.sh @@ -1 +1 @@ -9.2beta +9.2