views:

48

answers:

1

I have several windows C++ programs that use SQLITE via the DLL. The visual-studio projects properties refer to sqlite3.lib. They build and run OK.

However, when I create an installer, the dependency on SQLITE3.DLL is not reliably detected, the DLL is not included and my clients are plunged into "DLL Hell".

Every single time, I have to manually check that the installer has included the DLL. If it has not, then I have to manually use the "File System Editor" to add the DLL. When I do so, and request the installer to be rebuilt, visual studio suddenly detects the DLL, adds another copy of it, then complains that there are two copies. So I have to stop the build, manually remove the extra copy, and start the built again.

here is a screenshot, showing the double copies.

alt text

This is very frustrating and error prone!

Is there any way to force visual studio to include exactly one copy of the DLL every time without manual intervention?

A: 

Are the dependency properties of "Exclude" set to "False" and "Vital" set to "True"? (Or more extremely, you might even set "Condition" to "True", which would have this component always install.)

ewall
I believe that your solution requires me to manually add the DLL before I start the build, rather than relying on the dependency detection. This would be OK, except that VS2008 then adds a SECOND copy of the DLL and then complains about the fact that there are two copies present.
ravenspoint
I was referring to the "Detected Dependencies" section that appears under the Setup project section.If you're not using a Setup project, then presumably you have SQLITE3 set as a "Reference" if your project properties... in which case, you can highlight it in the project properties' "References" tab, then change the property of "Copy Local" to "True".
ewall