Skip to main content

I'm a little annoyed that Adobe's RemoteUpdateManager (RUM) doesn't upgrade our CC 2015 Mac labs to CC 2017, forcing me to get rid of CC 2015 and install CC 2017 from the package file I created with Adobe CCP (Creative Cloud Packager). I looked at the CC Cleaner Tool and found it was unreliable and didn't fully remove all things Adobe CC related. So I've written a rather primitive little shell script and it works, mostly, but a few extra niceties would be nice, no pun intended. I thought I would share it here and perhaps some of us could enhance it. I noticed even after running it there were a couple of Adobe processes running on the system I was using for testing:

USER              PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
root              107   0.1  0.0   661668   4904   ??  Ss    6:00AM   0:09.61 /Library/Application Support/Adobe/Adobe Desktop Common/ElevationManager/AdobeUpdateDaemon
imagemaster     10952   0.0  0.1  2595832  12540   ??  S     3:35PM   0:00.04 /Library/Application Support/Adobe/AdobeGCClient/AdobeGCClient.app/Contents/MacOS/AdobeGCClient --xmlFilePath=/tmp/adobegc_an0VSr --workflowInitiator=CSUpdater

Script:

#!/bin/sh

# To undo what the Adobe CC installer does:

rm -Rf /Applications/Adobe*
rm -Rf /Applications/Utilities/Adobe*
rm -Rf /Library/Application Support/Adobe*
rm -Rf /Library/Application Support/Mozilla/Extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
rm -Rf /Library/Application Support/regid.1986-12.com.adobe

rm -Rf /Library/Automator/Save as Adobe PDF.action

rm -Rf /Library/Internet Plug-Ins/AdobePDFViewer.plugin
rm -Rf /Library/Internet Plug-Ins/AdobePDFViewerNPAPI.plugin

# Remove LaunchAgents that were installed

launchctl remove /Library/LaunchAgents/com.adobe.AAM.Updater-1.0.plist
launchctl remove com.adobe.ARMDCHelper*

# Delete those plists so they don't load again

rm -Rf /Library/LaunchAgents/com.adobe.AAM.Updater-1.0.plist
rm -Rf /Library/LaunchAgents/com.adobe.ARMDCHelper*

# Remove LaunchDaemons that were installed

launchctl remove /Library/LaunchDaemons/com.adobe.adobeupdatedaemon.plist
launchctl remove /Library/LaunchDaemons/com.adobe.adobeupdatedaemon.plist
launchctl remove /Library/LaunchDaemons/com.adobe.ARMDC.Communicator.plist
launchctl remove /Library/LaunchDaemons/com.adobe.ARMDC.SMJobBlessHelper.plist

# Delete those plists so they don't load again on reboot

rm -Rf /Library/LaunchDaemons/com.adobe.adobeupdatedaemon.plist
rm -Rf /Library/LaunchDaemons/com.adobe.adobeupdatedaemon.plist
rm -Rf /Library/LaunchDaemons/com.adobe.ARMDC.Communicator.plist
rm -Rf /Library/LaunchDaemons/com.adobe.ARMDC.SMJobBlessHelper.plist

rm -Rf /Library/Logs/Adobe*
rm -Rf /Library/Logs/CreativeCloud*

rm -Rf /Library/PDF Services

rm -Rf /Library/Preferences/com.adobe*
rm -Rf /Library/Preferences/com.Adobe*

rm -Rf /Library/PriviledgedHelperTools/com.adobe*

rm -Rf /Library/ScriptingAdditions/Adobe*

rm -Rf /private/var/root/Library/Application Support/Adobe*
rm -Rf /private/var/root/Library/Logs/Adobe*
rm -Rf /private/var/root/Library/Logs/CreativeCloud*
rm -Rf /private/var/root/Library/Preferences/Adobe*

# Remove RUM

rm -Rf /usr/local/bin/RemoteUpdateManager

# Remove crud saved in Users
# Probably need to loop through users here instead of brute force

rm -Rf /Users/admin/Library/Application Support/Adobe
rm -Rf /Users/admin/Library/Logs/CreativeCloud
rm -Rf /Users/admin/Library/Logs/PDApp.log

