I have lately been pondering over methods to deploy cross platform
products. I investigated certain options like
InstallShield's Universal Project and
ZeroG's InstallAnywhere.
But to tell the truth, it goes against the philosophy of installation.
They rely on the presence of the right version of JRE. Some installations
also package the native versions of JRE along with the installation
package. This is quite an overhead. Other products use their custom
homegrown installers. As most of the setup developers and administrators
know, homegrown installers are a disaster waiting to happen. A good
installation technology should do the following.
- Installation - This is the easy part.
- Rollback in case of failure
- Support for dependency and conflict resolution.
- Support for transactional install/uninstall operations. This is
very important for the integrity of the system.
- Support for upgrades.
- Heal installed applications.
Creating a custom installation technology with all these features is
difficult if not impossible. Also it is an investment that is not
required when you can reuse the wheel. Each of the operating systems
or the platform targeted have a native installation technology which
support all of the above points in some way or the other. Most of
these cross platform applications are deployed on Windows, Linux or
Solaris. Windows has the Windows Installer a.k.a MSI package format to
keep an inventory of software that is installed in an extremely
fine granular level. Linux has
RPM and DEB
formats which deal with
packages at a more coarse scale than Windows Installer but have
excellent dependency and conflict resolution. Solaris has its native
PKG format to install packages.
So instead of a cross-platform installation program, we could have
a cross platform tool to create multiple installation packages for multiple
platforms. One of the biggest problems working in this direction would
be that the setup engineer should have a knowledge of all the
platforms that he is packing the application for. This is usually not a
easy job. For instance, I could handle Windows MSI and Linux's RPM & DEB files
but would be a completely lost on a Solaris platform.
The biggest challenge would also be the fact that the customization
scripts and custom actions would need to be coded by the setup
engineer for each platform or package format. But this is a small
price to pay for the amount of flexibility that can be achieved. The
software deployment becomes a breeze and would significantly lower the
(holy grail of three letter acronyms) TCO.