共用方式為


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.

Comments

  • Anonymous
    July 18, 2006
    PingBack from http://microsoft.wagalulu.com/2006/07/18/update-on-votive-v3/
  • Anonymous
    August 03, 2006
    Keep up the work!!
    WiX is great, but a GUI would be really nice!!!
  • Anonymous
    August 04, 2006
    We should talk about what it would take to get the parser support going.  I need to understand how the compiler would interact with Votive, but I seriously doubt it would take 6 months to make any changes you'd need in the core tools to accomplish this (perhaps 1 month if I was really, really confused).
  • Anonymous
    August 04, 2006
    The comment has been removed
  • Anonymous
    August 04, 2006
    Derek, yes we should talk about what's required from the core tools to accomplish the parser and compiler changes that would be needed for rich IntelliSense support. If it can be done in 1 month, so much the better. I still think it will take more time to get everything integrated into Votive, but that's just a rough-guess estimate.
  • Anonymous
    August 06, 2006
    Hi
    Can I use Votive v3 with WiX v2 even if there in different code branches?
  • Anonymous
    August 07, 2006
    sburgess,

    Good question. While it is not directly supported to mix versions with Votive, it may be feasible with some workarounds. I'll have to try it out to see if I can get the workarounds working before I write about them. If I can get it to work, I'll blog about it. You could try it also, by changing the following registry key and see what happens: HKLMSoftwareMicrosoftVisualStudio8.0InstalledProductsWixToolsPath (I think that's what it's called - I don't have access to a machine right now to verify). Set it to the path where the version 2 candle.exe, light.exe, etc. live.

    Note that this will only work with the votive v3 that is currently released. As soon as my new stuff goes in, then you'll have to tweak the .wixproj file instead.

    Also, that could be an interesting feature to add: the ability to target either wix v2 or wix v3 for the compiler/linker. You could add a feature request for it on our SourceForge site (http://wix.sourceforge.net).