Wanted: statement about database externals and libraries (especially on Windows)

Ben Rubinstein benr_mc at cogapp.com
Thu Oct 7 07:06:44 EDT 2004


I've been fiddling for ages, and I'm still confused about exactly what items
are looked for where.  Currently, deploying an app including database
externals feels like trial-and-error for me, which is not a comfortable
feeling.

Where possible, I try to distribute my apps as a single file, self-healing.
On MacOS X, this is now reasonably straightforward as most stuff is hidden
inside the bundle.

On Windows, my traditional method has been to build the standalone so that
it specifies the externals it needs as being in a folder called "service",
accessed relative to the standalone.  The app starts up, and checks that the
folder exists; if it doesn't, or it doesn¹t contain the expected files, it
creates the folder, installs necessary files from compressed copies included
in the app, tells that user it is now properly installed and must be
launched again, then quits.  That way when it starts up the next time, the
externals are properly loaded; I only have to distribute a single exe; the
user just sees the exe, any other stuff I want them to see, and the
'service' folder (I also store other working stuff I need in the 'service'
folder), rather than seeing a folder cluttered up with dlls etc.

The situation now is more complicated (perhaps it always was - I didn't use
to deal with as many database types).  For example, if I build a standalone
with database inclusions for ODBC, MySQL, and Valentina, I get the following
default layout, where folders are marked in [square brackets]:

    myapp.exe
    libmySQL.dll
    VXCMD.dll

    [externals]
        revdb.dll

        [database_drivers]
            dbodbc.dll
            dbvalentina.dll
            dbmysql.dll

Now, by setting the externals property of the stack, I should be abled to
put "revdb.dll" where I like.  But where will it look for the
"database_drivers" folder?  In the same folder as whereever I put revdb.dll,
or always in a folder called external next to the app?  Is there any way to
configure this?

And what about those two dlls at the top level, "libmySQL.dll" and
"VXCMD.dll".  Must they always be in the same folder as the app?  Can this
be configured in any way?

  Ben Rubinstein               |  Email: benr_mc at cogapp.com
  Cognitive Applications Ltd   |  Phone: +44 (0)1273-821600
  http://www.cogapp.com        |  Fax  : +44 (0)1273-728866



More information about the use-livecode mailing list