2010-04-22 12 views
6

का उपयोग कर किसी मौजूदा फ़ोल्डर में डेस्कटॉप शॉर्टकट बनाएं, मुझे Wix का उपयोग कर किसी मौजूदा फ़ोल्डर (फ़ाइल पर नहीं) पर डेस्कटॉप शॉर्टकट बनाने की आवश्यकता है। अधिक विस्तारित करने के लिए, मेरे इंस्टॉलर प्रोग्राम में एक कस्टम एक्शन प्रोग्राम है जिसमें सी # का उपयोग करके लिखा गया है। यह कस्टमएक्शन प्रोग्राम "बीएसएस" नामक एक फ़ोल्डर बनाता है जिसमें से उपयोगकर्ता द्वारा पथ चुना जाता है।वाईएक्स

C: \ ProgramData \ मीट्रिक टन \ बीएसएस

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

<Directory Id="DesktopFolder" Name="Desktop"/> 
    <Directory Id="CommonAppDataFolder" Name="ProgramDataFolder"/> 
    <Component Id="ComponentBSStrageShortcut" Guid="{8436995c-2e76-4030-b92d-c6b4bc243c43}"> 
    <Shortcut Id="ShortcutBSStrageShortcut" 
       Directory="DesktopFolder" 
       WorkingDirectory="APPLICATIONFOLDER" 
       Target="[CommonAppDataFolder]/MTK/BSStrage" 
       Name="BSStrage" 
       Show="normal"/> 
    <RegistryValue Action="write" 
        Key="SOFTWARE/MTK/BackStreet" 
        Root="HKCU" 
        Type="string" 
        KeyPath="yes" 
        Value="ApplicationFolderName"/> 
    </Component> 

जब मैं इंस्टॉलर का निर्माण करता हूं, तो यह वास्तव में डेस्कटॉप पर एक शॉर्टकट बनाता है। हालांकि, वाईएक्स को लगता है कि BSStrage एक फ़ाइल/एप्लिकेशन है, इसलिए यह स्थान C: \ ProgramData \ MT में BSStrage नामक एक काल्पनिक एप्लिकेशन को शॉर्टकट रखता है। लेकिन उस पर डबल क्लिक करने में मदद नहीं की जाती क्योंकि कोई प्रोग्राम नहीं है जिसका उपयोग इसे खोलने के लिए किया जा सकता है।

स्पष्ट रूप से मैं इसे गलत कर रहा हूं। क्या कोई मेरी मदद कर सकता है, ताकि इस समस्या को दूर करने के लिए। ध्यान दें कि मैं विक्स के लिए बेहद नया हूं (यह केवल दो दिन है) और इससे पहले कभी इसके साथ काम नहीं किया है। कोई भी कोड नमूना बहुत मददगार होगा।

+0

यह सिर्फ एक जंगली अनुमान है, लेकिन क्या आपने लक्ष्य फ़ोल्डर पथ पर पिछला स्लैश जोड़ने का प्रयास किया है? –

उत्तर

2

आपके शॉर्टकट/@ लक्ष्य में स्लैश बैकस्लैश होना चाहिए। एक्सप्लोरर शायद आपके शॉर्टकट को "स्विच/एमटीके और/बीएसएसट्रेज के साथ लॉन्च कॉमन ऐपडेटाफोल्डर" के रूप में व्याख्या कर रहा है। कम से कम, यह मेरा पहला अनुमान है।

1

मैंने अपनी आवश्यकताओं को थोड़ा सा बदल दिया और कोड को निम्नानुसार काम करने के लिए मिला। अब बदलें मैं प्रोग्रामडेटा फ़ोल्डर में एक शॉर्टकट बना देता हूं।

<!-- Desktop Shortcut --> 
    <Directory Id="DesktopFolder" Name="Desktop"/> 
    <Directory Id="CommonAppDataFolder" Name="ProgramDataFolder"/> 
    <Component Id="MTDesktopShortcut" Guid="{8436995c-2e76-4030-b92d-c6b4bc243c43}"> 
    <Shortcut Id="MTShortcut" 
       Directory="DesktopFolder" 
       WorkingDirectory="APPLICATIONFOLDER" 
       Target="[CommonAppDataFolder]" 
       Name="MT" 
       Show="normal"/> 
    <RegistryValue Action="write" 
        Key="SOFTWARE/MT/BS" 
        Root="HKCU" 
        Type="string" 
        KeyPath="yes" 
        Value="ApplicationFolderName"/> 
    </Component> 

यह ठीक काम करता है और शॉर्टकट ठीक बनाता है। हालांकि एक समस्या है क्योंकि यह ऑलयूसर डेस्कटॉप पर शॉर्टकट बनाता है जबकि मैं इसे वर्तमान उपयोगकर्ता के डेस्कटॉप पर बनाना चाहता हूं। मुझे क्या परिवर्तन करना चाहिए?

यह भी ध्यान दें कि मेरा इंस्टॉलर एक सर्व-उपयोगकर्ता इंस्टॉल करता है, और मुझे इसे बदलने की स्वतंत्रता नहीं है। मुझे केवल वर्तमान उपयोगकर्ता के डेस्कटॉप पर इस शॉर्टकट को बनाने का एक तरीका चाहिए जबकि इंस्टॉलर अभी भी एक उपयोगकर्ता-उपयोगकर्ता इंस्टॉल कर सकता है।

3

मैं बस एक ही समस्या में भाग गया; यह उस रूप
Target="[CommonAppDataFolder]" ठीक काम करता है की एक Target विशेषता के साथ एक Shortcut टैग बनाने से है, लेकिन कोशिश कर रहा एक शॉर्टकट वह काम नहीं करता के निर्माण में उपनिर्देशिका जैसे
Target="[CommonAppDataFolder]\MTK\BSStrage" परिणाम संलग्न करने के लिए लगता है।

सौभाग्य से, मुझे एक समाधान मिला है।

<Directory Id="DesktopFolder" Name="Desktop"/> 
<Directory Id="CommonAppDataFolder" Name="ProgramDataFolder"> 
    <Directory Id="AppDataMTK" Name="MTK"> 
    <Directory Id="AppDataBSStrage" Name="BSStrage"> 
     <Component Id="ComponentBSStrageShortcut" Guid="{8436995c-2e76-4030-b92d-c6b4bc243c43}"> 
     <CreateFolder/> 
     <Shortcut Id="ShortcutBSStrageShortcut" 
        Directory="DesktopFolder" 
        Name="BSStrage""/> 
     </Component> 
    </Directory> 
    </Directory> 
</Directory> 

नोट लक्ष्य निर्देशिका है: चाल Directory टैग निर्देशिका के लिए अग्रणी के एक पदानुक्रम है कि आप के लिए एक शॉर्टकट है, जो तब, एक Shortcut टैग वाले एक Component टैग है तो तरह बनाना चाहते हैं बनाने के लिए है शॉर्टकट बनने के समय वास्तव में मौजूद होने के लिए, या फिर आप एक ही समस्या के साथ समाप्त हो जाएंगे: एक टूटा हुआ शॉर्टकट। यही कारण है कि मैंने इंस्टॉल पर निर्देशिका बनाने के लिए Component टैग के अंदर <CreateFolder/> टैग जोड़ा।