2009-12-10 16 views
5

मैं निम्न समस्या के लिए एक समाधान खोजने के लिए कोशिश कर रहा हूँ चलाने से पहले स्थापित किया गया है, तो:Bootstrapper: चेक MSI संस्करण

मैं कई कार्यक्रमों है कि सभी एक ही कार्यक्रम पर भरोसा करते हैं (उनमें दास फोन की सुविधा देता है) (गुरु) । मुझे प्रत्येक दास के लिए एक इंस्टॉलर वितरित करने की आवश्यकता है। इस इंस्टॉलर को मास्टर स्थापित करने की आवश्यकता है।

मैं दोनों टुकड़ों को संस्करण में सक्षम होना चाहता हूं, इसलिए एकाधिक एमएसआई बूटस्ट्रैपर के साथ जंजीर सही समाधान प्रतीत होता है।

मेरी समस्या यह है कि यदि दास इंस्टॉलर पहले से स्थापित मास्टर के समान संस्करण को स्थापित करता है, तो .msi मरम्मत/निकालने मोड में चलाएगा।

यह उपयोगकर्ता दृष्टिकोण से अस्वीकार्य है और केवल भ्रम पैदा करेगा।

क्या एमएसआई चलाने की कोशिश करने से पहले वर्तमान में स्थापित फाइल्स के संस्करण की जांच करने का कोई तरीका है?

मैं वर्तमान में बूटस्ट्रैपर के रूप में WIX के setupbld.exe का उपयोग कर रहा हूं।

किसी भी अन्य समाधान बहुत सराहना (मैं भी कोई सफलता के साथ मर्ज मॉड्यूल की कोशिश की है, के बाद से संस्करण बेकार है)

उत्तर

1

इसके बजाय setupbld.exe (का उपयोग करने का जो मैं वास्तव में नहीं जानता कि के रूप में मैं किसी भी प्रलेखन नहीं मिल सकता है) आप msbuild के generatebootstrapper task का उपयोग कर सकते हैं। Wix दस्तावेज़ पहले से ही इस कार्य का उपयोग बूटस्ट्रैपर उत्पन्न करने के लिए करता है जो .NET Framework को स्थापित करता है। How To: Install the .NET Framework Using a Bootstrapper देखें। यह पूर्व परिभाषित बूटस्ट्रैपर पैकेज का उपयोग करता है।

हालांकि, इस मामले में आपको लेखक को अपने स्वयं के बूटस्ट्रैपर पैकेज पर भी जाना होगा। ऐसा करने का एक तरीका मौजूदा बूटस्ट्रैपर पैकेजों का अध्ययन C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\ (या Windows SDK में से) में करना है और documentation of the Bootstrapper Manifest XML format पढ़ें। bootstrapper generator उपकरण भी सहायक हो सकता है।

निर्धारित करने के लिए पैकेज स्थापित किए जाने की जरूरत है, आप InstallChecks में से एक का उपयोग कर सकते एक गुण सेट, और फिर Commands तत्व के तहत एक InstallCondition में संपत्ति के मूल्य की जाँच करने के।

यदि आप सोच रहे हैं कि यह — से अधिक कठिन है, तो मैं सहमत हूं, लेकिन यह अब तक मैंने उपयोग किया है। वहाँ कुछ विकल्प हैं जो मैंने अभी तक प्रयास नहीं किया है कर रहे हैं:

  • खराब नामित dotNetInstaller जो वास्तव में एक सामान्य प्रयोजन bootstrapper जनरेटर है।
  • wix 3.5 burn बूटस्ट्रैपर जो अभी तक जारी नहीं किया गया है। मुझे यकीन नहीं है कि यह अभी तक उपयोग करने योग्य राज्य में है या नहीं।
+1

मैं dotNetInstaller का उपयोग करके समाप्त हुआ, और पाया है कि सही नहीं होने पर, यह माइक्रोसॉफ्ट बूस्टरप्रैप्स का उपयोग करने से बेहतर है (उन्हें काम करने के लिए उन्हें नहीं मिल सका)। अभी तक डॉटनेट इंस्टॉलर के साथ करने की कोशिश की गई हर चीज ने काम किया है। हालांकि कभी-कभी इसे थोड़ा मार्गदर्शन की आवश्यकता होती है। – gollumullog