Java Glossary : installer
Last updated 2004-06-28 by Roedy
Green ©1996-2004 Canadian Mind Products
Java definitions: 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
You are here : home : Java
Glossary : I words : installer.
- installer
- Most programs now a days come with a commercial installation program. These
are typically much better than the installs of yesteryear, but they still
needlessly annoy and confuse the end users. Installation is the weakest link in
Java. Dealing with conflicting JVM's, conflicting classpaths, conflicting
versions of the plug-in mean the average user has little chance of successfully
installing and running a Java application. See below for a list of the current
installer tools. Before installers can be successful, JVM's must stop all use of
autoexec.bat, and the SET environment, places where different JVMs can collide.
Sun also has to start ensuring that multiple versions of its plug-in do not
interfere with each other.
Here are my rules for writing a good install program:
-
An install should display a pleasing graphic to start. This gives confidence
that the product is of professional quality. However, it is quite unnecessary to
have a Star-Wars level animated production to entertain during the setup. There
should be no need to even look at the install except the first screen on two.
-
The install should ask all its questions up front so you can have a short
conversation with it, then walk away or run it in the background. If it
needs a blank diskette, it should ask for it up front. If it wants a branding
key, it should ask up front, not after 40 minutes.
-
If an install required downloading 10 files, you should select the options up
front, then go home and leave the install to automatically download all the
files overnight and install them unattended. If the phone connection disconnects,
it should restart it automatically, and optionally hang up when done.
-
Keyed serial numbers are a dishonest ploy that have no effect on pirates and
hurt legitimate users. A pirate can simply enter a known valid serial number. MS
does all it can to make sure you will lose your serial numbers or confuse them
between many different products, so that when it comes time to re-install, the
codes won't work, and then you are forced to buy a new copy of the
software. Serial numbers are evil, dishonest and useless. You can have a drawer
full of Microsoft CDs and a drawer full of holograms/serial numbers and no way
of matching the two. If you must use them, consider that users will properly
write them on the CDs where they can't get lost. They have to remove the CD to
read them. Don't abort the entire install if the next CD read after keying fails
because the CD is not yet up to speed or because the user forgot to re-insert it.
-
Branding keys, in contrast, are legitimate. To discourage piracy, the user's
name is branded into the software in a way that if it is tampered with, the
program will stop working. Ideally, software should come pre-branded, or you
should be able to download a branding file when you purchase software that
automates the branding process. If at all possible, installs should avoid making
users type in long strings of gibberish to effect branding. At worst, they could
just have to cut and paste the gibberish strings from some email.
-
Registration branding keys ideally should be purely numeric, broken into groups
of 4. Next best are pure alphabetic, case insensitive, avoiding the letters O, I
and L. Spaces should be ignored. Ideally you can paste in the entire serial
number in one fell swoop.
-
The install should ask only one question per dialog box. It is too easy for the
user to miss one of the questions otherwise, especially the crucial one, which
drive to install on.
-
The install should be prepared to run in the background unless it is a system
level install. Programmers with immense egos believe that users have nothing
better to do that watch their installs copy files. Their installs typically grab
the entire screen and insist users watch them to completion, making users hit
Enter every 15 seconds just to ensure they savour every little animated burble
of ad copy.
-
Installs should not require rebooting the machine, especially not more than once,
even for system software.
-
The install should display a conservative countdown timer of how much longer
this is going take.
-
Upgrade installs should carefully preserve existing preferences, configurations,
plug-ins, hotlists, scripts etc. converting to new formats if necessary.
-
Where it makes sense, upgrades should offer you the choice of preserving the old
version. Where it does not make sense, the install should leave a result
indistinguishable from a clean install of the new version and not leave junk
files and registry entries left behind from the old version. It is extremely
common for installs to fail over a previous version or a previously aborted
install. Vendors should test the install to make sure it does not choke over any
junk left behind by previous attempts.
-
I implemented a zero-click install for save.com. It uses a tiny signed Applet
that downloads an exe and execs it. The exe is a traditional install program. It
asks no questions. It can't get any simpler than that for an initial install.
All you have to do is visit the web page and grant security clearance.
-
Java Web Start is the easiest way to implement
one-click installs, and to ensure automatic updating. Java Web Start is rapidly
becoming the way all Java applications are delivered. It is so much more
convenient for the end user. It is free. The downloads are tiny. It is very
little work to prepare a Web Start app. The only serious drawback is to work
properly it needs a non-standard file server to deal with versioning.
-
Check your questions with a variety of people to see if anyone can
misinterpret them in an ambiguous way. One I question I saw recently "Exiting
now will have a horrible consequence. Continue?" Did they mean continue
with the exit or continue running the program without exiting? I often write
letters to such authors telling them of the ambiguity. The fools write back
telling me which they intended, and explain why there is no problem with
ambiguity if you look at it the right way.
-
You also have the problem to consider of preventing piracy by licensing your
software. You can buy a canned solution like
Alphabase or you can roll
your own branding with ideas from my project
of branding a software rental or the installer
project.
You might consider use of an obfuscator to make
your code harder to reverse engineer.