> The search path stuff is a mess under Microsoft.
Yes, it sure is. The link you sent has some interesting stuff. In
particular, this point is key:
Before the system searches for a DLL, it checks the following:
(1) If a DLL with the same module name is already loaded in memory, the
system uses the loaded DLL, no matter which directory it is in. The system
does not search for the DLL.
(2) If the DLL is on the list of known DLLs for the version of Windows on
which the application is running, the system uses its copy of the known DLL
(and the known DLL's dependent DLLs, if any). The system does not search for
the DLL. For a list of known DLLs on the current system, see the following
registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\KnownDLLs.
Re (1), I ran a report to view loaded DLLs and no version of SQLite is
there. Re (2), I checked the registry entry shown and no version of SQLite
is in the KnownDLLs key.
With (1) and (2) out of the way, the search order is clear: regardless of
the SafeDllSearchMode setting, it will always search the directory from
which the application loaded first. Hence, copying the latest <sqlite3.dll>
into the Connection Manager app directory should have worked, but it did not
(see below).
> you may be able to copy the latest sqlite3.dll into the one application
directory and replace the old one.
That's what I did to the one in the HP Connection Manager directory. Didn't
fix the problem. There is no <sqlite3.dll> anywhere in the TurboTax
directory structure, so nothing to replace. Yet everyone reporting the
problem on the HP forum says the problem started when they installed TT (CM
is typically pre-installed on HP machines and works fine until TT is installed).
> To the best of my knowledge it's upwards compatible.
Yes, Richard stated that much earlier in the thread ("SQLite is always
backwards compatible."), but it has long since been trimmed out, as frequent
and heavy trimming seems to be the MO in this group. Speaking of that, I
also documented ALL of the <sqlite3.dll> files earlier in the thread. In
addition to CM, they are:
c:\Program Files (x86)\Calibre2\DLLs\sqlite3.dll
c:\Program Files (x86)\Common Files\Apple\Apple Application Support\SQLite3.dll
c:\Program Files (x86)\Nuance\PaperPort\sqlite3.dll
Calibre and PaperPort are working fine (so is TT). The only piece of Apple
software on the machine is QuickTime, and it is working fine. None of them
copied the SQLite DLL into a system folder and none of them placed it in the
list of known DLLs.
> Anybody who uses an SQLite DLL should be hung up by their boots.
Richard, Simon, and you are seeing eye-to-eye on this. Earlier in the thread
(since trimmed, of course), it was stated that SQLite was designed to be
tiny so that each app could include the entire system without draining
resources significantly (this would solve the problem of apps stepping on
each other with different versions of <sqlite3.dll>). So if that's the case,
why not kill the distribution of <sqlite3.dll> and force the developers to
do it the right way? Regards, Joe
-------- Original Message --------
Subject: Re: [sqlite] Incompatible versions of SQLite on same system
From: Black, Michael (IS) <michael.bla...@ngc.com>
To: General Discussion of SQLite Database <sqlite-users@sqlite.org>
Date: Monday, January 16, 2012 14:40:23
You don't need to "register" the SQLite DLL. That's for ActiveX and COM DLLs.
Not ones that just export functions.
The search path stuff is a mess under Microsoft.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx#standard_search_order_for_desktop_applications
You may be able to get away with getting rid of ALL sqlite3.dll's and just
putting the latest version in %SystemRoot%\system32 -- or you may be able to
copy the latest sqlite3.dll into the one application directory and replace the
old one. To the best of my knowledge it's upwards compatible.
<soapbox>Anybody who uses an SQLite DLL should be hung up by their
boots</soapbox>.
Michael D. Black
Senior Scientist
Advanced Analytics Directorate
Advanced GEOINT Solutions Operating Unit
Northrop Grumman Information Systems
_______________________________________________
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users