2011-10-26 2 views
0

저는 윈도우 설치 프로젝트를 만들고 기본 응용 프로그램에 몇 가지 사용자 지정 설치기 클래스를 추가하여 설치 프로젝트의 사용자 지정 동작 섹션에 포함 시켰습니다. 제 3 자 설치 프로그램을 일반 Visual Studio 설치 프로젝트로 사용하지 마십시오.상승 된 권한을 가진 MSI 제거 프로그램 실행

내 응용 프로그램 용 사용자 지정 설치 관리자 클래스가 있으며 제거 기능에는 프로세스를 종료하고 프로그램 디렉터리에 생성 된 추가 파일을 제거하는 기능이 포함되어 있습니다. Windows XP에서는 작동하지만 7에서는 작동하지 않습니다. 따라서 UAC와 관련 있다고 가정합니다. 관리자 권한으로 강제로 제거 프로그램을 실행하려면 어떻게해야합니까? 설치 제거 오버라이드

여기 내 내 코드 :

public override void Uninstall(IDictionary savedState) 
{ 
    base.Uninstall(savedState); 
    try 
    { 
     KillProcess(); 
     DeleteAppPathFolder(); 
    } 
    catch (Exception) { } 
} 

private void KillProcess() 
{ 
    for (; ;) 
    { 
     Process[] procMain = Process.GetProcessesByName("TaskbarNotificator"); 
     if (procMain.Length > 0) 
     { 
      procMain[0].Kill(); 
     } 
     else 
      break; 
    } 
} 

private void DeleteAppPathFolder() 
{ 
    FileInfo fileInfo = new FileInfo 
     (System.Reflection.Assembly.GetExecutingAssembly().Location); 

    string sProgram = Path.Combine(fileInfo.DirectoryName, GLOBALS.APP_DIR_NAME); 

    if (Directory.Exists(sProgram)) 
     Directory.Delete(sProgram, true); 
} 
+0

MSI를 생성하는지 또는 제품을 제거하는 사용자 지정 응용 프로그램이 있는지 여부는 분명하지 않습니다. –

+0

나는 MSI를 생산함으로써 무엇을 의미하는지 확신 할 수 없다. 사용자 지정 작업의 일부로 MSI 설치 관리자 프로젝트에 추가되는 기본 응용 프로그램에 대한 Installer 클래스를 만들었습니다. 붙여 넣은 코드는 제거 무시 기능의 일부입니다. – ArmenB

답변

2

당신이없는 가장과 연기로 일정이있어 확인 할 수 있습니다 모든 권한을 가진 사용자 지정 작업 실행을 확인합니다. 기본적으로 MSI 내부에는 msidbCustomActionTypeInScript and msidbCustomActionTypeNoImpersonate 플래그를 사용해야합니다.

이 작업은 각 설치 제작 도구마다 다르게 수행됩니다. 설정 방법을 찾을 수 없으면 MSI를 만들기 위해 사용하는 것에 대해 자세히 알려주십시오.

+0

그게 바로 내가하려는 일입니다. 나는 링크를 읽고 있지만 플래그를 입력해야한다는 표시가 없습니다. CustomActionData 필드에 있습니까? – ArmenB

+0

패키지를 만들 때 무엇을 사용하고 있습니까? Visual Studio 설치 프로젝트, WiX 등? –

+0

Visual Studio 설치 프로젝트. 내가 분명히해야 할 것이있다. 제거 프로그램 클래스를 무시하는 설치 프로그램 클래스에 사용자 지정 코드가 있기 때문에 관리자 모드에서 제거 프로그램을 실행하고 싶습니다. 당신이 제안한 해결책이 정확한지 나는 모른다. – ArmenB

관련 문제