2014-05-15 3 views
0

안녕하세요. 저는 PC에 2 개의 WPF 응용 프로그램을 만들었습니다. 첫 번째가 "OneApp"이고 다른 하나가 "TwoApp"라고 가정 해 봅시다. Visual Studio 2012에서이 파일을 만들었습니다. 설치 프로그램에서 OneApp를 설치했습니다. 이제 "TwoApp"응용 프로그램에서 프로그래밍 방식으로 "OneApp"를 실행하려고합니다. 그러면 "OneApp"응용 프로그램의 경로를 어떻게 찾을 수 있습니까? 또는 "OneApp"설치 디렉토리를 수동으로 설치하면 수동으로 설치할 수도 있습니다.Visual Studio 2012에서 설치된 응용 프로그램의 폴더 경로를 얻는 방법

편집 : 제안

나는 System.IO.Path.GetDirectoryName을 시도했다. 하지만 내가 다른 일반 응용 프로그램과 같은 프로그램 파일에 설치할 수 없습니다

enter image description here

다음과 같이 폴더 경로는 무엇입니까?

+0

죄송합니다. 질문을 잘 이해하지 못합니다. 이거 아세요? [Process.Start] (http://msdn.microsoft.com/en-us/library/vstudio/system.diagnostics.process.start)? – Dave

+0

아니요, OneApp가 설치된 위치는 어디입니까? 그래서 "TwoApp"응용 프로그램으로 OneApp 응용 프로그램을 시작할 수 있습니다. – VarunJi

+0

경로는 설치된 ClickOnce 응용 프로그램의 경로와 같으며 설치 기능을 사용하여 설치 한 경로가 아닙니다. * ClickOnce 응용 프로그램이면 올바른 설치 경로입니다. 보안상의 이유로 AppData 폴더에 * 모든 * * 저장됩니다. – Sheridan

답변

0

모든 시도 후 시도해보십시오. 방금 블로그에서이 문제에 대한 더 나은 해결책을 찾았습니다. 링크

http://robindotnet.wordpress.com/2010/03/21/how-to-pass-arguments-to-an-offline-clickonce-application/

내 코드는 응용 프로그램을 얻을입니다 : 먼저, 해당 응용 프로그램의 바로 가기를 얻을 잘 작동하는 바로 가기를 엽니 다. 위의 링크에서 다른 응용 프로그램으로 데이터를 보내는 방법을 볼 수도 있습니다.

StringBuilder sb = new StringBuilder(); 
sb.Append(Environment.GetFolderPath(Environment.SpecialFolder.Programs)); 
sb.Append("\\"); 
//publisher name is OneApp 
sb.Append("OneApp"); 
sb.Append("\\"); 
//product name is OneApp 
sb.Append("OneApp.appref-ms"); 
string shortcutPath = sb.ToString(); 
Console.WriteLine(shortcutPath); 

//Start the One App installed application from shortcut 
System.Diagnostics.Process.Start(shortcutPath); 
1

wifomrs에는 다음과 같습니다

wpf의 경우 밤은 그러나
Application.StartupPath 

, 당신이 찾고있는 STH 같은 :

System.IO 참조를 추가

using System.IO; 

string baseDir= System.AppDomain.CurrentDomain.BaseDirectory 

또는

string baseDir= System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName) 
+0

System.IO.Path.GetDirectoryName (System.Diagnostics.Process.GetCurrentProcess(). MainModule.FileName)을 시도했지만 현재 응용 프로그램에 대한 경로를 표시했습니다. c : \ program files \ ...와 같은 다른 일반 응용 프로그램과 같이 정적 경로를 매번 얻을 수는 없습니까? – VarunJi

+0

어떤 오류가 발생합니까? – apomene

+0

내 질문과 의견을 모두 업데이트했습니다. – VarunJi

3

일반적으로 하드 드라이브에있는 위치는 Assembly입니다. 이것은 당신에게 (이 분명히 C 드라이브에있는 경우) C:\로 시작하는 경로를 제공해야합니다 ...이 시도 :

: 저에게이 있습니다 내 개발 환경 (비주얼 스튜디오)에서

Assembly assembly = Assembly.GetExecutingAssembly(); 
Uri uri = new Uri(Path.GetDirectoryName(assembly.CodeBase)); 

을,

C :/DevelopmentProjects/프로그램 응용/프로젝트 이름/빈/디버그

예. 어셈블리가 실행되는 곳입니다. 설치된 응용 프로그램에서 해당 어셈블리가 실행되는 위치를 알려야합니다.

+0

을 확인하십시오. 그러나 "TwoApp"가 "OneApp"설치 디렉토리를 얻는 방법은 무엇입니까? 나는 "OneApp"설치된 폴더 위치가 매번 변경 될 것이라고 생각합니다. – VarunJi

+0

@ VarunJi : 설치된 응용 프로그램의 경로를 얻으려면 ** 레지스트리 **를 사용해야 할 수도 있습니다. 여기에서 찾을 수 있습니다 - HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Uninstall. 사용해보고 알려주십시오 ... –

+0

예, ClickOnce 응용 프로그램이라면 맞습니다. 더 나쁜 것은 이름처럼 끔찍한 guid로 보여준 것과 같은 폴더에있을 것입니다. 추측하거나 계산할 수없는 폴더입니다. – Sheridan

관련 문제