4 Commits

Author SHA1 Message Date
Søren Theilgaard
0b22cc2423 Create forticlient_ztna.sh 2022-05-12 15:55:25 +02:00
Armin Briegel
ad5ad5f408 Merge pull request #394 from willpolley/dev
Added label propresenter7
2022-05-12 15:47:22 +02:00
Armin Briegel
69fbc31078 Merge pull request #492 from lart2150/bugfix/ringcentralapp
updates for ringcentral app
2022-05-12 15:24:13 +02:00
Armin Briegel
cd5a4b2b5e Merge pull request #450 from bbenkle/dev
DBeaverCE
2022-05-12 10:24:17 +02:00
79 changed files with 263 additions and 1255 deletions

View File

@@ -1,71 +1,6 @@
## 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 ## 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) - added option for Microsoft Endpoint Manager (Intune) to `LOGO` (#446)
- minor fixes (#427, #434, #436) - minor fixes (#427, #434, #436)

View File

@@ -238,7 +238,7 @@ IGNORE_DND_APPS=""
# - updateToolArguments: # - updateToolArguments:
# When Installomator detects an existing installation of the application, # When Installomator detects an existing installation of the application,
# and the updateTool variable is set # and the updateTool variable is set
# $updateTool $updateArguments # $updateTool $updateArguments
# Will be run instead of of downloading and installing a complete new version. # Will be run instead of of downloading and installing a complete new version.
# Use this when the updateTool does differential and optimized downloads. # Use this when the updateTool does differential and optimized downloads.
# e.g. msupdate on various Microsoft labels # 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 # 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 # `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: # 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 # For most installations `CLIInstaller` should contain the `installerTool` for the CLI call
# (if its the same). # (if its the same).
# We can support a whole range of other software titles by implementing this. # 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 rosetta2=no
fi fi
fi fi
VERSION="9.2" VERSION="9.1"
VERSIONDATE="2022-05-16" VERSIONDATE="2022-03-18"
# MARK: Functions # MARK: Functions
@@ -549,8 +549,8 @@ getAppVersion() {
# printlog "App(s) found: ${applist}" DEBUG # printlog "App(s) found: ${applist}" DEBUG
# applist=$(mdfind "kind:application AND name:$appName" -0 ) # applist=$(mdfind "kind:application AND name:$appName" -0 )
fi fi
if [[ -z $applist ]]; then if [[ -z applist ]]; then
printlog "No previous app found" WARN printlog "No previous app found" INFO
else else
printlog "App(s) found: ${applist}" INFO printlog "App(s) found: ${applist}" INFO
fi fi
@@ -572,7 +572,7 @@ getAppVersion() {
if [[ -d "$installedAppPath"/Contents/_MASReceipt ]];then if [[ -d "$installedAppPath"/Contents/_MASReceipt ]];then
printlog "Installed $appName is from App Store, use “IGNORE_APP_STORE_APPS=yes” to replace." printlog "Installed $appName is from App Store, use “IGNORE_APP_STORE_APPS=yes” to replace."
if [[ $IGNORE_APP_STORE_APPS == "yes" ]]; then if [[ $IGNORE_APP_STORE_APPS == "yes" ]]; then
printlog "Replacing App Store apps, no matter the version" WARN printlog "Replacing App Store apps, no matter the version"
appversion=0 appversion=0
else else
cleanupAndExit 1 "App previously installed from App Store, and we respect that" ERROR cleanupAndExit 1 "App previously installed from App Store, and we respect that" ERROR
@@ -1302,21 +1302,6 @@ valuesfromarguments)
blockingProcesses=( "1Password Extension Helper" "1Password 7" "1Password (Safari)" "1PasswordNativeMessageHost" "1PasswordSafariAppExtension" ) blockingProcesses=( "1Password Extension Helper" "1Password 7" "1Password (Safari)" "1PasswordNativeMessageHost" "1PasswordSafariAppExtension" )
#forcefulQuit=YES #forcefulQuit=YES
;; ;;
1password8)
name="1Password 8"
appName="1Password.app"
type="zip"
if [[ $(arch) == "arm64" ]]; then
archiveName="1Password-latest-aarch64.zip"
downloadURL="https://downloads.1password.com/mac/1Password-latest-aarch64.zip"
elif [[ $(arch) == "i386" ]]; then
archiveName="1Password-latest-x86_64.zip"
downloadURL="https://downloads.1password.com/mac/1Password-latest-x86_64.zip"
fi
expectedTeamID="2BUA8C4S2C"
blockingProcesses=( "1Password Extension Helper" "1Password 7" "1Password" "1Password (Safari)" "1PasswordNativeMessageHost" "1PasswordSafariAppExtension" )
#forcefulQuit=YES
;;
1passwordcli) 1passwordcli)
name="1Password CLI" name="1Password CLI"
type="pkg" type="pkg"
@@ -1387,7 +1372,7 @@ adobecreativeclouddesktop)
adobereaderdc-update) adobereaderdc-update)
name="Adobe Acrobat Reader DC" name="Adobe Acrobat Reader DC"
type="pkgInDmg" 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) 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)
appNewVersion=$(curl -s https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt) 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) #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" expectedTeamID="JQ525L2MZD"
@@ -1398,8 +1383,7 @@ adobereaderdc-install)
name="Adobe Acrobat Reader DC" name="Adobe Acrobat Reader DC"
type="pkgInDmg" type="pkgInDmg"
packageID="com.adobe.acrobat.DC.reader.app.pkg.MUI" 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 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) #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" expectedTeamID="JQ525L2MZD"
@@ -1468,13 +1452,8 @@ amazonchime)
amazoncorretto8jdk) amazoncorretto8jdk)
name="Amazon Corretto 8 JDK" name="Amazon Corretto 8 JDK"
type="pkg" type="pkg"
if [[ $(arch) == "arm64" ]]; then downloadURL="https://corretto.aws/downloads/latest/amazon-corretto-8-x64-macos-jdk.pkg"
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}')
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" expectedTeamID="94KV3E626L"
;; ;;
amazonworkspaces) amazonworkspaces)
@@ -1491,19 +1470,6 @@ androidfiletransfer)
downloadURL="https://dl.google.com/dl/androidjumper/mtp/current/AndroidFileTransfer.dmg" downloadURL="https://dl.google.com/dl/androidjumper/mtp/current/AndroidFileTransfer.dmg"
expectedTeamID="EQHXZ8M8AV" 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) anydesk)
name="AnyDesk" name="AnyDesk"
type="dmg" type="dmg"
@@ -1598,13 +1564,6 @@ atext)
downloadURL="https://trankynam.com/atext/downloads/aText.dmg" downloadURL="https://trankynam.com/atext/downloads/aText.dmg"
expectedTeamID="KHEMQ2FD9E" expectedTeamID="KHEMQ2FD9E"
;; ;;
atextlegacy)
# credit: Gabe Marchan (gabemarchan.com - @darklink87)
name="aText"
type="dmg"
downloadURL="https://trankynam.com/atext/downloads/aTextLegacy.dmg"
expectedTeamID="KHEMQ2FD9E"
;;
atom) atom)
name="Atom" name="Atom"
type="zip" type="zip"
@@ -1844,26 +1803,10 @@ camostudio)
# Camo Studio will ask for admin permissions to install som plug-ins. that has not been handled. # Camo Studio will ask for admin permissions to install som plug-ins. that has not been handled.
expectedTeamID="Q248YREB53" expectedTeamID="Q248YREB53"
;; ;;
camtasia|\ camtasia)
camtasia2021)
name="Camtasia 2021"
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) 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"
;;
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" name="Camtasia 2020"
type="dmg" 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) downloadURL=https://download.techsmith.com/camtasiamac/releases/Camtasia.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" expectedTeamID="7TQL462TU8"
;; ;;
canva) canva)
@@ -1896,7 +1839,7 @@ citrixworkspace)
name="Citrix Workspace" name="Citrix Workspace"
type="pkgInDmg" 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 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 "<p>Version" | head -1 | awk '{print $2}' | cut -d "." -f 1-3) appNewVersion=$(curl -fs https://www.citrix.com/downloads/workspace-app/mac/workspace-app-for-mac-latest.html | grep "<p>Version" | head -1 | cut -d " " -f1 | cut -d ";" -f2 | cut -d "." -f 1-3)
expectedTeamID="S272Y5R93J" expectedTeamID="S272Y5R93J"
;; ;;
clevershare2) clevershare2)
@@ -1934,24 +1877,6 @@ 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')" 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" 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) code42)
name="Code42" name="Code42"
type="pkgInDmg" type="pkgInDmg"
@@ -1994,13 +1919,6 @@ 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)" appNewVersion="$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | head -1 | cut -d '"' -f 2)"
expectedTeamID="VRXQSNCL5W" expectedTeamID="VRXQSNCL5W"
;; ;;
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) cryptomator)
name="Cryptomator" name="Cryptomator"
type="dmg" type="dmg"
@@ -2040,13 +1958,7 @@ darktable)
dbeaverce) dbeaverce)
name="DBeaver" name="DBeaver"
type="dmg" type="dmg"
if [[ $(arch) == "arm64" ]]; then downloadURL="https://dbeaver.io/files/dbeaver-ce-latest-macos.dmg"
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" expectedTeamID="42B6MDKMW8"
blockingProcesses=( dbeaver ) blockingProcesses=( dbeaver )
;; ;;
@@ -2127,14 +2039,6 @@ diskspace)
appNewVersion="$(versionFromGit scriptingosx diskspace)" appNewVersion="$(versionFromGit scriptingosx diskspace)"
expectedTeamID="JME5BW3F3R" 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) docker)
name="Docker" name="Docker"
type="dmg" type="dmg"
@@ -2156,15 +2060,6 @@ dockutil)
expectedTeamID="Z5J8CJBUWC" expectedTeamID="Z5J8CJBUWC"
blockingProcesses=( NONE ) 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) drift)
# credit Elena Ackley (@elenaelago) # credit Elena Ackley (@elenaelago)
name="Drift" name="Drift"
@@ -2176,19 +2071,8 @@ dropbox)
name="Dropbox" name="Dropbox"
type="dmg" type="dmg"
downloadURL="https://www.dropbox.com/download?plat=mac&full=1" 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" 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) easeusdatarecoverywizard)
# credit: Søren Theilgaard (@theilgaard) # credit: Søren Theilgaard (@theilgaard)
name="EaseUS Data Recovery Wizard" name="EaseUS Data Recovery Wizard"
@@ -2212,15 +2096,6 @@ egnyte)
expectedTeamID="FELUD555VC" expectedTeamID="FELUD555VC"
blockingProcesses=( NONE ) 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) element)
name="Element" name="Element"
type="dmg" type="dmg"
@@ -2318,16 +2193,6 @@ figma)
appNewVersion="$(curl -fsL https://desktop.figma.com/mac/RELEASE.json | awk -F '"' '{ print $8 }')" appNewVersion="$(curl -fsL https://desktop.figma.com/mac/RELEASE.json | awk -F '"' '{ print $8 }')"
expectedTeamID="T8RA8NE3B7" 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) findanyfile)
name="Find Any File" name="Find Any File"
type="zip" type="zip"
@@ -2342,7 +2207,6 @@ firefox)
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2) appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;; ;;
firefox_da) firefox_da)
name="Firefox" name="Firefox"
@@ -2351,33 +2215,29 @@ firefox_da)
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2) appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox, firefox_da and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;; ;;
firefox_intl) firefox_intl)
# This label will try to figure out the selected language of the user, # This label will try to figure out the selected language of the user,
# and install corrosponding version of Firefox # and install corrosponding version of Firefox
name="Firefox" name="Firefox"
type="dmg" type="dmg"
userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale | tr '_' '-') userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale)
printlog "Found language $userLanguage to be used for $name." printlog "Found language $userLanguage to be used for Firefox."
releaseURL="https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" | grep -o "=$userLanguage"; then
until curl -fs $releaseURL | grep -q "=$userLanguage"; do userLanguage=$(echo $userLanguage | cut -c 1-2)
if [ ${#userLanguage} -eq 2 ]; then if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" | grep "=$userLanguage"; then
break userLanguage="en_US"
fi 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=firefox-latest-ssl&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=firefox-latest-ssl&os=osx"
fi fi
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"/"); print a[1]}') printlog "Using language $userLanguage for download."
downloadURL="https://download.mozilla.org/?product=firefox-latest&amp;os=osx&amp;lang=$userLanguage"
if ! curl -sfL --output /dev/null -r 0-0 "$downloadURL" ; then
printlog "Download not found for that language. Using en-US"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
fi
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;; ;;
firefoxesr|\ firefoxesr|\
firefoxesrpkg) firefoxesrpkg)
@@ -2393,56 +2253,29 @@ firefoxesr_intl)
# and install corrosponding version of Firefox ESR # and install corrosponding version of Firefox ESR
name="Firefox" name="Firefox"
type="dmg" type="dmg"
userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale | tr '_' '-') userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale)
printlog "Found language $userLanguage to be used for $name." printlog "Found language $userLanguage to be used for Firefox."
releaseURL="https://ftp.mozilla.org/pub/firefox/releases/latest-esr/README.txt" if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest-esr/README.txt" | grep -o "=$userLanguage"; then
until curl -fs $releaseURL | grep -q "=$userLanguage"; do userLanguage=$(echo $userLanguage | cut -c 1-2)
if [ ${#userLanguage} -eq 2 ]; then if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest-esr/README.txt" | grep "=$userLanguage"; then
break userLanguage="en_US"
fi 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=firefox-esr-latest-ssl&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=firefox-esr-latest-ssl&os=osx"
fi fi
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"esr/"); print a[1]}') printlog "Using language $userLanguage for download."
downloadURL="https://download.mozilla.org/?product=firefox-esr-latest-ssl&os=osx&lang=$userLanguage"
# https://download.mozilla.org/?product=firefox-esr-latest-ssl&os=osx&lang=en-US
if ! curl -sfL --output /dev/null -r 0-0 "$downloadURL" ; then
printlog "Download not found for that language. Using en-US"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
fi
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*releases\/([0-9.]*)esr.*/\1/g')
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;; ;;
firefoxpkg) firefoxpkg)
name="Firefox" name="Firefox"
type="pkg" type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US" downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;
firefoxpkg_intl)
# This label will try to figure out the selected language of the user,
# and install corrosponding version of Firefox ESR
name="Firefox"
type="pkg"
userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale)
printlog "Found language $userLanguage to be used for Firefox." WARN
if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" | grep -o "=$userLanguage"; then
userLanguage=$(echo $userLanguage | cut -c 1-2)
if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" | grep "=$userLanguage"; then
userLanguage="en_US"
fi
fi
printlog "Using language $userLanguage for download." WARN
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=$userLanguage"
# https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US
if ! curl -sfL --output /dev/null -r 0-0 "$downloadURL" ; then
printlog "Download not found for that language. Using en-US" WARN
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
fi
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location | cut -d "/" -f7)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
;; ;;
@@ -2461,23 +2294,6 @@ flux)
expectedTeamID="VZKSA7H9J9" expectedTeamID="VZKSA7H9J9"
;; ;;
flycut)
name="Flycut"
type="zip"
archiveName="Flycut.[0-9.]*.zip"
downloadURL="$(downloadURLFromGit TermiT Flycut)"
appNewVersion=$(versionFromGit TermiT Flycut )
expectedTeamID="S8JLSG5ES7"
;;
fontexplorer)
name="FontExplorer X Pro"
type="dmg"
packageID="com.linotype.FontExplorerX"
downloadURL="http://www.fontexplorerx.com/download/free-trial/Mac/"
appNewVersion=$( curl -fsL http://fex.linotype.com/update/client/mac/pro/version.plist | grep string | tail -n 1 | sed 's/[^0-9.]//g' )
expectedTeamID="2V7G2B7WG4"
;;
front) front)
name="Front" name="Front"
type="dmg" type="dmg"
@@ -2530,7 +2346,6 @@ googlechrome)
downloadURL="https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg" downloadURL="https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg"
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}') appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}')
expectedTeamID="EQHXZ8M8AV" expectedTeamID="EQHXZ8M8AV"
printlog "WARNING for ERROR: Label googlechrome should not be used. Instead use googlechromepkg as per recommendations from Google. It's not fully certain that the app actually gets updated here. googlechromepkg will have built in updates and make sure the client is updated in the future." REQ
;; ;;
googlechromepkg) googlechromepkg)
name="Google Chrome" name="Google Chrome"
@@ -2540,7 +2355,6 @@ googlechromepkg)
# https://support.google.com/chrome/a/answer/9915669 # https://support.google.com/chrome/a/answer/9915669
# #
downloadURL="https://dl.google.com/chrome/mac/stable/accept_tos%3Dhttps%253A%252F%252Fwww.google.com%252Fintl%252Fen_ph%252Fchrome%252Fterms%252F%26_and_accept_tos%3Dhttps%253A%252F%252Fpolicies.google.com%252Fterms/googlechrome.pkg" downloadURL="https://dl.google.com/chrome/mac/stable/accept_tos%3Dhttps%253A%252F%252Fwww.google.com%252Fintl%252Fen_ph%252Fchrome%252Fterms%252F%26_and_accept_tos%3Dhttps%253A%252F%252Fpolicies.google.com%252Fterms/googlechrome.pkg"
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}')
expectedTeamID="EQHXZ8M8AV" expectedTeamID="EQHXZ8M8AV"
updateTool="/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent" updateTool="/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent"
updateToolArguments=( -runMode oneshot -userInitiated YES ) updateToolArguments=( -runMode oneshot -userInitiated YES )
@@ -2598,7 +2412,6 @@ gpgsuite)
type="pkgInDmg" type="pkgInDmg"
pkgName="Install.pkg" pkgName="Install.pkg"
downloadURL=$(curl -s https://gpgtools.org/ | grep https://releases.gpgtools.org/GPG_Suite- | grep Download | cut -d'"' -f4) downloadURL=$(curl -s https://gpgtools.org/ | grep https://releases.gpgtools.org/GPG_Suite- | grep Download | cut -d'"' -f4)
appNewVersion=$(echo $downloadURL | cut -d "-" -f 2 | cut -d "." -f 1-2)
expectedTeamID="PKV8ZPD836" expectedTeamID="PKV8ZPD836"
blockingProcesses=( "GPG Keychain" ) blockingProcesses=( "GPG Keychain" )
;; ;;
@@ -2611,16 +2424,14 @@ gpgsync)
expectedTeamID="P24U45L8P5" expectedTeamID="P24U45L8P5"
;; ;;
grammarly) grammarly)
name="Grammarly Desktop" name="Grammarly Desktop"
type="dmg" type="dmg"
packageID="com.grammarly.ProjectLlama" packageID="com.grammarly.ProjectLlama"
downloadURL=$(curl -fsL "https://download-mac.grammarly.com/appcast.xml" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2) downloadURL=$(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" expectedTeamID="W8F64X92K3"
appNewVersion=$(curl -is "https://download-mac.grammarly.com/appcast.xml" | grep sparkle:version | tr ',' '\n' | grep sparkle:version | cut -d '"' -f 4) 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" appName="Grammarly Installer.app"
installerTool="Grammarly Installer.app" ;;
CLIInstaller="Grammarly Installer.app/Contents/MacOS/Grammarly Desktop"
;;
grandperspective) grandperspective)
name="GrandPerspective" name="GrandPerspective"
type="dmg" type="dmg"
@@ -2696,15 +2507,6 @@ hpeasystart)
downloadURL="https://ftp.hp.com/pub/softlib/software12/HP_Quick_Start/osx/Applications/HP_Easy_Start.app.zip" downloadURL="https://ftp.hp.com/pub/softlib/software12/HP_Quick_Start/osx/Applications/HP_Easy_Start.app.zip"
expectedTeamID="6HB5Y2QTA3" 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) hyper)
name="Hyper" name="Hyper"
type="dmg" type="dmg"
@@ -2732,24 +2534,6 @@ icons)
appNewVersion=$(versionFromGit sap macOS-icon-generator ) appNewVersion=$(versionFromGit sap macOS-icon-generator )
expectedTeamID="7R5ZEU67FQ" 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) iina)
name="IINA" name="IINA"
type="dmg" type="dmg"
@@ -2757,15 +2541,6 @@ iina)
appNewVersion=$(versionFromGit iina iina ) appNewVersion=$(versionFromGit iina iina )
expectedTeamID="67CQ77V27R" 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) imazingprofileeditor)
# Credit: Bilal Habib @Pro4TLZZ # Credit: Bilal Habib @Pro4TLZZ
name="iMazing Profile Editor" name="iMazing Profile Editor"
@@ -3100,24 +2875,8 @@ libreoffice)
expectedTeamID="7P5S3ZLCN7" expectedTeamID="7P5S3ZLCN7"
blockingProcesses=( soffice ) 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) logitechoptions)
name="Logi Options" name="Logitech Options"
type="pkgInZip" 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=$(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" downloadURL="https://download01.logi.com/web/ftp/pub/techsupport/options/options_installer.zip"
@@ -3198,14 +2957,6 @@ macfuse)
appNewVersion=$(versionFromGit osxfuse osxfuse) appNewVersion=$(versionFromGit osxfuse osxfuse)
expectedTeamID="3T5GSNBU6W" 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) macports)
name="MacPorts" name="MacPorts"
type="pkg" type="pkg"
@@ -3547,20 +3298,6 @@ 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" #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 ?????? ) #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) miro)
# credit: @matins # credit: @matins
name="Miro" name="Miro"
@@ -3848,12 +3585,7 @@ onionshare)
onlyofficedesktop) onlyofficedesktop)
name="ONLYOFFICE" name="ONLYOFFICE"
type="dmg" type="dmg"
if [[ $(arch) == "arm64" ]]; then downloadURL="https://download.onlyoffice.com/install/desktop/editors/mac/distrib/onlyoffice/ONLYOFFICE.dmg"
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" expectedTeamID="2WH24U26GJ"
;; ;;
openvpnconnect) openvpnconnect)
@@ -3945,15 +3677,6 @@ perimeter81)
appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i ^x-amz-meta-version | sed -E 's/x-amz-meta-version: //' | cut -d"." -f1-3)" appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i ^x-amz-meta-version | sed -E 's/x-amz-meta-version: //' | cut -d"." -f1-3)"
expectedTeamID="924635PD62" expectedTeamID="924635PD62"
;; ;;
pika)
name="Pika"
type="dmg"
packageID="com.superhighfives.Pika"
downloadURL=$(downloadURLFromGit "superhighfives" "pika")
appNewVersion=$(versionFromGit "superhighfives" "pika")
expectedTeamID="TGHU37N6EX"
blockingProcesses=( NONE )
;;
pitch) pitch)
name="Pitch" name="Pitch"
type="dmg" type="dmg"
@@ -3981,15 +3704,11 @@ plisteditpro)
expectedTeamID="8NQ43ND65V" expectedTeamID="8NQ43ND65V"
;; ;;
postman) postman)
# credit: Mischa van der Bent
name="Postman" name="Postman"
type="zip" type="zip"
if [[ $(arch) == "arm64" ]]; then downloadURL="https://dl.pstmn.io/download/latest/osx"
downloadURL="https://dl.pstmn.io/download/latest/osx_arm64" 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' )
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" expectedTeamID="H7H8Q7M5CK"
;; ;;
prism9) prism9)
@@ -4034,15 +3753,6 @@ promiseutilityr)
downloadURL="https://www.promise.com/DownloadFile.aspx?DownloadFileUID=6533" downloadURL="https://www.promise.com/DownloadFile.aspx?DownloadFileUID=6533"
expectedTeamID="268CCUR4WN" 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) protonvpn)
name="ProtonVPN" name="ProtonVPN"
type="dmg" type="dmg"
@@ -4064,13 +3774,6 @@ 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/"$//') 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" 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) r)
name="R" name="R"
type="pkg" type="pkg"
@@ -4086,15 +3789,10 @@ ramboxce)
expectedTeamID="7F292FPD69" expectedTeamID="7F292FPD69"
;; ;;
rancherdesktop) rancherdesktop)
name="Rancher Desktop" name="Rancher.Desktop-1.0.0-mac"
type="zip" type="zip"
if [[ $(arch) == "arm64" ]]; then archiveName="Rancher.Desktop-[0-9.]*-mac.zip"
archiveName="Rancher.Desktop-[0-9.]*-mac.aarch64.zip" downloadURL="$(downloadURLFromGit rancher-sandbox rancher-desktop)"
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)" appNewVersion="$(versionFromGit rancher-sandbox rancher-desktop)"
expectedTeamID="2Q6FHJR3H3" expectedTeamID="2Q6FHJR3H3"
appName="Rancher Desktop.app" appName="Rancher Desktop.app"
@@ -4117,15 +3815,14 @@ redeye)
remotedesktopmanagerenterprise) remotedesktopmanagerenterprise)
name="Remote Desktop Manager" name="Remote Desktop Manager"
type="dmg" type="dmg"
downloadURL=$(curl -fs https://devolutions.net/remote-desktop-manager/home/thankyou/rdmmacbin | grep -oe "http.*\.dmg" | head -1) downloadURL=$(curl -fs https://remotedesktopmanager.com/home/thankyou/rdmmacbin | grep -oe "http.*\.dmg" | head -1)
appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g') appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g')
expectedTeamID="N592S9ASDB" expectedTeamID="N592S9ASDB"
blockingProcesses=( "$name" )
;; ;;
remotedesktopmanagerfree) remotedesktopmanagerfree)
name="Remote Desktop Manager Free" name="Remote Desktop Manager Free"
type="dmg" type="dmg"
downloadURL=$(curl -fs https://devolutions.net/remote-desktop-manager/home/thankyou/rdmmacfreebin | grep -oe "http.*\.dmg" | head -1) downloadURL=$(curl -fs https://remotedesktopmanager.com/home/thankyou/rdmmacfreebin | grep -oe "http.*\.dmg" | head -1)
appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g') appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g')
expectedTeamID="N592S9ASDB" expectedTeamID="N592S9ASDB"
;; ;;
@@ -4166,15 +3863,11 @@ ricohpsprinters)
;; ;;
ringcentralapp) ringcentralapp)
# credit: Isaac Ordonez, Mann consulting (@mannconsulting) # credit: Isaac Ordonez, Mann consulting (@mannconsulting)
name="Ringcentral" name="Glip"
type="pkg" type="dmg"
if [[ $(arch) != "i386" ]]; then downloadURL="https://downloads.ringcentral.com/glip/rc/GlipForMac"
downloadURL="https://app.ringcentral.com/download/RingCentral-arm64.pkg"
else
downloadURL="https://app.ringcentral.com/download/RingCentral.pkg"
fi
expectedTeamID="M932RC5J66" expectedTeamID="M932RC5J66"
blockingProcesses=( "Ringcentral" ) blockingProcesses=( "Glip" )
;; ;;
ringcentralclassicapp) ringcentralclassicapp)
name="Glip" name="Glip"
@@ -4304,13 +3997,6 @@ shield)
appNewVersion=$(versionFromGit theevilbit Shield) appNewVersion=$(versionFromGit theevilbit Shield)
expectedTeamID="33YRLYRBYV" 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) sidekick)
name="Sidekick" name="Sidekick"
type="dmg" type="dmg"
@@ -4352,7 +4038,7 @@ sizeup)
sketch) sketch)
name="Sketch" name="Sketch"
type="zip" type="zip"
downloadURL=$(curl -sf https://www.sketch.com/downloads/mac/ | grep 'href="https://download.sketch.com' | tr '"' "\n" | grep -E "https.*.zip") downloadURL=$(curl -sf https://www.sketch.com/downloads/mac/ | grep 'href="https://download.sketch.com' | sed -E 's/.*href=\"(.*)\".?/\1/g')
appNewVersion=$(curl -fs https://www.sketch.com/updates/ | grep "Sketch Version" | head -1 | sed -E 's/.*Version ([0-9.]*)<.*/\1/g') # version from update page appNewVersion=$(curl -fs https://www.sketch.com/updates/ | grep "Sketch Version" | head -1 | sed -E 's/.*Version ([0-9.]*)<.*/\1/g') # version from update page
expectedTeamID="WUGMZZ5K46" expectedTeamID="WUGMZZ5K46"
;; ;;
@@ -4370,18 +4056,6 @@ skype)
expectedTeamID="AL798K98FX" expectedTeamID="AL798K98FX"
Company="Microsoft" 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) slack)
name="Slack" name="Slack"
type="dmg" type="dmg"
@@ -4401,32 +4075,11 @@ smartgit)
expectedTeamID="PHMY45PTNW" expectedTeamID="PHMY45PTNW"
;; ;;
snagit|\ snagit|\
snagit2022) snagit2021|\
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) 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" name="Snagit 2021"
type="dmg" 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) 2021" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) downloadURL="https://download.techsmith.com/snagitmac/releases/Snagit.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" expectedTeamID="7TQL462TU8"
;; ;;
snapgeneviewer) snapgeneviewer)
@@ -4436,15 +4089,6 @@ 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' ) 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" 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|\ sonos|\
sonoss1) sonoss1)
# credit: Erik Stam (@erikstam) # credit: Erik Stam (@erikstam)
@@ -4596,15 +4240,8 @@ tageditor)
talkdeskcallbar) talkdeskcallbar)
name="Callbar" name="Callbar"
type="dmg" type="dmg"
appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*$/\1/p') downloadURL=https://downloadcallbar.talkdesk.com/Callbar-$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version":"\([^"]*\)".*$/\1/p').dmg
downloadURL=https://downloadcallbar.talkdesk.com/Callbar-${appNewVersion}.dmg appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version":"\([^"]*\)".*$/\1/p')
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" expectedTeamID="YGGJX44TB8"
;; ;;
taskpaper) taskpaper)
@@ -4698,31 +4335,6 @@ thunderbird)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( thunderbird ) 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) tidal)
name="TIDAL" name="TIDAL"
type="dmg" type="dmg"
@@ -4781,14 +4393,6 @@ 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) 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" 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) umbrellaroamingclient)
# credit: Tadayuki Onishi (@kenchan0130) # credit: Tadayuki Onishi (@kenchan0130)
name="Umbrella Roaming Client" name="Umbrella Roaming Client"
@@ -4810,14 +4414,6 @@ universaltypeclient)
downloadURL=https://bin.extensis.com/$( curl -fs https://www.extensis.com/support/universal-type-server-7/ | grep -o "UTC-[0-9].*M.zip" ) downloadURL=https://bin.extensis.com/$( curl -fs https://www.extensis.com/support/universal-type-server-7/ | grep -o "UTC-[0-9].*M.zip" )
expectedTeamID="J6MMHGD9D6" expectedTeamID="J6MMHGD9D6"
;; ;;
unnaturalscrollwheels)
name="UnnaturalScrollWheels"
type="dmg"
downloadURL="$(downloadURLFromGit ther0n UnnaturalScrollWheels)"
appNewVersion="$(versionFromGit ther0n UnnaturalScrollWheels)"
expectedTeamID="D6H5W2T379"
blockingProcesses=( UnnaturalScrollWheels )
;;
utm) utm)
name="UTM" name="UTM"
type="dmg" type="dmg"
@@ -4945,12 +4541,6 @@ webexmeetings)
#blockingProcessesMaxCPU="5" #blockingProcessesMaxCPU="5"
blockingProcesses=( Webex ) blockingProcesses=( Webex )
;; ;;
wechat)
name="WeChat"
type="dmg"
downloadURL="https://dldir1.qq.com/weixin/mac/WeChatMac.dmg"
expectedTeamID="5A4RE8SF68"
;;
whatsapp) whatsapp)
name="WhatsApp" name="WhatsApp"
type="dmg" type="dmg"
@@ -5006,15 +4596,6 @@ 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") 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" 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) xink)
name="Xink" name="Xink"
type="pkg" type="pkg"
@@ -5079,14 +4660,6 @@ 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) 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" 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) zohoworkdrivetruesync)
# Using this label expects you to agree to these: # Using this label expects you to agree to these:
# License Areemant: https://www.zoho.com/workdrive/zohoworkdrive-license-agreement.html # License Areemant: https://www.zoho.com/workdrive/zohoworkdrive-license-agreement.html

