WiX in Visual Studio


In my previous blog entry, I mentioned that Visual Studio was adopting the WiX toolset. Despite the fact that Derek was leaving, that post generated a bit of excitement. I even had a couple people contact me directly about the prospect that Visual Studio would be shipping WiX v3.

Unfortunately, when I said "the Visual Studio team approached the core WiX development team about replacing their custom MSI build system with the WiX toolset" I meant that Visual Studio would be using WiX to create the MSI file for Visual Studio. As far as I know, there are currently no plans to replace the "Setup Projects" (.vdproj) in Orcas with the WiX toolset. If they are, Visual Studio certainly haven’t told me about it.

However, since a few people found the idea of replacing the .vdproj with WiX v3 so enticing, I’d like to do an informal poll. Please, leave a comment below if you have an opinion on whether Visual Studio should replace the current "Setup Projects" (.vdproj) with WiX v3. I’ll be sure to point the guys I know on the Visual Studio team to the results.

Comments (111)

  1. Jesse Ezell says:

    Rip an replace. Do it.

  2. Yes please – the current "Setup Projects" does not produce MSIs that are very easy to work with (speaking from a "deployers" point of view)

  3. David says:

    I would be very happy if a VS Setup project was a simple designer (like today) for a subset of the WiX functionality, just like C#/VB projects take advantage of a subset of MSBUILD. The big big problem with today’s Setup project is that once you hit the limit of its capabilities, you must start from scratch with some other tool.

    I’m not interested in more features in VS Setup projects primarily, but the ability to tap into the full potential of the Installer platform by maybe editing some XML by hand when needed.

    Thanks for listening.

  4. Robert van der Boon says:

    I would welcome any enhancement to the setup-creation-experience of visual studio. And using WiX would really be an enhancement.

    Major points (of the top of my head):

    extensibility;

    modularity;

    patch creation;

    with a version control system the diffs would finally be meaningfull/understandable;

    Greetings, Robert

  5. jus says:

    That is a great idea! I second that!

  6. Mark Lambert says:

    Absolutely.

  7. Leo says:

    Absolutely! the current setup projects cannot be automated  using MSBuild and are very hard to understand when something special is needed.

  8. Vadmyst says:

    I agree with the folks above, WiX is more robust and produces more maintainable MSI files.

  9. I’m sorry I jumped the gun on my blog. I should have known – if something sounds too good to be true, it probably is. 😉

    Going with WiX would make so much sense. The current .vdproj files are impossible to version control and maintain. Do you really want such an important part of your product in a fragile and error prone format?

    Even a hybrid approach that lets you reference .wxs files from the .vdproj would be an improvement.

    BTW, SharpDevelop 2.1 now uses WiX as its installer format:

    http://community.sharpdevelop.net/blogs/mattward/archive/2006/09/17/WixIntegration.aspx

  10. szoke says:

    I think setups should be ‘fixed’ by changing them from vdproj to wixes… think of CI, setup debugging, etc.

  11. I’m gonna be the first person to disagree with everyone.

    Just kidding. Wouldn’t that be funny? Definitely add Wix support to Visual Studio. You could still keep the same type of basic setup project for quick and dirty setups, but maybe have it produce Wix under the covers. But the option to directly edit the scripts would be great.

    I would also like to see Wix integrated into msbuild with the .NET SDK too.

    Seems unanimous so far.

  12. Shannon says:

    I’m in.

  13. I would love to have WiX in VS2005 instead of that crappy setup project which is not even MSBuild compatible!

  14. Marc says:

    Yes, please!

  15. TroyC says:

    Please replace it!

  16. Stephane says:

    I would be very happy to see some sort of wix generation in VS, but I’m betting there are some people who are very happy to have setup projects. I think a combination would be better instead of ripping out one and adding another. Wix is kinda complex when you first look at it.

    So why not have both in there (you could even go from one to the other with some Guidance Automation…)

  17. _mike says:

    YES!

    Anyone who has to deal with creating large complex installations will find WiX a much better solution over other tools.

  18. Henry Boehlert says:

    Yea.

    Considering the "X", WiX fits much more natural into the Visual Studio Environment, just like configuration files, schemas, or typed datasets which are all being "compiled", one way or the other.

    Just like here:

    https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=114409

    Something along these lines would greatly help us reduce build process non-linearities.

  19. Sam Jack says:

    I think it would be a great idea – then we could extend the Wix files generated by the setup designer when we got to the end of its capabilities.

  20. jeremy.wiebe says:

    I would LOVE to see WiX replace the .vdproj file!   For one, Team System (MSBuild) cannot build .vdproj files out of the box without having a full install of Visual Studio on the build server (which I think is a bit much to ask).

    Vote +1 for me.  🙂

  21. I’ve been saying for the last couple years that WiX needs a UI RAD tool and for the last year I’ve become intimatly aware of how much VDPROJ sucks.  I’m sorry, it’s crap.

    The replacement of VS deployment projects with a WiX authoring tool ( one that supports more then file/reg/shortcut/CA ) is only a natural fit between the two technologies.  Combine it with DSI/SDM and VS Team System so that architects and developers can actually define a system and have it automatically generate the deployment project and you *might* just get me to abandon InstallShield.

  22. Kenny Kerr says:

    You’ve got me vote!

  23. Kevin Dente says:

    +1 for replacing VDPROJ with WiX.

  24. Jayme Edwards says:

    Hello,

    You may remember me as the disgruntled NAnt developer who co-authored the MSI task on that project that was frustrated when WiX was announced :).

    Since then I’ve used WiX on 2 projects, it’s a great project – you guys have done a nice job.

    Yes, you have my vote – VS’s project files for setup are horrid to extend and don’t harness the full power of MSI. Making this be WiX files instead would be great!

  25. brandontyler says:

    Please, please add this to Visual Studio.  The setup project is very difficult to figure out.  WIX I love!

  26. Aaron Prenot says:

    WiX has far more capability than the current Setup Projects.  I would whole heartedly welcome the replacement.  Even just having Votive pre-install with VS and leaving the deployment projects (for backwards compatibility) would be cool.

    BTW – I am working on a pseudo editor for WiX on Google Code entitled WiXed that I would have no problems with MS stealing as a "designer" for WiX in VS. (caveat – still in very early production)

  27. Marc Scheuner says:

    Yes, yes, yes – PLEASE !!

    The current Setup projects are a nightmare to work with, and can’t be automatically built using MSBuild, NAnt or other automating utilites – this alone makes them suck BIG TIME.

    WiX is such a beauty in comparison! I wish Orcas would have a Wix on stereoids as its setup project type! That would make our developer lives a lot easier, for sure!!

  28. Paul says:

    I also agree.  WiX is much more maintainable once its up and going.  Please include WiX as the standard install authoring tool in Visual Studio.

  29. Jason Swager says:

    Yes – please replace it.  

  30. Pascal Binggeli says:

    Yes

  31. Do it!

    .msi is the future, and it should already have been the present. There’s no reason _not_ to.

  32. heaths says:

    Certainly. From an SE perspective, .vdproj outputs are difficult to service. You also can’t do anything more advanced with them without modifying the reusltant MSI.

  33. Brian Pearson says:

    My vote is to replace it. WiX all the way!

  34. pd5rm says:

    Yes! Absolutely.

    This is a total non-brainer on VS team. I am sure there’s plenty ‘o work to be done and backwards compatibility issues.

    The current installer is so limited beyond just dumping an exe and some regs onto a system. However, you’ll need to keep some kind of graphical/wizard for the text-impaired. WiX is scary initially. 😉

  35. Greg Fleming says:

    Oh good lord yes.  Please.  

  36. AsbjornM says:

    Yes, replace.. NOW! 🙂

  37. Erv Walter says:

    Please please please replace it with WiX.  

  38. Roy says:

    I was once asked to look at a problem in the .vdproj because people knew that I did a lot of work with builds using WiX and NAnt.  Needless to say, the .vdproj did not make any sense to me … it was needlessly complicated.

    Please replace it.

    +1 for WiX

  39. Kevin says:

    vdproj projects produce MSIs that fail ICE validation. The minimum going forwards should be to resolve these sorts of issues.

    Personally in the Orcas timeframe I’d like to see vdproj’s to be implemented using WiX with the opportunity to extend the WiX content at your own risk. Going forwards having UI support in Visual Studio for wider WiX functionality seems sensible.

  40. Bill Arnette says:

    +1 from me!

  41. Christopher Tyler says:

    Given that in VS2005 you have to modify the merge modules just to get files to install to the correct location, I think it is time for the vdproj to go away.

  42. gduncan411 says:

    Yes, please. Wix it…

  43. Robert says:

    This would be great but seldom dreams come true 😉

  44. HookEm says:

    HELL YES – replace vdproj files ASAP!!!

    1) At my previous job we used merge modules extensively.  When trying to merge branched code back to a trunk, it’s almost impossible with vdproj files due to the mostly non-readable text.  You have to get use to using vdproj files before you recognize all the crap that automatically gets added each time you check in.  Using WiX would make source code diffs a WHOLE lot easier.

    2) The F%&*I#G! Auto-Detected Dependency CRAP that I can’t turn off (even un-checking the ‘Use system Search path’ option doesn’t keep VS from pulling in crap I know I don’t need b/c I already hav it in another module).

    3) Limitations of VS modules, including (but certainly not limited to):

     * forcing practically everything added to a module to be it’s own component with it’s own key.

     * forcing custom actions to all be deferred

     * incorrect sequencing of custom actions based on order modules are merged into MSI package (either uninstall or install/rollback are not sequenced correctly – I can’t remember which.  Try it – create two modules both with uninstall and install CAs then merge A then B and look at sequence, then merge B then A and look at sequence and compare – screwed up!).

     * forcing all shortcuts to be advertised

     * no support for setting properties (other than through system search)

     * limited launch condition control

     * limited dialog customization

  45. Leon Zandman says:

    Yeah, I’d like to see them using WiX too!

  46. Kipp Howard says:

    +1 Good idea.

  47. Craig Boland says:

    That building .NET 2.0 applications is now opened up and accessible via MSBuild, it only makes sense to do the same with building installers for those applications in an open and accessible way, namely with the WiX toolkit. The Setup Projects (vdproj files), while text, are proprietary and not very accessible: either use them as-is, or use a different tool to create installers.

    Visual Studio Team, please consider using WiX for building installers rather than the old Setup Projects. Development resources will need to be expended on a Visual Studio feature to create installers anyway, so why not devote those resources to a noble and mature project like WiX. Doing so may even reduce the development resources needed for such a feature in future versions of Visual Studio.

  48. It makes absolute sense to use the WiX xml format for the

    files that VS generates. VS can still provide the same limited capablility – or even less if you like – since this would create an easy migration path.

    As an interim solution, what about a program to generate WiX xml out of the vdproj file? Of course we already have dark, but a solution aimed at VS-generated projects directly would be able to make a number of assumptions that a more general solution could not make.

    Charlie

  49. Mike Dimmick says:

    I’d like to say ‘hell yes’ but would point out that people who read your blog probably already use or have at least heard of WiX.

    As for the reasons for replacing it, well, you’ll find most of them in Phil Wilson’s book.

    While you’re at it, shoot the ComponentInstaller too.

  50. Bobby Collins says:

    Yes! Wixify.

  51. I’m actually alot closer to being an InstallShield fan-boy that a WiX supporter.  I like the concept of Wix fragments over merge modules.  The closest InstallShield has to this is DIM ( Developer Installation Manifests ) but they are platform agnostic and suffer the same lack of functionality that VDPROJ MSMs do.  

    What WiX lacks ( IMHO ) is a very mature IDE.  If WiX was to replace VDPROJ on the back end, and the front end was to contain alot more functionality like InstallShield, I could see myself going in this direction instead of InstallShield.

    And of course since my world mainly revolves around managed code, a very mature .NET MC CA support would be wonderful.

  52. cs says:

    Chris,

    Check out wixedit. wixedit.sourceforge.net

  53. Koji Ishii says:

    VS is a tool for programmers, and from that perspective, current tool does not match well. It’s graphical, but does not have much extensibility.

    Consider Windows Forms. VS allows me to use GUI, but once GUI is done, I can edit its source code to extend the functionalities.

    If VS uses WiX as its MSI generation engine, that’d give us the great flexibilities to us. I think someone in Borland said in public that he creates first MSI using VS, and then de-compile to WiX. That makes perfect sense.

    I assume that’d also give us the ability to build the SLN from msbuild, which is a big plus.

  54. Chip Crary says:

    Yes, that would be wonderful.

  55. Totally…VDPROJ is torture….yank it and use Wix.

  56. Giancarlo says:

    Yes, use it.

  57. Taneli Waltari says:

    Yes. VDPROJ has too many limitations and known, unfixed bugs.

  58. Many users are not quite happy with Setup & Deployment projects in Visual Studio today. And indeed

  59. Gavin Greig says:

    Yes, please integrate WiX into Visual Studio as an MSBuild-friendly replacement for the existing installation projects.

  60. Ted O'Connor says:

    Please, please, please YES!

  61. Jonathan Perret says:

    Rob, you’re preaching to the choir here… But yes, please get them to bury the awfully crappy vdproj ASAP !

    Why wait for Orcas ?

  62. Colby says:

     I vote to get rid of vdproj files.

     

     1) At my previous job we used merge modules extensively.  When trying to merge branched code back to a trunk, it’s almost impossible with vdproj files due to the mostly non-readable text.  You have to get use to using vdproj files before you recognize all the format  and "guess" that the automatically generated vdproj sections contain the content you want.  Using WiX would make source code diffs a WHOLE lot easier.

     

     2) The uncontrollable/unconfigurable "Auto-Detected Dependency" stuff. Even un-checking the ‘Use system Search path’ option doesn’t keep VS from pulling in stuff I know I don’t need b/c I already have it in another module.

     

     3) Limitations of VS modules, including (but certainly not limited to):  

       * forcing practically everything added to a module to be it’s own component with it’s own key.

       * forcing custom actions to all be deferred

       * incorrect sequencing of custom actions based on the order the modules are merged into MSI package (either uninstall or install/rollback are not sequenced correctly – I can’t remember which.  Try it – create two modules both with uninstall and install CAs then merge A then B and look at sequence, then merge B then A and look at sequence and compare – screwed up!).

       * forcing all shortcuts to be advertised

       * no support for setting properties (other than through system search)

       * limited launch condition control

       * limited dialog customization

  63. Ma says:

    Yes, replace it, vdproj >> WiX v3

  64. Jason says:

    Yes, replace the setup deployment projects with the wix project.

  65. paulecoyote says:

    It would make a lot of sense to replace the setup project files in visual studio with a WiX based solution.

  66. Eric says:

    I’d be very happy to see WiX replace the current vdpro.  Having used it in all versions of VS.Net I find it not suitable for larger projects.  Single projects are ok.  Multi-layer projects are not creatable/maintainable with this tool.  I have many issues but here’s a most limiting list:

    1) More on #2 listed by Colby,  I found this harsh.  Change the version and all your excludes vanish in your automated build causing it to halt due to an include for an OS file even though it knows enough to tell you it should be excluded, and it put it in the first place.

    2) No feature support.

    3) Not an enterprise product level installer (IMHO), If your designing a multi-layer system it’s not easy to design the deployment stage.  The support for multi-layer development in VS supports all but the last step in the process, deployment.

    4) No preset ability for Branding.  While it may be minor to some, designing installers for a team and making sure each time marketing rebrands something all installers change means a lot of IDE work or a 3rd party/External (ORCA)  tool.

    5) Multiple web app installers, again limitations in doing this in a user friendly clean manner.

  67. Matthew Clendening says:

    Another ++ for replacing VDPROJ’s with WiX

  68. James says:

    Replacing VDPROJ files with WiX makes sense on so many levels…. do it, do it!

  69. Christopher Painter says:

    IMHO, the problem with VDPROJ isn’t simply what it can’t do, but the fact that it feeds a `setup is xcopy, configuration is roll your own everything` philosphy to .Net developers.  All over the web you’ll see VB/C# developers expound the virtues of Installer Class custom actions and the use of managed code to do everything from set an environment variable to create a service.   Things that are built into WindowsInstaller but not exposed to them in their world of VDPROJ.

  70. Chris Stefano says:

    Yes, please! Replace that horrible beast with WiX…

  71. David Hogue says:

    Definitely.  The vdproj projects I’ve worked on have been very  difficult to work with.

    I converted one to WiX and I could do so much more with it.

  72. John Melville says:

    Just in case you aren’t sure what the results of your "informal poll" are, count me as yet another vote for wix.

    I think visual studio has done an excellent job simplifying complicated code or XML with a variety of designers.  We are told that Orcas will have a lot more designers for WCF, WPF, and WWF.  It seems that by now you ought to have the "designer over xml" story pretty well cookeed.  How about a designer over Wix!!  

  73. rene says:

    Is there anybody who loves Visual Studio Setup projects?

    Nope!

    I start wondering what customer scenario gave us the vdproj projects, and if that customer is still doing any business.

    I was surprised that nothing changed for setup/deployment in vs2005, do not surprise me again!

  74. Joe Kaplan says:

    Given that you probably have a loyal following of WiX users reading your blog, I doubt you’ll find a lot of vdproj fans to balance out the WiX cheering section, but I still think this is a good idea.

    It does force the issue of a good GUI for WiX though (although perhaps the current GUI could be adopted).  That is the one compelling feature of vbproj now (although I’m not sure I’d call that GUI compelling…).

    Having something that was capable of authoring "real" setup projects without running out of runway and having a reasonable format that can be integrated into a build process are the two big wins here.

  75. ringi says:

    A replacement for the setup projects would be great! As

    a) I wish to be able to do a COMPETE build without having MSDEV installed on the build server.

    b) I with to be able to diff versions of a “setup project” and ONLY see what I have changed, e.g. check that I have not made a change I did not want.

    c) I wish to be able to use the full power of MSI without having to start again if a “setup project” proves not to be powerful enough.

    A new “setup project” system based on WiX that gave me the above would make me very happy.  I do not expect the new “setup project” system to give me the full power of WiX, after all I want it to be easy to use.

  76. John Watson says:

    You have my vote too.

  77. Simon G says:

    Yes, remove the vdproj with Wix.

    Creating installer packages isn’t just xcopy, but with the right tools hiding complexity makes you belive it is. With Wix as the backend you are able to get hardcore if you wish without having to hack the msi package directly.

  78. ploeh says:

    Yes, please. I think the ability to create .msi files using MSBuild would be very valuable in a continuous integration scenario.

  79. Alexander Ogol says:

    Yes!! vdproj are too basic and can’t be build using msbuild – why make half-steps and make everything but deployment work with msbuild??

  80. David Adams says:

    Rob:

    I think that either a move to WiX as a basis for the setup projects or an option would be a -great- enhancement to the Visual Studio suite.  We discontinued use of the standard VDPROJ project for our releases when we started encountering the limitations of the project.  

    Unfortunately, today, there was not a very good path to move from the standard VDPROJ to the WiX model.  We did what most would do using DARK to reverse engineer the output of the VDPROJ as the starting point for our WXS.  

    I agree that doing this would highlight a more GUI-based extension for the toolset than exists today.  

    If the responses are a *real* measure, it sounds like Justin should have alot of volunteers helping with the WiX – VS integration efforts.  8)

    David

  81. wjvii says:

    Yes, by all means replace the .vdproj with WiX v3.

  82. Roelof says:

    Yes, please try to persuade the VS team to change vdproj to WiX

  83. Most definitely. The current .vdproj format is ghastly to work with and – as other posters have commented – once you run up against its limits you have no choice other than to start from scratch with another too.

    That’s precisely the situation we’re in right now. Ugh.

  84. James Hebben says:

    Replacing vdproj with wix would be a big step forward.

    The vdproj project is most definitely not a professional level tool.

  85. windywinter says:

    Yes, please change VS setup project to something more flexible.

  86. Christopher Painter says:

    It would be also be really nice if the vdproj replacement WiX authoring tool for Visual Studio was released as open source and backwards compatible as an add-in for VS2003 and VS2005.

  87. robmen says:

    Christopher, that Open Source backwards compatible add-in for VS2003 and VS2005 is called Votive 2.

  88. Christopher Painter says:

    While it meets part of the definition of what I said ( an open source add-in for 2003/2005 ) it certainly meet the definition of a replacement for vdproj….

  89. rnorman says:

    I agree with everyone here. While the initial version was good, it just does not scale well for complex deployments. To build a deployment to do all WiX does out of the box, we would need to write a ton of custom actions. And this does not even cover some of the native capabilities that exist with WiX.

    So yeah get rid of it and update user projects while you are at it.

  90. Perry Ismangil says:

    +1000000 for replacing vdproj. Even MSBuild doesn’t support it.

    Replace vdproj!

  91. Hesheng Bao says:

    I don’t know whether this is right time and place to post my questions here.

    We have a stable Wix v2 project that contains the installation and configuration of VS 2005 dll, exe, database, windows service, web service.

    This afternoon I downloaded Wix v3 and got a lot errors and warnings. The preprocessors don’t work, WebVirtualDir becomes an unexpected element for component, etc.

    Where can I find instructions on how to upgrade from v2 to v3?

    Thank you very much in advance.

  92. robmen says:

    Hesheng, the correct place to ask general WiX questions is on wix-users@lists.sourceforge.net.

  93. Tonight I traveled to Anthony’s Beach Cafe in Edmonds, WA to have dinner with Charlie Poole . Charlie

  94. Edward says:

    Yes please. The vdproj stuff is far below par.

  95. Hugh Williams says:

    Two words: DOG FOOD.

    +1 for WiX in VS.NET.

  96. Greg Wojan says:

    replaceVdproj += 1

    Please, please… 🙂

  97. Arno Schoedl says:

    WiX editor in Visual Studio, please!

  98. Rob Mensching discusses replacing the Deployment Projects in Visual Studio with WiX. If you like the

  99. Please, anything openly configurable and extensible like WIX would be an improvement over the currrent toolset.

  100. rip it, burn the ground and replace everything with wix.

  101. Morten Lerudjordet says:

    Let’s toss Vdproj to the dogs, and get wix into the house

  102. Dave says:

    Yes please replace it or at least fix some of its shortcomings.  The fact that you have to use devenv.com to build vdproj files is annoying to say the very least and an unreasonable requirement for a build machine.  I would expect to use msbuild or something else IN THE SDK to build a vdproj file.  Furthermore, the way that vdproj creates its shortcuts truly needs fixing.  A shortcut created by the vdproj should be the SAME as one that I create by hand.  It should NOT be tied to the setup project itself so that the setup project gets launched.  I’ve seen this behavior many times and the files that the shortcuts are pointed at have NOT been tampered with.  This behavior has confused our installers so much that I stopped creating shortcuts with vdproj and now create them programmatically.

  103. I’d give a resounding "YES!" to this – vdproj is not an ideal solution.  WiX is not without faults, but it is head and shoulders over what VS.NET provides today.

  104. John Rayner says:

    My vote also goes to turfing vdproj and folding Wix into VS.Net

  105. Keith Hill says:

    +1 for WiX replacing Vdproj but please try to do it so that MSBuild can build solutions with these WiX projects.  The two need to play together nicely.

  106. Erik Schmidt says:

    Replace it 🙂

    But please leave automatic project output integration and some patterns for UI