Inno Setup - 如果设置为PrivilegesRequired =最低,如何使用管理员权限运行应用程序?

时间:2017-06-15 11:49:08

标签: inno-setup elevated-privileges

我想用PrivilegesRequired=lowest运行设置。如何设置和运行应用程序(dxwebsetup.exe)以使用具有管理员权限的设置进行安装?

我的代码(Inno Setup - Avoid displaying filenames of sub-installers):

procedure CurStepChanged(CurStep: TSetupStep);
var
  ProgressPage: TOutputProgressWizardPage;
  ResultCode: Integer;
begin
  if CurStep = ssInstall then
  begin
    if IsComponentSelected('DirectX') then
    begin
      ProgressPage := CreateOutputProgressPage('Installing prerequsities', '');
      ProgressPage.SetText('Installing DirectX...', '');
      ProgressPage.Show;
      try
        ExtractTemporaryFile('dxwebsetup.exe');
        StartWaitingForDirectXWindow;
        Exec(ExpandConstant('{src}\_Redist\dxwebsetup.exe'), '', '', SW_SHOW,
             ewWaitUntilTerminated, ResultCode);
      finally
        StopWaitingForDirectXWindow;
        ProgressPage.Hide;
      end;
    end;
  end;
end;

1 个答案:

答案 0 :(得分:1)

ShellExecrunas动词一起使用,而不是Exec

ShellExec('runas', ExpandConstant('{src}\_Redist\dxwebsetup.exe'), '', '', SW_SHOW,
          ewWaitUntilTerminated, ResultCode);

当前Inno安装过程在没有管理员权限的情况下运行时,您将收到UAC提示。