2013-09-24 8 views
1

응용 프로그램의 이중 설치 프로그램을 만들고 싶습니다. 휴대용 또는 일반 버전으로 설치하십시오.NSIS - 관리자 권한이 필요합니다.

휴대용 버전의 경우 관리자 권한이 필요하지 않습니다. 일반 버전의 경우 시작 메뉴 및 기타 사항에 응용 프로그램을 추가해야합니다.

실제 설치를 시작할 때 관리자 권한을 부여 할 방법이 있습니까? 어쩌면 플러그인으로? 섹션 내에 "RequestExecutionLevel admin"과 같은 것입니다.

감사합니다.

답변

1

RequestExecutionLevel highest은 일반 사용자가 UAC 상호 작용없이 실행할 수있는 동안 관리자 그룹의 구성원을 상승시킵니다. 이 작업을 수행하는 것이 까다 롭고 특정 시나리오에서 UAC가 손상되어 올바르게 수행하기 위해 더 많은 코드가 필요하기 때문에이 예제는 향상되지 않습니다 ...

RequestExecutionLevel highest 
Var InstMode 

!include nsDialogs.nsh 
!include Sections.nsh 
!include LogicLib.nsh 
Page Custom InstallModePageInit InstallModePageLeave 
Page InstFiles 

Section "StartMenu shortcuts" SEC_SM 
; CreateShortcut ... 
SectionEnd 
Section "" SEC_UNINST 
; WriteUninstaller & registry 
SectionEnd 

Function InstallModePageInit 
nsDialogs::Create 1018 
Pop $0 

${NSD_CreateRadioButton} 20u 30u 100% 12u "Normal install" 
Pop $1 
${NSD_CreateRadioButton} 20u 50u 100% 12u "Portable install" 
Pop $2 

${If} $InstMode = 0 
    ${NSD_Check} $1 
${Else} 
    ${NSD_Check} $2 
${EndIf} 
nsDialogs::Show 
FunctionEnd 

Function InstallModePageLeave 
${NSD_GetState} $2 $InstMode 
${If} $InstMode = 0 
    !insertmacro SelectSection ${SEC_SM} 
    !insertmacro SelectSection ${SEC_UNINST} 
    UserInfo::GetAccountType 
    Pop $0 
    ${If} $0 != "Admin" 
     MessageBox mb_iconstop "Administrator privileges required, please restart installer to continue..." 
     Abort 
    ${EndIf} 
${Else} 
    !insertmacro UnselectSection ${SEC_SM} 
    !insertmacro UnselectSection ${SEC_UNINST} 
${EndIf} 
FunctionEnd 
+0

'최고'를 선택하면 강제로 관리자로 설치됩니다. 사용자는 admin입니다. 원래 질문은 시스템 설치를 원한다면 관리자가 설치 시간에 선택할 수있는 부분이 필요하다고 생각합니다. – teeks99

+0

최고를 선택하면 관리자가 선택할 수 있습니다. UAC로 강제로 승격되지만 비 관리자 설치는 올바르게 작동해야합니다. – Anders

관련 문제