2014-12-08 4 views
1

일반 사용자로 실행할 수있는 응용 프로그램 용 NSIS 설치 관리자가 있습니다. 그러나 사용자가 "Program Files"디렉토리에 설치하려면 관리자 권한으로 설치 프로그램을 시작하여 수행 할 수 있습니다.설치 관리자에 따른 NSIS 제거 프로그램 권한

이제 관리자 권한으로 설치가 수행 된 경우에도 기본적으로 제거 프로그램이 사용자 권한으로 시작된다는 문제가 있습니다. 이로 인해 제거 제거가 자동으로 실패합니다. 악화 : 심지어 파일을 삭제하지 않고도 제거 프로세스가 성공적으로 완료되었음을 나타냅니다.

제 질문은 설치 과정에서 설치 프로그램과 동일한 권한을 필요로하는 설치 프로그램을 만들 수 있습니까?

답변

3

이 수표는 직접 처리해야합니다. 의 정보를 저장하는 매우 도움이 제안에 대한

InstallDir $temp\instdir 

Section 

UserInfo::GetAccountType 
Pop $0 
StrCmp $0 "Admin" 0 +2 
StrCpy $0 1 
IntOp $0 $0 & 1 ; $0 is now 1 if admin or 0 if not 

SetOutPath $InstDir 
WriteUninstaller "$InstDir\Uninstall.exe" 
FileOpen $1 "$InstDir\Uninstall.exe" a 
FileSeek $1 0 END 
FileWriteByte $1 $0 
FileClose $1 

SectionEnd 


Section Uninstall 

FileOpen $1 "$ExePath" r 
FileSeek $1 -1 END 
FileReadByte $1 $0 
FileClose $1 
DetailPrint "Installer was admin: $0" 

SectionEnd 
+0

감사합니다 : 당신은 사용자 정보 플러그인 설치에 check if you are admin 다음은 .INI에서 레지스트리 또는 append uninstaller.exe를에 대한 정보를 결과를 저장할 수 있습니다 제거 프로그램. 현재 레지스트리 항목을 쓰지 않습니다. 설치 관리자가 관리자 모드에서 실행되는 경우 제거 프로그램이 조건부로 "RequestExecutionLevel admin"을 수행 할 수 있다면 어떤 아이디어가 있습니까? – wls

+2

"RequestExecutionLevel highest"를 사용할 수 있지만 조건부는 사용할 수 없습니다 ... – Anders