InstallShield Under Linux

by Kyle Rankin

Related link: http://www.oreillynet.com/pub/wlg/5369



In his latest blog post, Andy Oram discusses InstallShield's presence at LinuxWorld and how their software is drawing interest from other commercial software vendors as a way to install their programs under Linux. I would argue that Linux already has a better solution, and that vendors would do better to do it "the Linux way" than try to shoehorn the flawed solution Windows users have to deal with.

InstallShield is supposed to solve the problem of program installation so that you simply run "setup.exe" in whatever form, it presents you with some "next" buttons to click, and the app is installed. Of course, if you want to update, you can't use InstallShield for that. You either have to go to the company's site and download updates (if you can, otherwise you have to run through a purchase form first, depending on the update), or in some cases you can use a custom proprietary update feature built into the program.

Of course, these update features are different for every application not just under the hood, but in look and feel. Symantec has their live update, MS wants you to open Internet Explorer and go to their website (or potentially download and upgrade things automatically in the background if you trust their patches won't break anything). Of course, if you want to upgrade Office, you have to visit a totally different site than if you want to upgrade Windows itself. Most other vendors have an update program that falls somewhere in between Symantec and Microsoft.

What I don't understand, is how is this easy? The end user has to learn a new update process for each vendor, and then either runs through the Windows installer to remove a program, or possibly uses an uninstaller the program provides.

For some time now, Linux has offered a much superior solution to this mess, something Windows simply can't top, because vendors can't cooperate. In case you haven't tried this recently, here's how it works:

If you talk to a Debian user for any period of time you will hear "apt-get install" this and "apt-get upgrade" that. For a long time Debian's automatic dependency management with apt, coupled with the large package repository in Debian unstable (13,000 packages or so at the moment) meant you could use a simple command-line program and install and update basically any software you could want.

If any Windows users are scoffing now because I said "command line" and "simple" then just wait, I'll get into the more "user friendly" solution in a bit.

Debian isn't alone with its dependency management. Basically all modern Linux distributions have it, whether it's SUSE, Redhat/Fedora with apt4rpm, yum, and up2date working together, Mandrake with urpmi, etc. All of this means the end user simply learns a single program, and manages any software they would want to install on the system with this program. What's better, the user doesn't have to go looking for the software. The package manager handles that. No more browsing downloads.com or [insert your favorite shareware repository]. You just run a program, tell it what to install, and it goes and gets it for you.

./configure && make && make install to install programs in Linux is obsolete for the desktop Linux user, and any of you old timers that are still telling newbies to install this way, shame on you! Heck, any of you who still tell people to install rpms by downloading the .rpm files and running rpm -Uvh *.rpm, shame on you too.

So, we have these command line applications, but if you want a GUI instead, Linux has those bases covered as well. SUSE's installer already lets you browse through packages to install and update in a complete and simple graphical environment. Redhat/Fedora have Red Carpet, which you can combine with Open Carpet to install and upgrade almost any program you would want just by clicking one or two buttons. Debian provides synaptic, which works in much the same was as open carpet.

Basically in all of these cases, the end user has to learn a single program (that is easy to use as well) and if they want to install a program, they don't have to find it on the web, download it, then run the executable. The user just finds the program in the list of available programs (or uses a simple search to narrow things down if they want), clicks it, and says "install this" and the program does all the heavy lifting. If the user wants to remove something, just choose the program, and click "remove" and the program is removed.

What's better, when a user wants to upgrade all his software, he doesn't have to track down the upgrade program for each application. Just click "upgrade" in the package manager and let it do the work.

The fact is, you simply couldn't have this kind of functionality under Windows. Not because Windows programmers aren't smart enough, just because the proprietary nature of the software, combined with the somewhat defensive nature Microsoft and its competitors often have, means you aren't going to see the kind of collaboration and cooperation it would require to get this sort of solution working. At least not anytime soon.

Even if somehow all major Windows vendors and shareware authors did decide to collaborate, it would still be more complicated for the end user than Linux, because you wouldn't be able to upgrade to Microsoft Office 2003 from Office 2000 with a click of a button. You would have to incorporate some kind of payment structure (possibly with passport) to automate the process.

In addition, these GUI package managers are getting better and easier to use every day. Adding an InstallShield to the mix would just throw a monkey wrench into the works, as you would have to run one program for your open source programs (the majority of your Linux software) then some other proprietary software that was installed with InstallShield, but doesn't provide an integrated update tool.

In my humble opinion, if you are a vendor who wants to break into the Linux market with your software, take some time to learn the "Linux way" of installing software. I know the InstallShield paradigm is familiar and appealing, but in the long run the Linux way is a win for everyone.

How do you install and upgrade your Linux software? Your Windows software? Which do you think is easier?


15 Comments

revdiablo
2004-08-05 15:46:23
MSI packages
It's interesting to note that Microsoft does have a standard packaging format. MSI packages are very similar to most Linux package formats. They are a bundle of files, with scripts to execute on install and uninstall. There is still no repository infrastructure, which I have long argued is the most important piece of the puzzle (this is a topic for a whole 'nother post), but part of the solution is there. Whether Windows users and developers will start to take advantage of MSI, I can't even guess.
fysu_daloc
2004-08-05 16:21:19
both are hard, depends on the user
lets face it, the problem isn't UI whether it be a command line or a GUI; windows or Linux.