rm -Rf /Users/admin/Library/Preferences/Adobe*
rm -Rf /Users/admin/Library/Preferences/com.adobe*
rm -Rf /Users/admin/Library/Preferences/Macromedia*

# Remove crud from /Users/Shared

rm -Rf /Users/Shared/Adobe*

exit 0

Definitely know what you are going through. Had to write my own Adobe "Nuke" script for when we went from 2015 - 2016 with a new license.

All of the Adobe cleaner and uninstall tools are incredibly unreliable. Even an uninstall policy with Casper using a snapshot created package won't remove everything properly.


@PatrickD Yes, and simple deletion of files ignores the fact that many things installed are referred to by other things, like PDF plug-ins for example, where deleting the plug-in without updating the software that calls it may break something. However, the brute-force approach is working for me at the present. The goal is to remove enough so that we don't error out while installing. The installer file is so large there is no point trying to set a policy for this so I'm doing it manually. (I meant 2015-16 when I said 2015, as in August, when I installed the software in our Mac labs, most apps still had 2015 in the name.)

Feel free to share your script unless it has too much proprietary information.


Does your customers/users not have plug-in and additional fonts they are using on top of ACC 2015 series???

As this is a great bash script. That will nuke the problem for sure. When installing ACC 2017. But I have found in my work place some of my customers. Have a need for those ACC 2014,2015,2016, version.

Have you called adobe to see if they could work with you on building a Self Service uninstall policy? To allow for the version the customers/users do not need for sure.


@PatrickD in the words of the great @jodyrodgers (when he worked for Adobe)...if you've got to remove an old(er) version of Adobe Creative Suite...wipe/re-image the Mac.

Not kidding...it was the best advice ever, since a cocktail containing their downloadable Creative Suite removal script, along with their AAMEE Uninstaller PKG, along with our own custom script, couldn't wipe all the Adobe crap off the Macs.

Its amazing how much better it is now...but yea, not sure how effective their CCP Uninstaller PKGs are, since their installers are more or less hacks...wrapped in pretty PKGs. :)


Creative Cloud Packager has the ability to create an uninstaller for all CC products. Might be worth a try!


I tried building that file uninstaller (checking all) it just dumps a script out, which worries me that it's the same thing as their cleaner tool..

I'll have to check it out today.


@KDE82, no our customers don't have any plug-ins because we are an educational institution and our customers are basically students and faculty.

@stevevalle, no I haven't tried the uninstall package creation option in CCP but I suppose it might be worth investigating. Given that @jwojda is going to check it out, perhaps I will wait for his update. Interesting to note the output is a script though I suppose that's what most uninstallers are.


I had to deal with going from CC 2014 and CC 2015. The Uninstall packages that CCP generates is the way to go when it comes to uninstalling older versions of Adobe apps. This process has not changed with CC 2017 from what I can tell and in fact they have made it easier because you can now generate installers with CCP (whereas before CCP generated them but only with the installers; now you can create uninstallers only).


@stevevalle thanks


I guess the next step is to ask the stupid question, can I get Casper to automate CC 2015/16 removal and installation of CC 2017? I was almost finished the first of our 4 Mac labs when I realized there were several updates pending and Adobe has released a new 3D product called Felix which I had added to a new pkg file created with Adobe CCP. Which means I have to deploy a second pkg to install that as well as running RUM to install the pending updates. Whew, an admin's work is never done.

I created an uninstall package today in CCP. Just wondering if it will work for CC 2015/16.


Well it is in your lab. Right? Just pull the Jamf.logs before and after the uninstall. The worst thing is you reimage that mac


This is fabulous. Thanks for sharing guys. I just finished making our 2017 packages yesterday. This script will help a lot.

@endor-moon Is a restart required after running the above script?


I love this forum!

I'm about to embark on the same quest to get Adobe CC 2017 installed.

Question I have, does it really matter to much about the odd adobe files left over if you are going to install 2017 back on to the macs again?

The test I have done on one mac was to run the uninstaller pkg you get when you create an install package with ccp. It seemed to uninstall it fine when run by casper remote and now the new CC 2017 package has installed fine.

So is there any need to remove every last file with a script?

Excuse my ignorance.

Many thanks