View File

@@ -1,5 +1,4 @@
1password7 1password7
1password8
1passwordcli 1passwordcli
4kvideodownloader 4kvideodownloader
8x8 8x8
@@ -21,7 +20,6 @@ amazonchime
amazoncorretto8jdk amazoncorretto8jdk
amazonworkspaces amazonworkspaces
androidfiletransfer androidfiletransfer
androidstudio
anydesk anydesk
apparency apparency
appcleaner appcleaner
@@ -35,7 +33,6 @@ aquaskk
arq7 arq7
asana asana
atext atext
atextlegacy
atom atom
audacity audacity
authydesktop authydesktop
@@ -67,8 +64,6 @@ calcservice
calibre calibre
camostudio camostudio
camtasia camtasia
camtasia2019
camtasia2021
canva canva
chatwork chatwork
cisdem-documentreader cisdem-documentreader
@@ -78,14 +73,11 @@ clickshare
clipy clipy
closeio closeio
cloudya cloudya
clue
cluefull
code42 code42
coderunner coderunner
colourcontrastanalyser colourcontrastanalyser
cormorant cormorant
craftmanager craftmanager
craftmanagerforsketch
cryptomator cryptomator
cyberduck cyberduck
daisydisk daisydisk
@@ -102,17 +94,13 @@ dialog
dialpad dialpad
discord discord
diskspace diskspace
displaylinkmanager
docker docker
dockutil dockutil
drawio
drift drift
dropbox dropbox
duckduckgo
easeusdatarecoverywizard easeusdatarecoverywizard
easyfind easyfind
egnyte egnyte
egnytewebedit
element element
eraseinstall eraseinstall
eshareosx eshareosx
@@ -125,7 +113,6 @@ fastscripts
favro favro
ferdi ferdi
figma figma
filezilla
findanyfile findanyfile
firefox firefox
firefox_da firefox_da
@@ -134,11 +121,8 @@ firefoxesr
firefoxesr_intl firefoxesr_intl
firefoxesrpkg firefoxesrpkg
firefoxpkg firefoxpkg
firefoxpkg_intl
flowjo flowjo
flux flux
flycut
fontexplorer
front front
fsmonitor fsmonitor
gimp gimp
@@ -166,14 +150,10 @@ hazel
houdahspot houdahspot
hpeasyadmin hpeasyadmin
hpeasystart hpeasystart
hype
hyper hyper
ibarcoder ibarcoder
icons icons
idrive
idrivethin
iina iina
imageoptim
imazingprofileeditor imazingprofileeditor
inkscape inkscape
insomnia insomnia
@@ -212,8 +192,6 @@ lastpass
launchbar launchbar
lexarrecoverytool lexarrecoverytool
libreoffice libreoffice
linear
logioptions
logitechoptions logitechoptions
logseq logseq
loom loom
@@ -223,7 +201,6 @@ lulu
macadminspython macadminspython
maccyapp maccyapp
macfuse macfuse
macoslaps
macports macports
malwarebytes malwarebytes
marathon marathon
@@ -255,8 +232,6 @@ microsoftteams
microsoftvisualstudiocode microsoftvisualstudiocode
microsoftword microsoftword
microsoftyammer microsoftyammer
mightymike
mindmanager
miro miro
mobikinassistantforandroid mobikinassistantforandroid
mochakeyboard mochakeyboard
@@ -301,7 +276,6 @@ paretosecurity
parsec parsec
pdfsam pdfsam
perimeter81 perimeter81
pika
pitch pitch
plantronicshub plantronicshub
platypus platypus
@@ -313,12 +287,10 @@ privileges
proctortrack proctortrack
promiseutility promiseutility
promiseutilityr promiseutilityr
propresenter7
protonvpn protonvpn
proxyman proxyman
pycharmce pycharmce
pymol pymol
qgis-pr
r r
ramboxce ramboxce
rancherdesktop rancherdesktop
@@ -350,7 +322,6 @@ secretive
sequelpro sequelpro
sfsymbols sfsymbols
shield shield
shottr
sidekick sidekick
signal signal
silnite silnite
@@ -359,16 +330,12 @@ sizeup
sketch sketch
sketchupviewer sketchupviewer
skype skype
slab
slack slack
smartgit smartgit
snagit snagit
snagit2019
snagit2020 snagit2020
snagit2021 snagit2021
snagit2022
snapgeneviewer snapgeneviewer
sonobus
sonos sonos
sonoss1 sonoss1
sonoss2 sonoss2
@@ -391,7 +358,6 @@ tableaupublic
tableaureader tableaureader
tageditor tageditor
talkdeskcallbar talkdeskcallbar
talkdeskcxcloud
taskpaper taskpaper
teamviewer teamviewer
teamviewerhost teamviewerhost
@@ -404,7 +370,6 @@ textmate
theunarchiver theunarchiver
things things
thunderbird thunderbird
thunderbird_intl
tidal tidal
toggltrack toggltrack
tom4aconverter tom4aconverter
@@ -413,11 +378,9 @@ trex
tunnelbear tunnelbear
tunnelblick tunnelblick
typora typora
ultimakercura
umbrellaroamingclient umbrellaroamingclient
uniconverter uniconverter
universaltypeclient universaltypeclient
unnaturalscrollwheels
utm utm
vagrant vagrant
vanilla vanilla
@@ -435,7 +398,6 @@ wallyezflash
webex webex
webexmeetings webexmeetings
webexteams webexteams
wechat
whatsapp whatsapp
wickrme wickrme
wickrpro wickrpro
@@ -443,7 +405,6 @@ wireshark
wordservice wordservice
wwdc wwdc
xeroxphaser7800 xeroxphaser7800
xeroxworkcentre7800
xink xink
xmenu xmenu
xquartz xquartz
@@ -452,7 +413,6 @@ yubikeymanagerqt
zappy zappy
zeplin zeplin
zohoworkdrive zohoworkdrive
zohoworkdrivegenie
zohoworkdrivetruesync zohoworkdrivetruesync
zoom zoom
zoomclient zoomclient

