Wix

2010-09-13 20 views
5

के साथ एक वेब अनुप्रयोग स्थापित करना तो मैं एक वेब एप्लिकेशन स्थापित करने की कोशिश कर रहा हूं और मैंने इस प्रश्न पर ठोकर खाई: Using WiX to create an IIS virtual directory। जब मैं अपने ऐप के लिए इसे अनुकूलित करने का प्रयास करता हूं, तो मुझे एक त्रुटि मिलती है: Wix

W:\projectlocation\IssInstallationComponents.wxs(6,0): error LGHT0204: ICE18: KeyPath for Component: 'SiteInstallationComponent' is Directory: 'WEBDIRECTORY'. The Directory/Component pair must be listed in the CreateFolders table.

मैं इसे समझने की कोशिश कर रहा हूं। यहां मेरे पास प्रभावित फ़ाइल में क्या है:

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"> 
    <Fragment> 
    <DirectoryRef Id="WEBDIRECTORY"> 
     <Component Id="SiteInstallationComponent" Guid="MY GUID"> 
      <iis:WebVirtualDir Id="ProductVirtualDirectory" Alias="[PRODUCTVERSION]" Directory="WEBDIRECTORY" WebSite="DefaultWebSite"/> 
     </Component> 
    </DirectoryRef> 

    <iis:WebSite Id='DefaultWebSite' Description='Default Web Site' Directory='WEBDIRECTORY'> 
     <iis:WebAddress Id="AllUnassigned" Port="80" /> 
    </iis:WebSite> 
    </Fragment> 
</Wix> 

मेरे उदाहरण पर कुछ नोट्स। सबसे पहले, मुझे पता है कि GUID गलत है, मैंने इसे उपरोक्त नमूने से हटा दिया है ताकि इसे Google द्वारा अनुक्रमित न किया जा सके और किसी ऐसे व्यक्ति द्वारा पुन: उपयोग किया जा सके जो कुछ इसी तरह से पता लगा सके। मेरे कोड में, मेरे पास एक सही GUID है। मैंने किसी भी प्रकार के आईपी मुद्दों से बचने के लिए उत्पाद का नाम "उत्पाद" में भी बदल दिया।

इस कोड को काम करने के लिए मुझे क्या करना है, इस पर कोई विचार है?

+0

बस एक ध्यान दें कि Guid मूल्य (इस मामले REGISTRYKEY और शीर्षक में हम संस्थापक में पारित दो गुण हैं) उदाहरण के लिए – Paddy

उत्तर

12

आह

ठीक है, मैं interwebs के माध्यम से खुदाई चला गया और निम्नलिखित धागा मिला: http://www.mail-archive.com/[email protected]/msg03483.html

मूल रूप से मैं अपने घटक को बदलने की जरूरत है ताकि यह इस तरह दिखता है:

<Component Id="SiteInstallationComponent" Guid="MY GUID"> 
     <CreateFolder /> 
     <iis:WebVirtualDir Id="ProductVirtualDirectory" Alias="[PRODUCTVERSION]" Directory="WEBDIRECTORY" WebSite="DefaultWebSite"/> 
    </Component> 

मुझे विक्स पसंद है, लेकिन कभी-कभी यह मुझे पागल बनाता है।

+0

भावना साझा करें :-) – kroonwijk

2

सोचा कि मैं इसमें थोड़ा सा जोड़ूंगा। मेरे मामले में मुझे XmlConfig कार्रवाई के साथ पैच के हिस्से के रूप में कॉन्फ़िगरेशन फ़ाइल को संशोधित करने की आवश्यकता थी। मैं मूल समस्या में भाग गया और वहां एक CreateFolder तत्व चिपकाकर बस इसके आसपास काम करने की कोशिश की। लेकिन इसके साथ एक झटका है। यदि आपका घटक पैच का हिस्सा है, तो इसमें CreateFolder प्रविष्टि डालने से not uninstallable बन जाता है। इसका मतलब है कि आप पैच वापस रोल नहीं कर सकते हैं।

जो मैंने समाप्त किया वह घटक के लिए एक अलग KeyPath बना रहा था। मैंने इसे कीपैथ के रूप में एक रजिस्ट्री कुंजी दी और यह मुझे CreateFolder एंट्री के बारे में परेशान करना बंद कर दिया। इसका अर्थ यह है कि यह जो कुछ भी आप करना चाहते हैं उसे इंस्टॉल और अनइंस्टॉल करने के लिए करेंगे और रजिस्ट्री कुंजी का उपयोग करके यह ट्रैक करने के लिए करें कि घटक स्थापित है या नहीं। `GUID =" डाल-GUID-यहाँ "` वैध है, और विशेष रूप से:

<RegistryKey Root="HKLM" Key="[REGISTRYKEY]\Settings\[TITLE]" Action="createAndRemoveOnUninstall"> 
    <RegistryValue Action="write" Type="integer" Name="MACHINEMEMORYLIMIT" Value="1" KeyPath="yes"/> 
</RegistryKey> 

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