2012-01-04 3 views
11

현재 우리는 WiX 3.5로 생성 된 MSI를 보유하고 있습니다. 응용 프로그램은 .NET 3.5에 있습니다. MSBuild 파일에서 부스트 래퍼 태스크를 사용하여 부트 스트 래퍼를 생성합니다. 그것은 6.0a SDK 파일을 가리키고 있습니다.WiX 설치 프로그램을 사용하여 승격 된 권한으로 어떻게 설치합니까?

사용자가 UAC을 설치하고 설치하는 경우 setup.exe을 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 선택해야합니다.

내가 정말로 원하는 것은 setup.exe가 자동으로 (다른 설치에서 나타나는 노란색 대화 상자를 사용하여) 승격 프롬프트를 표시하는 것입니다.

MSI가이 작업을 수행하고 setup.exe을 완전히 없애고 싶습니다.하지만 WiX 3.6이 무엇인지 생각해보십시오.

ApplicationRequiresElevation="true"을 사용하여 부스트 래퍼를 만드는 경우 7.0a SDK가 정확합니까? 부트 스트 래퍼가 자동으로 상승하라는 메시지를 표시합니까? 이것은 응용 프로그램이 .NET 4 응용 프로그램이어야 함을 의미합니까? 나는 그렇게 생각하지 않을 것이다 ...

답변

13

우리는 WiX 3.0을 사용하고 권한을 향상시킬 수 있었다. 그러나 우리는 부트 스트 래퍼를 높이 지 않았습니다. 우리는 패키지 속성을 통해 MSI가 자체 파일 상승 : 보조 노트로

<Package Id="$(var.PackageCode)" 
     Description="$(var.ProductName) $(var.Version)" 
     InstallerVersion="301" 
     Compressed="yes" 
     InstallPrivileges="elevated" <!-- Elevated right here --> 
     InstallScope="perMachine" 
     Platform="x86"/> 

는, 우리의 부트 스트 래퍼 공식 인증서합니다 (v6.0A의 SDK에서 signtool.exe를 사용)에 서명한다. 부트 스트 래퍼에 상승 된 권한이 필요한지 여부가 확실하지 않습니다.

UPDATE : 우리는 관리자 레벨에서 실행하는 실행 파일을 필요로 우리의 setup.exe를 부트 스트 래퍼 프로젝트에 app.manifest 파일을 가지고

. 아래 샘플을 참조하십시오.

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" 
       xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" 
       xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <!-- UAC Manifest Options 
      If you want to change the Windows User Account Control level replace 
      the requestedExecutionLevel node with one of the following. 

     <requestedExecutionLevel level="asInvoker" uiAccess="false" /> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 

      If you want to utilize File and Registry Virtualization for backward 
      compatibility then delete the requestedExecutionLevel node. 
     --> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</asmv1:assembly> 
+0

덕분에, 나는 이미 다음과 같이 설정 InstallPrivleges을 가지고 있지만 아무것도 유용 할 것 같지 않습니다. MSI를 직접 실행하면 성능이 향상되지 않습니다. 오,하지만 InstallerVersion이 300으로 설정되어있는 것을 보았습니다. 그것이 맞는지 궁금합니다. – Jonesie

+0

@Jonesie : 내일 전에 좋은 답을 얻지 못하면, 직장에있어. 나는 좀 더 많은 정보를 얻을 수 있을지도 모른다. –

+0

건배! 한 시간에 한 가지만 시도해 보는 것이 느리므로 한 시간 걸리는 빌드 서버를 통해이 작업을 실행해야합니다. – Jonesie

0

나는 이것이 오래된 주제이지만 시간이 절약 될 수 있음을 알고 있습니다.
나는 권한과 관련된 속성을 실행 한 반면 사용자 지정 작업에 특히 custom action had Impersonate=yes...

모든 코멘트를 읽을 수 있었다 : 항상 사용자 모드에서 실행됩니다

<CustomAction Id = "CA.First" Execute ="immediate" ... /> 
<CustomAction Id = "CA.Second" Execute ="deferred" ... /> 

CA.First

하지만 CA.Second 상승 가질 수 권한 .

여기에 권한과 관련된 다른 트릭이 있습니다.
주요 사항 - WiX는 CustomAction 레벨에 대한 제어 권한을 허용하므로 올바르게 설정해야합니다.

CustomAction Element

관련 문제