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動詞を使用してインストーラーを実行する必要があります。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 に答える