3 BIG things that need to be pointed out.


first off, I am a CS student. I also have a job at my schools computing center (min wage easy job, it makes the rent).


1) All that is required of me to do is to put in CDs and click the next button. Professors can not install software, it confuses them. So I say, it doesn't matter if you click one button, or click "next" buttons, or type something on a *gasp* command line. people can't do it. Installing software is like taking your car to the shop, if you don't know simple things, you will get ripped off, so to speak.


2) people that can do this in windows complain about Linux being "difficult". well, you have to consider the majority of them (to my knowledge) don't want to get use to something slightly different. (and of course, to my knowledge, there is a lot of patents on silly UI things. Like menu driven upgrade screens).


3) you have to mention FreeBSD a little. Ports and packages are great, as long as your not scared of the keyboard and the alphabet.
pkg_add -r mozilla
its that easy. it goes to an ftp server for your release (no thinking required) and installs the software. And your set.
If you want to compile you can always say make && make install. and it also goes to the ftp server and gets the code for your release, compiles then installs (no thinking needed).

unoengborg
2004-08-05 20:04:50
Keeping track of files
One thing I like about the linux way of doing things is that you can keep track of where installed files come from.


In rpm based distros, just type:
rpm -qf /my/unknown/file


And the package name shows up.
If you don't know what the package do
type:


rpm -qi packagename


This is a main advantage over most windows installers.


There are also GUI tools, e.g. kpackage that lets you do similar things. Have not used them much though. I learned the command line before the GUI was awailable and it is simple enough for me.


2004-08-05 20:46:58
Missing the point
You seemed to have missed the biggest difference. In Linux, there is a clear separation between installing (dumping the files into the filesystem) and configuring and application. In Windows, installation often kicks off an installation Wizard which forces you to make configuration choices. Besides duplicating functionality in the post-installation, GUI configuration dialogs, you may have to find a way to drive those wizards for unattended installs.
greenfly
2004-08-05 21:38:02
Missing the point
Actually both rpm and deb package formats have the capability to run configuration programs pre- and post-install. You don't see many rpm packages take advantage of this, but most major Debian packages definitely do, and it is one of the great advantages to Debian packages to date.


For instance, when you install exim under Debian, it runs through a nice configuration program that lets you set up a smarthost or otherwise configure your local mailserver. Likewise, when you install X under Debian, the package manager launches into the post-installation script which runs an X configuration program.

