2009-07-15 15 views
11

मुझे अपने इंस्टॉलर में पूर्ण .NET 3.5 SP1 इंस्टॉलर शामिल करना होगा, जो कि WiX में है।मैं एक पूरी तरह से स्वयं निहित .NET 3.5 SP1 इंस्टॉलर के साथ एक WiX इंस्टॉलर कैसे बना सकता हूं?

मुझे उस बूस्टरप्रैपर की पूरी तरह निहित होने की आवश्यकता है, बिना किसी वेब एक्सेस के। इस इंस्टॉलर के लिए वेब की आवश्यकता होने की अनुमति नहीं है; हमारे पास बाहरी मंगोलिया में ग्राहक हैं (मैं गंभीर हूं, न केवल स्थान का नाम इस्तेमाल कर रहा हूं क्योंकि यह दूरस्थ है) जिनके लिए हम सीडी भेजते हैं क्योंकि उनके पास इंटरनेट का उपयोग नहीं है।

WiX ट्यूटोरियल कहता है:

<Target Name="AfterBuild"> 
    <GenerateBootstrapper ApplicationFile="$(TargetFileName)" 
         ApplicationName="My Application Name" 
         BootstrapperItems="@(BootstrapperFile)" 
         ComponentsLocation="Relative" 
         CopyComponents="True" 
         OutputPath="$(OutputPath)" 
         Path="C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\"/> 
</Target> 

ऊपर bootstrapper वेब की आवश्यकता है। मैं एक इंस्टॉलर कैसे बना सकता हूं जो नहीं करता?

उत्तर

8

<Project ToolsVersion="3.5" 
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <ItemGroup> 
     <BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1" > 
      <ProductName>.NET Framework 3.5 SP1</ProductName> 
     </BootstrapperFile> 
     <BootstrapperFile Include="Microsoft.Windows.Installer.3.1" > 
      <ProductName>Windows Installer 3.1</ProductName> 
     </BootstrapperFile> 
    </ItemGroup> 

    <Target Name="setup"> 
     <GenerateBootstrapper 
      ApplicationFile="myproduct.msi" 
      ApplicationName="myproduct" 
      BootstrapperItems="@(BootstrapperFile)" 
      Path="$(bootstrapperPackagesFolder)" 
      ComponentsLocation="Relative" 
      OutputPath="$(cddir)" 
      Culture="en"/> 
    </Target> 

</Project> 

आपके मामले में, $(bootstrapperPackagesFolder) चर सी :\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\ को इंगित करेंगे। $(cddir) चर वह फ़ोल्डर है जहां आप अपनी स्थापना सीडी की सामग्री लिखते हैं।

GenerateBootStrapper कार्य न केवल बूटस्ट्रैपर एक्सई उत्पन्न करेगा, बल्कि DotNetFX35SP1 और एक WindowsInstaller3_1 फ़ोल्डर को उसी स्थान पर कॉपी करेगा। स्थापना के दौरान, बूटस्ट्रैप एक्सई उन फ़ोल्डरों की तलाश करेगा और उन्हें डाउनलोड करने के बजाय वहां फ़ाइलों का उपयोग करेगा।

मुझे यकीन नहीं है कि मेरा उदाहरण आप जो कर रहे हैं उससे अलग है; शायद आप इंस्टॉलेशन सीडी पर DotNetFX35SP1 फ़ोल्डर को शामिल करना भूल गए हैं?

+0

यह करने के बाद, मैं निम्नलिखित त्रुटि मिलती है: C: \ दस्तावेज़ और सेटिंग्स \ हडसन \ .hudson \ नौकरियों \ \ कार्यक्षेत्र \ \ मुख्य \ SetupWiX \ SetupWiX.wixproj (164,5): त्रुटि MSB3152: पूर्वापेक्षाएँ के लिए स्थापित स्थान 'घटक विक्रेता की वेबसाइट' पर सेट नहीं किया गया है और आइटम '.NET Framework 3.5 SP1' में फ़ाइल 'DotNetFX35SP1 \ dotNetFX20 \ aspnet.msp' फ़ाइल डिस्क पर स्थित नहीं हो सकती है। अधिक जानकारी के लिए हेल्प देखें। – mmr

+0

भी, ऐसा लगता है कि बूस्ट्रैपर इंजन निर्देशिका में setup.bin को केवल SP1 के लिए उचित निर्देशिका नहीं मिलती है, जो मेरे लिए अजीब है। – mmr

+0

क्षमा करें, बूटस्ट्रैपर – mmr

0

आप यह Microsoft sample code चेकआउट कर सकते हैं, यह बात यह है कि वाईएक्स बूटस्ट्रैपर/चेनर प्रदान नहीं करता है - जो "बर्न" टूल के रूप में वाईएक्स 3.5 तक नहीं आ रहा है।

मुझे यकीन नहीं है कि आप अपने मूल उदाहरण में क्या उपयोग कर रहे हैं, मुझे लगता है कि msbuild या कुछ - जो एक WiX घटक नहीं है।

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