1

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

4

1 回答 1

0

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

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

    [Files]
    Source: "SomeSetup.exe"; DestDir: "{tmp}"; AfterInstall: SomeSetupAfterInstall()
    
  2. Code部分中,您将定义SomeSetupAfterInstall(). 如果不是管理员启动的设置,您应该在此处使用runas动词 using运行安装程序。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;
    
于 2013-12-10T04:21:58.753 回答