Using x86 vs. x64 DLLs for SQLite
AppStudio and the AppServer both have dependency on the SQLite library. AppServer uses it for SQLite file generation for config and data sync, while AppStudio uses it for packaged config file generation. AppStudio does NOT need this 2 DLLs for SQL generation for offline.
One complexity with the SQLite library is that it uses the native layer and has CPU specific compiled code. This means that there is a different DLL for a 64 bit CPU (x64) vs. a 32 bit CPU (x86). To handle this situation automatically and make this seamless to the end user, Verivo ships both versions of the DLL. At application startup, we try to automatically copy the right DLL from the lib directory to the bin/base directory.
The lib folder contains the following files –
Out of this folder we copy either the two .x64 files or the two .x86 files and drop the unnecessary extension to end it with a .dll. This works well most of the time.
However, if the running application does not have the ability to copy/paste new files or rename files, this process can break down. When this breaks you see the following symptoms:
- Unable to login on the client as the server is not able to generate config
- AppStudio is not able to generate packaged config files (they'll be 0kb zip files).
To work_around these issues, you can either :
(1) Grant the current account/executable elevated privileges. This can be done in IIS by right clicking your Virtual Directory-->Permissions-->Grant the AppPoolOwner account Read & Execute permissions.
(2) Manually copy/paste the right file based on the chipset.