2013-12-09 7 views
1

설치 중에 특정 설치 프로그램을 실행하는 데 높은 권한이 필요한 경우 Inno 설치 프로그램에서 강제로 UAC 프롬프트를 표시 할 수 있습니까? 이 설치 프로그램을 건너 뛰는 것은 중요하지 않습니다. 권한 상승이 필요한지 (IsAdminLoggedOn()) 테스트하기 위해 AfterInstall 함수를 지정할 수 있다는 것을 알았지 만이 설치 프로그램을 특정 사용자로 실행하라는 UAC 프롬프트를 표시하는 방법은 무엇입니까?Force Inno 설치시 설치시 UAC 프롬프트 표시

+1

당신은 설치를 다시 실행해야 할 것 그리고 이미 마법사 단계에서 선택한 항목 사용자가 기억해야합니다. 비슷한 질문이 [이 질문에] (http://stackoverflow.com/q/20197554/960757). – TLama

+0

내 경우가 상당히 다릅니다. 전체 설정을 다시 시작할 필요가 없습니다. 설치하는 동안 높은 권한으로 특정 .exe를 실행하기 만하면됩니다. 위에서 언급 한 'runas'에 대한 귀하의 제안은 저를 도왔습니다. 고맙습니다! – Megamozg

답변

0

해결책을 찾았습니다. 당신이 당신의 설치 과정에서 상승 된 권한으로 특정 installator를 실행해야한다면, 다음이 필요합니다 다음과 같이

  1. Files 섹션에서 installator을 지정하면 SomeSetupAfterInstall()을 정의해야한다

    [Files] 
    Source: "SomeSetup.exe"; DestDir: "{tmp}"; AfterInstall: SomeSetupAfterInstall() 
    
  2. 섹션 Code에서. 관리자가 설치를 시작하지 않은 경우 ShellExec을 사용하여 설치자를 runas 동사로 실행해야합니다. 그것은 다음과 같은 수 있습니다 :

    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; 
    
+0

당신이'PrivilegesRequired = lowest'로 당신 자신의 셋업을 실행하고 있다고 가정합니다. 그렇지 않으면 위의 내용이 필요하지 않기 때문입니다. (사용자가 표고를 취소하거나 승격 할 수 없으므로 응용 프로그램이이 구성 요소를 정상적으로 처리해야 함을 잊지 마십시오.) – Miral

+0

예. 요점은 관리 사용자가 아닌 사용자가 응용 프로그램을 설치할 수 있도록하는 것이지만 특정 기능은 필요하지 않습니다. – Megamozg