There was a comment made about my “In the works” post that stated that:

“Unless we can embed these other dependand installers inside the MSI and execute them from one package, there will always exist a deployment problem in VS.NET “

This got me thinking about deployment methods in general but also about what ClickOnce and the generic bootstrapper bring to the table when it comes to deploying apps going forward. Now I can't get inside the commentor's brain but I can imagine common deployment scenarios and why this seems like a desirable solution: (all of the comments about ClickOnce and the generic bootstraper are based on pre-beta bits and are subject to change before release)

  1. Deploying an App with physical media (CD, DVD, floppy) - This isn't really an issue for this deployment type because you control the entire media and can create any folder structure that you want. As long as there is a setup.exe (and probably and autorun.inf) in the base directory you should be in good shape. ClickOnce can work off of this kind of CD install. VS will generate the autorun.inf for you as well as create a setup.exe that installs your prerequisite components and then the application. So I don't really see a need for a single MSI based install here
  2. Deploying an App from a web site (Internet) - Currently, the way you install apps over the internet is to download an installer and then run it. This is where having a single MSI is key. Without the ability to package your program into a single (probably self-executing) file, you cause all sorts of problems for your user. A “run this and it works“ installer is needed. In the past, a single MSI would do this but with the generic bootstrapper, you get this behavior for free. The setup.exe created dynamically downloads the packages you need from the server and installs them. When it's done, it runs your ClickOnce application or any other exe or MSI that you specify at build time. Thus you not only achieve the single file download but the user will only download the packages that it needs to install. This is, in my opinion, better than a massive MSI that the user may only need a small part of.
  3. Deploying an App on an internal network (Intranet) - All of the comments about the internet case apply here but there is one more way the users can get packages/applications: UNC (or file) shares. The generic bootstrapper can download packages from a UNC share just like a web site as well as installing the ClickOnce app or MSI that contains your app.

Now those 3 are the core deployment scenarios that ClickOnce and the generic bootstrapper covered. Of course, if you can think of more I'd be happy to talk about how we can help you there but I think that these cover almost everyone. As you can see, the deployment work coming in Whidbey removes the need for a single MSI based solution.

Let me know what you think!