Discussion:
[omniORB] Win32 Installer version for VC++ MS6, MS7, MS8
Dietmar May
2006-06-05 21:45:21 UTC
Permalink
I've built the omniORB 4.07 release under VC++ 6 SP6, VC++ 7.1, and VC++
8.0 (2005 .NET), and packaged them into an InstallShield installer
package. The make files were changed to build the DLLs and LIBs with
distinct filenames, permitting versions built for all three compilers to
co-exist on the same machine. I didn't diff the exports for the DLLs;
but do know that there were some changes in the name mangling in v7.1
and v8.0 from v6.0, and 6.0 DLLs weren't linking with 8.0 projects. So,
the file names needed to change.

The installer puts omniNames.exe and the main DLLs in the
<windows>/system32 directory (omniORB407_rtd.dll - now
omniORB407_ms6_rtd.dll; omnithread32_ms8_rt.dll;
omniDynamic407_ms7_rtd.dll; etc), but leaves the COS services in the
omniORB4/bin/x86_win32 directory. The installer also has different
user-selectable file groups for binaries, development tools (includes
and libraries), COS support (includes, LIBs, and DLLs), and source code.

The release uses the Python 1.5 libraries that were included with one of
the builds on sourceforge; so no external Python install is needed.
uninstall has been tested, and the system32 libraries should be properly
marked as shared (in case your app also includes the omniORB DLLs). Hmm,
come to think of it, COS services may not be flagged as potentially
shared or in-use. Sorry, we're not using them right now, so that wasn't
important to us. That would be easy for me to change. If anyone has an
interest, please let me know and I'll be glad to rebuild and repost the
package.

The makefiles had only minor changes - maybe one day I'll have time to
do some diffs and post them, and to get the Installshield project
(currently uses the "free" Installshield Visual Studio 98 Edition)
zipped up in case someone wants to do this for newer releases, or to
repackage COS services, etc.

Duncan, if this looks of interest to you, would you kindly download and
post to sourceforge? Otherwise, in the (perhaps unlikely) event this
turns out to be a popular download, my company would get hit with
bandwidth overage fees.

In the meantime, if anyone has an urgent need, the ZIP'd Installshield
package can be downloaded (108 MB) from here:

http://www.dmis.com/download/omniorb407_win32.exe

Dietmar May
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 2727 bytes
Desc: S/MIME Cryptographic Signature
Url : http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20060605/b9ece8df/smime.bin
Duncan Grisby
2006-06-05 23:34:17 UTC
Permalink
Post by Dietmar May
Duncan, if this looks of interest to you, would you kindly download
and post to sourceforge? Otherwise, in the (perhaps unlikely) event
this turns out to be a popular download, my company would get hit with
bandwidth overage fees.
Thanks for doing this. I'm sorry I didn't get around to replying to the
email you sent to me personally about it a while ago.

Rather than me downloading it then uploading it again, please can you
ftp it to upload.sourceforge.net in the incoming directory and let me
know when you've done it?

It's a pretty enormous file. Would it be hard for you to split into
separate installers for the different VC++ versions?

Cheers,

Duncan.
--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Dietmar May
2006-07-25 09:39:37 UTC
Permalink
Hi Duncan,
Post by Duncan Grisby
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

Loading...