diff --git a/Installomator.sh b/Installomator.sh
index a568068..54d2fbb 100755
--- a/Installomator.sh
+++ b/Installomator.sh
@@ -81,6 +81,7 @@ LOGO=appstore
# - mosylem Mosyle Manager (Education)
# - addigy Addigy
# - microsoft Microsoft Endpoint Manager (Intune)
+# - ws1 Workspace ONE (AirWatch)
# path can also be set in the command call, and if file exists, it will be used.
# Like 'LOGO="/System/Applications/App\ Store.app/Contents/Resources/AppIcon.icns"'
# (spaces have to be escaped).
@@ -367,10 +368,13 @@ displaydialogContinue() { # $1: message $2: title
displaynotification() { # $1: message $2: title
message=${1:-"Message"}
title=${2:-"Notification"}
+ hubcli="/usr/local/bin/hubcli"
manageaction="/Library/Application Support/JAMF/bin/Management Action.app/Contents/MacOS/Management Action"
if [[ -x "$manageaction" ]]; then
"$manageaction" -message "$message" -title "$title"
+ elif [[ -x "$hubcli" ]]; then
+ "$hubcli" notify -t "$title" -i "$message" -c "Dismiss"
else
runAsUser osascript -e "display notification \"$message\" with title \"$title\""
fi
@@ -5264,6 +5268,11 @@ case $LOGO in
LOGO="/Library/Intune/Microsoft Intune Agent.app/Contents/Resources/AppIcon.icns"
if [[ -z $MDMProfileName ]]; then; MDMProfileName="Management Profile"; fi
;;
+ ws1)
+ # Workspace ONE
+ LOGO="/Applications/Workspace ONE Intelligent Hub.app/Contents/Resources/AppIcon.icns"
+ if [[ -z $MDMProfileName ]]; then; MDMProfileName="Device Manager"; fi
+ ;;
esac
if [[ ! -a "${LOGO}" ]]; then
if [[ $(sw_vers -buildVersion) > "19" ]]; then
diff --git a/fragments/functions.sh b/fragments/functions.sh
index 9e9e977..ddbe70f 100644
--- a/fragments/functions.sh
+++ b/fragments/functions.sh
@@ -22,7 +22,7 @@ cleanupAndExit() { # $1 = exit code, $2 message, $3 level
printlog "$2" $3
fi
printlog "################## End Installomator, exit code $1 \n" REQ
-
+
# if label is wrong and we wanted name of the label, then return ##################
if [[ $RETURN_LABEL_NAME -eq 1 ]]; then
1=0 # If only label name should be returned we exit without any errors
@@ -199,6 +199,16 @@ xpath() {
fi
}
+# from @Pico: https://macadmins.slack.com/archives/CGXNNJXJ9/p1652222365989229?thread_ts=1651786411.413349&cid=CGXNNJXJ9
+getJSONValue() {
+ # $1: JSON string OR file path to parse (tested to work with up to 1GB string and 2GB file).
+ # $2: JSON key path to look up (using dot or bracket notation).
+ printf '%s' "$1" | /usr/bin/osascript -l 'JavaScript' \
+ -e "let json = $.NSString.alloc.initWithDataEncoding($.NSFileHandle.fileHandleWithStandardInput.readDataToEndOfFile$(/usr/bin/uname -r | /usr/bin/awk -F '.' '($1 > 18) { print "AndReturnError(ObjC.wrap())" }'), $.NSUTF8StringEncoding)" \
+ -e 'if ($.NSFileManager.defaultManager.fileExistsAtPath(json)) json = $.NSString.stringWithContentsOfFileEncodingError(json, $.NSUTF8StringEncoding, ObjC.wrap())' \
+ -e "const value = JSON.parse(json.js)$([ -n "${2%%[.[]*}" ] && echo '.')$2" \
+ -e 'if (typeof value === "object") { JSON.stringify(value, null, 4) } else { value }'
+}
getAppVersion() {
# modified by: Søren Theilgaard (@theilgaard) and Isaac Ordonez
diff --git a/fragments/labels/adobecreativeclouddesktop.sh b/fragments/labels/adobecreativeclouddesktop.sh
index 7445443..95582db 100644
--- a/fragments/labels/adobecreativeclouddesktop.sh
+++ b/fragments/labels/adobecreativeclouddesktop.sh
@@ -2,10 +2,11 @@ adobecreativeclouddesktop)
name="Adobe Creative Cloud"
#appName="Install.app"
type="dmg"
+ adobeurl="https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html"
if [[ $(arch) == "arm64" ]]; then
- downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*macarm64.*dmg" | cut -d '"' -f1 | head -1)
+ downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'osx10')][contains(text(),'Download')]/@href)" - 2> /dev/null)
elif [[ $(arch) == "i386" ]]; then
- downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*osx10.*dmg" | cut -d '"' -f1 | head -1)
+ downloadURL=$(curl -fs "$adobeurl" | xmllint -html -xpath "string(//a[contains(@href,'macarm64')][contains(text(),'Download')]/@href)" - 2> /dev/null)
fi
#downloadURL=$(curl -fs "https://helpx.adobe.com/download-install/kb/creative-cloud-desktop-app-download.html" | grep -o "https*.*dmg" | head -1)
appNewVersion=$(curl -fs "https://helpx.adobe.com/creative-cloud/release-note/cc-release-notes.html" | grep "mandatory" | head -1 | grep -o "Version *.* released" | cut -d " " -f2)
diff --git a/fragments/labels/blender.sh b/fragments/labels/blender.sh
index f45255e..f024a77 100644
--- a/fragments/labels/blender.sh
+++ b/fragments/labels/blender.sh
@@ -1,7 +1,11 @@
blender)
name="blender"
type="dmg"
- downloadURL=$(redirect=$(curl -sfL https://www.blender.org/download/ | sed 's/.*href="//' | sed 's/".*//' | grep .dmg) && curl -sfL "$redirect" | sed 's/.*href="//' | sed 's/".*//' | grep -m1 .dmg)
+ if [[ $(arch) == "arm64" ]]; then
+ downloadURL=$(curl -sfL "https://www.blender.org/download/" | xmllint --html --format - 2>/dev/null | grep -o "https://.*blender.*arm64.*.dmg" | sed '2p;d' | sed 's/www.blender.org\/download/download.blender.org/g')
+ elif [[ $(arch) == "i386" ]]; then
+ downloadURL=$(curl -sfL "https://www.blender.org/download/" | xmllint --html --format - 2>/dev/null | grep -o "https://.*blender.*x64.*.dmg" | sed '2p;d' | sed 's/www.blender.org\/download/download.blender.org/g')
+ fi
appNewVersion=$( echo "${downloadURL}" | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g' )
expectedTeamID="68UA947AUU"
;;
diff --git a/fragments/labels/bluejeanswithaudiodriver.sh b/fragments/labels/bluejeanswithaudiodriver.sh
new file mode 100644
index 0000000..d210af1
--- /dev/null
+++ b/fragments/labels/bluejeanswithaudiodriver.sh
@@ -0,0 +1,12 @@
+bluejeanswithaudiodriver)
+ name="BlueJeans"
+ type="pkg"
+ if [[ $(arch) == "arm64" ]]; then
+ downloadURL=$(curl -fs "https://www.bluejeans.com/downloads" | xmllint --html --format - 2>/dev/null | grep -o "https://.*BlueJeans.*Installer.*arm.*.pkg" )
+ elif [[ $(arch) == "i386" ]]; then
+ downloadURL=$(curl -fs "https://www.bluejeans.com/downloads" | xmllint --html --format - 2>/dev/null | grep -o "https://.*BlueJeansInstaller.*x86.*.dmg" | sed 's/dmg/pkg/g')
+ fi
+ appNewVersion=$(echo $downloadURL | cut -d '/' -f6)
+ choiceChangesXML='attributeSetting1choiceAttributeselectedchoiceIdentifiercom.tatvikmohit.BlueJeans-Audio'
+ expectedTeamID="HE4P42JBGN"
+ ;;
diff --git a/fragments/labels/clickshare.sh b/fragments/labels/clickshare.sh
index 6911551..1b0221b 100644
--- a/fragments/labels/clickshare.sh
+++ b/fragments/labels/clickshare.sh
@@ -1,7 +1,7 @@
clickshare)
- # credit: Søren Theilgaard (@theilgaard)
name="ClickShare"
type="appInDmgInZip"
- downloadURL=https://www.barco.com$(curl -fs "https://www.barco.com/en/clickshare/app" | grep -E -o '(\/\S*Download\?FileNumber=R3306192\S*ShowDownloadPage=False)' | tail -1)
+ downloadURL="https://www.barco.com$( curl -fs "https://www.barco.com/en/clickshare/app" | grep -A6 -i "macos" | grep -i "FileNumber" | tr '"' "\n" | grep -i "FileNumber" )"
+ appNewVersion="$(eval "$( echo $downloadURL | sed -E 's/.*(MajorVersion.*BuildVersion=[0-9]*).*/\1/' | sed 's/&//g' )" ; ((MajorVersion++)) ; ((MajorVersion--)); ((MinorVersion++)) ; ((MinorVersion--)); ((PatchVersion++)) ; ((PatchVersion--)); ((BuildVersion++)) ; ((BuildVersion--)); echo "${MajorVersion}.${MinorVersion}.${PatchVersion}-b${BuildVersion}")"
expectedTeamID="P6CDJZR997"
;;
diff --git a/fragments/labels/egnyte.sh b/fragments/labels/egnyte.sh
index 185156e..3188a5d 100644
--- a/fragments/labels/egnyte.sh
+++ b/fragments/labels/egnyte.sh
@@ -3,6 +3,7 @@ egnyte)
name="Egnyte Connect"
type="pkg"
downloadURL="https://egnyte-cdn.egnyte.com/egnytedrive/mac/en-us/latest/EgnyteConnectMac.pkg"
+ appNewVersion=$(curl -fs "https://egnyte-cdn.egnyte.com/egnytedrive/mac/en-us/versions/default.xml" | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' | cut -d '"' -f 2)
expectedTeamID="FELUD555VC"
blockingProcesses=( NONE )
;;
diff --git a/fragments/labels/firefox.sh b/fragments/labels/firefox.sh
index 7b310e5..2ff72ab 100644
--- a/fragments/labels/firefox.sh
+++ b/fragments/labels/firefox.sh
@@ -2,7 +2,8 @@ firefox)
name="Firefox"
type="dmg"
downloadURL="https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US"
- appNewVersion=$(curl -fs https://www.mozilla.org/en-US/firefox/releases/ | grep '*' | sed -e 's/.*\\(.*\)\.\<\/strong\>.*/\1/')
+ expectedTeamID="M3KUT44L48"
+ ;;
diff --git a/fragments/labels/nordlayer.sh b/fragments/labels/nordlayer.sh
new file mode 100644
index 0000000..614b8cf
--- /dev/null
+++ b/fragments/labels/nordlayer.sh
@@ -0,0 +1,7 @@
+nordlayer)
+ # credit: Taboc741 (https://github.com/taboc741)
+ name="NordLayer"
+ type="pkg"
+ downloadURL="https://downloads.nordlayer.com/mac/latest/NordLayer.pkg"
+ expectedTeamID="W5W395V82Y"
+ ;;
diff --git a/fragments/labels/notion.sh b/fragments/labels/notion.sh
index aa1ab0a..7e608e8 100644
--- a/fragments/labels/notion.sh
+++ b/fragments/labels/notion.sh
@@ -4,9 +4,10 @@ notion)
type="dmg"
if [[ $(arch) == "arm64" ]]; then
downloadURL="https://www.notion.so/desktop/apple-silicon/download"
+ appNewVersion=$( curl -fsIL "https://www.notion.so/desktop/apple-silicon/download" | grep -i "^location" | awk '{print $2}' | sed -e 's/.*Notion\-\(.*\)\-arm64.dmg.*/\1/' )
elif [[ $(arch) == "i386" ]]; then
downloadURL="https://www.notion.so/desktop/mac/download"
+ appNewVersion=$( curl -fsIL "https://www.notion.so/desktop/mac/download" | grep -i "^location" | awk '{print $2}' | sed -e 's/.*Notion\-\(.*\).dmg.*/\1/' )
fi
- appNewVersion=$( curl -fsIL "${downloadURL}" | grep -i "^location" | awk '{print $2}' | tr -d '\r\n' | sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)\..*/\1/g' )
expectedTeamID="LBQJ96FQ8D"
;;
diff --git a/fragments/labels/ringcentralapp.sh b/fragments/labels/ringcentralapp.sh
index fbd047e..dd052d3 100644
--- a/fragments/labels/ringcentralapp.sh
+++ b/fragments/labels/ringcentralapp.sh
@@ -1,6 +1,6 @@
ringcentralapp)
# credit: Isaac Ordonez, Mann consulting (@mannconsulting)
- name="Ringcentral"
+ name="RingCentral"
type="pkg"
if [[ $(arch) != "i386" ]]; then
downloadURL="https://app.ringcentral.com/download/RingCentral-arm64.pkg"
@@ -8,5 +8,5 @@ ringcentralapp)
downloadURL="https://app.ringcentral.com/download/RingCentral.pkg"
fi
expectedTeamID="M932RC5J66"
- blockingProcesses=( "Ringcentral" )
+ blockingProcesses=( "RingCentral" )
;;
diff --git a/fragments/labels/whatroute.sh b/fragments/labels/whatroute.sh
new file mode 100644
index 0000000..2577a23
--- /dev/null
+++ b/fragments/labels/whatroute.sh
@@ -0,0 +1,7 @@
+whatroute)
+ name="WhatRoute"
+ type="zip"
+ downloadURL="$(curl -fs https://www.whatroute.net/whatroute2appcast.xml | xpath '(//rss/channel/item/enclosure/@url)[1]' 2>/dev/null | cut -d '"' -f2)"
+ appNewVersion="$(curl -fs https://www.whatroute.net/whatroute2appcast.xml | xpath '(//rss/channel/item/enclosure/@sparkle:shortVersionString)[1]' 2>/dev/null | cut -d '"' -f2)"
+ expectedTeamID="H5879E8LML"
+ ;;
diff --git a/utils/assemble.sh b/utils/assemble.sh
index 7531173..834a0c1 100755
--- a/utils/assemble.sh
+++ b/utils/assemble.sh
@@ -127,6 +127,8 @@ if [[ $buildScript -eq 1 ]]; then
echo "# copying script to $repo_dir/Installomator.sh"
cp $destination_file $repo_dir/Installomator.sh
chmod 755 $repo_dir/Installomator.sh
+ # also update Labels.txt
+ $repo_dir/Installomator.sh | tail -n +2 > $repo_dir/Labels.txt
fi
# build a pkg when flag is set