7

Why should one go for Windows Installer XML (WiX) when we have in built .net MSI installer?

djot
  • 2,927
  • 3
  • 17
  • 28
Thinking
  • 191
  • 1
  • 11

5 Answers5

10

It would take me hours to rant about everything I hate about VDPROJ. I won't because in my (expert) opinion it's already settled law that VDPROJ sucks. If your install is so simple that you haven't noticed any problems, then be my guess and stick with it. But if you already find yourself fighting the tool trying to get it to do things it doesn't do, then take my advice and dump it fast for WiX.

10 things I hate about VDPROJ

  1. No MSBuild Support. Sure, you can call devenv from the command line but it's not as good.
  2. No exposing of the critical concept of a component. Every file/reg key is a keyfile of it's own component.
  3. No effective way to fully exclude automatic dependency scanning.
  4. Shortcuts are always Advertised
  5. No way to describe a service.
  6. No way to describe many things which leads to overuse of custom actions.
  7. No way to fine control the scheduling / execution of custom actions. Too abstracted.
  8. Abstraction is wrong. Deferred CA's are scheduled with Impersonation which breaks on Vista.
  9. Various limitations lead you down a path of massaging the built MSI during postbuild to get around all the limiations. Results in a very poor build automation hacks.
  10. Merge Module directory tables are authored incorrectly.
  11. 100 other things suck that I'm not remembering right now.
Louis Kottmann
  • 15,133
  • 4
  • 56
  • 85
Christopher Painter
  • 52,390
  • 6
  • 60
  • 97
  • 1
    Don't hold back, say what you mean :-) – Damien_The_Unbeliever Apr 14 '10 at 13:27
  • I spent a year of my life working in an environment with thousands of vdproj merge modules and over 1000 InstallUtil custom actions with boat loads of build automation hacks to make it all work. I know from very deep experience just how bad VDPROJ sucks and I don't wish it on my enemies. – Christopher Painter Apr 14 '10 at 16:24
  • I agree with most of this, +1. VDPROJ should not be used at all in my opinion, but I know [**Chris Painter has found a few fringe uses**](http://blog.deploymentengineering.com/2011/03/redemption-of-visual-studio-deployment.html) of the project type after or before he wrote this answer. That doesn't change the fact that the project type is basically all trouble. Experts may do some things wrong when requirements are weird. – Stein Åsmul Oct 30 '14 at 20:30
9

The introduction of WiX tutorial gives the basic idea about WiX advantages comparing to other setup development tools (including VS setup projects):

  • declarative approach
  • unrestricted access to Windows Installer functionality
  • source code instead of GUI-based assembly of information
  • complete integration into application build processes
  • possible integration with application development
  • support for team development, both in-house and third-party
  • free, open source

Hope this helps.

Yan Sklyarenko
  • 29,347
  • 24
  • 104
  • 125
  • This is a great answer by Yan +1. I have written in a more narrative format about [**the history of the Wix toolkit's creation**](http://stackoverflow.com/questions/6060281/windows-installer-and-the-creation-of-wix/12101548#12101548). Yan's answer is more to the point though. – Stein Åsmul Oct 30 '14 at 20:34
3

Visual Studio deployment packages can only be built by visual studio. They cannot be built using plain MSBuild command lines, which makes them less than ideal for e.g. build servers.

Damien_The_Unbeliever
  • 220,246
  • 21
  • 302
  • 402
  • This is why I'm playing with WiX - lets me neatly package some utility apps that I want as artifacts from my build server – Murph Apr 14 '10 at 09:38
3

All the above answers have included most of the annoying features of Visual studio setup projects (.VDPROJ), one thing that most people have missed.

.VDPROJ file format is such that, and if we make a small change to one single entry it completely rewrites all the entries within which makes it impossible to merge changes from 2 different branches.

Isaiah4110
  • 9,056
  • 1
  • 32
  • 49
1
  1. Some of us don't want to use / can't use the .NET installer.
  2. Some of us don't want to have to install Visual Studio to distribute a program, written in, say, Borland Delphi. WiX and .NET have nothing to do with one another.
  3. WiX provdes a much more complete feature set than the .NET installer.
Billy ONeal
  • 97,781
  • 45
  • 291
  • 525