Background: We are developing a 32-bit Windows desktop application. Development Environment is 32-bit Windows, Visual Studio 2013, Windows Forms, Microsoft .NET Framework 4 Client Profile, SQLite database (via System.Data.SQLite ADO.NET data provider). SQLite works great in the development environment.
SQLite was installed on our Development systems as instructed:
1. Download sqlite-netFx40-binary-bundle-Win32-2010-220.127.116.11.zip.
2. Extract to: (solution folder)\Externals\
3. Add Reference to: (solution folder)\Externals\System.Data.SQLite
Application deployment is via Inno Setup. System.Data.SQLite.dll and the database are installed to the application install directory.
Have been testing installs on Windows 7 and Windows 8.1. Previously was using an MS Access database, and they always worked until we switched to SQLite. We considered using SQL Server CE, but then learned that it is DEPRECATED because Microsoft is leaning towards platform-independent solutions. Great! So, we went with SQLite.
Problem: Since switching to SQLite, am unable to get the installed application to run on Windows 7 32-bit client. App launch fails with Runtime Error dialog:
An error has occurred in the protection runtime.
A detailed log can be found here:
(path to log file)
If the problem persists please contact your software supplier.
The log file contains this error message: "System.IO.FileNotFoundException: Could not load file or assembly 'System.Data.SQLite.dll' or one of its dependencies. The specified module could not be found.
What I have tried:
Have verified System.Data.SQLite.dll and the database were installed to the application local directory. Microsoft .NET 4 Client Profile has been installed. Have searched the web and see much conflicting/confusing information. This is what the System.Data.SQLite FAQ says:
(9) How do I install System.Data.SQLite on end-user machines?
Strictly speaking, there is no need to install System.Data.SQLite on any end-user machine (e.g. via the setup). The recommended way to deploy the assemblies is "application local" (i.e. copy them to the directory the application is installed to). Installing the assemblies into the Global Assembly Cache is not recommended as it may cause conflicts with other applications installed on the machine.
OK! So, WHAT EXACTLY DO
I NEED TO DEPLOY TO THE CLIENT??? What do they mean by
"the assemblies" when it comes to deploying a 32-bit Windows/VB.NET/Windows Forms desktop
application with embedded SQLite database???