I take a hybrid approach. I'll run the Adobe un-installers on a few test boxes to see what cruft is left behind. From there I will right a shell script that runs after the uninstaller but before the new install that will deletes what the un-installer does not. Has worked well enough where I have done in-place upgrades in all our labs to the newest version of Creative Cloud for the last two version updates without any failures. I am a novice shell-scripter at best but so far so good... I'll be testing to deploy CC 2017 to our labs during the January break soon.

EDIT: Also the script posted here is a little bit too much brute force for my liking if you have other Adobe products installed on the system, such as Flash Player, Adobe Acrobat/Reader, Shockwave Player, etc. They all have files installed into /Library/Application Support/Adobe as well, so if you just do a full delete on that folder other non Adobe CC software is going to break.


@taugust04 Do you mind sharing your script here as well?


@ooshnoo I don't mind at all - I'll post after cleaning it up and testing has been done over the next couple of weeks.


As @taugust04 suggested, I'm taking the hybrid approach as well. Now I run Adobe's uninstaller that was generated by CCP. Then I run my script (see above). Then I use:

pgrep obe

...to find the process ID of the last Adobe process that is still running. Then I run the kill command to stop that process:

kill -9 95

(The 95 in the above is the id you get back from pgrep.)

Cheers...


So here is my script that seems to be working well, with a couple of caveats:

  • It's only been tested on my specific "Lab Suite" Adobe CC 2015 install. I don't install every single Adobe package available, especially if Adobe has deprecated them.

  • I built a uninstall package using the new Creative Cloud Packager that uninstalls "all" Adobe applications going back to CC (first release).

  • "All" is in quotes because it still doesn't remove Adobe Acrobat. Because I have a stand-alone Adobe Acrobat package built with CCP, I run that second after the Creative Cloud uninstaller. This script runs third.

  • I don't touch user folders/preferences, its not that important for my needs in labs, and for users getting a Creative Cloud upgrade, destroys preferences that can be imported into the newer version of the Adobe apps at first launch.

  • The cleanup script takes into account that the following additional Adobe applications may be installed on the system that you don't want to remove (and preserves their files in /Library/Application Support/Adobe) during the Creative Cloud uninstall:

Adobe Flash Player
Adobe Shockwave Player
Adobe Acrobat Reader DC
Adobe Digital Editions

  • If you have other Adobe applications that you don't want to be removed you may need to do a standalone installation of them on a clean system so you can see where files are located so you can make sure they aren't deleted by this script.
#!/bin/sh

## Adobe CC 2015 Uninstaller Cleanup
## Updated 2016.12.21 | T.August

## Unload Adobe CC Launch Daemons
launchctl unload $3/Library/LaunchDaemons/com.adobe.adobeupdatedaemon.plist
launchctl unload $3/Library/LaunchDaemons/com.adobe.agsservice.plist

## Unload Adobe Launch Agents
launchctl unload $3/Library/LaunchAgents/com.adobe.AAM.Updater-1.0.plist
launchctl unload $3/Library/LaunchAgents/com.adobe.AdobeCreativeCloud.plist

## Kill additional processes if not caught by launchd unloads

killall "Creative Cloud"
killall "Adobe Desktop Service"
killall "Core Sync"
killall node

## Remove launch agents and launch daemons

rm -Rf $3/Library/LaunchDaemons/com.adobe.adobeupdatedaemon.plist
rm -Rf $3/Library/LaunchDaemons/com.adobe.agsservice.plist
rm -Rf $3/Library/LaunchAgents/com.adobe.AAM.Updater-1.0.plist
rm -Rf $3/Library/LaunchAgents/com.adobe.AdobeCreativeCloud.plist


## Remove remainder of Adobe CC 2015 directories and files

