2012-11-09 13 views
17

का उपयोग कर बुद्धिमान ढंग से .NET 4.x को कैसे स्थापित करें। किसी भी अनुप्रयोग को स्थापित करते समय .NET 4.0 या 4.5 का उपयोग कर सकते हैं, पूर्वापेक्षाएँ .NET Framework को स्थापित करते समय सबसे अच्छा अभ्यास क्या है? और आप WiX में बर्न का उपयोग करके इसे कैसे कार्यान्वित करते हैं? (के अलावा कोई भी जाना जाता है:वाईएक्स बर्न

विकल्प 1::

ये विकल्प और व्यापार गत कि मैं के बारे में पता कर रहा हूँ रहे हैं .NET 4.0 (आप बस क्या जरूरत है) स्थापित करें

  • लाभ Windows XP, जहां यह है एकमात्र विकल्प)

विकल्प 2: .NET 4.5 स्थापित करता है, तो .NET 4.5 मौजूद नहीं है

012,
  • लाभ: उपयोगकर्ता भविष्य क्षुधा के लिए बाद में .NET 4.5 स्थापित करने के लिए नहीं होगा। जब उपयोगकर्ता बाद में .NET 4.5 में अपग्रेड करता है तो ऐप को .NET संस्करण परिवर्तन का अनुभव नहीं होगा। ऐप को तत्काल .NET 4.5 के प्रदर्शन सुधार प्राप्त होते हैं।

विकल्प 3: विकल्प 2 यदि .NET 4.0 पहले से स्थापित है की तुलना में बहुत तेजी से तैनाती: केवल तभी न नेट 4.x मौजूद है

  • लाभ .NET 4.5 स्थापित करें। यदि ऐसा नहीं है, तो विकल्प 2 के फायदे लागू होते हैं।

जहाँ तक मैं कह सकता हूं, प्रदर्शन में सुधार महत्वपूर्ण है और यदि विकल्प परिनियोजन गति महत्वपूर्ण है तो विकल्प 3 विकल्प होगा। क्या यह सही लगता है? क्या मुझे विकल्प 1 में कोई फायदा नहीं है? सबसे महत्वपूर्ण बात यह है कि यदि विकल्प 3 समझ में आता है, तो वेब से .NET इंस्टॉल करते समय इसे जलाकर इसे कैसे कार्यान्वित करते हैं?

उत्तर

24

नीचे मैं अपने बंडल में .NET का पता लगाता हूं। DetectConditions और InstallConditions के उपयोग पर ध्यान दें। DetectCondition जांच करेगा कि विशिष्ट पैकेज स्थापित है या नहीं, जबकि InstallCondition का उपयोग डिटेक्ट कंडीशन को ओवरराइड करने के लिए किया जा सकता है ताकि यह निर्दिष्ट किया जा सके कि पैकेज कब स्थापित किया जाना चाहिए। उदाहरण के लिए, XP पर आप .NET 4.5 इंस्टॉल नहीं कर सकते हैं, इसलिए मेरा InstallCondition ऐसे मामले में स्थापना को रोकता है।

<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> 

तो अगर आप संकुल में से एक स्थापित करने के लिए, बस अपने श्रृंखला में इसे संदर्भ हैं:

<Chain> 
    <PackageGroupRef Id='Netfx45'/> 
</Chain> 
के साथ अपने विशिष्ट प्रश्न के संबंध

, मैं स्थापित होगा जो ढांचा संस्करण आवेदन के खिलाफ परीक्षण किया गया था । यदि .NET 4.0 और .NET 4.5 दोनों के खिलाफ परीक्षण किया गया है तो मुझे लगता है कि यह एक निर्णय कॉल है, हालांकि मैं जितना संभव हो सेटअप सेटअप को सरल बनाने की कोशिश करता हूं। तो यदि .NET 4.0 पहले ही इंस्टॉल हो चुका है और एप्लिकेशन को .NET 4.5 की आवश्यकता नहीं है, तो मैं इसे इंस्टॉल नहीं करूंगा।

इसके अलावा, यदि आप कस्टम प्रबंधित बूटस्ट्रैपर एप्लिकेशन का उपयोग कर रहे हैं तो विकल्प 2 का नुकसान भी होता है। मान लें कि आपके पास .NET 4.0 स्थापित है और आपके प्रबंधित बूटस्ट्रैपर को .NET 4.0 (या अधिक) की आवश्यकता है। जब आप इंस्टॉलर चलाते हैं तो यह .NET 4.5 स्थापित करेगा जो .NET 4.0 को प्रतिस्थापित करता है, जिससे आपके इंस्टॉलर को आधा रास्ते रीबूट करने के लिए मजबूर किया जाता है क्योंकि यह एक ही समय में .NET Framework का उपयोग कर रहा था।दोबारा, यह केवल एक मुद्दा है यदि आप अपने स्वयं के कस्टम प्रबंधित बूटस्ट्रैपर का उपयोग कर रहे हैं।

+1

मेरे मामले में, मैं वेब इंस्टॉलर का उपयोग WixNetfxExtension के ** NetFx45Web ** पैकेज समूह के माध्यम से करना चाहता हूं। मैंने तदनुसार प्रश्न अपडेट किया। अंतर्निहित पैकेज समूह के साथ काम करते समय ** इंस्टॉलकंडिशन ** के बराबर है? –

+0

इंस्टॉलकंडिशन स्वयं संकुल पर हैं (ExePackage, MsiPackage)। साथ ही, वर्तमान वाईएक्स मैनुअल किसी भी .NET 4.5 गुणों को सूचीबद्ध नहीं करता है यह बताने के लिए कि यह इंस्टॉल है या नहीं। मुझे लगता है कि ये सीमाएं हैं कि मैंने अपने सेटअप के लिए NetfxExtension का उपयोग क्यों नहीं किया। आईएमओ, यदि आप NetfxExtension का उपयोग कर .NET 4.5 को स्थापित करना चाहते हैं, तो आप शायद NetFx45Web पैकेज समूह को जोड़ दें, फिर इंस्टॉल पर एक शर्त केवल Vista या उच्चतर पर चलाने के लिए रखें। फिर यदि आपको XP इंस्टॉल की आवश्यकता है, तो एक अलग इंस्टॉलर उत्पन्न करने के लिए एक अलग प्रोजेक्ट या कॉन्फ़िगरेशन बनाएं। – BryanJ

+0

क्या NetfxExtension के बिना .NET के वेब इंस्टॉल करने का कोई मुश्किल तरीका नहीं है? –