Introduction

This article is in the form of a compiled HTML help file. It describes some of the basic architecture of the MSI package created using the Visual Studio .NET Setup Project.

We'll look at how elements defined in the NET IDE are translated into an actual MSI setup. And we'll perform a simple exercise in customization of the MSI using the MSI editor tool Orca.

Developers occasionally ask how to create an Uninstall shortcut in their application setups. We'll use this customization as our example.

Having said that, let me state something for the record:

I am already well aware that this is contrary to Microsoft Logo Certification which states that applications should only be removed from the Control Panel. But consider the following:

Most developers never get their setups Logo Certified. In fact, most installs for Microsoft products themselves do not come even close to Logo Certifiable. (For that matter, Microsoft changes their "Best Practices Guidelines" like women change their shoes).

And as far as creating uninstall menu entries being against recommended best practices, as preached by Microsoft, look at what Microsoft practices: I just downloaded (on 04/05/2005) the latest MS SDK Platform Update. It creates an uninstall entry on the program menu! I also downloaded the Microsoft AntiSpyware Package. It creates an uninstall entry on the program menu. The MSDE setup? It creates an uninstall entry on the program menu. That's just for starters.

Uninstall menu entries are more user friendly than having to go to the Control Panel. They are nice to have particularly if you are creating a package, for example, that allows a 30 day trial.

If people want to add an uninstall entry, obviously Microsoft does not see anything wrong with it, and I see nothing wrong with it either.

And even if you are a die-hard adherent to MS Best Practices, you can use the same techniques to create other useful custom shortcuts. For example, an application that uses MSDE or SQL Server might want to include it's own menu entry to launch the Service Manager. This is a lot more user friendly than having to explain to a user that, they have to navigate to a different menu entry in case they need to manually start the SQL Server for some reason.

More importantly, we'll also take the first steps towards learning some basics about how Windows Installer packages are put together, and how to edit them etc. etc.

Since this is not a conventional programming tutorial, there is no source code. Just download the zip and open the help file. There are very detailed steps, descriptions, and images throughout. You'll need to have any version of VS.NET installed. If you use Visual Studio 6 with the VSI add-in that creates MSI's instead of using the Package and Deployment Wizard that will work just fine too, but you may have to add a few steps - look at the article on creating menu entries with VSI add-in on my website (the link is in the download).

You'll find links to the Orca and other SDK tools, you'll need in the help file.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.