Novell has released the OpenSUSE Build System! I am always shocked at how the build, source
control and install process is neglected until the end of software process. There are many more tools for builds now (Ant, NAnt,
Maven, Continuous Integration, MSBuild, Team Systems). But the install portion is still very
neglected unless you want to pay a fortune for Install Shield or some other proprietary
product. Even then the cross platform install
stuff is iffy, let alone the complex problems of installing and upgrading databases
or web servers!
I recently experienced installation frustration when I
installed Ubuntu and found that RPMs don’t
work so well trying to install AVG.
I was pleased to hear Scott
Hanselman mention on Hansleminutes
that he may talk about the Nullsoft
Scriptable Install System (NSIS) in the near future. However, I would rather hear a more broad
approach. I assume he is narrowing
because he is focusing on Windows only. For
that I am a big fan of Windows Installer and WIX.
But what if I create a product that needs to install on multiple operating
systems? Ideally I would like to use the
“native” install technology on the deployment host not some third party that
has invented their own “yet another install technology.” The only people I could find doing this is Mono.
At the Mono Conference,
I discussed the issue of install technologies.
There are many different install technologies:
I talked with Wade Berrier who is the install guy on the mono
team. They use a home grown Ximian
BuildBuddy for package descriptions.
It's an xml format with options to define differences to different
distributions. BuildBuddy
was previously used quite a bit at Ximian, but I believe the Mono team is the
last user of it. BuildBuddy does a lot
more than packaging, but that's what Mono uses it for. Mono only builds rpms with it, but it
supposedly also does debs. There is some
extra overhead in using buildbuddy, so it might not be worth it depending on
how many Linux distros you want to support.
As for the installers, we use a mishmash of things. Linux: Bitrock,
Windows: InnoSetup, Mac:
native package.
Bitrock has the ability to create installers for multiple
platforms. That may be an easy option if
you want to ship similar installers for windows, mac, and linux. It does come with a hefty license cost though
(we get ours for free since we're an opensource project).