2011-11-29 15 views
5

मैं वर्तमान में एक WIX इंस्टॉलर लिख रहा हूं जिसमें अन्य उत्पादों को स्थापित करने पर कुछ निर्भरताएं हैं। यह सी # में है और निम्नलिखित निर्भरता की आवश्यकता हैWIX कार्यालय पहचान एक्सटेंशन

  • ऑफिस 2010 (एक्सेल/शब्द सहित)
  • .नेट फ्रेमवर्क 3,5

अब .नेट फ्रेमवर्क मैं wix में WixNetFxExtension उपयोग कर सकते हैं कहने के लिए

<PropertyRef Id="NETFRAMEWORK35_SP_LEVEL"/> 

और फिर इस स्थिति को किसी शर्त में संदर्भित करें।

वहाँ वर्ड आदि

मैं जानता हूँ कि मैं यह करने के लिए कस्टम क्रियाओं का उपयोग कर सकते हैं की तरह कार्यालय या अपनी व्यक्तिगत फाइलों के विभिन्न संस्करणों के लिए यह करने के लिए इसी तरह की एक विस्तार है, लेकिन मैं चाहता हूँ एक साधारण नहीं बल्कि ऐसा करने के लिए था अपनी खुद की कस्टम क्रियाओं को बनाने से?

+3

कृपया http://stackoverflow.com/questions/3266675 इस पोस्ट पर एक नज़र/कैसे-से-पता-स्थापित-संस्करण-ऑफ-एमएस-ऑफिस – Ciprian

+1

मैं वास्तव में विस्तार के विस्तार के बाद था जिसका उपयोग मैं कर सकता था। मैंने वास्तव में अपना खुद का विस्तार बनाया है जो आपको एप्लिकेशन नाम में पास करने की अनुमति देता है और यह संस्करण स्थापित करता है ... मैं इसे साफ़ करने के बाद अपना समाधान पोस्ट करूंगा। –

उत्तर

-2

मैं इसके लिए अपने खुद के WIXExtension बना दी और फिर बस आदि शब्द के संस्करण स्थापित पाने के लिए अपने एक्सटेंशन विधि OfficeVersion ("शब्द") कह सकते हैं।

<Property Id="WORD_VERSION" Value="$(myextension.OfficeVersion(Word))" /> 

मैं तो करने के लिए केवल आवेदन स्थापित संस्करण उदाहरण के लिए अधिक से अधिक 10 है अगर एक स्थिति सेट कर सकते हैं।

<Condition Message="This setup requires Word xxxx and Excel xxxx or greater"> 
    <![CDATA[Installed OR (WORD_VERSION AND EXCEL_VERSION >= "10")]]> 
</Condition> 

तब मैं अपने ऑफिस वर्जन को लिखने के लिए स्वतंत्र हूं कि मैं जो भी एप्लिकेशन भेजता हूं उसका संस्करण लौटा सकूं।

रजिस्ट्री मैं खोज की में एक जगह है कि कार्यालय अनुप्रयोगों

HKLM\Software\Classes\Word.Application\CurVer 
HKLM\Software\Classes\Excel.Application\CurVer 

आदि के लिए इस जानकारी रखती है

+0

क्या आपने कभी अपना एक्सटेंशन कहीं भी प्रकाशित किया था? सभी मैनुअल रजिस्ट्री हैकिंग से बचने के लिए यह वास्तव में अच्छा होगा। धन्यवाद! – BrainSlugs83

+0

यदि आप इसे दुनिया के साथ साझा नहीं कर रहे हैं तो इसे विस्तार के रूप में लिखने के लिए यह थोड़ा अधिक (इंजीनियर इंजीनियर) है। आंतरिक रूप से आपके सभी इंस्टॉलरों द्वारा पुन: उपयोग किया जाने वाला एक साधारण टुकड़ा पर्याप्त होगा। –

+0

मुझे आपका एक्सटेंशन कहां मिल सकता है। एक्सटेंशन यह कैसे काम करता है यह जानने के बिना यह उत्तर पूरी तरह से अनुपयोगी है। –

6

@Ciprian द्वारा दिए गए उत्तर का उपयोग करके, आप बस एक संपत्ति सेट कर सकते हैं, फिर संपत्ति के आधार पर लॉन्च की स्थिति हो सकती है।

<Property Id="OFFICEPATH"> 
    <RegistrySearch Id="OfficeReg" Root="HKLM" Key="SOFTWARE\Microsoft\Office\14.0\Common\InstallRoot" Name="Path" Type="raw" /> 
</Property> 

<Condition Message="This application requires Microsoft Office. Please install Office then run this installer again."> 
     <![CDATA[Installed OR (OFFICEPATH)]]> 
    </Condition> 
+1

उत्तर के लिए धन्यवाद, मैं वास्तव में एक अनुप्रयोग के स्थापित संस्करण को लाने के बाद वास्तव में एक ज्ञात रजिस्ट्री कुंजी के लिए पूछताछ नहीं कर रहा था। मैंने अपना स्वयं का विक्स एक्सटेंशन बनाकर हल किया है जो आपको एप्लिकेशन नाम में पास करने की अनुमति देता है और यह आपको बताता है कि कौन सा संस्करण स्थापित है –

+0

क्या यह कार्यालय कार्यालय के सभी संस्करणों के लिए काम करता है? –

+0

@ जोहेली देखें: http://stackoverflow.com/questions/3266675/how-to-detect-installed-version-of-ms-office 2016 तक सूचीबद्ध है –