2012-11-09 18 views
17

.NET 4.0 veya 4.5 kullanabilen bir uygulama yüklerken, önkoşullar .NET framework'ü kurarken en iyi uygulama nedir? Ve WiX'te Burn kullanarak nasıl uygulayabilirsiniz? hariç (Bilinmiyor:WiX Burn kullanarak .NET 4.x nasıl akıllıca yüklenir?

  • Avantajları (sadece ne gerek) .NET 4.0 yükleyin:

    Seçenek 1:

    Bunlar

    ben farkındayım seçenekleri ve alternatif maliyetler vardır Bu Windows XP, tek seçenek)

Seçenek 2: .NET 4.5 yoksa .NET 4.5 yükleyin

  • Avantajlar: Kullanıcının, gelecekteki uygulamaları için .NET 4.5 sürümünü yüklemesi gerekmeyecektir. Kullanıcı, daha sonra .NET 4.5 için yükseltmesi yaptığında, uygulama .NET sürüm değişikliği yaşamayacaktır. App hemen .NET 4.5 performans geliştirmeleri alır.

Seçenek 3: zaten yüklü .NET 4.0 eğer seçenek 2'den çok daha hızlı dağıtım: ne .NET 4.x

  • Avantajları mevcut olması durumunda .NET 4.5 yükleyin. Değilse, seçenek 2 'un avantajları geçerlidir.

Anlatabildiğim kadarıyla, performans iyileştirmeleri önemliyse ve ortalama dağıtım hızı önemliyse 3 seçeneği en iyi uygulama seçeneği 2 olacaktır. Bu doğru mu? Seçenek 1'e herhangi bir avantaj kaçırıyor muyum? En önemlisi, eğer seçenek 3 mantıklıysa, .NET'i web'den yüklerken Burn kullanarak nasıl uygulayabilirsiniz? Benim pakette .NET algılamak nasıl Aşağıda

cevap

24

olduğunu. DetectConditions ve InstallConditions kullanımı not alın. DetectCondition, belirli paketin yüklü olup olmadığını kontrol eder, ancak InstallCondition, paketin ne zaman yükleneceğini belirlemek için DetectCondition'ı geçersiz kılmak için kullanılabilir. Örneğin, XP'de .NET 4.5'i yükleyemezsiniz, bu yüzden InstallCondition'ım böyle bir durumda yüklemeyi engeller. , Belirli soruların ilgili olarak

<Chain> 
    <PackageGroupRef Id='Netfx45'/> 
</Chain> 

Başvuru karşı test edilmiştir neyse çerçeve sürümü yüklemek olacaktır: O zaman sadece zincirinde ona başvuru, paketlerinden birini yüklemek istiyorsanız

<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4FullVersion" /> 
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4x64FullVersion" Win64="yes" /> 

<!-- .NET 4.5 only installed if Vista or higher AND it's not already installed--> 
<PackageGroup Id="Netfx45"> 
    <ExePackage Id="Netfx45" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q" 
       SourceFile="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX45Full\dotnetfx45_full_x86_x64.exe" 
       DetectCondition="(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))" 
       InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))"/> 
</PackageGroup> 
<!-- .NET 4.0 only installed if XP AND it's not already installed --> 
<PackageGroup Id="Netfx4Full"> 
    <ExePackage Id="Netfx4Full" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q" 
       SourceFile="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40\dotNetFx40_Full_x86_x64.exe" 
       DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)" 
       InstallCondition="(VersionNT &lt; v6.0 OR VersionNT64 &lt; v6.0) AND (NOT (Netfx4FullVersion OR Netfx4x64FullVersion))"/> 
</PackageGroup> 

. Hem .NET 4.0 hem de .NET 4.5'e karşı test edildiyse, bu bir yargı çağrısıdır, ancak kurulum deneyimini olabildiğince basitleştirmeye çalışacağım. Böylece, .NET 4.0 zaten yüklenmiş ve uygulama .NET 4.5 gerektirmiyorsa, bunu yüklemezdim.

Ayrıca, Özel Yönetilen Önyükleyici Uygulaması kullanıyorsanız, Seçenek 2'de bir dezavantaj vardır. .NET 4.0 yüklü olduğunu ve yönetilen önyükleyicinizin .NET 4.0 (veya daha büyük) gerektirdiğini varsayalım. Yükleyiciyi çalıştırdığınızda, .NET 4.0'ın yerini alan .NET 4.5'i yükler ve yükleyicinizin güncellemeye devam ederken .NET framework'ü kullandığından dolayı yeniden başlatılmasını zorlar.Yine, kendi özel yönetilen bootstrapper'ınızı kullanıyorsanız bu sadece bir sorundur. Benim durumumda

+1

, ben WixNetfxExtension en ** NetFx45Web ** paket grubu üzerinden web yükleyici kullanmak istiyorum. Soruyu buna göre güncelledim. Yerleşik bir paket grubuyla çalışırken ** InstallCondition ** 'a eşdeğer var mı? –

+0

InstallConditions kendileri (ExePackage, MsiPackage) paketleri üzerinde bulunmaktadır. Ayrıca, mevcut WiX kılavuzu yüklü olup olmadığını öğrenmek için .NET 4.5 özelliklerini listelemez. Bence bu sınırlamalar kurulumum için NetfxExtension kullanmadım. Eğer NetfxExtension kullanarak .NET 4.5 yüklemek istiyorsanız IMO, muhtemelen sadece NetFx45Web paket grubu eklemek, daha sonra sadece Vista veya daha yüksek çalıştırmak için yükleme sırasında bir koşul koydu. Daha sonra bir XP yüklemesine ihtiyacınız varsa, ayrı bir yükleyici oluşturmak için ayrı bir proje veya yapılandırma oluşturun. – BryanJ

+0

web yapmak için değil çok zor bir yolu var mı NetfxExtension olmadan .NET yükler? –