Thursday, January 12, 2006

Visual Studio 2005 Setup Project Hopes Dashed

If you have ever created an .MSI through Visual Studio .NET 2003 Setup project, you know how frustrating customization can be. Here's a short list of things you really want in the editor that you don't get (in no particular order):
  • Change the fonts in the various UI dialogs
  • Remove the Disk Cost button from the Installation Folder UI Dialog
  • Have the Installation Folder UI dialog default to Everyone and not Just Me
  • Have the installer automatically launch your .EXE when install is finished
  • Detect if the .NET Framework is installed and if not, download it from MS
I could go on, but I think you can get around a lack of control for nearly everything else with Custom Actions, and being fair I think the above list should be in the Setup project editor. It was with great hope that I opened Visual Studio 2005 and created a new Setup project. It was with great disappointment that I could only find one of the options I think are missing from the 2003 Setup project editor in the 2005 Setup project editor, and that wasn't obvious. There is all of one new option in the User Interface section, the ability to hide if a user gets to choose if they want to install the application for Everyone or just the current user. If you choose not to show the controls, it is not clear at all if the default (Just Me) stays the same or not. For that, you have to look at the properties on the project itself (default click on SetupX) where you have the new option to InstallAllUsers, or not. *sigh* I guess MS doesn't want to cannabalize InstallShield or Wise sales, but come on people, you are already going to cut McAfee and Symantec antivirus sales out, who cares about a few InstallShield dollars. I am not even asking for you to build-in a way to solve the whole automatic update for 3rd party applications fiasco (? How many auto update threads are running on your system right now), I just want a little more control over what I do have (ok, the download of the .NET framework is an additional feature, but man do I need it) Update: Forgot to mention that you can get down and dirty and edit the properties of the MSI directly in the Platform SDK tool Orca if you need to change some of the things above. You really have to understand MSI strucutre, or just keep doing trial and error changes until you figure out how to manipulate some stuff, then save a transform and use the command line tool to apply it post MSI creation (don't remember the tool offhand). This all sucks tough.