rm -Rf $3/Applications/Utilities/Adobe Application Manager
rm -Rf $3/Applications/Utilities/Adobe Creative Cloud
rm -Rf $3/Applications/Utilities/Adobe Installers/*
rm -Rf $3/Applications/Adobe Creative Cloud
rm -Rf $3/Library/Application Support/Adobe/AAMUpdater
rm -Rf $3/Library/Application Support/Adobe/AAMUpdaterInventory
rm -Rf $3/Library/Application Support/Adobe/Acrobat
rm -Rf $3/Library/Application Support/Adobe/ADCRefs
rm -Rf $3/Library/Application Support/Adobe/Adobe Desktop Common
rm -Rf $3/Library/Application Support/Adobe/Adobe PCD
rm -Rf $3/Library/Application Support/Adobe/Adobe PDF
rm -Rf $3/Library/Application Support/Adobe/AdobeApplicationManager
rm -Rf $3/Library/Application Support/Adobe/AdobeGCClient
rm -Rf $3/Library/Application Support/Adobe/backup
rm -Rf $3/Library/Application Support/Adobe/Bridge CC Extensions
rm -Rf $3/Library/Application Support/Adobe/CameraRaw
rm -Rf $3/Library/Application Support/Adobe/caps
rm -Rf $3/Library/Application Support/Adobe/CEP
rm -Rf $3/Library/Application Support/Adobe/Color
rm -Rf $3/Library/Application Support/Adobe/Extension Manager CC
rm -Rf $3/Library/Application Support/Adobe/Installers
rm -Rf $3/Library/Application Support/Adobe/MACPDFM
rm -Rf $3/Library/Application Support/Adobe/OOBE
rm -Rf $3/Library/Application Support/Adobe/PCF
rm -Rf $3/Library/Application Support/Adobe/SLCache
rm -Rf $3/Library/Application Support/Adobe/SLStore
rm -Rf $3/Library/Application Support/Adobe/SLStore_v1
rm -Rf $3/Library/Application Support/Adobe/Vulcan
rm -Rf $3/Library/Application Support/regid.1986-12.com.adobe
rm -Rf $3/Library/Logs/Adobe/Installers
rm -Rf $3/Library/Logs/CreativeCloud
rm -Rf $3/usr/local/bin/RemoteUpdateManager

## Remove package receipts

rm -Rf $3/private/var/db/receipts/com.adobe.acrobat.AcrobatDCUpd*
rm -Rf $3/private/var/db/receipts/com.adobe.Enterprise.install.*
rm -Rf $3/private/var/db/receipts/com.adobe.PDApp.AdobeApplicationManager.installer*

exit 0

Please test before implementing in your environment. Again, I'm only a novice shell scripter, and I'm more than willing to take suggestions on cleaning up my syntax. Enjoy!

-Ted


@taugust04, thanks for sharing. I notice you removed some receipts. Is that an okay procedure to do? I was under the impression there is a database of receipts which would also need updating so that removing an actual receipt file was not useful by itself. I'm not an expert at receipts, so someone else feel free to jump in here.

I think the key goal is to remove enough Adobe stuff so that a new install of CC 2017 will not error out. To that end I'm not worried about deleting Flash or Digital Editions; I keep Flash updated with a wonderful script I obtained here some time ago and Digital Editions is easy to reinstall with a policy. I can't recall who wrote the flash script but here it is:

#!/bin/sh
# This script downloads and installs the latest Flash player for compatible Macs
# Determine OS version
osvers=$(sw_vers -productVersion | awk -F. '{print $2}')
# Determine current major version of Adobe Flash for use
# with the fileURL variable
flash_major_version=`/usr/bin/curl --silent http://fpdownload2.macromedia.com/get/flashplayer/update/current/xml/version_en_mac_pl.xml | cut -d , -f 1 | awk -F" '/update version/{print $NF}'`
# Specify the complete address of the Adobe Flash Player
# disk image

fileURL="http://fpdownload.macromedia.com/get/flashplayer/current/licensing/mac/install_flash_player_"$flash_major_version"_osx_pkg.dmg"
# Specify name of downloaded disk image
flash_dmg="/tmp/flash.dmg"
if [[ ${osvers} -lt 6 ]]; then
  echo "Adobe Flash Player is not available for Mac OS X 10.5.8 or below."
fi
if [[ ${osvers} -ge 6 ]]; then

    # Download the latest Adobe Flash Player software disk image
    /usr/bin/curl --output "$flash_dmg" "$fileURL"
    # Specify a /tmp/flashplayer.XXXX mountpoint for the disk image

    TMPMOUNT=`/usr/bin/mktemp -d /tmp/flashplayer.XXXX`
    # Mount the latest Flash Player disk image to /tmp/flashplayer.XXXX mountpoint

    hdiutil attach "$flash_dmg" -mountpoint "$TMPMOUNT" -nobrowse -noverify -noautoopen
    # Install Adobe Flash Player from the installer package stored inside the disk image
    /usr/sbin/installer -dumplog -verbose -pkg "$(/usr/bin/find $TMPMOUNT -maxdepth 1 ( -iname *.pkg -o -iname *.mpkg ))" -target "/"
    # Clean-up

    # Unmount the Flash Player disk image from /tmp/flashplayer.XXXX

    /usr/bin/hdiutil detach "$TMPMOUNT"

    # Remove the /tmp/flashplayer.XXXX mountpoint

    /bin/rm -rf "$TMPMOUNT"
    # Remove the downloaded disk image
    /bin/rm -rf "$flash_dmg"
fi

I found that the uninstaller from Creative Cloud Packager wouldn't fully work if any Adobe applications are open, i just tested packaging it in composer with a postinstall script to hush Adobe up before it runs, seems to do the job ok,

any advice on tidying, rethinking the script always appreciated!!

#postinstallscript
LoggedInUser=$( stat -f%Su /dev/console )
LoggedInUID=$(stat -f %u /dev/console)
LoggedInPID=$(ps -axj | awk "/^$LoggedInUser/ && /Dock.app/ {print $2;exit}")

#stop user processes
userpid=$( /bin/launchctl asuser "$LoggedInUID" /usr/bin/sudo -iu "$LoggedInUser" "/bin/launchctl list | grep adobe | cut -f1" | tr '
' ' ' )
echo "$userpid"

/bin/launchctl asuser "$LoggedInUID" /usr/bin/sudo -iu "$LoggedInUser" "kill $userpid 2>/dev/null"

#unload agents
/bin/launchctl asuser "$LoggedInUID" /usr/bin/sudo -iu "$LoggedInUser" "/bin/launchctl unload /Library/LaunchAgents/com.adobe.* 2>/dev/null"

#unload all Adobe MattDaemons
/bin/launchctl unload /Library/LaunchDaemons/com.adobe.* 2>/dev/null

#kill all Adobe processes
pgrep obe | xargs kill

#now run Adobe CCP uninstaller

/private/var/tmp/AdobeCCUninstaller

#delete tmp files
rm /private/var/tmp/AdobeCCUninstaller
rm /private/var/tmp/AdobeCCUninstallerConfig.xml

@May are you uninstalling all Adobe apps at this point or do you have a specific uninstaller for each Adobe App? I dont have bundels and therefore If people try to upgrade from 2015 to 2017 I would have to create uninstaller for each Application ( i.e. Illustrator). I am also a bit afraid if i close and uninstall the prev that users would loose data or unsaved data.

Thanks
anni


@anniwayy I have been able to selectively remove the bits and pieces of previous Adobe CC products (including CS6) by creating an uninstall script from CCP. Create the script, wrap the script and the corresponding XML file in a PKG file, and call the script with either a postimage script or a script in the JSS set to After. In all of my testing this has worked flawlessly to remove only what I need removed.

In our case, I have a group of machines that still needs CS6 due to client requirements, and the script successfully removes CC 2014 while leaving CS6 untouched. Afterward an install of CC 2015.2 and nothing gets broken.


@anniwayy I'm checking everything to be removed when i create the uninstaller from CCP (I do deselect Flash as there is no newer version).

Using just the CCP uninstaller it does leave Fireworks CS6, Acrobat DC, Extension Manager and Creative Cloud apps installed ( i guess as it's just a CC uninstaller and doesn't include CS apps)

@stevewood Did the CS6 apps show up when you go to create the uninstaller with CCP ?


@May no, because it doesn't know about CS6 apps. Are you needing to remove CS6 as well as the others? My use case was to keep CS6 in place while removing CC 2014 and installing CC 2015.2.


@stevewood Thanks, i misunderstood your comment, i thought you had found a way to remove CS6 apps using the CCP uninstaller approach.
It would be good to have just the one CCP script to remove CC and CS6 apps but for now i can make another script manually to remove any CS6 stuff we no longer need, thanks again!