views:

138

answers:

4

Hi,

I have a pretty huge web application developed using asp.net 3.5 and I need to prepare an installer package which will be using to deploy the application on IIS 6 and 7. I have done a lot of research on Wix and Installsheild 2010 (pro) and need some advice before making decision. I notice that the installsheild is quite expense in terms of license but for me, I have enough budget so that won't be an issue. the installer should be able to perform the following processes.

  • Deploy the published web resource (aspx etc).

  • Create Virtual Directory.

  • Create Database on sql server and run some initializing scripts.

  • Modify XML files and web.config files.

  • Set the permission to allow writing to the files in the virtual dir.

I found that both technologies are capable of doing the above scenarios but I would like to get personnal experience and advices.

Thanks Thurein

+1  A: 

Having created a Wix installer to do exactly what you're looking to do, I'd happily recommend it.

The benefits of Wix over InstallShield as I see it:

  1. Since Wix is free, everyone on your team can install it, and thus everyone can contribute to the installer. If one dev adds a library to the project, they can update the installer as appropriate, without waiting for the "Setup guy" to do his bit.
  2. There are no issues with installing Wix on a Build Server, making it a nice fit for an environment where you use Continuous Integration. It integrates nicely with MSBuild (see the Votive project).
  3. Wix installers are built from text files, making them very easy to version control.
  4. Wix includes Deployment Tools Foundation (DTF) which makes it very easy to create custom actions using .Net code.
  5. Wix is close to the metal: you can usually apply your knowledge of Windows Installer quite directly to Wix. Conversly, learning Wix teaches you a lot about Windows Installer which is always good when it comes to providing support for deployments.

To balance this, there are a few things to be aware of:

  1. Wix does have a steep learning curve. If you haven't already, check out the WiX tutorial.
  2. WiX isn't a "visual" environment like InstallShield - it's usually text and xml all the way. Having said this, there are editors, free and commercial.
  3. Specifically relating to IIS setups: Wix 3.0 only works against the IIS 6 metabase APIs. To install on IIS 7, you'll have to enable the Metabase Compatibility feature on the target server. Full support for IIS 7 is coming in Wix 3.5 - I've tried the beta of this, and it seems to work fine so far.
Samuel Jack
yeah, that is true, my wix(3.0) installer is not working against IIS 7, but my management don't want to use the 3.5 coz that is still a beta. They also worried about the steep learning curve.
Thurein
But definitely, the Install shield could expedite the development time I suppose.
Thurein
A: 

+1 to Samuel's answer. As for the steep learning curve... if you don't understand the way the underlying technology (Windows Installer) works, you'll have problems with the support of your installation, either InstallShield or WiX you choose. But WiX encourages you to learn Windows Installer to use WiX abstractions correctly.

I personally started my setup project (a huge web application) with InstallShield, but I recently moved to WiX and I'm happy about it. The key points of my choice:

  • it is free
  • it is XML (no more pain diffing and merging)
  • it is friendly to NAnt
  • it does exactly what you instruct it to do (no more and no less)

Hope you find this information useful.

Yan Sklyarenko
Thanks for you input. How about upgrade and patching? I have created an installer using wix and it went well but I have never tried the version upgrade and patching by using wix. I am worried that I might be getting some pitfall with the upgrade and patching process.
Thurein
You can do all kinds of MSI upgrades with WiX and it has the tools to produce patches as well. It's all in there, no extra tools/scripts are required. The only thing which is not covered is embedding the transforms. You might face with this when localizing your installer and embedding language transforms in it. But there's msidb.exe in Windows Installer SDK which solves the problem. Also, I can recall someone referenced a script doing the same thing...
Yan Sklyarenko
+2  A: 

To address Sameul's points above....

1 - I've created a project on CodePlex called IsWiX that solves the democratization issue. You use it with WiX to create Merge Modules and then consume the Merge Modules with InstallShield to get the best of both worlds. This allows my setup guy to use InstallShield and dozens of my developers to use IsWiX / WiX. The XML can still be marked up with additional metadata so we aren't restricted in what the modules can experss.

2 InstallShield has a Stand Alone Build engine that integrates with MSBuild/TFS and provides an automation interface. There is no advantage for WiX here.

3 InstallShield is a text file also. It's an uglier XSD format but my IsWiX solves that problem by abstracting the frequently changing portions from the rarely changing portion of the installer.

4 I highly encourage the use of DTF with InstallShield. After all a Type 1 Exported Function is the same to any MSI based tool.

5 InstallShield has a direct editor which shows you the underlying tables. This is actually closer to the metal then WiX which uses an XSD based DSL to output the metal. All in all, there are really good things about WiX AND InstallShield and I use them together to create extremely complex installers.

PS- IsWiX put a lot of thought into hashing and sorting to solve branch merge problems. ( We use Base Clearcase on dozens of branches so this was very important to us. )

Christopher Painter
@Christopher: thanks for that. Having never used InstallShield, I was never going to be able to give a balanced view!
Samuel Jack
A: 

Based on my experience with Wix and InstallShield, I would recommend using InstallShield unless you need a fairly basic and straightforward installer. I say this because the huge Wix learning curve is made even more difficult by the lack of information available

There are no books on Wix, so your resources are limited to the Wix tutorial, which is detailed and lengthy but still doesn't cover much beyond basics, and blog posts you find via Google. Granted, there are many good blog posts which detail how to accomplish specific things, but unless you don't have deadlines to meet, you probably can't afford to sit and research how to do specific things in Wix for days at a time. Personally, I found myself doing this way too much for Wix to be a feasible solution (again, unless you only need a simple installer)

Ultimately, in my case, we had existing installers which were developed with InstallShield and we are simply able to be productive quicker with it. InstallShield also has its own scripting language which has pretty good documentation too.

Another big plus for me was that InstallShield eases the pain of multiple instances (try searching for how to do this with Wix and you'll get an idea of what I'm saying) and upgrading/patching. I was able to accomplish both of these (especially multiple instances) in a fraction of the time with InstallShield than what it took to accomplish in Wix.

My advice would be to choose based upon your time constraints/deadlines/commitments, complexity of your installer, and maturity of your product. Wix requires LOTS of research for things InstallShield provides a fairly quick way of doing. This can be even more painful if you have a mature product versus a fairly young product.

Hope this helps.

Justin Pinkley
Yeah this is correct, I mean, I am a fun of Wix and I have been using it for some time, but some time its quite difficult enigmatic and take time to complete some basic task, especially if you don't have any hands-on.
Thurein
JustinPinkley, for the multiple instances did you look at the Instance element in the WiX documentation? They are really easy to use. Also, WiX v3.5 has a new element MajorUpgrade that makes upgrades a one liner. Also, patching is very easy to use in the WiX toolset. It's all documented in one page in the WiX documentation (you can find it by searching for "patching").
Rob Mensching
Yes, I actually used the Instance element and have 3 instances available to be installed. The problem lies not in Wix's ability to implement instances, but in the amount of time it took me to find thorough enough documentation to sufficiently implement instances. The help file is definitely lacking there. The MajorUpgrade was indeed pretty simple, but minor upgrades are a good bit more complicated, which is fine, but requires more time searching for how to implement. I know Wix is powerful but the lack of detailed documentation is likely what will prevent more shops from utilizing it.
Justin Pinkley