View File

@@ -5,28 +5,8 @@ what="brave" # enter the software to install
# To be used as a script sent out from a MDM. # To be used as a script sent out from a MDM.
# Fill the variable "what" above with a label. # Fill the variable "what" above with a label.
# Script will run this label. # Script will run this label.
LOGO="appstore" # or "addigy", "microsoft", "mosyleb", "mosylem"
######################################################################
# Parameters for reinstall/initial install (owner root:wheel):
# "BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force IGNORE_APP_STORE_APPS=yes SYSTEMOWNER=1"
# Parameters for Self Service installed app:
# "BLOCKING_PROCESS_ACTION=prompt_user NOTIFY=all"
# Parameters for security important apps, like browsers (run automaticaly every day):
# "BLOCKING_PROCESS_ACTION=tell_user_then_kill"
# Update of service apps (run automatically):
# "BLOCKING_PROCESS_ACTION=quit_kill NOTIFY=silent"
parameters="BLOCKING_PROCESS_ACTION=tell_user_then_kill NOTIFY=all"
############################################### ###############################################
# Verify that Installomator has been installed
destFile="/usr/local/Installomator/Installomator.sh"
if [ ! -e "${destFile}" ]; then
echo "Installomator not found here:"
echo "${destFile}"
echo "Exiting."
exit 99
fi
# No sleeping # No sleeping
/usr/bin/caffeinate -d -i -m -u & /usr/bin/caffeinate -d -i -m -u &
caffeinatepid=$! caffeinatepid=$!
@@ -36,14 +16,18 @@ caffexit () {
exit $1 exit $1
} }
cmdOutput="$(${destFile} ${what} LOGO=$LOGO $parameters LOGGING=WARN || true)" # Verify that Installomator has been installed
# Check result destFile="/usr/local/Installomator/Installomator.sh"
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )" if [ ! -e "${destFile}" ]; then
if [[ ${exitStatus} -ne 0 ]] ; then echo "Installomator not found here:"
echo -e "Error installing ${what}. Exit code ${exitStatus}" echo "${destFile}"
#echo "$cmdOutput" echo "Exiting."
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )" caffexit 99
echo "$errorOutput" fi
${destFile} ${what} LOGO=mosyleb BLOCKING_PROCESS_ACTION=tell_user #NOTIFY=all #INSTALL=force
if [ $? != 0 ]; then
# This is currently not working in Mosyle, that will ignore script errors. Please request support for this from Mosyle!
echo "Error installing ${what}. Exit code $?" echo "Error installing ${what}. Exit code $?"
caffexit $? caffexit $?
fi fi

