views:

425

answers:

3

Programmers that actually promote their products to production need an installer. (pre-emptive "programming related" justificaton.)

For deploying a new suite of internal corporate apps and services, I'm trying to decide between using WIX and the InstallSheild express edition that comes with Visual Studio 2010.

I've looked, but haven't found a feature matrix that highlights the features that are not in the express edition. I expect WIX to be genrally quite capable, but more difficult to use, and have heard of situations that WIX doesn't support well.

Has anyone found a feature matrix, or have other recommendations on the long-term best way to manage internal deployments?

+2  A: 

The feature matrix for Install shield can be found here:

http://www.flexerasoftware.com/products/installshield/features.htm

However, for the IIS section (I assume you need IIS based on the link to my earlier question) all it says is "Limited". It is up to you to guess what Limited means, but I am betting it will not support an enterprise level deployment.

Vaccano
Thanks for finding the details. I'm sure you are right about the limitations. They have to limit exactly the things an enterprise customer would need in order to drive sales from customers with enterprise money.
DanO
A: 

InstallShield Express is for basic deployments (it's nothing but glorified WinZip). You can also check my favorite AdvancedInstaller. They have also free express edition but I think both of them will be no use to you, because if you need to do anything with IIS, MS SQL, Active directory, GAC etc, you will need "enterprise level" editions. WiX is free but learning curve is so steep, that it's not worth learning. I regret ever learning it.

If you need this just for internal deployments and cannot spend $1,000 on installer, just create your own "installation" project from scratch. System.EnterpriseServices.Internal namespace contains some useful wrappers for IIS, GAC etc. System.Configuration.Install.ManagedInstallerClass can help you deploy windows services. In other words, you can make your own program from scratch that can handle all necessary steps for deployment of your primary product. Many companies don't use for their flagship products commercial installers, they make their own.

lubos hasko
Thanks for the pointer away from InstallShield, and toward the .Net classes for custom install options. That may help us. I think I'll give WIX a shot, but if I find it as much trouble as you did, its good to know that other companies simply make their own installers if needed.
DanO
You cannot spend 1000 on an installer but you can "waste" weeks of development (developers cost money) to build your own?
anon2009
@anon2009, it might be surprising but in most companies it's easier for developer to work on its own installer for weeks than convincing management to buy $1000 tool. also, $1000 cost for enterprise license is usually per developer, so in larger companies it's actually cheaper and more flexible to build their own tool rather than buying dozen of licenses.
lubos hasko
Lubos, that's exactly the problem. Managers don't understand that spending a month of development building something you can buy and has 1000 more features that your team will ever build, is a mistake.The call it loss of opportunity. Dev teams should be product the company needs to solve solutions, not reinventing the wheel.
anon2009
@anon2009, I agree with you anon2009, but the sad fact is that many many companies scrutinize the budget so much that it is way easier for a manager to get developer time than it is to get even $500. Shortsightedness? Sure, but the managers think they are "cutting costs".
Vaccano
InstallUtil / InstallerClass custom actions are an evil antipattern. If you seriously must "roll your own" service installer ( why you would when MSI already offers the ServiceInstall and ServiceControl patterns is beyond me ) then please do it using WiX's DTF.When you see your first, second, third, 100th 1001 error message, know yee have been warned.
Christopher Painter
@Christopher Painter, why is InstallUtil evil? maybe you're right but this is the first time I hear it.
lubos hasko
+3  A: 

I find that wix is a great choice (in spite of the very very steep learning curve) if you need to manage installers in a complex environment because

  • setup definitions are stored in an XML format
  • it gives you full control to the underlying windows installer technology; the XML schema typically closely follows the windows installer database schema (which is also the main reason why the learning curve is so steep)
  • It is easy to integrate into your automated build
  • Parts of the setup can be generated automatically
  • It allows you to define small reusable modules and manage complex dependencies between them.
  • no cost or licensing issues (before wix we all had to use a single "Installshield PC")

Why the XML format is an advantage: this allows you to fully leverage code versioning systems like subversion or mercurial. Reviewing changes, examining history or even merging changes across branches is a breeze. Compare that to installshield projects which are opaque binary blobs.

What I mean by managing complex dependencies: in our case we have a big pool of reusable component libraries with a complex set of dependencies between them, and many applications that were build on top of that. Before wix, this was a nightmare when a new dependency was introduced somewhere: ALL setups had to be updated.

Now with wix, we have a ComponentGroup for each library, organized into a couple wixlibs. Each component group references other component groups that it depends on with a ComponentGroupRef. Application setup developers only need to reference the component groups of direct dependencies, and wix will do the rest by following the references. As a result, introducing a new dependency only requires making a single local change. Our automated builds and wix do the rest to regenerate all the setups.

Wim Coenen
Thanks, you've convinced me to go with WIX. I hope we can make it work as smoothly as you have.
DanO