Where does a deployed application look for data files?

I have compiled a MATLAB application into a .NET assembly. I can launch the assembly ok from C# (using Visual Studio 2013), but it fails when it looks for a file (using xmlstringinput) that is normally found in the MATLAB path (when not deployed).
I have tried placing copies of this file in a number of different places, with no success. I suspect that it will work to specify that the file be included in the deployment package, but I would rather that it load this file at runtime rather than be packaged with the deployment.
Where does a deployed application look for data files?

 Accepted Answer

You're best off not referring to files without the full path prepended. The folder where you put the executable is not the "real" folder where the "real" executable is located. What the first one does is to unpack the real executable and all the other stuff you included with it into some secret hidden folder. What I do is to ship data files and install them to some known location - a known folder - and then have my code point to it there. There are ways to get the actual folder it's running from if you need it.

1 Comment

Gary
Gary on 17 Jan 2015
Edited: Gary on 17 Jan 2015
I have come to the same conclusion - that I need a fully qualified path. But I think the best approach (and perhaps you intended this) is to create a system environment variable (like MCRDeployedFilesPath) with the target folder name, and use it (e.g., pathname = getenv('MCRDeployedFilesPath')) for file loading.

Sign in to comment.

More Answers (1)

Sorry for my error - it does work to put the desired file(s) in the directory with the executable and the built DLL (.NET assembly).
However, it does not seem to work if instead I specify that the datafile be packaged with the assembly (using the -a option in the Compiler).

Categories

Products

Asked:

on 16 Jan 2015

Edited:

on 17 Jan 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!