2013-11-20 2 views
7

저는 Wix/Burn을 처음 접했고 몇 가지 기본 사항을 이해하려고합니다.Wix Bootstrapper (Burn)로 .NET 재배포 가능 파일 설치

<Chain> 
    <PackageGroupRef Id="NetFx40ClientRedist"/> 
    <MsiPackage Id="MyApp" SourceFile="$(var.WixInstaller.TargetPath)" DisplayInternalUI="yes" /> 
</Chain> 

How To: Install the .NET Framework Using Burn 권장 : 나는 다음과 같은 체인을 사용하여 필요한 .NET 4.0 프레임 워크를 설치하는 간단한 부트 스트 래퍼가 있습니다. 웹 액세스가없는 서버에서 응용 프로그램을 사용할 수 있으므로 로컬 재배포 가능 패키지에서 .net을 설치하는 것이 중요합니다. 부트 스트 래퍼는 잘 작동하는 것으로 보이고 의도 한대로 프레임 워크를 설치합니다. 하지만 setup.exe 파일은 응용 프로그램 (< 5 MB)과 대략 동일한 크기이므로 설치 중에 프레임 워크가 계속 다운로드되고 있다고 가정해야합니다.

질문

  1. , 다음의 WixNetfxExtension 패키지에 "NetFx40ClientWeb"와 "NetFx40ClientRedist"의 차이점은 무엇입니까?

  2. 로컬 재배포 가능 파일을 다운로드 할 필요가 없도록 어떻게 부스트 래퍼에 포함 시켰습니까?

는 편집 :

WiXNetFxExtension 후 다운로드 번들 패키지입니다 "재배포"라는 하위 디렉토리를 확인합니다 :

나는 대답 here을 발견 믿는다 그것은 존재하지 않으면 그 경로 예 : "redist \ dotNetFx40_Client_setup.exe". 이것은 표준 굽기 동작입니다.

+1

어떻게 redist 폴더를 설치 프로그램의 로컬 컴퓨터에 복사 할 수 있었습니까? –

+0

NetFx40Redist 용 소스 코드의 "ExePackage"정의에 "SourceFile"속성을 추가하여 작동 시키지만 소스 코드를 해킹하지 않고이를 수행하는 방법을 알고 싶습니다. –

답변

1

둘 사이의 차이는 다음과 같습니다
1. clientWeb가 - 당신은 웹 4.0이 다운로드됩니다 그물 및 시스템에 설치된 그 후 연결이 의미합니다.

2.clientRedist - 재배포 가능을 의미합니다. 인터넷에 어떤 연결도 필요하지 않은 전체 패키지를 의미하므로 모든 컴퓨터에 설치할 수 있습니다.


재배포 가능 패키지를 사용하는 경우 잘 관리해야합니다. 여기에는 .Net 4.5의 예가 나와 있습니다 .Net 4.0에는 동일하지만 재배포 가능 패키지 만 있습니다.

<?xml version="1.0" encoding="utf-8"?> 
<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" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"> 
    <Bundle Name="Prog" Version="1.0.0.0" Manufacturer="my Corporation" UpgradeCode="*"> 
    <Chain> 
     <!-- TODO: Define the list of chained packages. --> 
     <PackageGroupRef Id="Netfx45FullPackage" /> 
    </Chain> 
    </Bundle> 
    <Fragment> 
    <PackageGroup Id="Netfx45FullPackage"> 
     <ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile="..\SetupProject\dotnetfx45_full_x86_x64.exe" DetectCondition="(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))" InstallCondition="(VersionNT &gt;= v6.0 OR VersionNT64 &gt;= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))" /> 

     <MsiPackage Id="MyProg" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="$(var.installerPath)\MyProgCore.msi" /> 
    </PackageGroup> 
    </Fragment> 
</Wix> 
+0

.Net의 상위 버전이 설치되어있는 경우 어떻게 설치를 탐지하고 건너 뛸 수 있습니까? – jero2rome

+0

DetectCondition = "(Netfx4FullVersion = " 4.5.50709 ") AND (NOT VersionNT64 OR (Netfx4x64FullVersion = " 4.5.50709 "))는" – Gilad

+0

그래 나는이 조건을 사용하고 있습니다. 그러나 4.6이 설치된 시스템에서는 burn이 설치 프로그램을 시작하려고 시도합니다. 그럼 .Net 설치 프로그램 UI에서 수동으로 .Net 설치 프로그램을 종료해야합니다. – jero2rome