Use the Library Importer Tool to upgrade a VA Smalltalk Library

Now that VA Smalltalk 8.0.3 is out and ships with a few improvements and the first “production release 3.0.2” of the Web Framework Seaside, people may want to upgrade to this new version.

Installing the client is not really an issue, but what to do with your library? There are several options:

  • Perform a full install of the Library Manager along with a new library and import your existing code into the new Library.
    While this means you always have the latest emsrv version (which is not updated very often), it has some drawbacks, most important being that importing code from your old library into the new one means losing all open application and map editions, as well as method editions that never were part of a released class version. This last one is not so much an issue of risking important code, but sometimes having non-released editions of legacy code tells an important story.
  • Perform a full install of the Library Manager along with a new library and import the newer code from that back into your exiting library. This is the preferred option for many VAST pros, because you don’t lose any code, add the new code into the library and have the option of migrating your code whenever you want, even incrementally if needed. The problem with this is that the installation routine installs a new emsrv and accompanying executables. In a setting like we use it here in our offices, this doesn’t even work because the installation routine for the library manager is a GUI program, and our library server is a linux box without X windows.
  • Use the importer tool to import all new code from the new library into your existing library. This one is my favourite. You don’t have to (re)install  stuff you won’t need or reconfigure anything and you can update an existing library with a single command. The only installation needed is your VA Smalltalk client. Although the importer tool is covered in the Migration guide, the way I use it is not described in the documentation.

So how to use the importer tool without installing the VA ST Library Manager?

First of all, you need the importer tool called importer.exe. It is either on your machine if you ever had the VAST manager installed on your machine ( It’s not really important what version it is, anything starting with VisualAge 6.0 should be okay.), or you can find it in the manager installer directory after you’ve unzipped the va*_m*.zip.

Then you need a library manager with all the latest VAST release’s Smalltalk code in it. If you download and extract the manager, it is located in cd_m\manager\manager of the extracted .zip. You don’t even need to extract the whole archive, you can just extract this single file: cd_m\manager\manager\mgr80.dat. In order to save a lot of typing (and problems with entering dos paths with blanks in them), I usually extract the manager file into the vast\inst directory of the installed client.

All you need to do then is to start the importer:

.\importer.exe -z.source=mgr80.dat

What the importer does is to import all newer Application Editions from the new library into your existing Library. It uses either file acces to the existing library or a running emsrv on the Library Server machine. So the importer doesn’t need access to the existing library at all.

If you don’t know where to find the target info, just look into the abt.ini of your development image. You’ll find the server name and path to the library in the EmLibraryInterface stanza:

; DefaultName: This is the full path (including the filename itself) of the
;              manager library. The path must be one reachable by the manager
;              server's file system.
; ServerAddress: This is the host name (or dotted address) of the server
;                machine that provides access to the manager library.
;                Leave this blank for FileI/O.

This will turn into the parameter

There is one weirdness of the importer tool on windows. For paths including blank spaces like “C:\Program Files”, you cannot quote the path, but you need to enter the path in this weird dos notation like “C:\Progra~1\…”. Just in case you have no idea how to convert a path into that notation (like it was the case for me): you simply use the first six letters of the directory name and append “~1”.

Luckily, since our library server is a Linux machine and the path on it doesn’t contain blanks, I didn’t have that problem,

Once you’ve done that, you can install the new development client from the vast803_cw (or _cl on Linux) zipfile and enjoy the new vast version.

You can find more information on the importer tool in the VA Smalltalk Migration Guide, Chapter “Migration Tools”, Section “Manager Import Tool”.