WiX

Visual Studio ships the WiX toolset.

Today Visual Studio released the Microsoft Visual Studio Team System code name "Rosario" November 2007 CTP. "Rosario" builds on Visual Studio Team System 2008 to enhance the collaboration between developers and needs of the business, plus increasing application quality and testing support. Now that you've heard the standard marketing pitch, I'm sure you are wondering why I am pointing to a random preview of functionality from the Visual Studio team.

Well, four months ago the Visual Studio setup team approached me to ask if I could help them with that first part of the “Rosario” mission: “enhance collaboration between developers.” They had already adopted the WiX toolset as the platform to build the Visual Studio installation package and were now seriously considering shipping the WiX toolset as part of the Visual Studio product. The VS team saw that the WiX toolset enabled developers to collaborate on installation package development and wondered what it would take get the WiX toolset in a state they could release and support for developers around the world.

When Valentina, the Development Manager for the Visual Studio setup team, first approached me about this possibility I immediately had a flashback to when releasing the WiX toolset externally was first discussed. That was 4 years ago when Stephen Walli and Jason Matusow and others were first discussing what open source license we should use to release the WiX toolset under (CPL) and where we should post the code (SourceForge)

At that time, Stephen and Jason asked me if there was any chance that Visual Studio would want to take the WiX toolset and “productize” it. I told them there was very little chance that they would ever do that. Visual Studio already had a solution for building Windows Installer databases (that was and still is very limited) and showed no interest in the WiX toolset. Besides, I argued, “Wouldn’t it be an absolute home run if the WiX toolset was released as Open Source then later incorporated into a shipping product?” At the time, I don’t think any of us believed it would actually happen.

So when Valentina asked me if I could help out a little bit by providing some guidance on how to work with the community and provide input on what needed to be fixed first, I jumped at the opportunity. Over the last few months, Visual Studio has staffed up a small team that focuses on improving the core WiX toolset, Votive and the Custom Action Library. For example, Peter Marcu, who is best known for his work on the new patching system in WiX v3, is primarily responsible for fixing bugs in the core toolset, integrating new drops of the WiX toolset into Visual Studio and occasionally shows up on the wix-users mailing list to answer questions. There are several others who work on other aspects of the project behind the scenes.

Rather than continue the story of how it came to be that Visual Studio chose to ship the WiX toolset, let me try to answer some questions that I can guess many of you might have.

Q: What version of the WiX toolset will Visual Studio ship?

A: Visual Studio is built on the WiX v3 toolset internally so it is natural that they chose to adopt the WiX v3 toolset going forward. Also, Votive in WiX v3 is better integrated into Visual Studio than the Votive in WiX v2. For example, Votive v2 uses a custom build project while votive v3 uses an MSBuild compatible project. Since integration of WiX into Visual Studio is (obviously) so important, Votive is where much of the Visual Studio development activity is focused.

Q: Are the code changes made by Visual Studio team being checked back into WiX?

A: Absolutely. One of the key tenets I encouraged the Visual Studio team to adopt was that all changes to the WiX toolset were immediately made available to the rest of the community. They were completely open to that suggestion so you can see bug fixes coming in every week or so (depending solely on how quickly Peter and I get the changes integrated). The team has just been very quiet about their work thus far since “Rosario” was still undisclosed.

Q: Will Visual Studio ship everything that is in the WiX toolset today?

A: Okay, this might not be a question on the tip of your tongue but I did want to point out that “Rosario” will include a subset of the WiX toolset of their choosing. For example, Votive is definitely in but the WiX Nant tasks are very likely not. At this point, the scoping decisions are completely based on how much the test team feels they can verify before “Rosario” ships. One of the hardest remaining “cut” questions is whether pyro and the new patch support will make it for “Rosario”. I’d love to see it in but we’ll see if there is time to get it stable.

Q: When does “Rosario” ship?

