What I am looking for some of the best software examples of how installation and upgrading is performed. This could be from M$, Open Source, anything. E.g.: User experience, release compatibility, UI, click once installation, the whole spectrum of installing software.
Also is there any specific mistakes that are easy to make, that would have a huge negative impact on installation/upgrading a product.
It doesn't get much easier than "
apt-get install <package>
" -- it'll work out what other packages are needed from your entire gamut of repositories, let you know what it's going to change, tell you if it can't proceed for some reason, all the important stuff. It might not be "pretty", but by gum it's superbly functional, and as long as you don't go and force it to do something it says is a bad idea (or install severely broken packages), it's really, really difficult to break the system.It also centralizes update services. When a new version of any program is available from your gamut of repositories, it detects this and will offer to upgrade your software. No need for vendors to duplicate upgrade services over and over again, flooding a system tray with Java updaters, Flash updaters, Acrobat updaters, Quicktime updaters, eclipse updaters, etc. It's better to have one high profile and well reviewed tool to handle this than leave it up to each software provider to perform the complicated process of updating their program.
Finally, the apt design supports a flexible set of transport protocols. If you desire a new system to acquire packages and updates you're free to implement the handler without throwing away existing functionality. I've seen people implement torrent transports for packages, to offload mirroring costs to a cloud of users, for example.
Any installs of a product in Mac OS X that works "the Mac way" - open disk image, copy to Applications folder.
The self-contained '.app' process makes a lot of sense. It can lead to larger installs because of duplicated libraries, but removal is easy, too - drag application to Trash.
It also ensures that only the libraries it needs are used, since they're all contained in the '.app' structure.
I like the Windows Installer format (MSI files) for features like install on first use, running from a networked location, self-repairing, customization via transforms, being able to integrate patches, being able to chain multiple installs together, integration with GPOs for network deployments, and so on. It's removal and rollback functionality seems pretty robust, although I'm certain that it's possibly to break it by doing something stupid.
Also a lot to be said for the Mac OS way.
I can't think of any installer I would call the "best" but I've seen a lot of stuff that is real bad for one simple reason: The installer makes assumptions and doesn't allow for someone doing something a little differently. I can't think of specific examples right now but I'm sure we've all seen plenty of it.