我想为应用程序创建一个双重安装程序,可以将其安装为便携版或普通版。
对于便携版,我不想要求管理员权限。对于普通版本,我需要管理员权限才能将应用程序添加到开始菜单和其他内容。
在开始实际安装时,有没有办法提示用户输入管理员权限?也许有插件?我在一个部分内寻找类似RequestExecutionLevel admin
的内容。
答案 0 :(得分: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