Thursday, April 28, 2011

How to get the path of app(without app.exe)?

I want to get the path of my app like: "\\ProgramFiles\\myApp", I try to use the following code:


string path = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;

But it returns a path which has "\\myapp.exe" at the end.

I also tried:


string path = System.IO.Directory.GetCurrentDirectory();

But it throws an “NotSupportedException”.

Is there any way to get a path without .exe at the end?

From stackoverflow
  • path = System.IO.Path.GetDirectoryName( path );

  • Application.StartupPath should do that for you.

    Update: from you edit I see that you are running on Compact Framework. Then Application.StartupPath will not work. This is the construct that I usually use then:

    private static string GetApplicationPath()
    {
        return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
    }
    
    iPhoney : Sorry for the confusion and thanks for your quick answer ;P
  • You can use Path.GetDirectoryName(string) method passing your original path string as parameter for this. What problem are you trying to solve? Maybe you really need something like working directory?

    iPhoney : Thank you and danbyStrom, your guide works well. I'm trying to play sound using the wav file in my app's directory, so I need its directory(without app.exe).
  • Path.GetFileNameWithoutExtension(path);
    
    iPhoney : Thanks, but this will return the file's name "myApp" just like the method's name mentions. Thanks for the guide on this method anyway.
    JP Alioto : Shucks! That's what I thought you wanted. :)
  • ¿what about using a FileInfo object to extract the directory name?

    In Vb.Net:

    fi = New FileInfo(System.Reflection.Assembly.GetExecutingAssembly.Location)
    path = fi.DirectoryName
    
    iPhoney : "Location" is not found in C# app, but everything in () can be replaced by the filepath I wrote and it works. Thanks.
  • If its an exe as in your case use:

        // Summary:
        //     Gets the path for the executable file that started the 
        //     application, not including the executable name.    
        Application.StartupPath
    
  • More simple than the rest:

    using System.IO;
    using System.Reflection;
    ...
    var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
    
    iPhoney : ummm...it's simple but "Location" is not found(at least in Windows Mobile app).

0 comments:

Post a Comment