How to specify the path to a file on a Windows CE device?

B. Clay Shannon picture B. Clay Shannon · Nov 26, 2013 · Viewed 8.9k times · Source

I copied over some code from a test app:

const string sdfPath = @"C:\WebAPIClient\WebAPIClient\bin\Debug\DBPlatypusCompactDB.sdf";
string dataSource = string.Format("Data Source={0}", sdfPath);
int countAdded = 0;

    if (!File.Exists(sdfPath))
. . .

...which works fine there; but on trying to convert it for use in the project that will run on the Windows CE device:

const string sdfPath = @"Computer\WindowsCE\\\Program Files\hhs\DBPlatypusCompactDB.sdf";            
. . .

...(this is the path I copied from Windows Explorer (the folder to which the exe is deployed, which has no subfolders)), I get "path not found" or "path not valid" or something similar.

How am I to designate the path?

Answer

ctacke picture ctacke · Nov 26, 2013

It's not really clear what you're trying to do, so here are some general pointers:

  1. Windows CE doesn't understand relative paths. Period. So all paths must start with a backslash (\) character.
  2. "Computer" is highly unlikely to be part of the path on your device. Use Explorer on the device ansd look at the path there. What you're after is probably something like \Program Files\hhs\mydatabase.sdf
  3. Desktop paths to a device are not actual paths. They are shell plug-in trickery. A path on the PC like My Device\Program Files\foo.bar is not a path resolvable by any File APIs on the desktop. If you want to access a device file from a PC app, you must use something like RAPI to pull the file locally, then use the local copy