View File

@@ -1,31 +1,11 @@
#!/bin/zsh #!/bin/zsh
# Installation using Installomator # Installation using Installomator
whatList="microsoftteams microsoftyammer firefox bravebrowser cyberduck vlc signal" # enter the software to install separated with spaces what="microsoftteams microsoftyammer firefox bravebrowser cyberduck vlc signal" # enter the software to install separated with spaces
# To be used as a script sent out from a MDM. # To be used as a script sent out from a MDM.
# Fill the variable "whatList" above with labels separated by space " ". # Fill the variable "what" above with labels separated by space " ".
# Script will loop through these labels. # Script will loop through these labels.
LOGO="appstore" # or "addigy", "microsoft", "mosyleb", "mosylem"
###################################################################### ######################################################################
# Parameters for reinstall/initial install (owner root:wheel):
# "BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force IGNORE_APP_STORE_APPS=yes SYSTEMOWNER=1"
# Parameters for Self Service installed app:
# "BLOCKING_PROCESS_ACTION=prompt_user NOTIFY=all"
# Parameters for security important apps, like browsers (run automaticaly every day):
# "BLOCKING_PROCESS_ACTION=tell_user_then_kill"
# Update of service apps (run automatically):
# "BLOCKING_PROCESS_ACTION=quit_kill NOTIFY=silent"
parameters="BLOCKING_PROCESS_ACTION=tell_user NOTIFY=all"
######################################################################
# Verify that Installomator has been installed
destFile="/usr/local/Installomator/Installomator.sh"
if [ ! -e "${destFile}" ]; then
echo "Installomator not found here:"
echo "${destFile}"
echo "Exiting."
exit 99
fi
# No sleeping # No sleeping
/usr/bin/caffeinate -d -i -m -u & /usr/bin/caffeinate -d -i -m -u &
@@ -39,17 +19,21 @@ caffexit () {
# Count errors # Count errors
errorCount=0 errorCount=0
for what in $whatList; do # Verify that Installomator has been installed
#echo $what destFile="/usr/local/Installomator/Installomator.sh"
# Install software using Installomator if [ ! -e "${destFile}" ]; then
cmdOutput="$(${destFile} ${what} LOGO=$LOGO $parameters LOGGING=WARN || true)" echo "Installomator not found here:"
# Check result echo "${destFile}"
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )" echo "Exiting."
if [[ ${exitStatus} -ne 0 ]] ; then caffexit 99
echo -e "Error installing ${what}. Exit code ${exitStatus}" fi
#echo "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )" for item in $what; do
echo "$errorOutput" #echo $item
${destFile} ${item} LOGO=mosyleb BLOCKING_PROCESS_ACTION=tell_user #NOTIFY=all #INSTALL=force
if [ $? != 0 ]; then
# This is currently not working in Mosyle, that will ignore script errors. Please request support for this from Mosyle!
echo "[$(DATE)] Error installing ${item}. Exit code $?"
let errorCount++ let errorCount++
fi fi
done done

