2009-10-29 12 views
54

वाईएक्स फाइलें हमेशा इस पंक्ति को शामिल करने लगती हैं:वाईएक्स फाइलों में, नाम = "SourceDir" क्या संदर्भित करता है?

<Directory Id="TARGETDIR" Name="SourceDir"> 

"SourceDir" क्या है? इसका क्या उपयोग है? यह वास्तविक निर्देशिका नाम नहीं है। क्या यह किसी तरह का जादुई मूल्य है?

+1

TARGETDIR वह जगह है जहां आप स्थापित करना चाहते हैं, SourceDir वह पथ है जहां आप चल रहे इंस्टॉलेशन पैकेज स्थित हैं: http://msdn.microsoft.com/en-us/library/aa372452(VS.85)। एएसपीएक्स –

उत्तर

79

से: http://robmensching.com/blog/posts/2010/1/26/StackOverflow-what-does-NameSourceDir-refer-to

सच में, यह कुछ है कि हम डेवलपर की ओर से छिपा हुआ होना चाहिए था लेकिन नहीं किया है। माफ़ कीजिये। इस मामले की सच्चाई यह है कि विंडोज इंस्टालर निर्देशिका निर्देशिका पेड़ को हमेशा एक निर्देशिका पंक्ति में रूट करने की अपेक्षा करता है जहां प्राथमिक कुंजी (निर्देशिका/@ आईडी) "TARGETDIR" है और DefaultDir कॉलम (निर्देशिका/@ नाम) "SourceDir" है ।

इंस्टॉल के दौरान, TARGETDIR मशीन पर सबसे बड़ी ड्राइव के लिए डिफ़ॉल्ट होगा। SourceDir उस स्थान पर सेट किया जाएगा जहां एमएसआई निष्पादित किया जा रहा है। अब, SourceDir प्रारंभिक स्थापना के बाद मुश्किल है क्योंकि इसे तब तक सेट नहीं किया जाएगा जब तक कि ResolveSource कार्रवाई नहीं कहा जाता है। हालांकि, आप ResolveSource कार्रवाई को स्पष्ट रूप से कॉल नहीं करना चाहते हैं क्योंकि यह आपको मूल स्रोत मीडिया प्रदान करने के लिए संकेत दे सकता है (उर्फ: कृपया सीडी डालें)।

हमें वाईएक्स टूलसेट में क्या करना चाहिए था, TARGETDIR/SourceDir जोड़ी निर्दिष्ट करने की आवश्यकता को हटा दें और कहें "कोई भी डायरेक्टरी तत्व जिसके माता-पिता नहीं हैं स्वचालित रूप से TARGETDIR को अभिभावित किया जाएगा क्योंकि एमएसआई एसडीके ऐसा करने के लिए कहता है। " इसके बजाए, आपको इसे स्वयं करना है ... और कुछ देवताओं को आश्चर्य है कि इसका क्या अर्थ है।

20

wix.chm प्रलेखन से, विषय "कैसे करने के लिए: एक फ़ाइल आपका इंस्टालर में जोड़ें":

आईडी TARGETDIR साथ तत्व Windows इंस्टालर के लिए आवश्यक है और सब की जड़ है निर्देशिका अपनी स्थापना

MSDN प्रलेखीकरण TARGETDIR के अनुसार के लिए संरचनाओं

है

स्थापना के लिए जड़ गंतव्य निर्देशिका

इसके अलावा MSDN के अनुसार, SourceDir है

कि स्रोत कैबिनेट फ़ाइल या स्थापना पैकेज

के स्रोत फ़ाइल पेड़ शामिल रूट निर्देशिका

तो SourceDir प्रॉपर्टी वास्तविक निर्देशिका को इंगित करती है: वह एक जहां आपकी एमएसआई फ़ाइल बैठती है। msiexec /lvx* installer.log installer.msi के साथ स्थापित करते समय आप इसे इंस्टॉलर लॉग में देख सकते हैं।

हालांकि, किसी कारण से TARGETDIR को हल करते समय SourceDir को पूरी तरह नजरअंदाज कर दिया जाता है। TARGETDIR या तो स्पष्ट रूप से सेट किया जाना चाहिए (उदा। कमांड लाइन पर) या फिर यह रूट्रॉइड को हल करता है। यदि ROOTDRIVE स्पष्ट रूप से सेट नहीं किया गया है तो यह सबसे खाली स्थान के साथ ड्राइव की जड़ है।

एक त्वरित परीक्षण से पता चलता है कि TARGETDIR के लिए एक घटक स्थापित करने से एमएसआई बैठे फ़ोल्डर के बजाय फ़ाइलों को वास्तव में मेरे डी: \ ड्राइव की जड़ पर रखता है।

+2

जानकारी के लिए धन्यवाद। हालांकि मैं अभी भी परेशान हूँ। मेरी समझ यह है कि नाम विशेषता वास्तविक निर्देशिका का नाम होना चाहिए, जो "SourceDir" नहीं है। यदि आप इसे छोड़ देते हैं, तो संकलक "आपको SourceDir पर नाम सेट करना होगा" के आधार पर एक त्रुटि के साथ शिकायत करता है। –

+11

आह! विक्स के रहस्य! सभी आश्चर्यों, असंगतताओं, और गुप्त हैंडशेक की खोज करना एक सच्चा साहस है। – Cheeso

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