Force Inno Setup在安装过程中显示UAC提示

时间:2013-12-09 02:54:16

标签: installation inno-setup privilege-elevation

如果在我的设置过程中运行特定安装程序需要提升权限,我如何强制Inno安装程序显示UAC提示?跳过安装此安装程序并不重要。我发现我可以指定AfterInstall函数来测试是否需要权限提升(IsAdminLoggedOn()),但是如何显示UAC提示以特定用户身份运行此安装程序?

1 个答案:

答案 0 :(得分:0)

找到解决方案。因此,如果您需要在设置期间使用提升的权限运行特定的安装程序,则需要:

  1. Files部分指定您的安装程序,如下所示:

    [Files]
    Source: "SomeSetup.exe"; DestDir: "{tmp}"; AfterInstall: SomeSetupAfterInstall()
    
  2. 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;