View File

@@ -1,18 +1,9 @@
#!/bin/bash #!/bin/bash
# Updating Installomator # Updating Installomator
# Usefull to push out after deployment if earlier version was deployed in DEP profile # Usefull to push out after deployment if earlier version was deployed in DEP profile
# Currently script uses valuesfromarguments as a label is not included before next release, so this can be used to install to version 0.7
what="installomator" # enter the software to install what="installomator" # enter the software to install
LOGO="appstore" # or "addigy", "microsoft", "mosyleb", "mosylem"
# Verify that Installomator has been installed
destFile="/usr/local/Installomator/Installomator.sh"
if [ ! -e "${destFile}" ]; then
echo "Installomator not found here:"
echo "${destFile}"
echo "Exiting."
exit 99
fi
# No sleeping # No sleeping
/usr/bin/caffeinate -d -i -m -u & /usr/bin/caffeinate -d -i -m -u &
@@ -23,19 +14,30 @@ caffexit () {
exit $1 exit $1
} }
# Install software using Installomator # Verify that Installomator has been installed
cmdOutput="$(${destFile} ${what} LOGO=$LOGO BLOCKING_PROCESS_ACTION=ignore NOTIFY=silent LOGGING=req || true)" destFile="/usr/local/Installomator/Installomator.sh"
if [ ! -e "${destFile}" ]; then
echo "Installomator not found here:"
echo "${destFile}"
echo "Exiting."
caffexit 99
fi
# Check result ${destFile} valuesfromarguments\
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )" name=Installomator \
if [[ ${exitStatus} -eq 0 ]] ; then type=pkg \
echo -e "${what} succesfully installed.\n" packageID=com.scriptingosx.Installomator \
else downloadURL=https://github.com/Installomator/Installomator/releases/download/v0.7release/Installomator-0.7.0.pkg \
echo -e "Error installing ${what}. Exit code ${exitStatus}\n" appNewVersion=0.7 \
#echo "$cmdOutput" expectedTeamID=JME5BW3F3R \
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )" BLOCKING_PROCESS_ACTION=ignore \
echo "$errorOutput" NOTIFY=silent
caffexit $exitStatus
# ${destFile} ${what} BLOCKING_PROCESS_ACTION=ignore NOTIFY=silent
if [ $? != 0 ]; then
# This is currently not working in Mosyle, that will ignore script errors. Please request support for this from Mosyle!
echo "Error installing ${what}. Exit code $?"
caffexit $?
fi fi
echo "[$(DATE)][LOG-END]" echo "[$(DATE)][LOG-END]"

View File