kollivier
2004-08-05 22:57:14
It's not easy for developers at all
It may be nice for end users, but let's use the "shareware author" case. OK, let's say I'm a developer, and I want my app to support Gentoo, Debian, RedHat, Mandrake, and SUSE distros. What's my next step? Build 5 packages/installers, including learning three package management systems/packaging formats. (Or convince the vendors to package the software for me...) Furthermore, standards like the LSB are currently so minimal that they don't reduce dependency pains much at all, and while (as you point out) there are package management systems that accurately handle dependencies and are easy to use, they aren't available everywhere and they become yet another system to learn. For the shareware author, learning the "Linux way" actually means learning several package management systems and having a whole slew of "Linux boxes" to compile and test on. What shareware author really has time for this (unless the Linux market is suitably big and bringing in good money)?


OS vendor-supplied packages actually mask these problems because the vendor does a lot of work to make sure these things install properly with their OS. But the fact that vendor packaging of third party apps happens at all is an indication that it's difficult to package software for Linux. A lone developer trying to make a cross-distro package is facing a pretty monumental task.


As a Windows, Mac and Linux developer, I find that the Linux software packaging strategy is by far the most complex and frustrating of the three to maintain from a developer's standpoint. And as a user, I hate that I need to learn different packaging tools and systems each time I try a new distro. I don't think "InstallSheild for Linux" is the answer, as I don't think it really does much at all to simplify the creation of packages for Linux, but at the same time I really, really wish there was a way of packaging apps that worked like Windows and Mac do. Preferrably Mac, with drag and drop installs. One that was so easy to package apps for, it would make vendor packaging just disappear.

sideshowbarker.net
2004-08-05 23:24:28
Amen. Package management systems obviate need for Install
Kyle,


As you point out, this seems like a case where the MS Windows world needs to learn from the free-software community, not the other way around. Debian apt-get can already do anything InstallShield does, including "wizard"-like behavior to walk you through any necessary configuration.


As far as the overal package management that the Debian system does, it seems like there is already something similar in the MS Windows world: Windows Update. I guess that does an OK job of helping Windows users keep the OS itself up to date. But I guess the proprietary nature of applications in the Windows world prevents it from being something that could be used as a package-management system for Windows applications (instead of just the OS).

AdVaroli
2004-08-06 00:11:29
But what about the sales?

Your article is enlightening, but I felt it left something out:


You speak of the ISVs, and of the linux package managers. Yet you don't propose a way of merging them. If you do want to sell your product (e.g. your product is not gratis, open source or free software), you can't chuck it into an rpm/apt repository, which is the main reason of existence for apt, urpmi, yum... You have to resort to something like InstallShield.

Since we (at least I do) want ISVs on Linux, building a bigger market, rejoycing, maybe even frolicking at new opportunities, a middle ground must be found or created.


The missing link would be a platform that allows people to sell software for Linux yet provides an easy, unified installation for the users. Could a payment system be added to the various package managers? Do we have something to learn from Linspire's Click and Run?

micampe
2004-08-06 07:50:07
But what about the sales?
Well, doesn't look that hard, let the users install the software through the repository and then sell "activation keys".
Brandybuck
2004-08-06 10:46:47
But what about the sales?
Package management does not preclude commercial software. Since virtually every package manager supports pre- and post-install scripts in the package, it's a simple matter for the package manager to prompt the user to insert the CD, then continue on with the installation.


This is currently being done with commercial proprietary games on several package managers. Another example is OpenOffice, which comes with an InstallShield-like installer. Yet most of us still used a package manager with it.

Brandybuck
2004-08-06 11:00:17
It's not easy for developers at all
Your argument on having to support multiple distributions is a red herring. While there will always be a few minor quirky distros that will give you fits, for the most part a sensibly created RPM will work on all distros. Even on non-RPM based distros, due to tools like alien. You just have to make sure you build for generic i386 (or 586) arch and choose "standard" file locations like /usr/local/bin. Do not specify specific package names as dependencies, but use the actual libraries needed.


