Search code examples
outlookvstoclickonceworking-directory

Find Install directory and working directory of VSTO Outlook Addin; or any Office Addin


I created a VSTO Outlook Addin that uses a library Html2Xhtml.dll (.NET) which calls another Html2xhtml.exe by executing System.Diagnostic.Process.Start().

However, it fails to call Html2xhtml.exe (i think) because the working directory even when launched from Visual Studio is the current user My Documents folder. I have no control over the code in Html2Xhtml.dll so I cannot use absolute path; but I suppose I can change the working directory of the Add-in at runtime.

However, If I install this via ClickOnce or some other means where I do not know the install path the user is going to choose, how am I suppose to find my Html2xhtml.exe?


Solution

  • I found the answer here, full credits to robindotnet.wordpress.com.

    //Get the assembly information
    System.Reflection.Assembly assemblyInfo = System.Reflection.Assembly.GetExecutingAssembly();
    
    //Location is where the assembly is run from 
    string assemblyLocation = assemblyInfo.Location;
    
    //CodeBase is the location of the ClickOnce deployment files
    Uri uriCodeBase = new Uri(assemblyInfo.CodeBase);
    string ClickOnceLocation = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString());