2010-11-24 9 views
35

मुझे पता है कि किसी फ़ोल्डर के लिए अनुमतियां कैसे सेट करें:Wix: फ़ोल्डर और सभी उप फ़ोल्डर के लिए अनुमतियाँ कैसे सेट करें

<DirectoryRef Id="ProgramFilesFolder"> 
    <Directory Id="PHPFolder" Name="PHP"> 
    <Component Id="PHP_comp" DiskId="1" Guid="*"> 
     <CreateFolder> 
     <Permission User="Everyone" GenericAll="yes" /> 
     </CreateFolder> 

हालांकि मुझे सभी सबफ़ोल्डर पर भी अनुमतियां लागू करने की आवश्यकता है। क्या यह सभी फ़ोल्डरों को सूचीबद्ध करने के साथ संभव है?

उत्तर

35

सबसे पहले, मैं आपको PermissionEx का उपयोग करने की सलाह दूंगा। यह एक मानक वाईएक्स एक्सटेंशन है और इसकी अनुमति पर एक बहुत बड़ा फायदा है - यह ओवरराइट नहीं करता है, लेकिन एसीएल को संशोधित करता है। और डिफ़ॉल्ट रूप से, यह फ़ोल्डर और इसकी सभी वंश फ़ाइलों और फ़ोल्डर्स को अनुमतियां लागू करता है, इसलिए आपको कुछ अतिरिक्त निर्दिष्ट करने की आवश्यकता नहीं है।

उम्मीद है कि इससे मदद मिलती है।

+0

आप PermissionEx साथ एक उदाहरण दे सकते हैं? मैं इसे CreateFolder टैग के अंदर उपयोग कर रहा हूं लेकिन मुझे त्रुटि मिलती है "आवश्यक विशेषता एसडीडीएल गुम है"। मेरे पास "विशेषता घोषित नहीं की गई" त्रुटि के साथ उपयोगकर्ता और जेनेरिक सभी विशेषताएँ भी हैं। धन्यवाद –

+7

ऐसा इसलिए है क्योंकि आप मानक 'PermissionEx' तत्व का उपयोग कर रहे हैं, जिसे समर्थित एमएसआई 5.0 से शुरू किया गया है। इसमें एक अलग हस्ताक्षर है, और यह एसडीडीएल विशेषता की अपेक्षा करता है। आपको 'UtilExtension' इस तरह शामिल करना चाहिए:' xmlns: util = "http: // schemas.microsoft.com/wix/UtilExtension' और इसे संदर्भित करें जैसे <' –

+0

मैंने आपकी टिप्पणी पढ़ने से पहले प्रतिक्रिया लिखी बहुत बहुत धन्यवाद –

21

मैं हल: अलग PermissionEx Wix और util स्कीमा (Wix PermissionEx और Util Extension PermissionEx) में परिभाषित कर रहे हैं

मैं util संस्करण इस्तेमाल किया:

  • WixUtilExtension विधानसभा
  • के लिए एक संदर्भ जोड़ें UtilExtension नाम स्थान जोड़ें Wix टैग के लिए:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
  • util PermissionEx संस्करण का उल्लेख करें:
<CreateFolder Directory="DirectoryToManage"> 
    <util:PermissionEx User="Users" GenericAll="yes" /> 
</CreateFolder> 
14
<DirectoryRef Id="INSTALLFOLDER"> 
     <Component Id="INSTALLFOLDER_Permission" Guid="*"> 
      <CreateFolder> 
       <util:PermissionEx User="Users" GenericAll="yes"/> 
      </CreateFolder> 
     </Component> 
    </DirectoryRef> 

जवाब ऊपर सही है, और आप सभी फ़ोल्डर और इस फ़ोल्डर में फ़ाइलों के लिए अनुमति सेट होगा ।

लेकिन ध्यान दें: CreateFolder टैग एक घटक में होना चाहिए, और इस घटक को फ़ीचर में जोड़ा जाना आवश्यक है।

इसके अलावा, आप संकलक के कमांड लाइन में जोड़ने के लिए है और लिंकर:

-ext WixUIExtension -ext WixUtilExtension 
+0

के अंदर इस्तेमाल किया गया है, केवल 'PermissionEx' का उपयोग करने के लिए' WixUIExtension' के संदर्भ को जोड़ने की आवश्यकता नहीं है, लेकिन कमांड लाइन पैरामीटर देने के लिए +1 ताकि WiX मेरे जैसे नए लोग भी इस तरह को जोड़ने के लिए समझते हैं। – zagrimsan

+0

वह ऐसा इसलिए करता है क्योंकि वह WixUIExtension में निर्दिष्ट PermissionEx का उपयोग कर रहा है, न कि सादा एमएसआई आधारित PermissionEx जो एक एसडीडीएल को एक विशेषता के रूप में लेता है। उनके पास एक ही नाम है लेकिन बहुत अलग हैं। – Wes

+0

क्या मुझे चाहिए घटक आईडी 'INSTALLFOLDER_Permission' को कहीं भी संदर्भित करने के लिए? – codenamezero

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