2012-09-07 24 views
13

मैं एक इंस्टॉलर के लिए बूटस्ट्रैपर के रूप में बर्न का उपयोग करने के लिए देख रहा हूं और मुझे एमएसआई में कुछ तर्कों को पारित करने की आवश्यकता है।अतिरिक्त इनपुट के साथ वाईएक्स बर्न थीम को अनुकूलित करना

मुझे पता है कि ऐसा करने का तरीका MsiProperty तत्वों का उपयोग करना है, मेरे पास जो समस्या है, वह उन गुणों को कैप्चर करने के लिए UI प्रदर्शित करने के साथ है। मुझे पता है कि मैं प्रबंधित बूटस्ट्रैप एप्लिकेशन होस्ट के माध्यम से एक पूरी तरह से कस्टम यूआई बना सकता हूं, हालांकि यह बूटस्ट्रैपर को अपेक्षाकृत मामूली tweak के लिए लागू करने के लिए बहुत सारे काम के रूप में बदल रहा है।

मुझे this blog article मिला है जिसमें मूल यूआई अनुकूलन कैसे किया जाए और यह सोचने के लिए कि क्या एक सामान्य चेकबॉक्स/टेक्स्टबॉक्स शामिल करने के लिए बर्न UI को संशोधित करना संभव है (जिसका मान तब बर्न वैरिएबल सेट करने के लिए उपयोग किया जाता है, इसलिए मैं इसे पास कर सकता हूं मेरे एमएसआई में) इसी तरह से, या मुझे प्रबंधित बूटस्ट्रैपर एप्लिकेशन होस्ट का उपयोग करने की आवश्यकता है?

उत्तर

33

मैं नहीं कर सकते इस पर कहीं भी किसी भी दस्तावेज़ प्राप्त है, लेकिन प्रयोग + स्रोत कोड के माध्यम से पढ़ने का एक छोटा सा पता चलता है कि इस काफी सरल है - बस नियंत्रण (जैसे चेकबॉक्स) एक जला वैरिएबल का नाम के Name सेट (नहीं एक WiX चर - वे अलग हैं), की तरह तो

<Checkbox Name="MyCheckBox" ...>Hello, checkbox</Checkbox> 

(जहां यह डाल करने के लिए अधिक जानकारी के लिए Burn UI Customisations देखें) आप कुछ मूल्य के लिए इसे आरंभ करने के लिए आप अपने बंडल के नीचे एक चर जला परिभाषित कर सकते हैं पसंद करते हैं ("टिकटेड" के लिए 1 का उपयोग करें और चेकबॉक्स के साथ "अनचाहे" के लिए 0)

<Variable Name="MyCheckBox" Value="1" /> 

हालांकि इसकी आवश्यकता नहीं है - वैरिएबल आपके लिए स्वचालित रूप से बनाया जाएगा। ध्यान दें कि इसे Variable होना चाहिए, WixVariable नहीं - ये अलग हैं।

अंत में एक MSI संपत्ति इस चर के आधार पर स्थापित करने के लिए अपने MsiPackage तत्व के एक बच्चे के रूप में एक MsiProperty तत्व जोड़ की तरह तो

<MsiPackage Name="MyMsi.msi" ...> 
    <MsiProperty Name="SOMEPROPERTY" Value="[MyCheckBox]" /> 
</MsiPackage> 

एमएसआई संपत्ति "SOMEPROPERTY" का मान तो 0 पर सेट हो जाएगा या 1 आपके चेकबॉक्स की चेक की गई स्थिति के आधार पर।

+0

मैं इस विधि का भी उपयोग करता हूं - यह काम करता है। संभवतः इसे उत्तर के रूप में स्वीकार करने के लिए सुरक्षित :) –

+0

ग्रेट हेल्प धन्यवाद, हालांकि मुझे एमएसआई में पास किया जा रहा था जब तक कि मैं में परिभाषित नहीं करता .. ऐसा लगता है कि यह स्वचालित रूप से नहीं बनाया गया है। – user2128898