Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
223 changes: 119 additions & 104 deletions Installomator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -356,8 +356,8 @@ if [[ $(/usr/bin/arch) == "arm64" ]]; then
rosetta2=no
fi
fi
VERSION="10.8"
VERSIONDATE="2026-01-27"
VERSION="blooo-v10.8.6"
VERSIONDATE="2026-02-10"

# MARK: Functions

Expand Down Expand Up @@ -1653,6 +1653,78 @@ valuesfromarguments)
appNewVersion=$(curl -fs -L https://support.8x8.com/cloud-phone-service/voice/work-desktop/download-8x8-work-for-desktop | grep -m 1 -o "https.*dmg" | sed 's/\"//' | awk '{print $1}' | sed -E 's/.*-v([0-9\.]*)[-\.]*.*/\1/' )
expectedTeamID="FC967L3QRG"
;;
ape)
name="ApE"
type="dmg"
downloadURL="https://jorgensen.biology.utah.edu/wayned/ape/Download/Mac/ApE_OSX_modern_current.dmg"
appNewVersion="$(curl -fsL "https://jorgensen.biology.utah.edu/wayned/ape/" | grep -Eo 'ApE \(v[0-9]+\.[0-9]+\.[0-9]+' | sed -E 's/ApE \(v//')"
expectedTeamID="F5459JB4SG"
appName="ApE.app"
blockingProcesses=( "ApE" )
;;
dcp-o-matic|dcpomatic|dcp-o-matic2|dcpomatic2)
name="DCP-o-matic 2"
type="dmg"
appNewVersion=$(curl -fs https://dcpomatic.com/download | grep "Stable release: " | awk -F '</p>' '{print $1}' | grep -o -e "[0-9.]*")
downloadURL="https://dcpomatic.com/dl.php?id=osx-10.10-main&version=$appNewVersion&paid=0"
versionKey="CFBundleVersion"
expectedTeamID="R82DXSR997"
;;
hudlsportscode)
name="Hudl Sportscode"
type="appInDmgInZip"
appNewVersion=$(curl -fs https://www.hudl.com/downloads/elite | grep -A 1 "Download Hudl Sportscode" | grep -o -e "[0-9.]*")
downloadURL="https://sportscode64-updates.s3.amazonaws.com/PublicReleaseDmgs/HudlSportscode-$appNewVersion.dmg.zip"
versionKey="CFBundleVersion"
expectedTeamID="4M6T2C723P"
;;
hudlstudio)
name="Studio"
type="dmg"
appNewVersion=$(curl -fs https://www.hudl.com/downloads/elite | grep -A 1 "Download Studio" | grep -o -e "[0-9.]*")
downloadURL="https://studio-releases.s3.amazonaws.com/Studio-$appNewVersion.dmg"
versionKey="CFBundleVersion"
expectedTeamID="2YLQ7PASUE"
;;
synergybaseball)
name="Synergy Baseball"
type="dmg"
downloadURL="$( echo https://www.synergysportstech.com/baseballclient/MacOS/$(curl -s https://www.synergysportstech.com/baseballclient/MacOS/default.htm | grep dmg | grep -o 'href="[^"]*' | head -1 | awk -F '="' '{print $NF}') )"
appNewVersion=$(curl -fs https://www.synergysportstech.com/baseballclient/MacOS/default.htm | grep Version: | grep -o -e "[0-9.]*")
versionKey="CFBundleVersion"
expectedTeamID="BATB6XS52B"
;;

synergybasketball)
name="Synergy Basketball"
type="dmg"
downloadURL="$( echo https://www.synergysportstech.com/Apps/Basketball/production/macOS/$(curl -s https://www.synergysportstech.com/Apps/Basketball/production/macOS/default.htm | grep dmg | grep -o 'href="[^"]*' | head -1 | awk -F '="' '{print $NF}') )"
appNewVersion=$(curl -fs https://www.synergysportstech.com/Apps/Basketball/production/macOS/default.htm | grep Version: | grep -o -e "[0-9.]*")
versionKey="CFBundleVersion"
expectedTeamID="BATB6XS52B"
;;
synergyeditor|synergyeditorbasketball)
name="Synergy Editor"
type="dmg"
if [[ "$(arch)" == "arm64" ]]; then
downloadURL=$( echo https://www.synergysportstech.com/apps/editor/basketball/macos/$(curl -s https://www.synergysportstech.com/apps/editor/basketball/macos/ | grep arm64.dmg | grep -o 'href="[^"]*' | head -1 | awk -F '="' '{print $NF}' ))
else
downloadURL=$( echo https://www.synergysportstech.com/apps/editor/basketball/macos/$(curl -s https://www.synergysportstech.com/apps/editor/basketball/macos/ | grep x64.dmg | grep -o 'href="[^"]*' | head -1 | awk -F '="' '{print $NF}' ))
fi
appNewVersion=$(curl -fs https://www.synergysportstech.com/apps/editor/basketball/macos/default.html | grep Version: | grep -o -e "[0-9.]*")
versionKey="CFBundleShortVersionString"
expectedTeamID="BATB6XS52B"
;;
synergyvideoexpress)
name="Synergy Video Express"
type="dmg"
relativeDownloadURL="$(curl -fsL https://www.synergysportstech.com/apps/videoexpress/production/macOS/default.htm | grep -Eo 'Synergy_Video_Express_[^"]+\.dmg' | head -1)"
downloadURL="https://www.synergysportstech.com/apps/videoexpress/production/macOS/${relativeDownloadURL}"
appNewVersion=$(echo "$relativeDownloadURL" | sed -E 's/.*_([0-9]+_[0-9]+_[0-9]+_[0-9]+)\.dmg/\1/' | tr '_' '.')
expectedTeamID="BATB6XS52B"
appName="Synergy Video Express.app"
blockingProcesses=( "Synergy Video Express" )
;;
abetterfinderrename11)
name="A Better Finder Rename 11"
type="dmg"
Expand Down Expand Up @@ -2190,15 +2262,6 @@ apachenetbeans)
downloadURL="https://dlcdn.apache.org/netbeans/netbeans-installers/"${appNewVersion}"/Apache-NetBeans-"${appNewVersion}".pkg"
expectedTeamID="2GLGAFWEQD"
;;
ape)
name="ApE"
type="dmg"
downloadURL="https://jorgensen.biology.utah.edu/wayned/ape/Download/Mac/ApE_OSX_modern_current.dmg"
appNewVersion="$(curl -fsL "https://jorgensen.biology.utah.edu/wayned/ape/" | grep -Eo 'ApE \(v[0-9]+\.[0-9]+\.[0-9]+' | sed -E 's/ApE \(v//')"
expectedTeamID="F5459JB4SG"
appName="ApE.app"
blockingProcesses=( "ApE" )
;;
apparency)
name="Apparency"
type="dmg"
Expand Down Expand Up @@ -3680,14 +3743,6 @@ dbeaverce)
expectedTeamID="42B6MDKMW8"
blockingProcesses=( dbeaver )
;;
dcp-o-matic|dcpomatic|dcp-o-matic2|dcpomatic2)
name="DCP-o-matic 2"
type="dmg"
appNewVersion=$(curl -fs https://dcpomatic.com/download | grep "Stable release: " | awk -F '</p>' '{print $1}' | grep -o -e "[0-9.]*")
downloadURL="https://dcpomatic.com/dl.php?id=osx-10.10-main&version=$appNewVersion&paid=0"
versionKey="CFBundleVersion"
expectedTeamID="R82DXSR997"
;;
debookee)
name="Debookee"
type="zip"
Expand Down Expand Up @@ -4365,6 +4420,16 @@ findanyfile)
appNewVersion=$(curl -fs "https://findanyfile.app/appcast2.php" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f2)
expectedTeamID="25856V4B4X"
;;
firefox)
name="Firefox"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;;
firefox_da)
name="Firefox"
type="dmg"
Expand Down Expand Up @@ -4402,23 +4467,23 @@ firefox_intl)
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)
name="Firefox"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
;;
firefoxdeveloperedition)
name="Firefox Developer Edition"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-devedition-latest-ssl&os=osx&lang=en-US"
appNewVersion=$(curl -fsIL "https://download.mozilla.org/?product=firefox-devedition-latest-ssl&os=osx&lang=en-US&_gl=1*1g4sufp*_ga*OTAwNTc3MjE4LjE2NTM2MDIwODM.*_ga_MQ7767QQQW*MTY1NDcyNTYyNy40LjEuMTY1NDcyNzA2MS4w" | grep -i ^location | cut -d "/" -f7)
expectedTeamID="43AQ936H96"
;;
firefoxesr|\
firefoxesrpkg)
name="Firefox"
type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-esr-pkg-latest-ssl&os=osx"
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "FIREFOX_ESR")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;
firefoxesr_intl)
# This label will try to figure out the selected language of the user,
# and install corrosponding version of Firefox ESR
Expand Down Expand Up @@ -4446,13 +4511,12 @@ firefoxesr_intl)
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|\
firefoxesrpkg)
firefoxpkg)
name="Firefox"
type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-esr-pkg-latest-ssl&os=osx"
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "FIREFOX_ESR")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;
Expand Down Expand Up @@ -4484,15 +4548,6 @@ firefoxpkg_intl)
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;
firefoxpkg)
name="Firefox"
type="pkg"
downloadURL="https://download.mozilla.org/?product=firefox-pkg-latest-ssl&os=osx&lang=en-US"
firefoxVersions=$(curl -fs "https://product-details.mozilla.org/1.0/firefox_versions.json")
appNewVersion=$(getJSONValue "$firefoxVersions" "LATEST_FIREFOX_VERSION")
expectedTeamID="43AQ936H96"
blockingProcesses=( firefox )
;;
flameshot)
# Flameshot - Powerful screenshot tool (signed macOS build from blooo-io fork)
# https://github.com/blooo-io/flameshot
Expand Down Expand Up @@ -5097,22 +5152,6 @@ huddly)
appNewVersion="$(curl -fsIL "${downloadURL}" | grep -i '^content-disposition' | sed -E 's/.*-([0-9]+\.[0-9]+\.[0-9]+)-.*/\1/g')"
expectedTeamID="J659R47HZT"
;;
hudlsportscode)
name="Hudl Sportscode"
type="appInDmgInZip"
appNewVersion=$(curl -fs https://www.hudl.com/downloads/elite | grep -A 1 "Download Hudl Sportscode" | grep -o -e "[0-9.]*")
downloadURL="https://sportscode64-updates.s3.amazonaws.com/PublicReleaseDmgs/HudlSportscode-$appNewVersion.dmg.zip"
versionKey="CFBundleVersion"
expectedTeamID="4M6T2C723P"
;;
hudlstudio)
name="Studio"
type="dmg"
appNewVersion=$(curl -fs https://www.hudl.com/downloads/elite | grep -A 1 "Download Studio" | grep -o -e "[0-9.]*")
downloadURL="https://studio-releases.s3.amazonaws.com/Studio-$appNewVersion.dmg"
versionKey="CFBundleVersion"
expectedTeamID="2YLQ7PASUE"
;;
hype)
name="Hype4"
type="dmg"
Expand Down Expand Up @@ -9487,45 +9526,6 @@ sync)
expectedTeamID="7QR39CMJ3W"
blockingProcesses=( "Sync" "sync-worker.exe" )
;;
synergybaseball)
name="Synergy Baseball"
type="dmg"
downloadURL="$( echo https://www.synergysportstech.com/baseballclient/MacOS/$(curl -s https://www.synergysportstech.com/baseballclient/MacOS/default.htm | grep dmg | grep -o 'href="[^"]*' | head -1 | awk -F '="' '{print $NF}') )"
appNewVersion=$(curl -fs https://www.synergysportstech.com/baseballclient/MacOS/default.htm | grep Version: | grep -o -e "[0-9.]*")
versionKey="CFBundleVersion"
expectedTeamID="BATB6XS52B"
;;

synergybasketball)
name="Synergy Basketball"
type="dmg"
downloadURL="$( echo https://www.synergysportstech.com/Apps/Basketball/production/macOS/$(curl -s https://www.synergysportstech.com/Apps/Basketball/production/macOS/default.htm | grep dmg | grep -o 'href="[^"]*' | head -1 | awk -F '="' '{print $NF}') )"
appNewVersion=$(curl -fs https://www.synergysportstech.com/Apps/Basketball/production/macOS/default.htm | grep Version: | grep -o -e "[0-9.]*")
versionKey="CFBundleVersion"
expectedTeamID="BATB6XS52B"
;;
synergyeditor|synergyeditorbasketball)
name="Synergy Editor"
type="dmg"
if [[ "$(arch)" == "arm64" ]]; then
downloadURL=$( echo https://www.synergysportstech.com/apps/editor/basketball/macos/$(curl -s https://www.synergysportstech.com/apps/editor/basketball/macos/ | grep arm64.dmg | grep -o 'href="[^"]*' | head -1 | awk -F '="' '{print $NF}' ))
else
downloadURL=$( echo https://www.synergysportstech.com/apps/editor/basketball/macos/$(curl -s https://www.synergysportstech.com/apps/editor/basketball/macos/ | grep x64.dmg | grep -o 'href="[^"]*' | head -1 | awk -F '="' '{print $NF}' ))
fi
appNewVersion=$(curl -fs https://www.synergysportstech.com/apps/editor/basketball/macos/default.html | grep Version: | grep -o -e "[0-9.]*")
versionKey="CFBundleShortVersionString"
expectedTeamID="BATB6XS52B"
;;
synergyvideoexpress)
name="Synergy Video Express"
type="dmg"
relativeDownloadURL="$(curl -fsL https://www.synergysportstech.com/apps/videoexpress/production/macOS/default.htm | grep -Eo 'Synergy_Video_Express_[^"]+\.dmg' | head -1)"
downloadURL="https://www.synergysportstech.com/apps/videoexpress/production/macOS/${relativeDownloadURL}"
appNewVersion=$(echo "$relativeDownloadURL" | sed -E 's/.*_([0-9]+_[0-9]+_[0-9]+_[0-9]+)\.dmg/\1/' | tr '_' '.')
expectedTeamID="BATB6XS52B"
appName="Synergy Video Express.app"
blockingProcesses=( "Synergy Video Express" )
;;
synologyactivebackupforbusinessagent)
name="Synology Active Backup for Business Agent"
type="pkgInDmg"
Expand Down Expand Up @@ -9792,6 +9792,13 @@ thonny)
appNewVersion="$(versionFromGit thonny thonny)"
expectedTeamID="2SA9D4CVU8"
;;
thunderbird)
name="Thunderbird"
type="dmg"
appNewVersion=$(curl -I -s "https://download.mozilla.org/?product=thunderbird-esr-latest&os=osx&lang=en-US" | grep -i location | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1 )
downloadURL="https://download.mozilla.org/?product=thunderbird-esr-latest&os=osx&lang=en-US"
expectedTeamID="43AQ936H96"
;;
thunderbird_intl)
# This label will try to figure out the selected language of the user,
# and install corrosponding version of Thunderbird
Expand All @@ -9817,13 +9824,6 @@ thunderbird_intl)
expectedTeamID="43AQ936H96"
blockingProcesses=( thunderbird )
;;
thunderbird)
name="Thunderbird"
type="dmg"
appNewVersion=$(curl -I -s "https://download.mozilla.org/?product=thunderbird-esr-latest&os=osx&lang=en-US" | grep -i location | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1 )
downloadURL="https://download.mozilla.org/?product=thunderbird-esr-latest&os=osx&lang=en-US"
expectedTeamID="43AQ936H96"
;;
thunderbirdesr)
name="Thunderbird"
type="dmg"
Expand Down Expand Up @@ -10467,6 +10467,21 @@ whimsical)
blockingProcesses=( "Whimsical" )
;;

