[QUOTE=Mangetout]
I don’t want to start a platform war, but isn’t this how applications work on Apple computers? - I’ve only recently acquired a Mac (and it’s an old one), but the applications I’ve installed on it consist of a single package that can be dragged and dropped to cleanly and completely install or uninstall.
[/QUOTE]
Like si_blakel says, many more Mac apps are statically linked, but it’s really a little deeper than that. Both Windows and Apples have very robust libraries for providing application functionality. On a very high level, this is .Net and/or Win32API for Windows, and Cocoa and Carbon for the Mac. On both platforms you can write a single executable that calls these libraries without needing an installer to do special things for you. Windows historically, though, has this interesting concept where every time you add a program, you add to the operating system. Install Internet Explorer, and you get all of these new system level DLL’s. Add Windows Media Player, get new system level DLL’s. Add DirectX or MS-Office, and, well, you know. Third party developers fall into this, too. Rather than build a monolithic executable, break it all into DLL’s. Now you have Windows DLL hell (although since XP, it’s not been as hellish). What’s worse, now that IE, DirectX, Office, etc., API’s are part of the operating system, third party applications that come to depend on them also distribute these DLL’s as part of their installers, just in case you’ve not already installed IE, DirectX, etc. Keep in mind that since XP, many of these libraries are included in the base OS. Mostly because of DLL’s have Windows installer packages been necessary. Of course, now that you have an installer package, you can do things like populate the registry during installation, which has some benefits. For example, you can identify .doc files as Word documents at installation, rather than waiting for the program to make that identification at first run. As a consquence of so many installers on Windows, you end up in a self-fullfilling mode, too – because an installer is expected, an installer is expected, even if it’s not needed.
Macs traditionally have been monolithic executables. Kind of. Pre-PPC all code was limited to 32KB CODE resources, and so it was swapped in and out all the time dynamically. If you wanted a library, you normally embedded it into the code. If you needed something more at the OS level, you wrote an extension that patched the OS to give you functionality (processor traps). Such programs were generally the only programs that needed installers on the Macs. The normal expectation was drag and drop install. Not until the arrival of the PPC Macs and System 7.5.3 (or was it 8.0+) was the concept of DLL’s added to the Mac OS. These were all kept in the (IIRC) Libraries folder of your system folder. Such programs also normally needed installers, but I seem to remember that the last Classic version of Office was drag-and-drop, and its first-run procedure would install these for you. Developers on the modern Mac still try to keep the tradition of the drag-and-drop install. Office still does this. Most “smaller” apps still do this. But many other complex apps still need to install libraries, kernel extensions, control panels, media in your Users’ folders, and so will use an installer.