セットアップ中に特定のインストーラーを実行するために昇格された特権が必要な場合、Inno Setup に UAC プロンプトを表示させるにはどうすればよいですか? このインストーラーのインストールをスキップすることは重要ではありません。AfterInstall 関数を指定して、特権の昇格が必要かどうかをテストできることがわかりました (IsAdminLoggedOn()) が、このインストーラーを特定のユーザーとして実行するように UAC プロンプトを表示するにはどうすればよいですか?
1117 次
1 に答える
0
解決策を見つけました。したがって、セットアップ中に昇格された特権で特定のインストーラーを実行する必要がある場合は、次のものが必要です。
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;
于 2013-12-10T04:21:58.753 に答える