windsurf)
name="Windsurf"
type="dmg"
# Version and download URL from releases page: https://windsurf.com/editor/releases
# Stable builds are served from windsurf-stable.codeiumdata.com (darwin-arm64-dmg or darwin-x64-dmg).
if [[ $(arch) == "arm64" ]]; then
archiveName="darwin-arm64-dmg"
else
archiveName="darwin-x64-dmg"
fi
downloadURL=$(curl -fsL "https://windsurf.com/editor/releases" | grep -oE "https://windsurf-stable\.codeiumdata\.com/${archiveName}/[^\"<>\\]*\.dmg" | head -1 | sed 's/\\$//')
appNewVersion=$(curl -fsL "https://windsurf.com/editor/releases" | grep -oE "Windsurf-darwin-(arm64|x64)-[0-9]+\.[0-9]+\.[0-9]+\.dmg" | head -1 | sed -E 's/.*-([0-9]+\.[0-9]+\.[0-9]+)\.dmg/\1/')
expectedTeamID="83Z2LHX6XW"
blockingProcesses=( "Windsurf" )
;;
wireshark)
name="Wireshark"
type="dmg"
Expand Down
1 change: 1 addition & 0 deletions Labels.txt
Original file line number Diff line number Diff line change
Expand Up @@ -980,6 +980,7 @@ weprint
whatroute
whatsapp
whimsical
windsurf
wireshark
wordservice
workbrew
Expand Down
15 changes: 15 additions & 0 deletions fragments/labels/windsurf.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
windsurf)
name="Windsurf"
type="dmg"
# Version and download URL from releases page: https://windsurf.com/editor/releases
# Stable builds are served from windsurf-stable.codeiumdata.com (darwin-arm64-dmg or darwin-x64-dmg).
if [[ $(arch) == "arm64" ]]; then
archiveName="darwin-arm64-dmg"
else
archiveName="darwin-x64-dmg"
fi
downloadURL=$(curl -fsL "https://windsurf.com/editor/releases" | grep -oE "https://windsurf-stable\.codeiumdata\.com/${archiveName}/[^\"<>\\]*\.dmg" | head -1 | sed 's/\\$//')
appNewVersion=$(curl -fsL "https://windsurf.com/editor/releases" | grep -oE "Windsurf-darwin-(arm64|x64)-[0-9]+\.[0-9]+\.[0-9]+\.dmg" | head -1 | sed -E 's/.*-([0-9]+\.[0-9]+\.[0-9]+)\.dmg/\1/')
expectedTeamID="83Z2LHX6XW"
blockingProcesses=( "Windsurf" )
;;
Loading