Update on Votive v3

It's been a while since I blogged and I've been lax about keeping people up to date about the status of Votive, so here comes a much needed update.

Several people have recently asked me two different questions recently in relation to the future of Votive: 1) What is currently in the works and 2) What can I do to contribute. I've made up an initial list to answer these two questions.

What is in the works?

Right now I’m finishing up a complete rewrite of Votive using the MPF (Managed Package Framework) in the Visual Studio 2005 SDK. This change will only be in the version 3 branch and will not be backported to the version 2 branch. I plan on checking in sometime in August. Here are the features that will be in that change:

  • MSBuild support – the .wixproj file format is now an MSBuild file
  • Wixlib build supported – there is now a third project type to allow building wixlibs
  • Wixlibs and extensions are supported by adding them to the project references – in v2 only wixlibs were supported
  • Source Code Control (SCC) support – Wix projects can now be stored in a SCC system
  • Linked file support – Adding a file into your project without it being copied to your source directory
  • Many bug fixes and greater stability
  • New flashy icons for the file types :)
  • The setup for Votive itself will be written and built using Votive, which means that I get a lot more test coverage and hopefully will have less regressions

One of the implications of using the MPF is that Votive v3 will no longer support Visual Studio 2003. Although unfortunate, the features that I'm gaining by moving to the MPF outweigh the downside of not supporting VS 2003.

What needs to be done?

There is still a lot to be done on Votive to get to where I wanted to be when I started about 2 1/2 years ago. I still need to come up with a comprehensive list, but here are some things that I have on my mind right now.

Infrastructure

  • Property pages in the new Visual Studio 2005 style (this is next on my list)
  • Property pages for global Wix project settings. Stuff like spaces vs. tabs in the editor. This would live in the Tools / Options / Text Editor / Wix section.
  • Caching project references in a file and then copying/deleting them during a build/clean. For example, if I add mylibrary.wixlib to my .wixproj and “CopyLocal” is set to true, then we need to copy the file to the output directory. When we clean, we need to remove it. Also, we need to remove files that were once referenced in the project but are no longer referenced. This would need to be done by creating custom MSBuild tasks.

Features

  • A hierarchal designer that shows the features, components, and files/registry keys and their relationship to each other.
  • A designer for UI screens. I would probably use the Windows Forms designer as a starting point and tweak it for MSI dialogs.
  • Richer IntelliSense support. I’m envisioning getting more than just the schema in the IntelliSense. So, for example, when you type <Component Id=" then one of the options in the IntelliSense drop down would be “Create New GUID”. Or when you type <ComponentRef Id=" the IntelliSense would list all of your components as options. This level of support would require us to make Votive an actual Visual Studio language, so we’d need a parser. We’d have to tweak the base wix codebase to be able to resuse all of the parsing code. This is a pretty big feature that would take probably 6 months to a year to do working part time a few hours a week.
  • A debugger for the MSI that gets built. This is also a huge feature.

Hopefully this gives a somewhat better view of what I'm planning and what I am currently working on with regards to Votive.