Uninstalling apps is almost never as simple as moving the .app to the trash.
More often than not, apps leave clutter / cruft / traces behind them:
Fortunately, OS X being based on FreeBSD, there's a robust UNIX base: everything is handled as a file. Nothing fancy at its core, no magic behind the scenes, no weird uncontrollable mongrels like the Windows registry.
Scraping off the remaining filth is just a matter of using the Terminal to print the list and manually, carefully deleting the remains individually.
The following method involves executing command lines. They're very basic, anyone can understand and run them. If you don't feel up to the task, GGJstudios has written up a guide with the graphical, Spotlight rough equivalent, if slightly less exhaustive -- as Spotlight's index may be out of sync at the time of the removal:
I fully agree with him on not relying on third party apps to perform the removal... allegedly. To me, they're just inefficient closed-source black boxes, thriving on people's ignorance. The manual way involves only stock commands and gives full control and supervision over every single step .
Let's take App Tamer as an example.
1) List the remains:
Result:
Side note: According to the author, there was supposed to be a single additional file to take care of, optionally. As if keeping unused files and / or services was even an option. And no mention of the other files.
In this command:
2) For each file (one per line of result), inspect the path to determine if it's actually relevant to the app before deleting it. If it is, which is the case for all lines in this example:
(Execute the above via "sudo" if the path is outside of the user's directory.)
In these result, there's a service definition file:
Now that's an interesting bit of unwanted parasite. It's a launchd service. The Windowsy way to get rid of it is to delete the .plist and reboot. The UNIX way is to first ensure the definition is unloaded:
And then, delete the file. (No reboot.)
3) After all files have been deleted, search again, just in case:
Repeat from 2).
4) As I don't trust searching for the app's name is enough, I follow the same procedure with the author's name. (This could have been done at the same time as the first search by extending the regular expression.)
And sure enough:
One last directory to clean up.
5) Login items might have been added. They're listed in System Preferences > Users & Groups > [a user] > Login Items.
Done!
More often than not, apps leave clutter / cruft / traces behind them:
- Files, either in the user directory, and / or worse, elsewhere in the filesystem (if the administrator password was required).
- Services handled via launchd.
- Other things like login items and additional preference panes (user and / or system).
- Quit the app.
- Check for leftover processes with ps or Activity Monitor.
- Delete the .app.
Fortunately, OS X being based on FreeBSD, there's a robust UNIX base: everything is handled as a file. Nothing fancy at its core, no magic behind the scenes, no weird uncontrollable mongrels like the Windows registry.
Scraping off the remaining filth is just a matter of using the Terminal to print the list and manually, carefully deleting the remains individually.
The following method involves executing command lines. They're very basic, anyone can understand and run them. If you don't feel up to the task, GGJstudios has written up a guide with the graphical, Spotlight rough equivalent, if slightly less exhaustive -- as Spotlight's index may be out of sync at the time of the removal:
In most cases, app removal software doesn't do a thorough job of finding and removing files/folders related to deleted apps. For more information, read this. If you just want to delete the app, drag the .app file to the trash. No other software needed. If you want to completely remove all associated files/folders, no removal apps will do the job.
The most effective method for complete app removal is manual deletion:
I fully agree with him on not relying on third party apps to perform the removal... allegedly. To me, they're just inefficient closed-source black boxes, thriving on people's ignorance. The manual way involves only stock commands and gives full control and supervision over every single step .
Let's take App Tamer as an example.
1) List the remains:
$ sudo find -x / -not -path '/Volumes/*' | egrep -i 'App.*Tamer'
Result:
/Library/LaunchDaemons/com.stclairsoft.AppTamerAgent.plist
/Users/roman/Library/Caches/com.stclairsoft.AppTamer
/Users/roman/Library/Caches/com.stclairsoft.AppTamer/Cache.db
/Users/roman/Library/Preferences/com.stclairsoft.AppTamer.plist
/Users/roman/Library/Preferences/com.stclairsoft.AppTamer.plist.lockfile
Side note: According to the author, there was supposed to be a single additional file to take care of, optionally. As if keeping unused files and / or services was even an option. And no mention of the other files.
In this command:
- -x means not descending down mounts (via mount)
- -not -path '/Volumes/*' means not descending down volumes (mounted via Finder)
- 'App.*Tamer' is the variable bit. It's a regular expression the should match the app's name and / or the author's name, as it's often part of an app's filenames.
- -i means matching is case insensitive.
2) For each file (one per line of result), inspect the path to determine if it's actually relevant to the app before deleting it. If it is, which is the case for all lines in this example:
$ rm -rf '/Users/roman/Library/Caches/com.stclairsoft.AppTamer'
(Execute the above via "sudo" if the path is outside of the user's directory.)
In these result, there's a service definition file:
/Library/LaunchDaemons/com.stclairsoft.AppTamerAgent.plist
Now that's an interesting bit of unwanted parasite. It's a launchd service. The Windowsy way to get rid of it is to delete the .plist and reboot. The UNIX way is to first ensure the definition is unloaded:
$ sudo launchctl unload /Library/LaunchDaemons/com.stclairsoft.AppTamerAgent.plist
And then, delete the file. (No reboot.)
3) After all files have been deleted, search again, just in case:
$ sudo find -x / -not -path '/Volumes/*' | egrep -i 'App.*Tamer'
Repeat from 2).
4) As I don't trust searching for the app's name is enough, I follow the same procedure with the author's name. (This could have been done at the same time as the first search by extending the regular expression.)
$ sudo find -x / -not -path '/Volumes/*' | egrep -i 'St.*Clair'
And sure enough:
[... irrelevant files ...]
/Users/roman/Library/Application Support/.com.stclairsoft
One last directory to clean up.
5) Login items might have been added. They're listed in System Preferences > Users & Groups > [a user] > Login Items.
Done!
Last edited: