dotNetInstaller looks promising. I was experimenting with it to install java as a prerequisite. It comes with a GUI editor so you don't have to sort out the xml to create a project. The config file is in xml, and the InstallerLinker can be run from the command line. It could be integrated with a build server, though some msbuild tasks would be nice.
project home:
http://dotnetinstaller.codeplex.com/
tutorial:
http://www.codeproject.com/KB/install/dotNetInstaller.aspx
If you want to use WiX, you need at least a basic understanding of how Windows Installer works. The best reference around is The Definitive Guide to Windows Installer, which runs through the all basics with examples using Visual Studio and Orca.
WiX is very easy to learn once you understand Windows Installer.
A properly written Windows Installer package will be more stable and resilient than anything else you can imagine. It'll take a month or so to get your head around it, and you'll get better and learn more about it over time.
On the other hand, NSIS only takes a day to learn - it's just a simple scripting language.
@wcoenen - I'd agree that you definitely will learn more by reading various blogs of those on the WiX team, but I personally find that particular book gives a really solid foundation which makes it easier to understand the concepts they're talking about.
@Sandeep - You need an MSI package for corporate software, if you have no intention of selling your product to customers who need automated deployment in a locked down environment then NSIS will suit you just fine :)
@romkyns InnoSetup is fairly limited in my opinion, you can do just as much with a batch file and a self extracting EXE - it all comes down to your target market, corporate/enterprise clients demand MSI - home users don't care as long as it works and would happily double click on a SETUP.BAT file :)
Best Answer
You should be able to use the
/quiet
or/qn
options withmsiexec
to perform a silent install.MSI packages export public properties, which you can set with the
PROPERTY=value
syntax on the end of themsiexec
parameters.For example, this command installs a package with no UI and no reboot, with a log and two properties:
You can read the options for
msiexec
by just running it with no options from Start -> Run.