Принудительно Inno Setup, чтобы показать приглашение UAC во время установки
Как я могу заставить Inno Setup показывать приглашение UAC, если для запуска определенного установщика во время моей установки требуются повышенные привилегии? Пропуск установки этого установщика не критичен. Я обнаружил, что могу указать функцию AfterInstall для проверки, требуется ли повышение привилегий (IsAdminLoggedOn()), но как показать приглашение UAC для запуска этого установщика от имени определенного пользователя?
1 ответ
Нашел решение. Итак, если вам нужно запустить конкретный установщик с повышенными привилегиями во время установки, вам нужно:
Укажите ваш установщик в
Files
раздел следующим образом:[Files] Source: "SomeSetup.exe"; DestDir: "{tmp}"; AfterInstall: SomeSetupAfterInstall()
В
Code
раздел вы должны определитьSomeSetupAfterInstall()
, Там вы должны запустить свой установщик сrunas
использование глаголаShellExec
если это не админ запустил настройку. Это может быть так:procedure SomeSetupAfterInstall(); var ErrorCode: Integer; TmpPath: String; RunMethod: String; begin TmpPath:=ExpandConstant('{tmp}'); if not IsAdminLoggedOn() then begin RunMethod := 'runas'; end else begin RunMethod := ''; end; ShellExec (RunMethod, TmpPath + '\SomeSetup.exe', '', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode); end;