@@ -5,34 +5,15 @@
# Mark: Installation script # Mark: Installation script
# Just click “Add” to autogenerate the installer script line by clicking the “Add”-button next to the Installer PKG, replace with first line below # Just click “Add” to autogenerate the installer script line by clicking the “Add”-button next to the Installer PKG, replace with first line below
/usr/sbin/installer -pkg "/Library/Addigy/ansible/packages/Installomator (9.1.0)/Installomator-9.1.pkg" -target / /usr/sbin/installer -pkg "/Library/Addigy/ansible/packages/Installomator (0.7.0)/Installomator-0.7.0.pkg" -target /
# Installation using Installomator # Installation using Installomator
whatList="supportapp xink textmate microsoftedge wwdc keka vlc " # enter the software to installed separated with spaces what="supportapp xink textmate microsoftedge wwdc keka vlc " # enter the software to installed separated with spaces
# To be used as a script sent out from a MDM. # To be used as a script sent out from a MDM.
# Fill the variable "whatList" above with labels separated by space " ". # Fill the variable "what" above with labels separated by space " ".
# Script will loop through these labels and exit with number of errors. # Script will loop through these labels and exit with number of errors.
###################################################################### ######################################################################
# Parameters for reinstall/initial install (owner root:wheel):
# "BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force IGNORE_APP_STORE_APPS=yes SYSTEMOWNER=1"
# Parameters for Self Service installed app:
# "BLOCKING_PROCESS_ACTION=prompt_user NOTIFY=all"
# Parameters for security important apps, like browsers (run automaticaly every day):
# "BLOCKING_PROCESS_ACTION=tell_user_then_kill"
# Update of service apps (run automatically):
# "BLOCKING_PROCESS_ACTION=quit_kill NOTIFY=silent"
parameters="BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force IGNORE_APP_STORE_APPS=yes"
######################################################################
# Verify that Installomator has been installed
destFile="/usr/local/Installomator/Installomator.sh"
if [ ! -e "${destFile}" ]; then
echo "Installomator not found here:"
echo "${destFile}"
echo "Exiting."
exit 99
fi
# No sleeping # No sleeping
/usr/bin/caffeinate -d -i -m -u & /usr/bin/caffeinate -d -i -m -u &
@@ -46,17 +27,21 @@ caffexit () {
# Count errors # Count errors
errorCount=0 errorCount=0
for what in $whatList; do # Verify that Installomator has been installed
#echo $what destFile="/usr/local/Installomator/Installomator.sh"
# Install software using Installomator if [ ! -e "${destFile}" ]; then
cmdOutput="$(${destFile} ${what} LOGO=addigy $parameters || true)" echo "Installomator not found here:"
# Check result echo "${destFile}"
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )" echo "Exiting."
if [[ ${exitStatus} -ne 0 ]] ; then caffexit 99
echo -e "Error installing ${what}. Exit code ${exitStatus}" fi
#echo "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )" for item in $what; do
echo "$errorOutput" #echo $item
${destFile} ${item} LOGO=addigy NOTIFY=silent BLOCKING_PROCESS_ACTION=quit_kill #INSTALL=force
if [ $? != 0 ]; then
# Error handling
echo "[$(DATE)] Error installing ${item}. Exit code $?"
let errorCount++ let errorCount++
fi fi
done done
@@ -71,7 +56,7 @@ caffexit $errorCount
# Install on success # Install on success
# Remember to fill out the correct “TARGET_VERSION” and “PKG_ID”, and click "Install on succes". # Remember to fill out the correct “TARGET_VERSION” and “PKG_ID”, and click "Install on succes".
PKG_ID="com.scriptingosx.Installomator" PKG_ID="com.scriptingosx.Installomator"
TARGET_VERSION="9.1" TARGET_VERSION="8.0"
vercomp () { vercomp () {
if [[ $1 == $2 ]]; then if [[ $1 == $2 ]]; then

View File

@@ -1,11 +1,10 @@
PKG_ID="com.scriptingosx.Installomator" PKG_ID="com.scriptingosx.Installomator"
TARGET_VERSION="9.1" TARGET_VERSION="8.0"
URLDOWNLOAD="%MosyleCDNFile:blah-blah-blah%" URLDOWNLOAD="%MosyleCDNFile:blah-blah-blah%"
###################################################################### ######################################################################
# Installation using Installomator (enter the software to install separated with spaces in the "whatList"-variable) # Installation using Installomator (enter the software to install separated with spaces in the "what"-variable)
whatList="handbrake theunarchiver microsoftoffice365" what="handbrake theunarchiver microsoftoffice365"
# Covered by Mosyle Catalog: "brave firefox googlechrome microsoftedge microsoftteams signal sublimetext vlc webex zoom" among others # Covered by Mosyle Catalog: "brave firefox googlechrome microsoftedge microsoftteams signal sublimetext vlc webex zoom" among others
LOGO="mosyleb" # or "mosylem"
###################################################################### ######################################################################
## Mark: Code here ## Mark: Code here
@@ -57,17 +56,12 @@ if [ ! -e "${destFile}" ]; then
caffexit 99 caffexit 99
fi fi
for what in $whatList; do for item in $what; do
#echo $item #echo $item
# Install software using Installomator ${destFile} ${item} LOGO=mosyle NOTIFY=all BLOCKING_PROCESS_ACTION=tell_user #NOTIFY=silent BLOCKING_PROCESS_ACTION=quit_kill #INSTALL=force
cmdOutput="$(${destFile} ${what} LOGO=$LOGO NOTIFY=all BLOCKING_PROCESS_ACTION=tell_user || true)" # NOTIFY=silent BLOCKING_PROCESS_ACTION=quit_kill INSTALL=force if [ $? != 0 ]; then
# Check result # Error handling
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )" echo "[$(DATE)] Error installing ${item}. Exit code $?"
if [[ ${exitStatus} -ne 0 ]] ; then
echo "Error installing ${what}. Exit code ${exitStatus}"
#echo "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
echo "$errorOutput"
let errorCount++ let errorCount++
fi fi
done done

View File

@@ -1,20 +1,8 @@
#!/bin/bash #!/bin/bash
# Software
# Installation using Installomator # Installation using Installomator
# Example of installing software using valuesfromarguments to install a custom software # Example of installing software using valuesfromarguments to install a custom software
LOGO="appstore" # or "addigy", "microsoft", "mosyleb", "mosylem" what="valuesfromarguments" # enter the software to install
###############################################
# Verify that Installomator has been installed
destFile="/usr/local/Installomator/Installomator.sh"
if [ ! -e "${destFile}" ]; then
echo "Installomator not found here:"
echo "${destFile}"
echo "Exiting."
exit 99
fi
# No sleeping # No sleeping
/usr/bin/caffeinate -d -i -m -u & /usr/bin/caffeinate -d -i -m -u &
@@ -25,31 +13,29 @@ caffexit () {
exit $1 exit $1
} }
# Variables to calculate # Verify that Installomator has been installed
downloadURL="https://craft-assets.invisionapp.com/CraftManager/production/CraftManager.zip" destFile="/usr/local/Installomator/Installomator.sh"
appNewVersion=$(curl -fs https://craft-assets.invisionapp.com/CraftManager/production/appcast.xml | xpath -e '//rss/channel/item[1]/enclosure/@sparkle:shortVersionString' 2>/dev/null | cut -d '"' -f2) if [ ! -e "${destFile}" ]; then
echo "Installomator not found here:"
echo "${destFile}"
echo "Exiting."
caffexit 99
fi
# Install software using Installomator ${destFile} valuesfromarguments \
cmdOutput="$(${destFile} valuesfromarguments LOGO=$LOGO \ name=\"Zoho\ WorkDrive\" \
name=CraftManager \ type=dmg \
type=zip \ downloadURL=https://files-accl.zohopublic.com/public/wdbin/download/46f971e4fc4a32b68ad5d7dade38a7d2 \
downloadURL=$downloadURL \ appNewVersion=2.6.25 \
appNewVersion=$appNewVersion \ expectedTeamID=TZ824L8Y37 \
expectedTeamID=VRXQSNCL5W \ BLOCKING_PROCESS_ACTION=quit \
BLOCKING_PROCESS_ACTION=prompt_user \ NOTIFY=all
LOGGING=REQ \
NOTIFY=all || true)"
# Check result # ${destFile} ${what} BLOCKING_PROCESS_ACTION=ignore NOTIFY=silent
exitStatus="$( echo "${cmdOutput}" | grep --binary-files=text -i "exit" | tail -1 | sed -E 's/.*exit code ([0-9]).*/\1/g' || true )" if [ $? != 0 ]; then
if [[ ${exitStatus} -eq 0 ]] ; then # This is currently not working in Mosyle, that will ignore script errors. Please request support for this from Mosyle!
echo -e "${what} succesfully installed.\n" echo "Error installing ${what}. Exit code $?"
else caffexit $?
echo -e "Error installing ${what}. Exit code ${exitStatus}\n"
#printlog "$cmdOutput"
errorOutput="$( echo "${cmdOutput}" | grep --binary-files=text -i "error" || true )"
echo "$errorOutput"
caffexit $exitStatus
fi fi
echo "[$(DATE)][LOG-END]" echo "[$(DATE)][LOG-END]"

View File

@@ -2,7 +2,7 @@
_The one installer script to rule them all._ _The one installer script to rule them all._
![](https://img.shields.io/github/v/release/Installomator/Installomator)&nbsp;![](https://img.shields.io/github/downloads/Installomator/Installomator/latest/total)&nbsp;![](https://img.shields.io/badge/macOS-10.14%2B-success)&nbsp;![](https://img.shields.io/github/license/Installomator/Installomator) ![](https://img.shields.io/github/v/release/scriptingosx/Installomator)&nbsp;![](https://img.shields.io/github/downloads/scriptingosx/Installomator/latest/total)&nbsp;![](https://img.shields.io/badge/macOS-10.14%2B-success)&nbsp;![](https://img.shields.io/github/license/scriptingosx/Installomator)
This script is in the “we find it useful, it is working for us” stage. This script is in the “we find it useful, it is working for us” stage.
@@ -13,12 +13,12 @@ We have put a lot of work into making it stable and safe, but we cannot - of cou
## Authors ## Authors
Intallomator was originally inspired by the download scripts from William Smith and Sander Schram, and created by: Intallomator was originally inspired by the download scripts from William Smith and Sander Schram, and created by:
- [Armin Briegel - @scriptingosx](https://github.com/scriptingosx) Armin Briegel - @scriptingosx
Later on a few more members came on the project: Later on a few more contributers came on the project:
- Isaac Ordonez - @issacatmann Isaac Ordonez - @issacatmann
- [Søren Theilgaard - @Theile](https://github.com/Theile) Søren Theilgaard - @Theile
- [Adam Codega - @acodega](https://github.com/acodega) Adam Codega - @acodega
And with numerous contributions from many others. And with numerous contributions from many others.

View File

@@ -242,8 +242,8 @@ getAppVersion() {
# printlog "App(s) found: ${applist}" DEBUG # printlog "App(s) found: ${applist}" DEBUG
# applist=$(mdfind "kind:application AND name:$appName" -0 ) # applist=$(mdfind "kind:application AND name:$appName" -0 )
fi fi
if [[ -z $applist ]]; then if [[ -z applist ]]; then
printlog "No previous app found" WARN printlog "No previous app found" INFO
else else
printlog "App(s) found: ${applist}" INFO printlog "App(s) found: ${applist}" INFO
fi fi
@@ -265,7 +265,7 @@ getAppVersion() {
if [[ -d "$installedAppPath"/Contents/_MASReceipt ]];then if [[ -d "$installedAppPath"/Contents/_MASReceipt ]];then
printlog "Installed $appName is from App Store, use “IGNORE_APP_STORE_APPS=yes” to replace." printlog "Installed $appName is from App Store, use “IGNORE_APP_STORE_APPS=yes” to replace."
if [[ $IGNORE_APP_STORE_APPS == "yes" ]]; then if [[ $IGNORE_APP_STORE_APPS == "yes" ]]; then
printlog "Replacing App Store apps, no matter the version" WARN printlog "Replacing App Store apps, no matter the version"
appversion=0 appversion=0
else else
cleanupAndExit 1 "App previously installed from App Store, and we respect that" ERROR cleanupAndExit 1 "App previously installed from App Store, and we respect that" ERROR

View File

@@ -238,7 +238,7 @@ IGNORE_DND_APPS=""
# - updateToolArguments: # - updateToolArguments:
# When Installomator detects an existing installation of the application, # When Installomator detects an existing installation of the application,
# and the updateTool variable is set # and the updateTool variable is set
# $updateTool $updateArguments # $updateTool $updateArguments
# Will be run instead of of downloading and installing a complete new version. # Will be run instead of of downloading and installing a complete new version.
# Use this when the updateTool does differential and optimized downloads. # Use this when the updateTool does differential and optimized downloads.
# e.g. msupdate on various Microsoft labels # 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 # 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 # `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: # 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 # For most installations `CLIInstaller` should contain the `installerTool` for the CLI call
# (if its the same). # (if its the same).
# We can support a whole range of other software titles by implementing this. # We can support a whole range of other software titles by implementing this.

View File

@@ -1,15 +0,0 @@
1password8)
name="1Password 8"
appName="1Password.app"
type="zip"
if [[ $(arch) == "arm64" ]]; then
archiveName="1Password-latest-aarch64.zip"
downloadURL="https://downloads.1password.com/mac/1Password-latest-aarch64.zip"
elif [[ $(arch) == "i386" ]]; then
archiveName="1Password-latest-x86_64.zip"
downloadURL="https://downloads.1password.com/mac/1Password-latest-x86_64.zip"
fi
expectedTeamID="2BUA8C4S2C"
blockingProcesses=( "1Password Extension Helper" "1Password 7" "1Password" "1Password (Safari)" "1PasswordNativeMessageHost" "1PasswordSafariAppExtension" )
#forcefulQuit=YES
;;

View File

@@ -1,7 +1,7 @@
adobereaderdc-update) adobereaderdc-update)
name="Adobe Acrobat Reader DC" name="Adobe Acrobat Reader DC"
type="pkgInDmg" 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) 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)
appNewVersion=$(curl -s https://armmf.adobe.com/arm-manifests/mac/AcrobatDC/reader/current_version.txt) 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) #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" expectedTeamID="JQ525L2MZD"

View File

@@ -3,8 +3,7 @@ adobereaderdc-install)
name="Adobe Acrobat Reader DC" name="Adobe Acrobat Reader DC"
type="pkgInDmg" type="pkgInDmg"
packageID="com.adobe.acrobat.DC.reader.app.pkg.MUI" 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 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) #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" expectedTeamID="JQ525L2MZD"

