2014-05-12 3 views
3

Burn은 these Microsoft guidelines에 따라 준비된 이중 용도 (사용자 별 또는 컴퓨터 별) MSI 패키지를 지원합니까?WiX - Burn은 이중 용도 msi 패키지를 지원합니까?

그런 패키지를 준비했지만 Burn으로 만든 부트 스트 래퍼가 최종 사용자가 UAC 권한을 부여한 후에 컴퓨터별로 설치된 MSI 패키지를 제거하지 않는 것처럼 보입니다.

굽기에 대한 소스 코드는 다음과 같습니다 대답은

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"> 
    <Bundle Version="1.0" 
       Name="AppNameHere" 
      UpgradeCode="GuidHere"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense" > 
     <bal:WixStandardBootstrapperApplication LicenseUrl="" 
               SuppressOptionsUI="yes" 
               ThemeFile="Customization\Theme.xml" 
               LocalizationFile="Customization\LangHere.wxl"/> 
    </BootstrapperApplicationRef> 
    <Chain> 
     <PackageGroupRef Id="WindowsInstaller45"/> 
     <PackageGroupRef Id="NetFx40ClientRedist"/> <!-- Uzywa rozszerzenia WixNetfxExtension do zainstalowania .net --> 
     <PackageGroupRef Id="vcredist"/> 
     <MsiPackage Compressed="yes" 
        SourceFile="MsiFileNameHere" 
        DisplayInternalUI="yes"> 
     <MsiProperty Name="UPDATEDIR" Value="[UninstallPath]"/> 
     <MsiProperty Name="WIXBUNDLEKEY" Value="[WixBundleProviderKey]"/> 
     </MsiPackage> 
     </Chain> 
    </Bundle> 
    <Fragment> 
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86" Value="Installed" Variable="vcredistkeyx86" /> 
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86" Value="Installed" Variable="vcredistkeyx64" /> 
    <PackageGroup Id="vcredist"> 
     <ExePackage Id="vcredist_x86" 
        Cache="no" 
        Compressed="yes" 
        PerMachine="yes" 
        Permanent="yes" 
        Vital="yes" 
        SourceFile="Components\vcredist_x86.exe" 
        DetectCondition="(vcredistkeyx86 AND (vcredistkeyx86 &gt;= 1)) OR (vcredistkeyx64 AND (vcredistkeyx64 &gt;= 1))" /> 
    </PackageGroup> 
    <PackageGroup Id="WindowsInstaller45"> 
     <ExePackage Cache="no" 
        Compressed="yes" 
        PerMachine="yes" 
        Permanent="yes" 
        Vital="yes" 
        SourceFile="Components\WindowsXP-KB942288-v3-x86.exe" 
        InstallCondition="VersionNT=v5.1 AND NOT VersionNT64 AND VersionMsi &lt; v4.5" 
        InstallCommand="/quiet /norestart"> 
     <ExitCode Behavior="forceReboot"/> 
     </ExePackage>  
    </PackageGroup> 
    </Fragment> 
</Wix> 
+0

MSI 패키지가 부트 스트 래퍼에 선언 된 소스 코드를 제공 할 수 있습니까? – Marlos

+0

Burn에 대한 소스 코드로 게시물을 확장했습니다. –

답변

0

WIX V3.9의 같이 "아니오"자격 - 굽기 현재 이중 목적을 지원하지 않습니다 MSI 사용자 별 또는 기계 꾸러미.

이중 용도 MSI 패키지에는 ALLUSERS 속성이 "2"로 설정되어 있습니다. (\ 비주얼 스튜디오 2013 \ 로버트 \ 문서 프로젝트 \ \ BurnTest \ 부트 스트 래퍼 \ Bundle.wxs :

2> D : 당신은 MSI 패키지의 유형을 참조하는 WIX 부트 스트 래퍼 프로젝트를 빌드 할 때 당신은 이러한 유형의 경고가 표시됩니다 18,0) : 경고 LGHT1133 : 번들을 사용하려면 패키지가 기계 또는 사용자별로 필요합니다. MSI 'D : \ Robert \ Documents \ Visual Studio 2013 \ Projects \ BurnTest \ SetupProject \ bin \ Release \ SetupProject.msi'ALLUSERS 속성은 설치시 사용자마다 변경 될 수있는 '2'로 설정됩니다 . 번들은 패키지가 머신 단위라고 가정하고 변경된 패키지가 올바르게 작동하지 않습니다. 가능하면 Id = 'ALLUSERS'인 속성을 제거하고 대신 Package/@ InstallScope 속성을 사용하십시오.

WIX 부트 스트 래퍼 프로젝트의 빌드 프로세스는 체인화 된 패키지에서 어떤 종류의 레코딩 설치 (사용자 별 또는 시스템 별)를 만들지 시도합니다. 이 논리는 사용자 별 또는 컴퓨터 별 환경 설정을 선언 할 수있는 여러 위치와 연결된 패키지 간의 잠재적 인 충돌로 인해 복잡합니다. 그러나 일반적인 아이디어는 체인 된 패키지 중 하나가 사용자별로 설치되지 않는 한 번 컴파일러가 컴퓨터 설치를 생성하여 번들 설치를 사용자 별 모드로 전환합니다. 요점은 빌드시에 사용자 별 또는 컴퓨터 별 패키지를 만드는 것이 결정된다는 것입니다. 이중 목적의 MSI 패키지를 올바르게 지원하려면 설치 결정을 위해 설치 시간을 이동해야합니다.

+0

그럼에도 불구하고 그것은 번의 심각한 단점입니다. 그것은 우리가 그것을 사용하는 것을 막는다 (우리는 VisualStudio에 의해 만들어진 부트 스트 래퍼로 철수했다). 이 경우 우리는 일반적으로 우리의 소프트웨어가 기계별로 설치되기를 원합니다. 그러나 최종 사용자에게 관리 권한이없는 경우 사용자 별 설치를 허용해야합니다. –

관련 문제