I'm preparing the 2011.2.0.1 rev. of HP for Mac OS X and I'm wondering what to do about uninstallers.
"Uninstallation", when run as part of the installation of a particular HP version, or as installed as a script to be run by the user later could mean any of these things:
1) Uninstall precisely just the version installed, leaving other versions (older and newer) alone.
2) Uninstall older versions than the version just installed.
3) Uninstall all but the newest version on the system.
4) Uninstall all versions.
I have a script that does #4. It tries pretty hard to remove most of older GHC and HPs from your system. I'm comfortable enough with it that I use this script myself on both my test systems and my personal development systems. Writing scripts for 1~3 would be harder. There are a number of complex symlinks that have to get fixed up as individual versions are removed - and they have to handle the vagaries of particular versions.
I'm thinking of adding these to the Max OS X HP installer:
1) Offer to run "Uninstall all versions" as an optional initial install step
2) Install that script in /Library/Haskell/bin
What do folks think? What does the Windows installer offer in this way? I'm guessing Linux distros rely on the host OS's package manager for uninstallation.
 It doesn't attempt to clean up anything installed with --user. And, if the user did --global installs with default .cabal/config settings, then those packages will have bits spewed all over /usr/local and those aren't cleaned up.
Haskell-platform mailing list