2011-08-24 17 views
12

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

<Component Id="MyAppProgramMenuShortcut" Guid="MY-GUID-HERE"> 
    <RegistryValue Root="HKCU" 
     Key="Software\[Manufacturer]\[ProductName]\MyAppShortcut" Type="string" 
     Value="" KeyPath="yes" /> 
    <Shortcut Id="ProgramMenuShortcutMyApp" Directory="ProgramMenuDir" 
     Name="MyApp" Target="[SHORTCUT_TARGET]" 
     Arguments="-jar myApp.jar [ARGUMENTS]" WorkingDirectory="INSTALLDIR" 
     Icon="logo.ico" /> 
</Component> 

मैं के लिए कुछ बराबर की कोशिश की है:

मैं के माध्यम से ARGUMENTS संपत्ति का हवाला शॉर्टकट बनाने के लिए सक्षम होना चाहता हूँ

<Property Id="PROGRAM_FILES">C:\Program Files</Property> 
<Property Id="MY_APP_DIR">[PROGRAM_FILES]\MyApp</Property> 
<Property Id="ARGUMENTS">[MY_APP_DIR]\fileA.xml [MY_APP_DIR]\fileB.xml</Property> 

लेकिन फिर मैं जब गुजर इस चेतावनी मिलती है यह candle.exe:

चेतावनी एनजी सीएनडीएल 1077: 'MY_APP_DIR' संपत्ति में '[PROGRAM_FILES]' है जो इसके मूल्य में एक अन्य संपत्ति का अवैध संदर्भ है। यदि यह मान स्ट्रिंग अक्षर है, तो कोई संपत्ति संदर्भ नहीं है, तो कृपया इस चेतावनी को अनदेखा करें। किसी अन्य प्रॉपर्टी के मूल्य के साथ एक संपत्ति सेट करने के लिए, संपत्ति और मूल्य विशेषताओं के साथ एक कस्टम एक्शन का उपयोग करें।

तो, चेतावनी में सुझाव के आधार पर मैं के बराबर कुछ में स्विच:

<CustomAction Id="PROGRAM_FILES" Property="PROGRAM_FILES" Value="C:\Program Files"/> 
<CustomAction Id="MY_APP_DIR" Property="MY_APP_DIR" Value="[PROGRAM_FILES]\MyApp"/> 
<CustomAction Id="ARGUMENTS" Property="ARGUMENTS" Value="[MY_APP_DIR]\fileA.xml [MY_APP_DIR]\fileB.xml"/> 

और मेरे पास कोई चेतावनी या त्रुटियों मिलता है, लेकिन समस्या यह है कि जब मैं अनुप्रयोग शॉर्टकट डॉन स्थापित लक्ष्य क्षेत्र में तर्क नहीं है।

क्या मैं ऐसा कुछ नहीं कर रहा हूं जो मुझे करना चाहिए? क्या मैं ऐसा करना चाहता हूं जो मैं करना चाहता हूं?

उत्तर

11

आपको प्रोग्राम फ़ाइलों या आपके उत्पाद की इंस्टॉल निर्देशिका के लिए गुणों की आवश्यकता नहीं है। उस फ़ाइल के पूर्ण पथ को देखने के लिए [#FileId] का उपयोग करें।

इसके अलावा, यदि आप एकाधिक शॉर्टकट चाहते हैं, तो अलग-अलग तत्व Arguments विशेषताओं वाले कई तत्व हैं। यदि आप कई शॉर्टकट्स में से एक चाहते हैं, तो आपके पास एस Shortcut एस के साथ हो सकता है और उनमें से केवल एक स्थापित करने के लिए Condition का उपयोग करें।

+0

मुझे '[#FileId] 'वाक्यविन्यास के बारे में पता नहीं था। धन्यवाद। एकमात्र मुद्दा एक ** चेतावनी LGHT1076 है: ICE69 ** _light.exe_ के माध्यम से पारित होने पर। इसलिए, यह काम करता है लेकिन इसकी अनुशंसा नहीं की जाती है क्योंकि मैं अलग-अलग 'घटक' में फ़ाइल संदर्भ का उपयोग कर रहा हूं। –

+3

एक आईसीई 6 9 * चेतावनी * ठीक है अगर आप हमेशा यह सुनिश्चित करते हैं कि घटक एक ही सुविधा में हैं। आईसीई चेतावनियों का लगभग हमेशा मतलब है "हे, यह कुछ ऐसा है जो आपको यह सुनिश्चित करने के लिए देखना चाहिए कि इसका मतलब क्या है," ऐसा कुछ नहीं है या इसकी अनुशंसा नहीं की जाती है। –

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