Adobe Creative Cloud is one of those things that admins just can’t escape. Sooner or later some creative or smart person at any given organization is going to stop and think, “Wow, I could really go for some Photoshop right about now,” and then there’s budget THIS and committee THAT and one way or another, you, the admin, end up with 20 GB of Adobe products sitting in your lap and a request to give everyone exactly what they want.
Then of course you discover that Adobe isn’t very good at packaging, and that they expect you actually do all the work yourself. Of course they’ll provide you the basic tool – Creative Cloud Packager – to download and create these packages for you. But it’s still on you to get those all ready.
That’s kind of annoying.
I recently went through this process and boy do I have annoyance enough to share with the whole class. Since I suffered through this, I wish to hopefully make it easier for future generations to deploy Adobe CC using Munki without having to reinvent the wheel completely.
First and foremost, read this page I wrote on the Munki wiki. It describes the process of importing CCP packages into Munki, along with importing updates using Timothy Sutton’s aamporter.
Missing from this wiki page, however, are two things that may be of use to Munki admins: icons, and descriptions.
Icons
Getting icons for 25 different Adobe applications is a royal pain. Independently opening up each app bundle and searching through Contents/Resources/ for the right .icns file is not fun, because, well, there are a lot of them.
I got tired of doing that after the first one, so I tried to figure out a way I could speed up the process.
I simplified the extraction process using an ugly find
:
find /Applications/Adobe\ Dreamweaver\ CC\ 2014.1/*.app/Contents/Resources -name "*.icns" -execdir sips -s format png '{}' --out ~/Desktop/$(basename '{}').png \;
That copies all of the .icns files out from inside the Dreamweaver app bundle onto my Desktop, converting them to png format using sips
. I still needed to manually sort through all the icons to figure out which one corresponded to the .app bundle’s actual icon.
Being Adobe, they’re not all named consistently, so I can’t just look for the same filename in each application. Some of them are named the same (commonly “appIcon.icns”), so I also can’t extract each of the different applications’ icons into the same folder, because then I’d overwrite some of them.
I realized, ultimately, there was no pretty way to do this.
Instead, I dutifully recorded all the icon names for each Adobe CC application, and wrote a script that would use sips
to copy them out into PNG format to a folder of my choice (such as the icons directory of my Munki repo).
That project can be found in my Github repo here.
The script follows as well, for convenience:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
[ -z "$1" ] && echo "This script requires a path to output the app icons in PNG format." | |
# Use /usr/bin/sips to copy the app icon out of the App bundle for each of the Adobe CC products | |
# and convert into png format | |
# Acrobat Pro 11 | |
APP="/Applications/Adobe Acrobat XI Pro/Adobe Acrobat Pro.app" | |
APP_ICON="ACP_App.icns" | |
OUTPUT_PNG="AdobeAcrobatPro11.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# After Effects CC 2014 | |
APP="/Applications/Adobe After Effects CC 2014/Adobe After Effects CC 2014.app" | |
APP_ICON="App.icns" | |
OUTPUT_PNG="AdobeAfterEffectsCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Audition CC | |
APP="/Applications/Adobe Audition CC 2014/Adobe Audition CC 2014.app" | |
APP_ICON="appIcon.icns" | |
OUTPUT_PNG="AdobeAuditionCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Bridge CC | |
APP="/Applications/Adobe Bridge CC/Adobe Bridge CC.app" | |
APP_ICON="bridge.icns" | |
OUTPUT_PNG="AdobeBridgeCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Dreamweaver CC | |
APP="/Applications/Adobe Dreamweaver CC 2014.1/Adobe Dreamweaver CC 2014.1.app" | |
APP_ICON="Dreamweaver.icns" | |
OUTPUT_PNG="AdobeDreamweaverCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Edge Animate | |
APP="/Applications/Adobe Edge Animate CC 2014.1/Adobe Edge Animate CC 2014.1.app" | |
APP_ICON="appIcon.icns" | |
OUTPUT_PNG="AdobeEdgeAnimateCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Edge Code | |
APP="/Applications/Adobe Edge Code CC.app" | |
APP_ICON="appshell.icns" | |
OUTPUT_PNG="AdobeEdgeCodeCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Edge Reflow | |
APP="/Applications/Adobe Edge Reflow CC.app" | |
APP_ICON="reflow_appicon_hidpi.icns" | |
OUTPUT_PNG="AdobeEdgeReflowCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Extendscript Toolkit CC | |
APP="/Applications/Adobe ExtendScript Toolkit CC/ExtendScript Toolkit.app" | |
APP_ICON="ExtendScriptToolkit.icns" | |
OUTPUT_PNG="AdobeExtendscriptToolkitCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Extension Manager CC | |
APP="/Applications/Adobe Extension Manager CC/Adobe Extension Manager CC.app" | |
APP_ICON="ExtensionManager.icns" | |
OUTPUT_PNG="AdobeExtensionManagerCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Fireworks CS6 | |
APP="/Applications/Adobe Fireworks CS6/Adobe Fireworks CS6.app" | |
APP_ICON="fireworks.icns" | |
OUTPUT_PNG="AdobeFireworksCS6.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Flash Builder 4.7 Premium | |
APP="/Applications/Adobe Flash Builder 4.7/Adobe Flash Builder 4.7.app" | |
APP_ICON="fb_app.icns" | |
OUTPUT_PNG="AdobeFlashBuilderPremium.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Flash CC | |
APP="/Applications/Adobe Flash CC 2014/Adobe Flash CC 2014.app" | |
APP_ICON="appIcon.icns" | |
OUTPUT_PNG="AdobeFlashCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Illustrator CC | |
APP="/Applications/Adobe Illustrator CC 2014/Adobe Illustrator.app" | |
APP_ICON="ai_cc_appicon_hidpi.icns" | |
OUTPUT_PNG="AdobeIllustratorCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# InDesign CC | |
APP="/Applications/Adobe InDesign CC 2014/Adobe InDesign CC 2014.app" | |
APP_ICON="ID_App_Icon@2x.icns" | |
OUTPUT_PNG="AdobeInDesignCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Media Encoder CC | |
APP="/Applications/Adobe Media Encoder CC 2014/Adobe Media Encoder CC 2014.app" | |
APP_ICON="ame_appicon.icns" | |
OUTPUT_PNG="AdobeMediaEncoderCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Muse CC | |
APP="/Applications/Adobe Muse CC 2014/Adobe Muse CC 2014.app" | |
APP_ICON="mu_appIcon.icns" | |
OUTPUT_PNG="AdobeMediaEncoderCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Lightroom | |
APP="/Applications/Adobe Photoshop Lightroom 5.app" | |
APP_ICON="App.icns" | |
OUTPUT_PNG="AdobeLightroom.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Prelude CC | |
APP="/Applications/Adobe Prelude CC 2014/Adobe Prelude CC 2014.app" | |
APP_ICON="pl_app@2x.icns" | |
OUTPUT_PNG="AdobePreludeCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Premiere Pro CC | |
APP="/Applications/Adobe Premiere Pro CC 2014/Adobe Premiere Pro CC 2014.app" | |
APP_ICON="pr_app_icons.icns" | |
OUTPUT_PNG="AdobePremiereProCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# Scout CC | |
APP="/Applications/Adobe Scout CC.app" | |
APP_ICON="appIcon.icns" | |
OUTPUT_PNG="AdobeScoutCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
# SpeedGrade CC | |
APP="/Applications/Adobe SpeedGrade CC 2014/Adobe SpeedGrade CC 2014.app" | |
APP_ICON="SpeedGrade.icns" | |
OUTPUT_PNG="AdobeSpeedGradeCC.png" | |
if [[ -d "$APP" ]]; then | |
/usr/bin/sips -s format png "$APP/Contents/Resources/$APP_ICON" –out "$1/$OUTPUT_PNG" | |
fi | |
The script will check for the existence of each of the Adobe CC products that can be packaged with Creative Cloud Packager (as of writing time), and then pull out the icon if it’s present.
That made it a bit easier for me to give all of my separate Adobe CC apps in Munki nice shiny icons.
The two exceptions are Adobe Exchange Panel CS6, and Gaming SDK. Neither of them install an app with an icon contained inside as their primary executable, so I had to manually download logos from Adobe’s website.
Descriptions
Sadly, descriptions are a bit more work to come by. The best I’ve found so far is from this page on Adobe’s website. I simply copied and pasted those blurbs into my pkginfos.
Update: Pepijn Bruienne brought to my attention that MacUpdate.com also makes a great source of descriptions, that are generally more verbose than the blurbs on the Adobe site I mentioned above.
Here’s an example from MacUpdate for Adobe Acrobat Pro:
Adobe Acrobat allows users to communicate and collaborate more effectively and securely. Unify a wide range of content in a single organized PDF Portfolio. Collaborate through electronic document reviews. Create and manage dynamic forms. And help protect sensitive information.
Hey Nick, this is great! Since the script mentions for ex. “APP=”/Applications/Adobe Acrobat XI Pro/Adobe Acrobat Pro.app” does it means that all the applications must be installed on the system that the script runs?
Best regards
Kostas
LikeLike
Yes, this must be run on a machine (or VM) that has the applications installed. I made some effort to try and extract icons from the installer package, but Adobe’s installer payloads are byzantine nightmares of illogical crap, and I gave up. I haven’t found a better solution than installing all of Adobe CC into a VM and extracting them that way yet.
LikeLike