views:

263

answers:

4

I am working on an installer for a new version of my project (C#).

Previously, I've used Inno Setup to create .exe files for installing my projects on other computers in the workplace. While reading through some tutorials, though, I came across Windows Installer XML, which uses XML files to build a .msi installer.

My project will be available on a network share that all the employees have access to so they can install the software (I'm currently working on an update checker as well)

What are the major differences between .exe and .msi installers? Why would I want to chose one over the other? Would either make more sense given my specific environment?

I found some of the information at this question, but there was not a lot of information.

+4  A: 

I wouldn't use WiX for a new project. I'd use an 'Installer Project' in Visual Studio to build an MSI. An installer project is much, much easier to put together.

Many exe installers are actually stubs or containers that hold an MSI, btw.

I guess you've checked out http://en.wikipedia.org/wiki/Windows_Installer?

MSI's give administrators the ability to restrict installs, rebase installs, change or add custom actions, automate installs/reinstalls/uninstalls, standard logging and switches. It just really integrates into a corporate IT environment ( http://technet.microsoft.com/en-us/library/bb742606.aspx ).

A custom installer may have many of those features, but that would depend on the installer package.

kervin
+1  A: 

Most EXE installers available today are simply stubs to verify that the target machine has just enough support to launch an MSI stored within the EXE. They do basic windows version checking and Windows Installer version checking, then essentially invoke msiexec and let Windows Installer handle the rest.

For a very basic installation, the Installer Project in Visual Studio can get you by, but for just about any kind of real customization or tweaking you'll need a real MSI editor. We use WiX and love it - but it's a bear to learn. If you've got the cash you can invest in InstallShield - but that has it's own set of quirks.

Paul Alexander
+3  A: 

MSI is configurable while EXE is not. I know this doesn't answer your question directly, but I thought I should point towards the ClickOnce technology.

MSDN: See example here.

Simply stated, a ClickOnce application is any Windows Presentation Foundation, Windows Forms, or console application published using ClickOnce technology. You can publish a ClickOnce application in three different ways: from a Web page, from a network file share, or from media such as a CD-ROM. A ClickOnce application can be installed on an end user's computer and run locally even when the computer is offline, or it can be run in an online-only mode without permanently installing anything on the end user's computer. For more information, see Choosing a ClickOnce Deployment Strategy.

KMan
Interesting - I was aware of ClickOnce, but I thought it was just a way to distribute software over the internet. I'll have to take a look at the network share stuff - thanks!
Jared Harley
A: 

IndigoRose's MSI factory is extremely powerful and much, much cheaper than InstallShield.

It uses WiX internally and allows you to modify the XML files in any way you like. The bootstrapper (.exe, if you add one) has a powerful scripting engine based on Lua to do... well anything.

iconiK