After many hours of experiments I overcame my problems and I'd like to document them in case it helps others.
1. Do not create a database on one machine and deploy it to an OS of a different version. We should all know this, but I just forgot and followed my normal release procedure. This caused some (not all of my crashes). It's best if apps create a new database
on demand. I had to code more infrastructure to allow this, but it's neater in the end.
2. Beware of feature differences on different machines. On Win7 I had Tagged NotNull columns, which are not allowed in Win 2003. JetCreateColumn was crashing.
3. I am getting different behaviour setting the TempDirectory property on the Instance class and using the Api.JetSetSystemParameter. I have not fully diagnosed this problem, but it seems that if I set the TempPath with the Api I get stalls and file not
found errors. I'm pretty sure it's my fault due to passing path string without the trailing backslash, some experiments later today will confirm that. Actually, looking at the build 54759 source implies my Api calls are missing the backslashes, however, the
symptoms if doing this are unpredictable. Low-level Apis are delicate and unforgiving.
4. Don't forget that esent tries to open any existing database files when you attach and open. Obvious, but I forgot, so my console utility which creates databases was attempting to read a more modern database before it could create the older one. I simply
deleted the existing files and the create works.
So there are some traps to be wary of -- Cheers, Greg