2011-08-02 6 views
10

चाहता हूं तो यहां मूल सेटअप है। मेरे पास एक मौजूदा WIX प्रोजेक्ट है जो एक बड़े एमएसआई में व्यक्तिगत टुकड़ों का एक गुच्छा बनाता है। मैं प्रोजेक्ट को बदलने के लिए अलग-अलग टुकड़ों को चुनने की अनुमति देने के लिए प्रोजेक्ट को बदलने की कोशिश कर रहा हूं। जिस कार्यक्रम में मैंने भाग लिया है वह यह है कि जब मैं अलग-अलग घटकों को बनाने के लिए छोटी निर्देशिकाओं पर गर्मी चलाता हूं, तो स्रोत पथ सही नहीं होता है। मैं उम्मीद के रूप में एक उदाहरण दूंगा जो अधिक समझ में आएगा।Wix हीट आउटपुट निर्देशिका का संदर्भ नहीं दे रहा है जैसे कि मैं

C: \ ProjDir \ foo \ Bar1
C: \ ProjDir \ foo \ Bar2

मैं के लिए एक आदेश के लिए इस्तेमाल किया बस फसल सी

तो मैं इस तरह बुनियादी फ़ोल्डर संरचना है: \ Foo (Heat.exe dir Foo -dr FOO_DIR_REF -out File.wxs), और अब मैंने इसे प्रत्येक व्यक्तिगत बार फ़ोल्डर (Heat.exe dir Foo \ Bar1 -dr BAR1_DIR_REF -out File1.wxs) को फसल करने के लिए बदल दिया है और (Heat.exe dir Foo \ Bar2 -dr BAR2_DIR_REF -out File2.wxs)। समस्या मैं आ रही फसल के उत्पादन में इस तरह दिखता है:

<Component Id="cmpblablabla" Guid="{stuff-here}"> 
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Bar1\file.here" /> 
</Component> 

और यह शिकायत है क्योंकि यह SourceDir \ Bar1 नहीं मिल सकता है जब MSI बनाने की कोशिश।

<Component Id="cmpblablabla" Guid="{stuff-here}"> 
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Foo\Bar1\file.here" /> 
</Component> 

यह एक बहुत ही साधारण सी समस्या की तरह लगता है, कि मुझे यकीन है कि आसानी से किया जाता है, लेकिन सभी खोज मेरे द्वारा की गई है नहीं आते: असल में मैं क्या जरूरत है यह कुछ इस तरह दिखाई बनाने के लिए एक रास्ता है कुछ भी उपयोगी के साथ।

उत्तर

13

ध्यान दें कि light अपनी फ़ाइल के लिए अतिरिक्त SourceDir की खोज करेंगे, तो आप के साथ -b

जैसे खोजें पथ में शामिल करें

light.exe -b Foo ... 
+2

यह वही था जो मुझे चाहिए था। बहुत बहुत धन्यवाद। जानना अच्छा है कि आप एकाधिक-बी भी निर्दिष्ट कर सकते हैं। – Zipper

2

यह होना चाहिए

<Component Id="cmpblablabla" Guid="{stuff-here}"> 
    <File Id="filblabla" KeyPath="yes" Source="$(var.ProjectName.TargetPath)\Bar1\file.here" /> 
</Component> 

विभिन्न गुणों उपलब्ध हैं

  • $ (var.ProjectName.TargetPath)
  • $ (var.ProjectName.ProjectDir)
+4

क्या आप जानते हैं कि गर्मी का उपयोग करके इसे कैसे किया जाए? मुझे पता है -वार var.ProjectName.TargetPath मुझे पहला हिस्सा मिलेगा, लेकिन मुझे जो चाहिए वह बार 1 है, और मुझे गर्मी के माध्यम से ऐसा करने का कोई तरीका नहीं मिला है। मुझे पता है कि मैं फ़ाइल को मैन्युअल रूप से संपादित कर सकता हूं, लेकिन मैं इसे स्वचालित तरीके से करने की कोशिश कर रहा था। – Zipper

2

आपके प्रश्न का उत्तर गर्मी में है। exe मदद पाठ। :-)

सही निर्देशिका कटाई के साथ समाप्त करने के लिए, अपनी रूट निर्देशिका (Foo) पर गर्मी को इंगित करें, और कमांड लाइन में -srd स्विच करें। जैसा कि सहायता पाठ बताता है, यह रूट डायर कटाई को छोड़ देगा और आपको सबसे ज्यादा संभावना है कि आपको क्या चाहिए।

और भी लचीलापन के लिए, आप -var स्विच को वाईएक्स वैरिएबल प्रदान कर सकते हैं जो SourceDir स्पष्ट कथन को प्रतिस्थापित करने के लिए है। दोबारा, बस heat.exe चलाएं और आउटपुट देखें - आपको पर्याप्त जानकारी और उदाहरण मिलेगा।