cancel
Showing results for 
Search instead for 
Did you mean: 

Custom Ado.net deployment problem in SQL Anywhere 10

Former Member
3,125

We install SQL Anywhere in a custom manner together with our software. SQL Anywhere gets installed under our applications main directory instead of directly on "Program Files\\SQL Anywhere 10", but other than that, the folder and file structure remain the same. Yesterday when testing our deployment, we got the error message that dblgen10.dll cannot be found. The easy solution would be to copy the dblgen10 file in the same directory as our application executable, but i really don't want to do that. If i use a generated SA10 Deploy, the issue goes away. So the question is, what does the SA10 deployment do that our custom deployment is not doing? Are there any registry entries or other variables being set? The custom installation is done to avoid conflicts if our customers install other versions of SA10 on their own, so we cannot rely on the %SQLANY10% variable.

Accepted Solutions (1)

Accepted Solutions (1)

MarkCulp
Participant

SQL Anywhere looks in a number of places in its attempt to find the language resource file - the exact list of places (and order) vary slightly for each version, but the list is basically the following (from the 10.0.1 source):

  • same directory as the current module that is looking for it (e.g. dbodbc.dll)
  • same directory as the executable (e.g. your application exe)
  • the current working directory
  • the %SYBASE (environment variable value) directory, if set
  • the 'win32' directory beside the directory of the current module
  • the 'win32' directory beside the directory of the executable
  • the directory specified in the [HKCU|HKLM]\\Software\\Sybase\\SQL Anywhere\\10.0\\Location registry keys
  • the Windows directory
  • the Windows system directory
  • any directory listed in the %PATH environment variable
  • the %ASANY[10] (env var value) directory, if set

The above applies for Windows. There are a few other places that are searched on the Unix platforms.

So in your case, the difference may be the existence of the registry setting? ... But provided that dblgen.dll is in the same directory as the .Net library I would have thought that the first location (same dir as module) would have found it? I.e. your application should not need to set any registry settings in order for it to work.

Former Member
0 Kudos

It seems that the only easy way to solve this is to just copy the dblgen10.dll to the application directory. Thanks for the answer!

Answers (1)

Answers (1)

VolkerBarth
Contributor
0 Kudos

For Windows systems, the difference may be the PATH environment variable, which is set by default to the SQL Anywhere binary directory, i.e. %SQLANY10%\\win32 for SA 10 32 bit or to %SQLANY11%\\bin32 for SA 11 32 bit.