I'm using Installshield. The negative side is that I couldn't find good tutorials about creating your application installer. I have to discover it myself.
If you expect your app to be running on different countries (different windows vista languages) and your app is writing/updating a file on same path (c:\program files\your app), you gonna have some problems. You can assign Network user permission to your specific file or folder, but it'll won't work on a spanish Windows (in this case you have to give permission to 'Servicio de Red'). It's a pain in the neck having two installshields projects, one for each language. In this case I'm writing what I need on a Isolated Storage folder, a place where user actually has permissions for writing. The other workaround is to disable UAC on Windows (I don't like it).
Installshield is interesting, you can set everything using its endless string tables, configure your own images for dialogs, etc. I'm having some issues to embed an exe file within the installer (I can only add a msi file, not a exe). But in general it's a good product.