EA - Adobe Illustrator - Application Path

dwynn
New Contributor III

The application name for Adobe Illustrator remains the same regardless of the version installed, which makes it challenging to identify specific versions based on the file path alone. I need to create an Extension Attribute (EA) that can detect different installation paths for Adobe Illustrator, such as:

  • /Applications/Adobe Illustrator 2024/Adobe Illustrator.app
  • /Applications/Adobe Illustrator 2025/Adobe Illustrator.app

This will allow me to create a smart computer group in Jamf Pro and effectively scope updates for each version.

I’ve tried the following script, but it doesn’t seem to be working as expected. Any advice on how to get this working would be greatly appreciated!

dwynn_0-1730993760392.png

 

 

 

1 ACCEPTED SOLUTION

sdagley
Esteemed Contributor III

@dwynn You can use Patch Management definitions to create a Smart Group for a specific year version of Adobe apps. Create a record for the apps you're looking to differentiate in the Patch Management section of Jamf Pro, then for your Smart Group criteria click Show Advanced Criteria, choose Patch Reporting Software Title, then select the patch reporting entry for the specific year app you're looking for.

View solution in original post

7 REPLIES 7

sdagley
Esteemed Contributor III

@dwynn You can use Patch Management definitions to create a Smart Group for a specific year version of Adobe apps. Create a record for the apps you're looking to differentiate in the Patch Management section of Jamf Pro, then for your Smart Group criteria click Show Advanced Criteria, choose Patch Reporting Software Title, then select the patch reporting entry for the specific year app you're looking for.

dwynn
New Contributor III

That is a great idea. One problem I see is that I have to select each version of Illustrator I want to add to the group. If a new version is released, say, 30.0, then I'll have to come back and add it to the group. I'm trying to make this as dynamic as possible. 

dwynn_0-1731000239284.png

 

 

dwynn
New Contributor III

But If I do "less than or equal to" the lastest version that will work right?

sdagley
Esteemed Contributor III

Correct <= to latest version if you're ok for that to change when Jamf updates the definition. For orgs that like to defer the availability of updates (e.g. we defer the monthly Office for Mac updates 21 days) use <= a specific version and then tweak the criteria manually when ready for a newer version.

Prnchimanshu911
New Contributor

You can try this EA Once.

#!/bin/sh

# Initialize result variable
result="Not Installed"

# Loop through potential Adobe Illustrator installation paths
for year in {2024..2026}; do
if [ -e "/Applications/Adobe Illustrator $year/Adobe Illustrator.app" ]; then
# Append found version to result
result="Adobe Illustrator $year"
fi
done

# Output the result for Jamf
echo "<result>$result</result>"

Note : Adjust the year range {2024..2026} based on the expected versions you want to detect.

Thank you! I used @sdagley suggested solution and it works like a charm. Use "less than or equal to" the latest version on the criteria and it will show all machines with it installed.

sbrammer
New Contributor III

With the help of AI, i was able to create an EA last week that lists the different Adobe apps out by year that is based on version number. And if it does not have a year listed, it lists them under the Other Category. (The reason Bridge 2025 is listed as Other is because the version number is 15. 

#!/bin/bash

# Define Adobe apps to look for
adobe_apps=(
"Adobe Acrobat"
"Adobe Acrobat Reader"
"Adobe After Effects"
"Adobe Animate"
"Adobe Audition"
"Adobe Bridge"
"Adobe Character Animator"
"Adobe Creative Cloud"
"Adobe Dimension"
"Adobe Dreamweaver"
"Adobe Illustrator"
"Adobe InCopy"
"Adobe InDesign"
"Adobe Lightroom Classic"
"Adobe Media Encoder"
"Adobe Photoshop"
"Adobe Premiere Pro"
"Adobe Premiere Rush"
"Adobe Substance 3D Designer"
"Adobe Substance 3D Painter"
"Adobe Substance 3D Sampler"
"Adobe Substance 3D Stager"
"Adobe XD"
)

declare -A year_counts
declare -a other_apps

# Scan Adobe app versions
while IFS= read -r app_path; do
version=$(/usr/bin/defaults read "$app_path/Contents/Info.plist" CFBundleShortVersionString 2>/dev/null)
if [[ "$version" =~ ^([0-9]+) ]]; then
major=${BASH_REMATCH[1]}
case $major in
20|25|26|29) year=2025 ;;
24) year=2024 ;;
23) year=2023 ;;
22) year=2022 ;;
21) year=2021 ;;
18|19) year=2023 ;; # fallback for older InCopy/InDesign
*) year="Other"
app_name=$(basename "$app_path" .app)
other_apps+=("$app_name: $version")
;;
esac
((year_counts["$year"]++))
fi
done < <(
for base_app in "${adobe_apps[@]}"; do
# Special case for Creative Cloud app location
if [[ "$base_app" == "Adobe Creative Cloud" ]]; then
if [ -d "/Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud.app" ]; then
echo "/Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud.app"
fi
else
find /Applications -maxdepth 2 -type d -name "${base_app}*.app" 2>/dev/null
fi
done
)

# Format output
output="Adobe CC Year Summary:\n"
for yr in $(printf "%s\n" "${!year_counts[@]}" | sort); do
display_year=$yr
[[ "$yr" == "0" ]] && display_year="Other"
output+="$display_year: ${year_counts[$yr]} app"
[[ ${year_counts[$yr]} -gt 1 ]] && output+="s"
output+="\n"
done

# List "Other" apps with version
if [ ${#other_apps[@]} -gt 0 ]; then
output+="\nOther Adobe Apps:\n"
for app in "${other_apps[@]}"; do
output+="$app\n"
done
fi

# Output to Jamf
echo -e "<result>${output}</result>"

 

Adobe-CCApps-EA.png