View File

@@ -1,12 +1,7 @@
amazoncorretto8jdk) amazoncorretto8jdk)
name="Amazon Corretto 8 JDK" name="Amazon Corretto 8 JDK"
type="pkg" type="pkg"
if [[ $(arch) == "arm64" ]]; then downloadURL="https://corretto.aws/downloads/latest/amazon-corretto-8-x64-macos-jdk.pkg"
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}')
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" expectedTeamID="94KV3E626L"
;; ;;

View File

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

View File

@@ -1,7 +0,0 @@
atextlegacy)
# credit: Gabe Marchan (gabemarchan.com - @darklink87)
name="aText"
type="dmg"
downloadURL="https://trankynam.com/atext/downloads/aTextLegacy.dmg"
expectedTeamID="KHEMQ2FD9E"
;;

View File

@@ -1,8 +1,6 @@
camtasia|\ camtasia)
camtasia2021) name="Camtasia 2020"
name="Camtasia 2021"
type="dmg" 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) 2021" | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) downloadURL=https://download.techsmith.com/camtasiamac/releases/Camtasia.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" expectedTeamID="7TQL462TU8"
;; ;;

View File

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

View File

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

View File

@@ -3,6 +3,6 @@ citrixworkspace)
name="Citrix Workspace" name="Citrix Workspace"
type="pkgInDmg" 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 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 "<p>Version" | head -1 | awk '{print $2}' | cut -d "." -f 1-3) appNewVersion=$(curl -fs https://www.citrix.com/downloads/workspace-app/mac/workspace-app-for-mac-latest.html | grep "<p>Version" | head -1 | cut -d " " -f1 | cut -d ";" -f2 | cut -d "." -f 1-3)
expectedTeamID="S272Y5R93J" expectedTeamID="S272Y5R93J"
;; ;;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,6 +2,5 @@ dropbox)
name="Dropbox" name="Dropbox"
type="dmg" type="dmg"
downloadURL="https://www.dropbox.com/download?plat=mac&full=1" 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" expectedTeamID="G7HH3F8CAK"
;; ;;

View File

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

View File

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

View File

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

View File

@@ -5,5 +5,4 @@ firefox)
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2) appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;; ;;

View File

@@ -5,5 +5,4 @@ firefox_da)
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2) appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox, firefox_da and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;; ;;

View File

@@ -3,24 +3,21 @@ firefox_intl)
# and install corrosponding version of Firefox # and install corrosponding version of Firefox
name="Firefox" name="Firefox"
type="dmg" type="dmg"
userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale | tr '_' '-') userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale)
printlog "Found language $userLanguage to be used for $name." printlog "Found language $userLanguage to be used for Firefox."
releaseURL="https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" | grep -o "=$userLanguage"; then
until curl -fs $releaseURL | grep -q "=$userLanguage"; do userLanguage=$(echo $userLanguage | cut -c 1-2)
if [ ${#userLanguage} -eq 2 ]; then if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" | grep "=$userLanguage"; then
break userLanguage="en_US"
fi 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=firefox-latest-ssl&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=firefox-latest-ssl&os=osx"
fi fi
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"/"); print a[1]}') printlog "Using language $userLanguage for download."
downloadURL="https://download.mozilla.org/?product=firefox-latest&amp;os=osx&amp;lang=$userLanguage"
if ! curl -sfL --output /dev/null -r 0-0 "$downloadURL" ; then
printlog "Download not found for that language. Using en-US"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
fi
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;; ;;

View File

@@ -3,24 +3,22 @@ firefoxesr_intl)
# and install corrosponding version of Firefox ESR # and install corrosponding version of Firefox ESR
name="Firefox" name="Firefox"
type="dmg" type="dmg"
userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale | tr '_' '-') userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale)
printlog "Found language $userLanguage to be used for $name." printlog "Found language $userLanguage to be used for Firefox."
releaseURL="https://ftp.mozilla.org/pub/firefox/releases/latest-esr/README.txt" if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest-esr/README.txt" | grep -o "=$userLanguage"; then
until curl -fs $releaseURL | grep -q "=$userLanguage"; do userLanguage=$(echo $userLanguage | cut -c 1-2)
if [ ${#userLanguage} -eq 2 ]; then if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest-esr/README.txt" | grep "=$userLanguage"; then
break userLanguage="en_US"
fi 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=firefox-esr-latest-ssl&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=firefox-esr-latest-ssl&os=osx"
fi fi
appNewVersion=$(curl -fsIL $downloadURL | awk -F releases/ '/Location:/ {split($2,a,"esr/"); print a[1]}') printlog "Using language $userLanguage for download."
downloadURL="https://download.mozilla.org/?product=firefox-esr-latest-ssl&os=osx&lang=$userLanguage"
# https://download.mozilla.org/?product=firefox-esr-latest-ssl&os=osx&lang=en-US
if ! curl -sfL --output /dev/null -r 0-0 "$downloadURL" ; then
printlog "Download not found for that language. Using en-US"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
fi
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i "^location" | awk '{print $2}' | sed -E 's/.*releases\/([0-9.]*)esr.*/\1/g')
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;; ;;

View File

@@ -2,7 +2,6 @@ firefoxpkg)
name="Firefox" name="Firefox"
type="pkg" type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US" downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '<html' | grep -o -i -e "data-latest-firefox=\"[0-9.]*\"" | cut -d '"' -f2)
expectedTeamID="43AQ936H96" expectedTeamID="43AQ936H96"
blockingProcesses=( firefox ) blockingProcesses=( firefox )
;; ;;

View File

@@ -1,24 +0,0 @@
firefoxpkg_intl)
# This label will try to figure out the selected language of the user,
# and install corrosponding version of Firefox ESR
name="Firefox"
type="pkg"
userLanguage=$(runAsUser defaults read .GlobalPreferences AppleLocale)
printlog "Found language $userLanguage to be used for Firefox." WARN
if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" | grep -o "=$userLanguage"; then
userLanguage=$(echo $userLanguage | cut -c 1-2)
if ! curl -fs "https://ftp.mozilla.org/pub/firefox/releases/latest/README.txt" | grep "=$userLanguage"; then
userLanguage="en_US"
fi
fi
printlog "Using language $userLanguage for download." WARN
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=$userLanguage"
# https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US
if ! curl -sfL --output /dev/null -r 0-0 "$downloadURL" ; then
printlog "Download not found for that language. Using en-US" WARN
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
fi
appNewVersion=$(curl -fsIL "$downloadURL" | grep -i location | cut -d "/" -f7)
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;

View File

@@ -1,8 +0,0 @@
flycut)
name="Flycut"
type="zip"
archiveName="Flycut.[0-9.]*.zip"
downloadURL="$(downloadURLFromGit TermiT Flycut)"
appNewVersion=$(versionFromGit TermiT Flycut )
expectedTeamID="S8JLSG5ES7"
;;

View File

@@ -1,9 +0,0 @@
fontexplorer)
name="FontExplorer X Pro"
type="dmg"
packageID="com.linotype.FontExplorerX"
downloadURL="http://www.fontexplorerx.com/download/free-trial/Mac/"
appNewVersion=$( curl -fsL http://fex.linotype.com/update/client/mac/pro/version.plist | grep string | tail -n 1 | sed 's/[^0-9.]//g' )
expectedTeamID="2V7G2B7WG4"
;;

View File

@@ -0,0 +1,9 @@
forticlient_ztna)
name="FortiClient ZTNA"
type="pkgInDmg"
pkgName="Install.mpkg"
packageID="com.fortinet.forticlient."
downloadURL="https://links.fortinet.com/forticlient/mac/fabricagent"
appNewVersion="$(curl -fsL "$downloadURL" --remote-header-name --remote-name -w "%{url_effective}\n" -r 0-0 | cut -d "_" -f2)"
expectedTeamID="AH4XFXJ7DK"
;;

View File

@@ -4,5 +4,4 @@ googlechrome)
downloadURL="https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg" downloadURL="https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg"
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}') appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}')
expectedTeamID="EQHXZ8M8AV" expectedTeamID="EQHXZ8M8AV"
printlog "WARNING for ERROR: Label googlechrome should not be used. Instead use googlechromepkg as per recommendations from Google. It's not fully certain that the app actually gets updated here. googlechromepkg will have built in updates and make sure the client is updated in the future." REQ
;; ;;

View File

