2012-09-27 10 views
5

के साथ स्थापित करने के लिए मैं अपने ऐप के लिए इंस्टॉलर बनाने के लिए बर्न और WIX 3.6 का उपयोग करने का प्रयास कर रहा हूं। इंस्टॉलर माइक्रोसॉफ्ट की वेबसाइट से .NET 3.5 SP1 स्थापित करने में सक्षम होना चाहिए। मैं WIX 3.5 के साथ बनाई गई एक काम कर रहे WIX प्रोजेक्ट से काम कर रहा हूं। यह काम करता है, अगर लक्ष्य मशीन पर .NET 3.5 SP1 पहले स्थापित किया गया है। पहला कदम एक बंडल बनाने के लिए प्रतीत होता है, इसलिए मैंने अपने product.wxs फ़ाइल में एक तत्व जोड़ा। जब मैं ऐसा करता हूं तो मुझे यह कहते हुए एक त्रुटि मिलती है कि स्कीमा में मान्य नहीं है, मेरे पास इसके बजाय एक होना चाहिए। क्या इसका मतलब है कि मुझे सभी उत्पाद परिभाषाओं को एक टुकड़े में स्थानांतरित करना है? यह अस्पष्ट है कि मैं यह कैसे करता हूं। फिर चीज अधिक जटिल हो जाती है, क्योंकि WixNetfxExtension केवल .NET 4.0 और 4.5 के लिए PackageRef प्रदान करता है। मैं अपने ऐप को ढांचे के उस संस्करण में बदलने के लिए तैयार नहीं हूं। तो मैं अपने बंडल में एक वेब स्रोत से .NET 3.5 SP1 कैसे प्राप्त करूं?WIX3.6 का उपयोग करते हुए .NET Framework 3.5 SP1 को

क्या यह कहीं भी करने का एक कामकाजी उदाहरण है?

उत्तर

11

यह आपके प्रश्न में अस्पष्ट है जहां आप सामान करने की कोशिश कर रहे हैं, इसलिए मैं शुरुआत से ही शुरू करूंगा।

एक नया Wix जला बूटस्ट्रैपर प्रोजेक्ट बनाएं। यह वह जगह है जहां आपकी निर्भरता स्थापित की जाएगी और फिर आपका मौजूदा Wix 3.5 इंस्टॉलर बन जाएगा।

.NET 3.5 SP1 पूर्ण पैकेज डाउनलोड करें और इसे डाउनलोड करने के लिए उपयोग किए जाने वाले प्रत्यक्ष यूआरएल पर ध्यान दें।

heat.exe (wix 3.6 bin dir में) का उपयोग करके निम्न आदेश चलाएं जो .net इंस्टॉलर के विवरण के साथ WXS फ़ाइल उत्पन्न करेगा।

<RemotePayload CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8" 
       CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1" 
       Description=".NET Framework 3.5 Setup" 
       Hash="3DCE66BAE0DD71284AC7A971BAED07030A186918" 
       ProductName=".NET Framework 3.5" 
       Size="242743296" 
       Version="3.5.30729.1" /> 

एक ExePackage तत्व के एक बच्चे के रूप अपने bootstrapper परियोजना में में इस जोड़ें और पहले सहेजा अपने डाउनलोड यूआरएल के साथ तत्व अद्यतन:

heat.exe payload [path_to_net_installer] -o [path_to_wxs] 

this.will आप एक wxs में निम्नलिखित दे। यह स्वचालित रूप से .net इंस्टॉलर डाउनलोड करेगा या आप इसे बूटस्ट्रैप एक्सई के बगल में रख सकते हैं और यह इसका पता लगाएगा।

Bundle में Bundle बनाएँ जिसमें आपके इंस्टॉलर के लिए .net ExePackage और MsiPackage शामिल है। इसके बाद आप की तरह कुछ के साथ खत्म हो जाएगा (आवश्यक विशेषताओं का एक बहुत मैं में भरने के लिए छोड़ देंगे!):

<Bundle Name="$(var.SkuName)" 
     Copyright="$(var.Copyright)" 
     Manufacturer="$(var.Manufacturer)" 
     Version="$(var.ProductVersion)" 
     UpgradeCode="$(var.UpgradeCode)"> 
    <Chain> 
     <ExePackage Id="dotNetFX3.5"> 
      <RemotePayload /> 
     </ExePackage> 
     <MsiPackage Id="MyMsi" /> 
    </Chain> 
    </Bundle> 

बिल्ड और आप तो एक बड़ा exe होना चाहिए अपने MSI के साथ शामिल या यदि आप चुनते हैं इसे एक एक्सई को संपीड़ित करने के लिए जो आपके एमएसआई को निष्पादित करता है (इसे एक ही फ़ोल्डर में होना आवश्यक है)।

+2

बहुत बहुत धन्यवाद! अगर मुझे एक से अधिक WIX प्रोजेक्ट की ज़रूरत है तो यह mne के लिए अस्पष्ट था। प्रलेखन आपको मूलभूत कार्यप्रणाली में ले जाने के बारे में बहुत स्पष्ट नहीं है (और मैं कुछ असाधारण रूप से जटिल करने की कोशिश नहीं कर रहा हूं, मैंने सोचा था: 3.5 एसपी 1 का उपयोग कर .NET के बारे में क्या मुश्किल है, और मैं माइक्रोसॉफ्ट के डाउनलोड से .NET इंस्टॉल करना चाहता हूं ?)। वैसे भी, वह टिप था जिसकी मुझे ज़रूरत थी! –

संबंधित मुद्दे