diff --git a/Installomator.sh b/Installomator.sh index 025a68c..a43384e 100755 --- a/Installomator.sh +++ b/Installomator.sh @@ -322,8 +322,8 @@ if [[ $(/usr/bin/arch) == "arm64" ]]; then rosetta2=no fi fi -VERSION="10.0beta2" -VERSIONDATE="2022-09-02" +VERSION="10.0beta3" +VERSIONDATE="2022-09-30" # MARK: Functions @@ -489,11 +489,19 @@ 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=https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*$archiveName" | head -1) + downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$archiveName\"/ { print \$4; exit }") + if [[ "$(echo $downloadURL | grep -ioE "https.*$archiveName")" == "" ]]; then + printlog "GitHub API not returning URL, trying https://github.com/$gitusername/$gitreponame/releases/latest." + #downloadURL=https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*$archiveName" | head -1) + downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*$archiveName" | head -1)" + fi 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 -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1) + downloadURL=$(curl -sfL "https://api.github.com/repos/$gitusername/$gitreponame/releases/latest" | awk -F '"' "/browser_download_url/ && /$filetype\"/ { print \$4; exit }") + if [[ "$(echo $downloadURL | grep -ioE "https.*.$filetype")" == "" ]]; then + printlog "GitHub API not returning URL, trying https://github.com/$gitusername/$gitreponame/releases/latest." + #downloadURL=https://github.com$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1) + downloadURL="https://github.com$(curl -sfL "$(curl -sfL "https://github.com/$gitusername/$gitreponame/releases/latest" | tr '"' "\n" | grep -i "expanded_assets" | head -1)" | tr '"' "\n" | grep -i "^/.*\/releases\/download\/.*\.$filetype" | head -1)" + fi fi if [ -z "$downloadURL" ]; then cleanupAndExit 14 "could not retrieve download URL for $gitusername/$gitreponame" ERROR @@ -612,6 +620,10 @@ getAppVersion() { printlog "Replacing App Store apps, no matter the version" WARN appversion=0 else + if [[ $DIALOG_CMD_FILE != "" ]]; then + updateDialog "wait" "Already installed from App Store. Not replaced." + sleep 4 + fi cleanupAndExit 23 "App previously installed from App Store, and we respect that" ERROR fi fi @@ -789,6 +801,10 @@ installAppWithPath() { # $1: path to app to install in $targetDir printlog "notifying" displaynotification "$message" "No update for $name!" fi + if [[ $DIALOG_CMD_FILE != "" ]]; then + updateDialog "wait" "Latest version already installed..." + sleep 2 + fi cleanupAndExit 0 "No new version to install" REG else printlog "Using force to install anyway." @@ -955,6 +971,10 @@ installFromPKG() { printlog "notifying" displaynotification "$message" "No update for $name!" fi + if [[ $DIALOG_CMD_FILE != "" ]]; then + updateDialog "wait" "Latest version already installed..." + sleep 2 + fi cleanupAndExit 0 "No new version to install" REQ else printlog "Using force to install anyway." @@ -1557,6 +1577,15 @@ remotixagent) versionKey="CFBundleVersion" appNewVersion=$(curl -fsIL "${downloadURL}" | grep -i "^location" | sed -E 's/.*\/[a-zA-Z]*-[0-9.]*-([0-9.]*)\.pkg/\1/g') expectedTeamID="H629V387SY" + blockingProcesses=( NONE ) + ;; +adobeacrobatprodc) + name="Adobe Acrobat Pro DC" + type="pkgInDmg" + downloadURL="https://trials.adobe.com/AdobeProducts/APRO/Acrobat_HelpX/osx10/Acrobat_DC_Web_WWMUI.dmg" + expectedTeamID="JQ525L2MZD" + blockingProcesses=( "Acrobat Pro DC" ) + Company="Adobe" ;; adobebrackets) name="Brackets" @@ -1577,30 +1606,98 @@ adobeconnect) ;; adobecreativeclouddesktop) name="Adobe Creative Cloud" - #appName="Install.app" + 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 "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'osx10')][contains(text(),'Download')]/@href)" - 2> /dev/null) - elif [[ $(arch) == "i386" ]]; then - downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'macarm64')][contains(text(),'Download')]/@href)" - 2> /dev/null) + if pgrep -q "Adobe Installer"; then + printlog "Adobe Installer is running, not a good time to update." WARN + printlog "################## End $APPLICATION \n\n" INFO + exit 75 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) + 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' | head -1 | cut -d '"' -f1) + else + downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o 'https.*osx10.*dmg' | head -1 | cut -d '"' -f1) + fi + #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) + appNewVersion=$(echo $downloadURL | grep -o '[^x]*$' | cut -d '.' -f 1 | sed 's/_/\./g') + targetDir="/Applications/Utilities/Adobe Creative Cloud/ACC/" installerTool="Install.app" CLIInstaller="Install.app/Contents/MacOS/Install" CLIArguments=(--mode=silent) expectedTeamID="JQ525L2MZD" + blockingProcesses=( "Creative Cloud" ) Company="Adobe" ;; +adobereaderdc-install) + name="Adobe Acrobat Reader DC" + type="pkgInDmg" + printlog "Changing IFS for Adobe Reader" INFO + SAVEIFS=$IFS + IFS=$'\n' + versions=( $( curl -s https://www.adobe.com/devnet-docs/acrobatetk/tools/ReleaseNotesDC/index.html | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+"| head -n 30) ) + local version + for version in $versions; do + version="${version//.}" + printlog "trying version: $version" INFO + local httpstatus=$(curl -X HEAD -s "https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/${version}/AcroRdrDC_${version}_MUI.dmg" --write-out "%{http_code}") + printlog "HTTP status for Adobe Reader full installer URL https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/${version}/AcroRdrDC_${version}_MUI.dmg is $httpstatus" DEBUG + if [[ "${httpstatus}" == "200" ]]; then + downloadURL="https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/${version}/AcroRdrDC_${version}_MUI.dmg" + unset httpstatus + break + fi + done + unset version + IFS=$SAVEIFS + appNewVersion=$i + expectedTeamID="JQ525L2MZD" + blockingProcesses=( "AdobeReader" ) + Company="Adobe" + PatchName="AcrobatReader" + ;; 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 https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/"$adobecurrent"/AcroRdrDC_"$adobecurrent"_MUI.dmg) + if [[ -d "/Applications/Adobe Acrobat Reader DC.app" ]]; then + printlog "Found /Applications/Adobe Acrobat Reader DC.app" + mkdir -p "/Library/Application Support/Adobe/Acrobat/11.0" + defaults write "/Library/Application Support/Adobe/Acrobat/11.0/com.adobe.Acrobat.InstallerOverrides.plist" ReaderAppPath "/Applications/Adobe Acrobat Reader DC.app" + if ! defaults read "/Applications/Adobe Acrobat Reader DC.app/Contents/Resources/AcroLocale.plist" ; then + printlog "Missing locale data, this will cause the updater to fail. Deleting Adobe Acrobat Reader DC.app and installing fresh." WARN + rm -Rf "/Applications/Adobe Acrobat Reader DC.app" + if [[ $1 == "/" ]]; then + printlog "Running through Jamf: $0." INFO + $0 $1 $2 $3 adobereaderdc-install ${5} ${6} ${7} ${8} ${9} ${10} ${11} + else + printlog "Installomator running locally: $0." INFO + $0 adobereaderdc-install ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9} ${10} ${11} + fi + fi + fi + adobecurrent=$(curl -sL https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt | tr -d '.') + if [[ "${adobecurrent}" != <-> ]]; then + printlog "Got an invalid response for the Adobe Reader Current Version: ${adobecurrent}" ERROR + printlog "################## End $APPLICATION \n\n" INFO + exit 50 + fi + downloadURL=$(echo https://ardownload2.adobe.com/pub/adobe/reader/mac/AcrobatDC/"$adobecurrent"/AcroRdrDCUpd"$adobecurrent"_MUI.dmg) + reader_preinstall() { + if pgrep -a "AdobeReader" >/dev/null 2>&1; then + printlog "AdobeReader is still running, forcefully killing." WARN + killall AdobeReader + fi + } + preinstall="reader_preinstall" + updateTool="/usr/local/bin/RemoteUpdateManager" + updateToolArguments=( --productVersions=RDR ) 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) + updateToolLog="/Users/$currentUser/Library/Logs/RemoteUpdateManager.log" + updateToolLogDateFormat="%m/%d/%y %H:%M:%S" expectedTeamID="JQ525L2MZD" blockingProcesses=( "AdobeReader" ) + Company=Adobe + PatchName=AcrobatReader + PatchSkip="YES" ;; adobereaderdc|\ adobereaderdc-install) @@ -1785,6 +1882,26 @@ aquaskk) appNewVersion=$(versionFromGit codefirst aquaskk) expectedTeamID="FPZK4WRGW7" ;; +archiwareb2go) + name="P5 Workstation" + type="pkgInDmg" + packageID="com.archiware.presstore" + appNewVersion=$(curl -sf https://www.archiware.com/download-p5 | grep -m 1 "ARCHIWARE P5 Version" | sed "s|.*Version \(.*\) -.*|\\1|") + downloadURL=$(appNrVersion=`sed 's/[^0-9]//g' <<< $appNewVersion` && echo https://p5-downloads.s3.amazonaws.com/awpst"$appNrVersion"-darwin.dmg) + pkgName=$(appNrVersion=`sed 's/[^0-9]//g' <<< $appNewVersion` && echo P5-Workstation-"$appNrVersion"-Install.pkg) + expectedTeamID="5H5EU6F965" + # blockingProcesses=( nsd ) + ;; +archiwarepst) + name="P5" + type="pkgInDmg" + packageID="com.archiware.presstore" + appNewVersion=$(curl -sf https://www.archiware.com/download-p5 | grep -m 1 "ARCHIWARE P5 Version" | sed "s|.*Version \(.*\) -.*|\\1|") + downloadURL=$(appNrVersion=`sed 's/[^0-9]//g' <<< $appNewVersion` && echo https://p5-downloads.s3.amazonaws.com/awpst"$appNrVersion"-darwin.dmg) + pkgName=$(appNrVersion=`sed 's/[^0-9]//g' <<< $appNewVersion` && echo P5-"$appNrVersion"-Install.pkg) + expectedTeamID="5H5EU6F965" + # blockingProcesses=( nsd ) + ;; arq7) name="Arq7" type="pkg" @@ -1825,7 +1942,13 @@ atom) audacity) name="Audacity" type="dmg" - downloadURL=$(downloadURLFromGit audacity audacity) + if [[ $(arch) == "arm64" ]]; then + archiveName="audacity-macOS-[0-9.]*-arm64.dmg" + downloadURL=$(downloadURLFromGit audacity audacity) + elif [[ $(arch) == "i386" ]]; then + archiveName="audacity-macOS-[0-9.]*-x86_64.dmg" + downloadURL=$(downloadURLFromGit audacity audacity) + fi appNewVersion=$(versionFromGit audacity audacity) expectedTeamID="AWEYX923UX" ;; @@ -1942,7 +2065,14 @@ bettertouchtool) appNewVersion=$(curl -fs https://updates.folivora.ai/bettertouchtool_release_notes.html | grep BetterTouchTool | head -n 2 | tail -n 1 | sed -E 's/.* ([0-9\.]*) .*/\1/g') expectedTeamID="DAFVSXZ82P" ;; -bitwarden) +bitrix24) + name="Bitrix24" + type="dmg" + archiveName="bitrix24_desktop.dmg" + downloadURL="https://dl.bitrix24.com/b24/bitrix24_desktop.dmg" + expectedTeamID="5B3T3A994N" + blockingProcesses=( "Bitrix24" ) + ;;bitwarden) name="Bitwarden" type="dmg" downloadURL=$(downloadURLFromGit bitwarden desktop ) @@ -2111,12 +2241,37 @@ carboncopycloner) appNewVersion=$(sed -E 's/.*-([0-9.]*)\.zip/\1/g' <<< $downloadURL | sed 's/\.[^.]*$//') expectedTeamID="L4F2DED5Q7" ;; -chatwork) +charles) + name="Charles" + type="dmg" + appNewVersion=$(curl -fs https://www.charlesproxy.com/download/latest-release/ | sed -nE 's/.*version.*value="([^"]*).*/\1/p') + downloadURL="https://www.charlesproxy.com/assets/release/$appNewVersion/charles-proxy-$appNewVersion.dmg" + expectedTeamID="9A5PCU4FSD" + ;;chatwork) name="Chatwork" type="dmg" downloadURL="https://desktop-app.chatwork.com/installer/Chatwork.dmg" expectedTeamID="H34A3H2Y54" ;; +chronoagent) + name="ChronoAgent" + type="pkgInDmg" + # packageID="com.econtechnologies.preference.chronoagent" + # versionKey="CFBundleVersion" + # None of the above can read out the installed version + releaseURL="https://www.econtechnologies.com/UC/updatecheck.php?prod=ChronoAgent&lang=en&plat=mac&os=10.14.1&hw=i64&req=1&vers=#" + appNewVersion=$(curl -sf $releaseURL | sed -r 's/.*VERSION=([^<]+).*/\1/') + downloadURL="https://downloads.econtechnologies.com/CA_Mac_Download.dmg" + expectedTeamID="9U697UM7YX" + ;; +chronosync) + name="ChronoSync" + type="pkgInDmg" + releaseURL="https://www.econtechnologies.com/UC/updatecheck.php?prod=ChronoSync&lang=en&plat=mac&os=10.14.1&hw=i64&req=1&vers=#" + appNewVersion=$(curl -sf $releaseURL | sed -r 's/.*VERSION=([^<]+).*/\1/') + downloadURL="https://downloads.econtechnologies.com/CS4_Download.dmg" + expectedTeamID="9U697UM7YX" + ;; cisdem-documentreader) name="cisdem-documentreader" type="dmg" @@ -2276,6 +2431,17 @@ cyberduck) appNewVersion=$(curl -fs https://version.cyberduck.io/changelog.rss | xpath '//rss/channel/item/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f 2 ) expectedTeamID="G69SCX94XU" ;; +cytoscape) + name="Cytoscape" + #appName="Cytoscape Installer.app" + type="dmg" + downloadURL="$(downloadURLFromGit cytoscape cytoscape)" + appNewVersion="$(versionFromGit cytoscape cytoscape)" + installerTool="Cytoscape Installer.app" + CLIInstaller="Cytoscape Installer.app/Contents/MacOS/JavaApplicationStub" + CLIArguments=(-q) + expectedTeamID="35LDCJ33QT" + ;; daisydisk) name="DaisyDisk" type="zip" @@ -2444,10 +2610,10 @@ 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) + 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" ;; duodevicehealth) @@ -2603,6 +2769,14 @@ figma) appNewVersion="$(curl -fsL https://desktop.figma.com/mac/RELEASE.json | awk -F '"' '{ print $8 }')" expectedTeamID="T8RA8NE3B7" ;; +filemakerpro) + name="FileMaker Pro" + type="dmg" + versionKey="BuildVersion" + downloadURL=$(curl -fs https://www.filemaker.com/redirects/ss.txt | grep '\"PRO..MAC\"' | tail -1 | sed "s|.*url\":\"\(.*\)\".*|\\1|") + appNewVersion=$(curl -fs https://www.filemaker.com/redirects/ss.txt | grep '\"PRO..MAC\"' | tail -1 | sed "s|.*fmp_\(.*\).dmg.*|\\1|") + expectedTeamID="J6K4T76U7W" + ;; filezilla) name="FileZilla" type="tbz" @@ -2796,6 +2970,20 @@ fsmonitor) downloadURL=$(curl --location --fail --silent "https://fsmonitor.com/FSMonitor/Archives/appcast2.xml" | xpath '//rss/channel/item[last()]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2) expectedTeamID="V85GBYB7B9" ;; +fujifilmwebcam) + name="FUJIFILM X Webcam 2" + type="pkg" + downloadURL=$(curl -fs "https://fujifilm-x.com/en-us/support/download/software/x-webcam/" | grep "https.*pkg" | sed -E 's/.*(https:\/\/dl.fujifilm-x\.com\/support\/software\/.*\.pkg[^\<]).*/\1/g' | sed -e 's/^"//' -e 's/"$//') + appNewVersion=$( echo “${downloadURL}” | sed -E 's/.*XWebcamIns([0-9]*).*/\1/g' | sed -E 's/([0-9])([0-9]).*/\1\.\2/g') + expectedTeamID="34LRP8AV2M" + ;; +gfxcardstatus) + name="gfxCardStatus" + type="zip" + downloadURL="$(downloadURLFromGit codykrieger gfxCardStatus)" + appNewVersion="$(versionFromGit codykrieger gfxCardStatus)" + expectedTeamID="LF22FTQC25" + ;; gimp) name="GIMP-2.10" type="dmg" @@ -2999,6 +3187,20 @@ hazel) appNewVersion=$(curl -fsI https://www.noodlesoft.com/Products/Hazel/download | grep -i "^location" | awk '{print $2}' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g') expectedTeamID="86Z3GCJ4MF" ;; +horos) + name="Horos" + type="dmg" + versionKey="CFBundleGetInfoString" + appNewVersion=$(curl -fs https://github.com/horosproject/horos/blob/horos/Horos/Info.plist | grep -A 4 "CFBundleGetInfoString" | tail -1 | sed -r 's/.*Horos v([^<]+).*/\1/' | sed 's/ //g') + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://horosproject.org/horos-content/Horos"$appNewVersion"_Apple.dmg" + TeamID="8NDFEW7285" + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://horosproject.org/horos-content/Horos"$appNewVersion".dmg" + TeamID="TPT6TVH8UY" + fi + expectedTeamID=$TeamID + ;; houdahspot) name="HoudahSpot" type="zip" @@ -3430,6 +3632,13 @@ lastpass) expectedTeamID="N24REP3BMN" Company="Marvasol, Inc DBA LastPass" ;; +latexit) + name="LaTeXiT" + type="dmg" + downloadURL="$(curl -fs "https://pierre.chachatelier.fr/latexit/downloads/latexit-sparkle-en.rss" | xpath '(//rss/channel/item/enclosure/@url)[last()]' 2>/dev/null | cut -d '"' -f 2)" + appNewVersion="$(curl -fs "https://pierre.chachatelier.fr/latexit/downloads/latexit-sparkle-en.rss" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[last()]' 2>/dev/null | cut -d '"' -f 2)" + expectedTeamID="7SFX84GNR7" + ;; launchbar) name="LaunchBar" type="dmg" @@ -3454,11 +3663,14 @@ libreoffice) name="LibreOffice" type="dmg" if [[ $(arch) == "arm64" ]]; then - arch_type="aarch64" + releaseURL="https://downloadarchive.documentfoundation.org/libreoffice/old/latest/mac/aarch64/" + appNewVersion=$(curl -sf $releaseURL | grep -m 1 "_MacOS_aarch64.dmg" | sed "s|.*LibreOffice_\(.*\)_MacOS.*|\\1|") + downloadURL="https://downloadarchive.documentfoundation.org/libreoffice/old/latest/mac/aarch64/LibreOffice_"$appNewVersion"_MacOS_aarch64.dmg" + elif [[ $(arch) == "i386" ]]; then + releaseURL="https://downloadarchive.documentfoundation.org/libreoffice/old/latest/mac/x86_64/" + appNewVersion=$(curl -sf $releaseURL | grep -m 1 "_MacOS_x86-64.dmg" | sed "s|.*LibreOffice_\(.*\)_MacOS.*|\\1|") + downloadURL="https://downloadarchive.documentfoundation.org/libreoffice/old/latest/mac/x86_64/LibreOffice_"$appNewVersion"_MacOS_x86-64.dmg" fi - 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 ) ;; @@ -4115,7 +4327,6 @@ nomad) downloadURL="https://files.nomad.menu/NoMAD.pkg" appNewVersion=$(curl -fs https://nomad.menu/support/ | grep "NoMAD Downloads" | sed -E 's/.*Current Version ([0-9\.]*)<.*/\1/g') expectedTeamID="VRPY9KHGX6" - blockingProcesses=( NONE ) ;; nomadlogin) # credit: Søren Theilgaard (@theilgaard) @@ -4148,10 +4359,21 @@ notion) nudge) name="Nudge" type="pkg" + archiveName="Nudge-[0-9.]*.pkg" downloadURL=$(downloadURLFromGit macadmins Nudge ) appNewVersion=$(versionFromGit macadmins Nudge ) expectedTeamID="9GQZ7KUFR6" - archiveName="Nudge-[0-9.]*.pkg" + + ;; +nudgesuite) + name="Nudge Suite" + appName="Nudge.app" + type="pkg" + archiveName="Nudge_Suite-[0-9.]*.pkg" + downloadURL=$(downloadURLFromGit macadmins Nudge ) + appNewVersion=$(versionFromGit macadmins Nudge ) + expectedTeamID="9GQZ7KUFR6" + blockingProcesses=( "Nudge" ) ;; nvivo) name="NVivo" @@ -4162,10 +4384,15 @@ nvivo) blockingProcesses=( NVivo NVivoHelper ) ;; obs) - # credit: Gabe Marchan (gabemarchan.com - @darklink87) name="OBS" type="dmg" - downloadURL=$(curl -fs "https://obsproject.com/download" | awk -F '"' "/dmg/ {print \$10}") + if [[ $(arch) == "arm64" ]]; then + archiveName="obs-studio-[0-9.]*-macos-arm64.dmg" + elif [[ $(arch) == "i386" ]]; then + archiveName="obs-studio-[0-9.]*-macos-x86_64.dmg" + fi + downloadURL=$(downloadURLFromGit obsproject obs-studio ) + appNewVersion=$(versionFromGit obsproject obs-studio ) expectedTeamID="2MMRE5MTB8" ;; obsidian) @@ -4283,7 +4510,13 @@ opera) versionKey="CFBundleVersion" expectedTeamID="A2P9LX4JPN" ;; -ottomatic) +origin) + name="Origin" + type="dmg" + downloadURL="https://www.dm.origin.com/mac/download/Origin.dmg" + expectedTeamID="TSTV75T6Q5" + blockingProcesses=( "Origin" ) + ;;ottomatic) name="Otto Matic" type="dmg" downloadURL=$(downloadURLFromGit jorio OttoMatic) @@ -4384,6 +4617,13 @@ plisteditpro) downloadURL="https://www.fatcatsoftware.com/plisteditpro/PlistEditPro.zip" expectedTeamID="8NQ43ND65V" ;; +polylens) + name="Poly Lens" + type="dmg" + appNewVersion=$(curl -fs "https://info.lens.poly.com/lens-dt-rn/atom.xml" | grep "Version" | head -1 | cut -d "[" -f3 | sed 's/Version //g' | sed 's/]]\>\<\/title\>//g') + downloadURL="https://swupdate.lens.poly.com/lens-desktop-mac/$appNewVersion/$appNewVersion/PolyLens-$appNewVersion.dmg" + expectedTeamID="SKWK2Q7JJV" + ;; postman) name="Postman" type="zip" @@ -4485,8 +4725,13 @@ qgis-pr) r) name="R" type="pkg" - downloadURL="https://cloud.r-project.org/bin/macosx/$( curl -fsL https://cloud.r-project.org/bin/macosx/ | grep -m 1 -o '' | sed -E 's/.+"(.+)".+/\1/g' )" - appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g') + if [[ $(arch) == "arm64" ]]; then + downloadURL="https://cloud.r-project.org/bin/macosx/$( curl -fsL https://cloud.r-project.org/bin/macosx/ | grep -m 1 -o '' | sed -E 's/.+"(.+)".+/\1/g' )" + appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*\..*/\1/g') + elif [[ $(arch) == "i386" ]]; then + downloadURL="https://cloud.r-project.org/bin/macosx/$( curl -fsL https://cloud.r-project.org/bin/macosx/ | grep -o '' | grep -m 1 -v "arm64" | sed -E 's/.+"(.+)".+/\1/g' )" + appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g') + fi expectedTeamID="VZLD955F6P" ;; ramboxce) @@ -4636,7 +4881,7 @@ rstudio) name="RStudio" type="dmg" downloadURL=$(curl -s -L "https://rstudio.com/products/rstudio/download/" | grep -m 1 -Eio 'href="https://download1.rstudio.org/desktop/macos/RStudio-(.*).dmg"' | cut -c7- | sed -e 's/"$//') - appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' ) + appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.-]*)\..*/\1/g' | sed 's/-/+/' ) expectedTeamID="FYF2F5GFX4" ;; santa) @@ -4647,7 +4892,6 @@ santa) downloadURL=$(downloadURLFromGit google santa) appNewVersion=$(versionFromGit google santa) expectedTeamID="EQHXZ8M8AV" - blockingProcesses=( NONE ) ;; scaleft) name="ScaleFT" @@ -4660,7 +4904,12 @@ scaleft) screamingfrogseospider) name="Screaming Frog SEO Spider" type="dmg" - downloadURL=$(curl -fs "https://www.screamingfrog.co.uk/wp-content/themes/screamingfrog/inc/download-modal.php" | grep -i -o "https.*\.dmg" | head -1) + if [[ $(arch) == i386 ]]; then + platform="Mac - (intel)" + elif [[ $(arch) == arm64 ]]; then + platform="Mac - (apple silicon)" + fi + downloadURL=$(curl -fs "https://www.screamingfrog.co.uk/wp-content/themes/screamingfrog/inc/download-modal.php" | grep "${platform}" | grep -i -o "https.*\.dmg" | head -1) appNewVersion=$(print "$downloadURL" | sed -E 's/https.*\/[a-zA-Z]*-([0-9.]*)\.dmg/\1/g')".0" expectedTeamID="CAHEVC3HZC" ;; @@ -4877,6 +5126,14 @@ sourcetree) appNewVersion=$(echo "${downloadURL}" | sed -E 's/.*\/Sourcetree_([0-9.]*)_[0-9]*\.zip/\1/g') expectedTeamID="UPXU4CQZ5P" ;; +splashtopbusiness) + name="Splashtop Business" + type="pkgInDmg" + splashtopbusinessVersions=$(curl -fsL "https://www.splashtop.com/wp-content/themes/responsive/downloadx.php?product=stb&platform=mac-client") + downloadURL=$(getJSONValue "$splashtopbusinessVersions" "url") + appNewVersion="${${downloadURL#*INSTALLER_v}%*.dmg}" + expectedTeamID="CPQQ3AW49Y" + ;; splashtopsos) name="Splashtop SOS" type="dmg" @@ -5028,6 +5285,14 @@ tageditor) appNewVersion=$(curl -sf "https://amvidia.com/tag-editor" | grep -o -E '"softwareVersion":.'"{8}" | sed -E 's/.*"([0-9.]*).*/\1/g') expectedTeamID="F2TH9XX9CJ" ;; +tailscale) + name="Tailscale" + type="zip" + appNewVersion="$(curl -s https://pkgs.tailscale.com/stable/ | awk -F- '/Tailscale.*macos.zip/ {print $2}')" + downloadURL="https://pkgs.tailscale.com/stable/Tailscale-${appNewVersion}-macos.zip" + expectedTeamID="W5364U7YZB" + versionKey="CFBundleShortVersionString" + ;; talkdeskcallbar) name="Callbar" type="dmg" @@ -5343,11 +5608,12 @@ vlc) type="dmg" if [[ $(arch) == "arm64" ]]; then downloadURL=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-arm64.xml | xpath '//rss/channel/item[last()]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2 ) - appNewVersion=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-arm64.xml | xpath '//rss/channel/item[last()]/enclosure/@sparkle:version' 2>/dev/null | cut -d '"' -f 2 ) + #appNewVersion=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-arm64.xml | xpath '//rss/channel/item[last()]/enclosure/@sparkle:version' 2>/dev/null | cut -d '"' -f 2 ) elif [[ $(arch) == "i386" ]]; then downloadURL=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-intel64.xml | xpath '//rss/channel/item[last()]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2 ) - appNewVersion=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-intel64.xml | xpath '//rss/channel/item[last()]/enclosure/@sparkle:version' 2>/dev/null | cut -d '"' -f 2 ) + #appNewVersion=$(curl -fs http://update.videolan.org/vlc/sparkle/vlc-intel64.xml | xpath '//rss/channel/item[last()]/enclosure/@sparkle:version' 2>/dev/null | cut -d '"' -f 2 ) fi + appNewVersion=$(echo ${downloadURL} | sed -E 's/.*\/vlc-([0-9.]*).*\.dmg/\1/' ) expectedTeamID="75GAHG3SZQ" ;; vmwarehorizonclient) @@ -5453,13 +5719,16 @@ wwdc) ;; xcreds) name="XCreds" - #type="pkgInZip" + # Downloading from twocanoes homepage + #type="pkgInDmg" #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') + # GitHub download type="pkg" downloadURL="$(downloadURLFromGit twocanoes xcreds)" - appNewVersion="$(versionFromGit twocanoes xcreds)" + #appNewVersion="$(versionFromGit twocanoes xcreds)" # GitHub tag contain “_” and not “.” so our function fails to get the right version + appNewVersion=$(echo "$downloadURL" | sed -E 's/.*XCreds_.*-([0-9.]*)\.pkg/\1/') expectedTeamID="UXP6YEHSPW" ;; xeroxphaser7800) @@ -5590,6 +5859,16 @@ zoomgov) expectedTeamID="BJ4HAAB9B3" versionKey="CFBundleVersion" ;; +zoomoutlookplugin) + name="Zoom Outlook Plugin" + appName="PluginLauncher.app" + targetDir="/Applications/ZoomOutlookPlugin" + type="pkg" + downloadURL="https://zoom.us/client/latest/ZoomMacOutlookPlugin.pkg" + appNewVersion="$(curl -fsIL ${downloadURL} | grep -i ^location | cut -d "/" -f5 | cut -d "." -f1-3)" + expectedTeamID="BJ4HAAB9B3" + blockingProcesses=( "PluginLauncher" ) + ;; zoomrooms) name="ZoomRooms" type="pkg" @@ -5599,6 +5878,14 @@ zoomrooms) expectedTeamID="BJ4HAAB9B3" blockingProcesses=( "ZoomPresence" ) ;; +zotero) + name="Zotero" + type="dmg" + downloadURL="https://www.zotero.org/download/client/dl?channel=release&platform=mac&version=$(curl -fs "https://www.zotero.org/download/" | grep -Eio '"mac":"(.*)' | cut -d '"' -f 4)" + expectedTeamID="8LAYR367YV" + appNewVersion=$(curl -fs "https://www.zotero.org/download/" | grep -Eio '"mac":"(.*)' | cut -d '"' -f 4) + #Company="Corporation for Digital Scholarship" + ;; zulujdk11) name="Zulu JDK 11" type="pkgInDmg" @@ -5849,6 +6136,10 @@ if [[ -n $appNewVersion ]]; then printlog "notifying" displaynotification "$message" "No update for $name!" fi + if [[ $DIALOG_CMD_FILE != "" ]]; then + updateDialog "complete" "Latest version already installed..." + sleep 2 + fi cleanupAndExit 0 "No newer version." REQ fi else diff --git a/Labels.txt b/Labels.txt index c0de3d3..0720dea 100644 --- a/Labels.txt +++ b/Labels.txt @@ -7,11 +7,13 @@ abetterfinderrename11 abstract acroniscyberprotectconnect acroniscyberprotectconnectagent +adobeacrobatprodc adobebrackets adobeconnect adobecreativeclouddesktop adobereaderdc adobereaderdc-install +adobereaderdc-install adobereaderdc-update aircall airserver @@ -35,6 +37,8 @@ applesfmono applesfpro applesfsymbols aquaskk +archiwareb2go +archiwarepst arq7 asana atext @@ -56,7 +60,7 @@ bartender basecamp3 bbedit bettertouchtool -bitwarden +bitrix24 blender bluejeans bluejeanswithaudiodriver @@ -76,7 +80,9 @@ camtasia2020 camtasia2021 canva carboncopycloner -chatwork +charles +chronoagent +chronosync cisdem-documentreader citrixworkspace clevershare2 @@ -97,6 +103,7 @@ craftmanagerforsketch cricutdesignspace cryptomator cyberduck +cytoscape daisydisk dangerzone darktable @@ -137,6 +144,7 @@ favro fellow ferdi figma +filemakerpro filezilla findanyfile firefox @@ -154,6 +162,8 @@ flycut fontexplorer front fsmonitor +fujifilmwebcam +gfxcardstatus gimp githubdesktop golang @@ -178,6 +188,7 @@ gyazogif hancock handbrake hazel +horos houdahspot hpeasyadmin hpeasystart @@ -227,6 +238,7 @@ knockknock krisp krita lastpass +latexit launchbar lcadvancedvpnclient lexarrecoverytool @@ -299,6 +311,7 @@ nomadlogin nordlayer notion nudge +nudgesuite nvivo obs obsidian @@ -316,7 +329,7 @@ onlyofficedesktop openvpnconnect openvpnconnectv3 opera -ottomatic +origin overflow pacifist packages @@ -330,6 +343,7 @@ pitch plantronicshub platypus plisteditpro +polylens postman prism9 pritunl @@ -400,6 +414,7 @@ sonos sonoss1 sonoss2 sourcetree +splashtopbusiness splashtopsos spotify sqlpropostgres @@ -420,6 +435,7 @@ tableaudesktop tableaupublic tableaureader tageditor +tailscale talkdeskcallbar talkdeskcxcloud taskpaper @@ -489,7 +505,9 @@ zohoworkdrivetruesync zoom zoomclient zoomgov +zoomoutlookplugin zoomrooms +zotero zulujdk11 zulujdk13 zulujdk15