@@ -6,7 +6,6 @@ googlechromepkg)
# https://support.google.com/chrome/a/answer/9915669 # https://support.google.com/chrome/a/answer/9915669
# #
downloadURL="https://dl.google.com/chrome/mac/stable/accept_tos%3Dhttps%253A%252F%252Fwww.google.com%252Fintl%252Fen_ph%252Fchrome%252Fterms%252F%26_and_accept_tos%3Dhttps%253A%252F%252Fpolicies.google.com%252Fterms/googlechrome.pkg" downloadURL="https://dl.google.com/chrome/mac/stable/accept_tos%3Dhttps%253A%252F%252Fwww.google.com%252Fintl%252Fen_ph%252Fchrome%252Fterms%252F%26_and_accept_tos%3Dhttps%253A%252F%252Fpolicies.google.com%252Fterms/googlechrome.pkg"
appNewVersion=$(curl -s https://omahaproxy.appspot.com/history | awk -F',' '/mac_arm64,stable/{print $3; exit}')
expectedTeamID="EQHXZ8M8AV" expectedTeamID="EQHXZ8M8AV"
updateTool="/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent" updateTool="/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resources/GoogleSoftwareUpdateAgent.app/Contents/MacOS/GoogleSoftwareUpdateAgent"
updateToolArguments=( -runMode oneshot -userInitiated YES ) updateToolArguments=( -runMode oneshot -userInitiated YES )

View File

@@ -4,7 +4,6 @@ gpgsuite)
type="pkgInDmg" type="pkgInDmg"
pkgName="Install.pkg" pkgName="Install.pkg"
downloadURL=$(curl -s https://gpgtools.org/ | grep https://releases.gpgtools.org/GPG_Suite- | grep Download | cut -d'"' -f4) downloadURL=$(curl -s https://gpgtools.org/ | grep https://releases.gpgtools.org/GPG_Suite- | grep Download | cut -d'"' -f4)
appNewVersion=$(echo $downloadURL | cut -d "-" -f 2 | cut -d "." -f 1-2)
expectedTeamID="PKV8ZPD836" expectedTeamID="PKV8ZPD836"
blockingProcesses=( "GPG Keychain" ) blockingProcesses=( "GPG Keychain" )
;; ;;

View File

@@ -1,11 +1,9 @@
grammarly) grammarly)
name="Grammarly Desktop" name="Grammarly Desktop"
type="dmg" type="dmg"
packageID="com.grammarly.ProjectLlama" packageID="com.grammarly.ProjectLlama"
downloadURL=$(curl -fsL "https://download-mac.grammarly.com/appcast.xml" | xpath '//rss/channel/item[1]/enclosure/@url' 2>/dev/null | cut -d '"' -f 2) downloadURL=$(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" expectedTeamID="W8F64X92K3"
appNewVersion=$(curl -is "https://download-mac.grammarly.com/appcast.xml" | grep sparkle:version | tr ',' '\n' | grep sparkle:version | cut -d '"' -f 4) 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" appName="Grammarly Installer.app"
installerTool="Grammarly Installer.app" ;;
CLIInstaller="Grammarly Installer.app/Contents/MacOS/Grammarly Desktop"
;;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,5 @@
logioptions|\
logitechoptions) logitechoptions)
name="Logi Options" name="Logitech Options"
type="pkgInZip" 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=$(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" downloadURL="https://download01.logi.com/web/ftp/pub/techsupport/options/options_installer.zip"

View File

@@ -1,8 +0,0 @@
macoslaps)
name="macOSLAPS"
type="pkg"
packageID="edu.psu.macOSLAPS"
downloadURL="$(downloadURLFromGit joshua-d-miller macOSLAPS)"
appNewVersion="$(versionFromGit joshua-d-miller macOSLAPS)"
expectedTeamID="9UYK4F9BSM"
;;

View File

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

View File

@@ -1,11 +1,6 @@
onlyofficedesktop) onlyofficedesktop)
name="ONLYOFFICE" name="ONLYOFFICE"
type="dmg" type="dmg"
if [[ $(arch) == "arm64" ]]; then downloadURL="https://download.onlyoffice.com/install/desktop/editors/mac/distrib/onlyoffice/ONLYOFFICE.dmg"
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" expectedTeamID="2WH24U26GJ"
;; ;;

View File

@@ -1,9 +0,0 @@
pika)
name="Pika"
type="dmg"
packageID="com.superhighfives.Pika"
downloadURL=$(downloadURLFromGit "superhighfives" "pika")
appNewVersion=$(versionFromGit "superhighfives" "pika")
expectedTeamID="TGHU37N6EX"
blockingProcesses=( NONE )
;;

View File

@@ -1,12 +1,8 @@
postman) postman)
# credit: Mischa van der Bent
name="Postman" name="Postman"
type="zip" type="zip"
if [[ $(arch) == "arm64" ]]; then downloadURL="https://dl.pstmn.io/download/latest/osx"
downloadURL="https://dl.pstmn.io/download/latest/osx_arm64" 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' )
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" expectedTeamID="H7H8Q7M5CK"
;; ;;

View File

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

View File

@@ -1,13 +1,8 @@
rancherdesktop) rancherdesktop)
name="Rancher Desktop" name="Rancher.Desktop-1.0.0-mac"
type="zip" type="zip"
if [[ $(arch) == "arm64" ]]; then archiveName="Rancher.Desktop-[0-9.]*-mac.zip"
archiveName="Rancher.Desktop-[0-9.]*-mac.aarch64.zip" downloadURL="$(downloadURLFromGit rancher-sandbox rancher-desktop)"
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)" appNewVersion="$(versionFromGit rancher-sandbox rancher-desktop)"
expectedTeamID="2Q6FHJR3H3" expectedTeamID="2Q6FHJR3H3"
appName="Rancher Desktop.app" appName="Rancher Desktop.app"

View File

@@ -1,8 +1,7 @@
remotedesktopmanagerenterprise) remotedesktopmanagerenterprise)
name="Remote Desktop Manager" name="Remote Desktop Manager"
type="dmg" type="dmg"
downloadURL=$(curl -fs https://devolutions.net/remote-desktop-manager/home/thankyou/rdmmacbin | grep -oe "http.*\.dmg" | head -1) downloadURL=$(curl -fs https://remotedesktopmanager.com/home/thankyou/rdmmacbin | grep -oe "http.*\.dmg" | head -1)
appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g') appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g')
expectedTeamID="N592S9ASDB" expectedTeamID="N592S9ASDB"
blockingProcesses=( "$name" )
;; ;;

View File

@@ -1,7 +1,7 @@
remotedesktopmanagerfree) remotedesktopmanagerfree)
name="Remote Desktop Manager Free" name="Remote Desktop Manager Free"
type="dmg" type="dmg"
downloadURL=$(curl -fs https://devolutions.net/remote-desktop-manager/home/thankyou/rdmmacfreebin | grep -oe "http.*\.dmg" | head -1) downloadURL=$(curl -fs https://remotedesktopmanager.com/home/thankyou/rdmmacfreebin | grep -oe "http.*\.dmg" | head -1)
appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g') appNewVersion=$(echo "$downloadURL" | sed -E 's/.*\.Mac\.([0-9.]*)\.dmg/\1/g')
expectedTeamID="N592S9ASDB" expectedTeamID="N592S9ASDB"
;; ;;

View File

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

View File

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

View File

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

View File

@@ -1,8 +1,8 @@
snagit|\ snagit|\
snagit2022) snagit2021|\
name="Snagit 2022" snagit2020)
name="Snagit 2021"
type="dmg" 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) downloadURL="https://download.techsmith.com/snagitmac/releases/Snagit.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" expectedTeamID="7TQL462TU8"
;; ;;

View File

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

View File

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

View File

@@ -1,7 +0,0 @@
snagit2021)
name="Snagit 2021"
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) 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"
;;

View File

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

View File

@@ -1,7 +1,7 @@
talkdeskcallbar) talkdeskcallbar)
name="Callbar" name="Callbar"
type="dmg" type="dmg"
appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*$/\1/p') downloadURL=https://downloadcallbar.talkdesk.com/Callbar-$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version":"\([^"]*\)".*$/\1/p').dmg
downloadURL=https://downloadcallbar.talkdesk.com/Callbar-${appNewVersion}.dmg appNewVersion=$(curl -fsL https://downloadcallbar.talkdesk.com/release_metadata.json | sed -n 's/^.*"version":"\([^"]*\)".*$/\1/p')
expectedTeamID="YGGJX44TB8" expectedTeamID="YGGJX44TB8"
;; ;;

View File

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

View File

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

View File

@@ -1,8 +0,0 @@
ultimakercura)
name="Ultimaker Cura"
type="dmg"
downloadURL="$(downloadURLFromGit Ultimaker Cura)"
archiveName="Ultimaker_Cura-[0-9].*-Darwin.dmg"
appNewVersion=$(versionFromGit Ultimaker Cura )
expectedTeamID="V4B3JXRRQS"
;;

View File

@@ -1,8 +0,0 @@
unnaturalscrollwheels)
name="UnnaturalScrollWheels"
type="dmg"
downloadURL="$(downloadURLFromGit ther0n UnnaturalScrollWheels)"
appNewVersion="$(versionFromGit ther0n UnnaturalScrollWheels)"
expectedTeamID="D6H5W2T379"
blockingProcesses=( UnnaturalScrollWheels )
;;

View File

@@ -1,6 +0,0 @@
wechat)
name="WeChat"
type="dmg"
downloadURL="https://dldir1.qq.com/weixin/mac/WeChatMac.dmg"
expectedTeamID="5A4RE8SF68"
;;

View File

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

View File

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

View File

@@ -1 +1 @@
9.2 10dev

View File

@@ -59,16 +59,14 @@ Pull requests against the `Installomator.sh` script in the root of the repo will
### When you are familiar with git and GitHub ### When you are familiar with git and GitHub
- If you haven't already, create a fork of the Installomator repo. Clone the for to your local Mac. - Create a new branch in your local Installomator fork repo.
- Create a new branch in your local Installomator (fork) repo.
- Copy the new or modified label file to `fragments/labels`. (replacing the original, when necessary) - Copy the new or modified label file to `fragments/labels`. (replacing the original, when necessary)
- Test (push the change to your fork on GitHub. You can check that out on testing devices or vms.) - Create a pull request against the main Installomator dev branch.
- Create a pull request against the Installomator `main` branch. - Don't use this branch for any other modifications, unless you need to update this particular PR. (Pull Requests are against a _branch_, not a particular commit.)
- Don't use this branch for _any_ other modifications, unless you need to update this particular PR. (Pull Requests are against a _branch_, not a particular commit.)
If you have multiple labels (or other changes) you want to contribute, please create a _separate_ local branch and a _separate_ pull request for each label. This allows us to accept, modify, or reject each label separately and simplifies the process. If you have multiple labels you want to contribute, please create a separate local branch and a separate pull request for each label.
Once your Pull Request is merged into the main repo, you can pull the change to your local repo, push it to your fork, and delete the branch, because it should be fully merged. Once your Pull Request is merged into the main repo, you can pull the change to your fork and delete the branch.
### When you are not familiar with git and GitHub ### When you are not familiar with git and GitHub