2014-01-22 4 views
2

installshield에서 설치 한 다른 Winform 응용 프로그램을 제거해야하는 winform 응용 프로그램을 수행하고 있습니다. 나는설치된 응용 프로그램에서 GUID 가져 오기 C#

Process.Start를 ("에 msiexec/X {XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX}")입니다 UNISTALL하는 올바른 방법을 검색 한; 여기서 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx는 제거 할 응용 프로그램의 GUID를 나타냅니다.

하지만 어떻게 응용 프로그램에서 GUID가 .Assembly 내가

VAR 어셈블리 = 대해서 typeof (프로그램)을 발견

text.exe이라고 찾을 수 없습니다; var 속성 = (GuidAttribute) assembly.GetCustomAttributes (typeof (GuidAttribute), true) [0]; var id = attribute.Value;

그러나 이것은 현재 응용 프로그램에서 GUID을 검색합니다.

아이디어가 있으십니까?

+0

레지스트리에서 찾으셔야합니다. 그리고 수동으로이 작업을 수행하고 프로그래밍 방식으로 실행 파일 이름에서 찾기보다는 프로그램에서 찾은 GUID를 추가합니다. 실행 파일 이름과의 충돌 가능성이 너무 큽니다. –

답변

3

해당 GUID는 설치자와 관련된 GUID입니다 (정확하게는 Package Code으로 알려짐).이 GUID는 HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall에서 가져올 수 있습니다.이 기능에 익숙하지 않습니다. 응용 프로그램에서 직접 가져옵니다.

* 편집 WiX 스크립트에 액세스 할 수 있으면 (WiX를 사용하여 MSI를 생성해야 함) Product 요소의 Id 특성이어야합니다. Orca와 같은 도구를 사용하여 이미 생성 된 MSI의이 속성을 확인할 수도 있습니다.

+0

64 비트 OS에서 32 비트 프로그램 인 경우 'Wow6432Node'도 확인할 수 있습니다. 그래서'HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall' –

관련 문제