While most applications come with installer, there are many, that don’t. They are usually a single .zip, .rar or .7z file, that you can extract to some directory on your hard drive, and that’s it. They just work. One such example is NDepend, which comes only in this form. Many other applications, like Notepad++ give you choice: you can either get installation package, or a .zip file.
Each approach comes with its own set of advantages, and disadvantages. Zip/rar packages, are usually smaller downloads, and it definitely maters for people with dial-up connections. All depends on the particular application, but usually applications deployed via zip file don’t pollute your system, throwing their files and registry keys here and there. That means, that to uninstall that application, you simply delete its directory. Uninstalling installed application can be hard task, and often they don’t clean up everything, so you’re left with useless files, and polluted registry. There’s no rule for that, but more often than not, such programs leave something behind, and your system gets slower and slower.
On the other hand, using XCopy deployment is sometimes not an option, when application needs to put assembles in the GAC, check for existence of some files and so on. You might try to do this manually, but seriously – who would? Installer are user friendly, and shield you from mistakes. They will also create shortcuts for you in your menu start, on desktop or quick launch bar. In case of XCopied programs you have to do this manually.
Despite of that, I tend to prefer XCopy deployment. It gives me the feeling that I’m in control, whereas in installer have nasty habit of putting files not only to the folder I pointed to. To help myself with disadvantages of XCopy, I created small utility called eXZI (XCopy Zip Installer) that will unpack the file to the folder I point to, and optionally create shortcuts to files I select. This way I get best of both worlds: fast and easy “installation”, and quick access to my program via quick launch or desktop shortcut, and control over where files are located.
I don’t attach source code to eXZI, because it’s just quick and dirty piece of code I assembled in several minutes, and it is not in a shape to be shown to the world. But if there will be interest in it, I may improve it a little bit and put it out as an open source project. I don’t know. Do you think it might be useful?