[omniORB] Win32 Installer version for VC++ MS6, MS7, MS8

Dietmar May dcmay at dmis.com
Tue Jul 25 00:39:16 BST 2006


Hi Duncan,
> It's a pretty enormous file. Would it be hard for you to split into
> separate installers for the different VC++ versions?
Finally done - separate installers for MSVC 6, 7.1, and 8.0. Plus, a 
full installer for all 3 compiler versions. All installer packages are 
in self-extracting WinZIP archives for software distribution (the 
self-extractor will launch SETUP.EXE, so it's a one-button operation to 
kick off the install). Note that these files should replace the previous 
4.07 installer package.

Turns out that the DLLs for 7.1 and 8.0 didn't have usable debugging 
info; and I needed to be able to debug some code. So, I've modified the 
mk/platforms files for ms6, ms7 and ms8 to build .PDB debug info. (From 
the VC8 docs "It is not possible to create an .exe or .dll that contains 
debug information. Debug information is always placed in a .pdb file").

While I was in there, the compiler flags that were in win32.mk have been 
copied to platform/_ms6.mk (which is now renamed to be consistent with 
_ms7 and _ms8.mk). win32.mk still has compiler flags; but these are only 
used if not defined by the including makefile (presumably for Win95 and 
NT 3.5 builds).

PDBs are created for both debug and release versions; these are handled 
as a separate installer selection. PDBs are installed into the 
windows/system32 directory, along with the DLLs. COS files (DLLs, LIBs, 
and PDBs) are no longer separate, but are included with the program 
files, development files, and debug files selections of the installer. 
The default for each compiler is to install all files, including source 
code.

omninames.exe appears to be created using runtime library (.DLL) 
imports, rather than static link libraries; and the one included with 
the installer is the MSVC++ 6.0 version. Therefore, the MSVC 7.1 and 8.0 
installers also install the omniORB407_ms6_rt.dll and 
omnithread32_ms6_rt.dll files. Because of this, when building for the 
installer (all compiler versions), MSVC 6.0 MUST BE THE LAST PROJECT 
BUILT, or the omninames.exe will reference a couple of missing DLLs in 
two of the three compiler installs. (Sorry, I found this too late to 
change it; and I'm out of time to invest on this right now). I'd suggest 
that, in the future, omninames.exe be built with static libraries 
instead, even though it would create a larger EXE file.

I've done a diff against the omniORB 4.07 tree, and have isolated the 
files that have been changed (no patches, just a copy of each updated 
file). Hopefully this will make it easier to merge into the code base 
for 4.10.

I haven't tested all of the permutations of all of the compiler 
versions. The MS6 and FULL versions have been most thoroughly tested 
(but I didn't do things like install only source code with no program 
files (DLLs) or dev tools (PDBs)); MS7 and MS8 had full installs plus 
perhaps a couple of other options tested. So far, everything looks OK.

The installs are built using the MS Visual C++ 6.0 Installshield special 
(free) edition; so anyone that owns VC98 should have a way to build the 
install packages. The install directory should be copied into the 
omniORB root directory (eg. c:/program files/omniORB4/install).

Note that Installshield scrambles the files pretty badly. Right now, (at 
least) the file groups  have been manually edited and files sorted, so 
that they can be more easily maintained. However, as soon as an 
Installshield script is compiled (and maybe if media is built) from 
within the Installshield IDE, some of the files get badly mangled. 
Therefore, I STRONGLY suggest that updates to these files be made using 
- argh! - a text editor in a clean directory; files should then be 
copied to the actual working directory. It's a nasty side effect of 
Installshield. Maybe they've updated their newer versions to be 
friendlier to the user's installer command files.

Two other notes on the installer. For some reason, it seems that opening 
the files from the Installshield icon view doesn't change the working 
directory; therefore, the file links (which are all relative - ie 
../bin/x86_win32, ../mk/platforms) reference missing files. The trick is 
to use the File / Open command from the menu; Installshield will warn 
about not being able to add the icon to its workspace, but the project 
will open properly. Also, Installshield doesn't warn about missing 
files: it just churns away merrily for a little while and reports 
success, even if some or all of the files were missing! Always check a 
few of the file groups to be sure that files have been found. There is 
also a log file generated in the Media/---/Log Files directory, which 
does actually contain a list of missing files - be sure to check this 
before releasing installer packages.

Finally, the gnuwin32 lite files from yesteryear probably should be 
updated. I have an Athlon X2 system; and kept getting random hangs and 
crashes while trying to build omniORB. I downloaded a copy of the latest 
Cygwin (as of a few days ago), and copied the corresponding files to 
create an updated gnu-lite. Everything worked so much better - not a 
single hang.

Files have been posted to upload.sourceforge.net. They are as follows:

gnuwin32-lite_060724.zip - copy of my updated gnu-lite files; from cygwin
omni_msX-diffs.zip - file tree of different MK files, to allow building 
packages with _msX naming
omni_msX-install.exe - self-extracting ZIP with installer config files 
(./install tree)
omniORB407_ms6.exe
omniORB407_ms7.exe
omniORB407_ms8.exe
omniORB407_ms-full.exe - installer self-extracting ZIPs, ready to post

Finally, there is a dead file omniORB407_msvc.exe that should be trashed 
- it's a leftover from an aborted ftp put.

A few of the filenames should probably be changed before posting them to 
the omniORB download pages.

That's it! Hope this is helpful. Please let me know if there are any 
questions.

Dietmar May



More information about the omniORB-list mailing list