11
votes

I think most people here understand the importance of fully automated builds.

The problem is one of our project is now using an integrated Visual Studio Setup project (vdproj) and has recently been ported to Visual Studio 2008. Unfortunatly, those won't build in MSBuild and calling devenv.exe /build on 2008 just crashes, apparently it does that on all multi core computer (!!!). So now I have the choice to either rollback to .Net 2.0 and 2005 or simply ditch Visual Studio deployement, but first, I'd like a second opinion.

Anyone knows of another automated way to build a .vdproj that will not require us to open the IDE and click on stuff?


WiX was what I had in mind when saying we would ditch vdproj. Do you have any experience with it, good things, caveat?

3

3 Answers

6
votes

The low cost solution is to switch to using ClickOnce, which you can automate using MSBuild. But if you still need to create a Windows Installer package, you will need to convert your project to WiX (pretty straight foward) and build that with your solution.

This will get you started: Automate Releases With MSBuild And Windows Installer XML

3
votes

I've used WiX a little bit before, and generally I found that it's great once you figure out what to do but there is a steep learning curve. If you spend a solid day going over the WiX tutorial you should be be able to get 80% of your setup working.

WiX Toolset Tutorial

1
votes

I had the same requirement and ended up using what is suggested in these two links

David Williams Blog

MSDN article

Basically, since Team Build, by itself, will not build the setup projects for you, this approach has you add a new build step after the regular build is complete. This step fires off a second build by launching the devenv.exe. The IDE will build your setup files. The extra build is a bit costly but we only needed it for builds that were going to be pushed out. The Daily build at most would need this customization our CI build does not need to build setup files each time.

After that you execute some Copy commands, once again build steps that show up in your Team System build results, to move the setup files to a network share etc.

It feels a bit like a kluge at first, but it does work, it is also a full-fledged part of the automated build in Team System so it worked for my Continuous Integration goals.