Heck, you can always do what Windows/Mac developers do, and INCLUDE all of your dependencies in the package. Then put everything in a single directory like /usr/local/FubarProPlus. Your package will be much bigger, but as a Windows shareware author, you're probably used to shipping superflous copies of mfcxxrt.dll anyway.

alisonken1
2004-08-06 12:23:46
Missing the point

Don't forget, most package managers have 'auto configuration options' available during install to automate the install/update unattended mode.


The previous post from a shareware author is just confusing the fact that Windows-style installers are written to 1 platform (Windows), but you have multiple versions of the same installer (from proprietary vendors).


Most distributions have a distribution-specific installer/updater program, but the majority of them support most of the other installer formats as well (as a previous poster noted, alien is a good example of a multi-distribution package manager), so you only have to learn ONE installer, but still get the benefits of different distribution-specific formats that will install.


- Ken, Slackware user since 1994

pandasuit
2004-08-10 13:37:40
It's not easy for developers at all
Until a universal package format is accepted in Linux (with varying opinions on whether this will ever happen) we need a system that takes our program and outputs packages in the major formats (or one format that can then be converted into the others) and optionally forwards the packages to the major repositories for consideration.


Does something like that exist already?


As for drag and drop...take a look at ROX:
http://rox.sourceforge.net/phpwiki/


Personally I use Slackware and am used to converting rpm's to the native format with rpm2tgz. I do however know that I cannot speak for the average computer user...nor would I want to.

necro@cablespeed.com
2005-03-16 12:27:06
So where is this install tool in SUSE 9.2?
I assume you are refering to YaST. I tried this method to TRY to install an app I downloaded from KDE-Look.org. I know where I saved the RPM. I tried to "Import" the RPM using the "install and remove software" section of YaST and all I get are errors. Where is all this "ease of use I am reading? Do not get me wrong, I am no lover of M$, but for all of it's downfalls Instalsheild works fairly well. At least I didn't have to spends hours reading man pages and posting questions all over the internet to use Installsheild. It kind of defeats the purpose doesn't it?
Elvis_22
2005-03-30 10:46:43
InstallShield Wizard
I stumbled upon your article because I
was hoping that somewhere on the Web
I would find an Install Wizard for
Linux Programs.


Yup, I'm a Linux Noob.
(Red Hat 9)


I wanted the True version of DivX.
Not Xine running DivX Codecs.


I goto DivX Site.
Download and extract tarball.


I ended up with about six files
in my download folder.


They just look back at me, waiting.
Staring at me.


Okay, put on your thinking beanie.
What am I supposed to do next.


Oh yeah, the sh thingy.
Double Click it.
Nope.
Ummm.... open it.


*&^%$#@p%1 - xyzpdq and a cow too.


Terrific.
Command Line giberish.


I become su.
I paste the script and press enter.
The script fails.
Hmm.


More study.


More attempts, each time applying a
different theory.


Frustration sets in.


I just want a DivX player.


I do more research on the Web.
Hmm, lot's of people saying that the
script doesn't work.


No further instructions on the
DivX site. Just a Download Button.


I gave up trying.


Xine, with Divx Codecs it is.


I began thinking if this were Windows
I would have it installed and playing
an hour ago. Windows give me an .exe
which usually brings up the InstallShield.


I mean, how much easier is it than
an .exe with an InstallShield ??


Ray Charles could do that.


How difficult would it be for a Vendor
to use an empty Visual Shell program with
a few buttons on it (Install, Cancel etc.),
and behind the GUI Shell they plant the
the script that the distributor wants to execute ?


A Generic, one size fits all Linux
installer. The Vendor includes with it
the files to be installed and the script
that installs it.


Bing, bang, done.


Linux needs an InstallShield Wizard.
ahem, just like Windows.


Please make Linux easier.


I want Linux to succeed, but I usually
give up on it because of aggravation and
frustration.


The Linux box just sits in the corner,
staring at me.


Thank you.