WiX is Free… almost

Christopher Painter recently posted an interesting WiX post, WiX: Forced to use Beta Software, and now has a follow up cleverly titled, Pay No Attention To The Bugs Behind the Curtain. These are very good arguments that have been bought up, but I think there is another aspect that is being slightly overlooked. WiX is free open source software.

My experiences with open source projects have generally come with the issues that Christopher has been raising, lack of support, unknown release quality, and unknown version compatibility. If Microsoft and not just their employees, on their own time, built WiX, many of these concerns might go away.

Being open source is also its strength. It is completely free, if you have the time. If WiX were a commercial product, it would then have great difficulty competing against the current major MSI authoring tools. If you come across any showstopper bugs, you can fix them yourself, although this can be a time consuming, expensive process. If it does not suit, you can make it. You just need to look at what SharpDevelop did to the WiX MSBuild target for WiX v2 to support fragments in their IDE. The difference is the developer remains in control. Whenever you use a third party product you are depending on them to support and fix any issues you find in a timely manner. This does not always happen and can leave you stranded.

Being forced to use Beta software is a bit of an embellishment. I completely agree that as a setup developer you are stuck if you want to use Votive. How do I get around this? I do not use it. WiX v2 is great, Votive v2 is not. As long as you can hit a button and create a ready to ship MSI, this is all that matters. I simply have an empty C# project that contains the list of WiX files. In the MSBuild script for the project, I run the command line tools to generate my installer with WiX. I have the WiX release I used to develop that installer, checked in source control, and referenced by the MSBuild task. You do not need to be concerned about what WiX release you are using as long as it creates the MSI you need for your project.

This only becomes an issue when you want to take advantage of new features or you come across a bug that you cannot workaround. Here you have two options. See if it has been fixed in a later release, or fix it yourself. If you use a later release, then you have to go through a complete quality assurance process of your MSI you have created. This is like any commercial product. If you fix it yourself, it will cost you time, but hopefully you will be able to estimate the timeframe that will be required. This is not like any commercial product. For example, we have recently come across a showstopper bug in the .NET Framework 2.0 SP1. This is preventing us moving forward to .NET 3.5. The fix is known, has been raised with Microsoft, but we need to wait for their process to get a fix. (A recent update informs there will not be a hotfix release, because a workaround is available, which may not help to us, because the code is in a 3rd party control.)

I am using WiX v2 and do not intend to move to WiX v3 until the schema is stabilised and it is given the go ahead. It would be too expensive for me to develop my installers in v3 and have to modify them heavily to work in later releases of v3. There are already plenty of modifications required to move from v2 to v3, so I only want to have to do this once. Having all the developers focused on v3 is an issue since support for v2 is short. The mailing list alleviates this issue, although many responses are "you can do this in v3", which is of no help. I would like to move to v3 due to great new features and integration with Visual Studio. This is not something that I can do if business depends on it. It was a risk moving to WiX v2 while it still was not finished. I had to choose a weekly release and work with that, until I hit a bug that was fixed in a later weekly release.

Now that WiX (Votive specifically) is being developed within the Visual Studio Rosario team hopefully releases will be more supported, higher quality and better version compatibility. It is unlikely that I will move to WiX v3 for any commercial project before a release candidate of Rosario is available.

Technorati Tags: ,
Advertisements

