Uninstalling apps – more secrets

CleanAppI’ve written a couple of posts before about uninstalling apps from a Mac, particularly for those who subscribe to the school of thinking that dragging the app to the trash can is all it takes. Now I’ll say up front that in a lot of cases that may be sufficient and work perfectly well for a lot of apps, however not all apps are equal and some will inject stuff into your Mac in places you’d never look. This ‘debris’ gets left behind with the trash can method of uninstalling, and it can even catch out those who go to greater lengths to keep things tidy. Personally I get all fidgety thinking about what might be left behind – to me it’s just like painting over the top of wallpaper…. and then papering over the top of that. Yuck!

Now I’ve tried various uninstallers in the past and I eventually plumped for CleanApp for a number of reasons. For starters it has the ability to log what an app is doing as it installs and runs and can then made a pretty good guess as to what needs to be removed when uninstalling it. In addition to this, it will (if you let it) record what files you allow it to delete and then store those results centrally for the benefit of  others who may want to uninstall the same app. There’s a lot more I could go into about what CleanApp can do, but that would have to be a separate post.

Anyway, I’ve been pretty confident that CleanApp will carefully remove most if not all traces of your average app. But… and there’s always a but… no uninstaller is perfect and stuff can slip through the cracks, and if you want to get all OCD about what’s on your Mac then here’s two things you might want to look out for.

First up, Agents and Daemons. May sound like a Dan Brown novel but it actually refers to processes that are triggered to run on your Mac that you may not even be aware of. Case in point – I installed AppFresh the other day as I figured it would be nice to have something automatically check if my various apps were up to date. Ok, for one reason or another me and AppFresh didn’t get along so after a few days I let AppCleaner loose on it and thought no more about it. However, what I didn’t realise was that installing AppFresh had created an agent called de.metaquark.appfresh that would run in the background at certain intervals. That in itself is fine and it’s part of the way AppFresh works – checking for new versions of your software in the background. The problem was that when AppCleaner removed the AppFresh application, this agent was left behind. How did I discover this? Well I was actually using Lingon to track down Google agents or daemons that were running on my Mac (and yes there are a couple!) and I happened across the AppFresh agent by chance.

Ok so having an agent that runs where the app that it runs has been uninstalled isn’t necessarily a problem. Probably all that will happen is that you’ll get entries in the console saying it couldn’t be found. Not the end of the world… unless you’re OCD about your console too! The next challenge is obviously how to remove the agent for an uninstalled app (assuming you’ve decided it’s safe to do so – which it typically is). Lingon will let you create new agents but it won’t let you delete them – you need to use Finder to locate you wayward agent. In the case of AppFresh it’s listed under ‘My Agents’ in Lingon meaning it’s an agent that’s triggered when I log in to my Mac. As such, the agent consists of a file (with the same name as the agent of course) that’s located in your <username>\Library\LaunchAgents folder. Off I went to that folder and sure enough, there’s a file called de.metaquark.appfresh.plist sitting there, ready to be removed. Now what I would suggest at this stage is not to delete the offending .plist file but rather to move it to a temporary folder somewhere. That way if you hit any problems when you next logon then you can always get the file back easily. Hopefully though you’ll be fine.

So there you go, that’s just another little bit of debris that can get left behind when uninstalling apps. Obviously it’s up to you as to whether or not you want to track these things down and remove them, particularly if your Mac is working just fine. Even so, I find it quite interesting using something like Lingon just so that I’m aware what 3rd paty processes are running, or have been set to run on my Mac. While digging around I also found a daemon that relates to SugarSync which I uninstalled a few months ago (in favour of DropBox).

And did I manage to find those Google agents that I was looking for? Well yes… in two places

  • Users Agents (launched when anyone logs in)
    • com.google.keystone.root.agent
  • Users Daemons (launched at system startup)
    • com.google.keystone.daemon

Ok I won’t go into the rights and wrongs of agents being run even when users who haven’t installed the software are logged on, but there they are in all their glory. Will I be removing them? Well the only Google software I have on my Mac is the Chrome browser which I don’t use that often. If I uninstall Chrome then I’ll certainly remove it’s secret partner.

The second thing I was going to mention, and this is getting really picky here… is Little Snitch. I love Little Snitch which is probably more down to the control freak in me than anything else! Anyway, It’s worth remembering that if you’re a Little Snitch user and you’ve granted (or denied) network access to an app, then when you uninstall that app there may be some tidying up to do in Little Snitch. Again this isn’t strictly necessary it’s just a way to keep things neat (there’s that OCD again). Little Snitch is very helpful in that if it can’t find an app that you have set up a rule for, then it will display the app in red in it’s configuration window. All you have to do is to delete the rule for the uninstalled app. Job done.

Now, can anyone tell me how I can transfer this compulsion for neatness on my Mac to the state of my kitchen?!