A: I don’t know the final ship date (I don’t know if anyone knows) but I’m assured it won’t be earlier than end of 2008. This was important because I always had in my mind that WiX v3 wouldn’t really be feature stable until the end of 2008 and that we’d go into 2009 with bug fixing. With Visual Studio putting a number of developers on the project full time to address the bugs, I am now confident WiX v3 will be good to go by the end of 2008.

Q: Will WiX replace the current Visual Studio Setup Projects in “Rosario”?

A: No. “Rosario” is a very short release so the WiX toolset is being added on top of everything else. The current Visual Studio Setup Projects have a number of visual designers to ease the development of installation packages but does not enable collaboration across developers. The WiX toolset has a steep learning curve but has a number of features that enable different developers to collaborate on one to many installation packages.

Q: Will “Rosario” include any visual designers for the WiX toolset?

A: At this point in time I don’t expect there will be any visual designers for the WiX toolset built in the “Rosario” timeframe. Again, this is a very short release and there is a lot of existing code that the test team needs to verify. I expect that the primary output from “Rosario” will be a very stable WiX v3 toolset integrated extremely well into the Visual Studio project system.

Q: Bummer, dude.

A: That isn’t a question but the sentiment is shared by a great number of developers on the project. I try to remind everyone that the work in “Rosario” provides a great foundation to do some very interesting work in the next few releases of Visual Studio. So, let’s hurry up and get “Rosario” done and move on to those other interesting features.

Q: So what does “Rosario” provide?

A: There are two key features that I believe “Rosario” provides. First, there will finally be a clean “out of the box” experience to build Windows Installer databases (.msi/.msm files from .wxs source code) on your Visual Studio Team Server build servers. There have been a lot of requests for this functionality both to the Visual Studio team as well as those of us that work in the WiX community. Second, Microsoft will provide support for the WiX toolset that is part of “Rosario”. Again, I’ve heard many reports of customers asking for Microsoft to provide support services for the WiX toolset and with “Rosario” their support requests will finally be answered.

Q: Will I still be able to use the community built WiX toolset with Visual Studio?

A: Yes. This was the second tenet I encouraged the Visual Studio team to adopt and they are doing their best to make switching out the “Rosario” WiX toolset with the community WiX toolset a reasonable experience. There are some technical challenges (inside Visual Studio itself) that look like it will not be possible to have both versions installed at the same time. So, the goal is to make it easy to uninstall the “Rosario” WiX toolset and install the community WiX toolset. Since the November 2007 CTP of “Rosario” is shipping as a virtual PC image we haven’t tackled all of these issues yet.

Q: How will the WiX toolset in “Rosario” be different than the community WiX toolset from SourceForge?

A: As I noted above, “Rosario” will ship a subset of the WiX toolset so there will be tools and functionality available on SourceForge that is not going to ship in the box. Also, Visual Studio might modify some cosmetic things (like the icons and assembly signatures) so developers can differentiate “Rosario” WiX toolset from the community WiX toolset. Finally, the community WiX toolset will continue to be developed after “Rosario” ships so there are an untold number of improvements we might choose make that won’t be in “Rosario”. I’ll encourage Peter to list any differences between “Rosario” and what is available in the community.

Q: Should I wait for “Rosario” instead of getting VS2008 now?

A: You could but I wouldn’t do so for the WiX toolset changes. We’ve already made the changes (thanks to Aaron) to support WiX on Visual Studio 2008 (that just released, yippee!). That means you can see (and benefit from) the developments made for “Rosario” every week or so on SourceForge. When “Rosario” finally ships then you will have an integrated installation experience and have Microsoft support backing up the product.

Q: So does this change anything in the WiX community?

A: I don’t think so. The same set of people still lead the project (myself, Bob, Justin, Peter) and we still hold the same vision: “Create a set of tools that integrate into the development process so all developers can build high quality setup packages.” Now there are a few more developers working full time towards that vision. I couldn’t think of a better thing for the community.