6 thoughts on “WiX is Free… almost

  1. A very well reasoned argument except I think you are having a hard time convincing yourself.  ( see  buy vs build blog and Free…Almost ).    Rob Mensching once blogged that the source code was the documentation and they were too busy to write it.  For a group of low wage developers in a third world country who don\’t mind hacking through the source and fixing problems and submitting the merges back up the chain that\’s probably fine.  They probably couldn\’t afford to buy a tool like InstallShield 2008 Premiere anyways.
     
    I\’m a Setup Devlopment Expert.  I\’m not a Setup Tools Development Expert.   To me there  is a difference.  I also happen to be a pretty darn good Build Guy who uses MSBuild/TFS.   The kind of problem I rooted out with Votive the other day is the kind of problems I have to dig into at my day job when I\’m not working on setup tasks.  Still,  this is bugs in our own product before they are promoted and relased to our QA team.
     
    Also I know you aren\’t `forced` to use WiX 3.0 but you said it yourself….  everytime you have a problem in WiX 2.0 they basically tell you to upgrade to WiX 3.0 to get some new pattern for free.  WiX 2.0 is fairly, well, lacking.
     
    And it\’s not just the Votive bug ( which by my calculations cost the company $200 for me to trackdown ) it\’s the fact that nearly every time I try to give WiX another chance I end up wasting tons of productivity trying to get it to work.   I know everyone hates InstallShield, but at $1500 it isn\’t free but it is cheaper.
     
    Alas I also have huge hopes for Rosario.  If it\’s good enough I could just eliminate InstallShield and do all my work right in Visual Studio.  
     
    PS- I emailed with Justin Rockwood once and you\’d be interested to know that it\’s possible to combine Votive 3 with WiX 2 with a little tweaking of your msbuild files.   While this doesn\’t give you the robust designers that I desire, it does give you the VS integration from WiX 3 with the compiler / schema from WiX 2 so any risks you take should be at dev time not install time.

  2. I can certainly see how it appears I have a hard time convincing myself, but I think this is because I was trying to keep the argument balanced. As I have said, I usually go towards the buy option. The difference I find between WiX and InstallShield though, is that buying InstallShield, in my limited experience, does not save me much time.
    I completely agree there is a difference between a Setup Expert and a Setup Tools Expert. In all companies I have worked at though, we have not had the resources to have a dedicated Setup Expert, and this responsibility falls to one of the developers. That is where I come in. I am a developer first, and perform the setup authoring, developer support and build automation (TFS/Cruise Control) second. I think it is worthwhile having a dedicated setup developer, the amount of support time that was saved since I have taken on the role has been well worth it.
    When I took up the installation development, it was developed using InstallShield, and had no end of problems. InstallShield is given a worse wrap than it deserves because it is promoted as a tool any developer can just get and their installation problems go away. I do not think this is the case though, and that is because I have taken the time to learn Windows Installer. If I went back to InstallShield knowing Windows Installer, I think I would have a much better experience. Since I understand the underlying system now, I do not need to go through a heavy tool, which I am not familiar with, that tries to abstract it. WiX on the other hand, seems to start a developer off in the right direction by putting the focus on learning Windows Installer first, and then the setup development tool.
    I think it just comes down to what you know. As long as you understand the Windows Installer, with enough time you can adapt to any tool. During that time you will be far less productive than compared to the tool you know, but that does not mean it either is better.
    PS – I have actually done a similar thing with MSBuild in Visual Studio, like Votive 3 with WiX 2, using the adapted build targets from SharpDevelop. I had it working fine, but I needed to develop an installer for that to get it working on the other developers’ computers. At the time things were in a state of flux and would have required too much maintenance to keep everyone up to date, so I went for the simpler option using already existing MSBuild tasks. I would consider trying this again using your suggested method, which sounds better than what I did, but I am now just holding out for Rosario.

  3. 2c from the other side of planet :)I think one should mention: no lunch is free. Especially considering the influence of a shaky platform, Windows Installer – there\’s no easy way.WiX will definitely cost you some time to start – about couple of days getting it to work.Still, it wraps Windows Installer complexity at a low cost.Looking over possbile cases, I\’d say:* Simple installer that will just wrap and copy couple of files will take you:** With WiX – the mentioned couple of days – just take a stable version and a tutorial;** With, let\’s say, InstallShield – not much less less. You still need to order it, install and learn things about product id, patches, etc etc;* Complex installer will cost you much anyway:** With WiX – you\’ll need to drill down to XML that just slightly dresses Windows Installer internals. You\’ll need to search for code snippets, write code, sometimes fix WiX code, etc;** With InstallShield – you will run into different kind of costs: you still need to work around certain WI features. At some point you\’ll a) run into InstallShield bugs/by0design inabilities (Christopher Painter did mention them!), and b) need to go down to WI tables, properties and releases.

  4. 2c from the other side of planet :)I think one should mention: no lunch is free. Especially considering the influence of a shaky platform, Windows Installer – there\’s no easy way.WiX will definitely cost you some time to start – about couple of days getting it to work.Still, it wraps Windows Installer complexity at a low cost.Looking over possbile cases, I\’d say:* Simple installer that will just wrap and copy couple of files will take you:** With WiX – the mentioned couple of days – just take a stable version and a tutorial;** With, let\’s say, InstallShield – not much less less. You still need to order it, install and learn things about product id, patches, etc etc;* Complex installer will cost you much anyway:** With WiX – you\’ll need to drill down to XML that just slightly dresses Windows Installer internals. You\’ll need to search for code snippets, write code, sometimes fix WiX code, etc;** With InstallShield – you will run into different kind of costs: you still need to work around certain WI features. At some point you\’ll a) run into InstallShield bugs/by0design inabilities (Christopher Painter did mention them!), and b) need to go down to WI tables, properties and releases.

  5. Oh, I\’m so sorry. I kept getting a "server error" trying to post a comment.That\’s another illustration to why I prefer opensource products. Both commercial and free software is bad; free one is frequently worse, but you have way more control over it. That\’s an approach I choose being and engineer.

  6. Oh, I\’m so sorry. I kept getting a "server error" trying to post a comment.That\’s another illustration to why I prefer opensource products. Both commercial and free software is bad; free one is frequently worse, but you have way more control over it. That\’s an approach I choose being and engineer.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s