> 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

Reply via email to