Jiri Novotny at Dextronet wrote a great post this week on improving installers for micro-ISVs.
One essential that I'd add is writing your installer early and including it as part of the build process. It's the first thing that potential customers see and leaving the installer to the last minute is a huge mistake. You should be testing with a complete installer as pretty much the first milestone in any new project.
For Windows products I'd recommend WiX. It's easy to learn, and easy to include in your build. The latest beta includes Burn, a bootstrapper to install dependencies before the main MSI runs. I'm sick of having to do this part myself and I can't wait for Burn to become a stable part of WiX.
I've been migrating my installers over to WiX. My only complaint with the WiX toolkit is that there's no bootstrapper included. This is important for installing any pre-requisites before passing control over to Windows Installer. Hopefully this will come after WiX 3.0 is released. For now, I've rolled my own bootstrapper to install .NET 2.0 if needed.
A couple of tips for screen savers. You can bring up the Windows screen saver settings using the following custom action. This is the same command that is launched when you right-click a screen saver (.scr) file and pick Install:
ExeCommand='rundll32.exe desk.cpl,InstallScreenSaver the.scr'
Sequence this in InstallExecuteSequence after InstallFinalize:
<Custom Action="InstallSS" After="InstallFinalize"><![CDATA[NOT Installed]]></Custom>
You can also add a shortcut to your Program Files folder to configure the screen saver. This is really helpful for people who aren't sure how to get to the screen saver dialog from Control Panel or right-clicking the Desktop:
LongName='Screen Saver Settings'
Unlike a shortcut to a file that you install you need to specify the Target. The example above assumes that ProgramMenuDir is the Id of your Start Menu folder. The shortcut should be in a Directory but not as a child of a File node.