I have used the Nullsoft installer (nsis.sourceforge.net) -- and it's very very powerful. I have an installer now that lays down a driver, updates the registry, copies some files, all with a shiny GUI -- there are quite a few examples that will be installed with NSIS, it basically is a mini (if not weak) programming language, unlike InstallShield -- which is a n evil GUI clickfest.
Anyhow, I love NSIS -- my script to build this one particular installer is a 163-line Ruby program, and that includes the installer source skeleton in the data segment. I also have another installer builder that is written in Perl, and that module, with absolutely no DATA segment cheating, is 300 lines.
I don't want to make Perl/Ruby comparisions -- the one I did in Perl was for a product that was a lot harder to install. But anyway, my point -- building an installer by writing code rocks, and it's almost as cool as building a tarball :)