T o o l s
Jinstall is a small
utility born out of the frustration of ensuring that different
platforms have a way to extract and conveniently upgrade an archive.
Jinstall converts a directory tree into a java class which can be run to reproduce the original directory.
Download a *self installing
archive (94702 bytes) of the compiled classes and source.
> java install
Enter the directory where you installed jinstall, and type
> java jinstallThis will open up a box with some information you supply to convert a directory into a self installing archive. When you have entered all the information, hit Make Archive to create the archive, then Done to close the application. For information about what each field means, refer to the attributes in the batch usage section.
To run jinstall noninteractively, supply the
information in a specification file, and run jinstall
> java jinstall path_to_spec_fileThe specification file describes some attributes of the archive. Here is an example file
is not very clever, all you do is to provide a URL where you
plan to keep new versions of your jinstall created archive. Jinstall
will create a class called upgrade.class into your
distribution, which the user can run to check, and download and
install the latest copy as it becomes available. It is not a
diff, its the whole new version.
As a suggestion, here is how this might work. Say you write a new application, which you make available for downloading as
http://www.foo.com/app/install.class UpgradeURL = http://www.foo.com/app/Version02.classThe UpgradeURL is what you would put into the specification file when creating the archive. When version 2 is ready, your site now might look like this
http://www.foo.com/app/install.class /\ || http://www.foo.com/app/Version02.class UpgradeURL = http://www.foo.com/app/Version03.classThe arrow denotes a link, so you make sure that Version02.class and install.class are the same things.
When you are ready with your third version, your web site might look like
http://www.foo.com/app/install.class /\ || http://www.foo.com/app/Version03.class /\ || http://www.foo.com/app/Version02.class UpgradeURL = http://www.foo.com/app/Version04.classThis idea of course, to let people with all versions upgrade to the latest version.
|notes and ideas|
currently uses a simple static Huffman tree to compress
the data. This was the simplest
non patented algorithm I could find. Archives typically compress
only by about 25% or so, and the decoding is quite slow. Please educate
me of alternatives.
I realize this tool does not answer many needs of upgrading and installing, please look at (for instance) a JavaWorld * article on software distribution for a "finer grained" approach which upgrades things a class at a time. The *Castanet product from Marimba is a neat commercial solution to keep your software uptodate.
I think the JavaWorld article proposes an approach which is too finegrained, and complex to keep uptodate. Also, it does not directly address the problem of upgrading non Java classes. What would you like to see? Please mail me suggestions, bug reports and ideas, and I will try to make this tool more useful.
T o o l s