example here के बाद, मैंने ProgramMenuFolder के लिए एक शॉर्टकट जोड़ा जो मेरा एप्लिकेशन लॉन्च करता है। (मेरे कोड क्योंकि मैं अतिरिक्त फ़ोल्डर की जरूरत नहीं है वास्तव में सरल है।)(वाईएक्स) प्रोग्राम फाइल शॉर्टकट प्रति मशीन इंस्टॉल
<DirectoryRef Id='ProgramMenuFolder'>
<Component Id='cmpStartMenuShortcut'
Guid='MY GUID HERE'>
<Shortcut Id='StartMenuShortcut'
Name='$(var.ProductName)'
Icon='MainIcon.ico'
Description='$(var.ProductName)'
Target='[ClientDir]myapp.exe'
WorkingDirectory='ClientDir'/>
<RegistryValue Action='write' Type='integer' Root='HKCU'
Key='Software\Company\Product Name'
Name='installed' Value='1' KeyPath='yes'/>
</Component>
</DirectoryRef>
चूंकि मेरे स्थापना (ALLUSERS = 1, पैकेज/@ InstallPrivileges =, और @ InstallScope = '' बुलंद 'प्रति मशीन है perMachine ') ProgramMenuFolder मशीन पर सभी उपयोगकर्ताओं के लिए फ़ोल्डर है।
मेरा प्रश्न रजिस्ट्री मान के साथ करना है। मेरी समझ यह है कि शॉर्टकट वाले घटक के लिए एक कीपैथ प्रदान करने के लिए बस इसकी आवश्यकता है। नमूना HKCU का उपयोग करता है, जो एक प्रति उपयोगकर्ता स्थान है।
क्या प्रति-मशीन घटक के लिए प्रति-उपयोगकर्ता मान के रूप में प्रति-उपयोगकर्ता मान का उपयोग करना गलती नहीं है?
यदि किसी मशीन में दो व्यवस्थापक हैं, और व्यवस्थापक # 1 उत्पाद इंस्टॉल करता है, और व्यवस्थापक # 2 मरम्मत का प्रयास करता है, तो Windows इंस्टालर रजिस्ट्री मान नहीं देखेगा और लगता है कि शॉर्टकट गुम है और यह इंस्टॉल करेगा डुप्लिकेट, है ना?
तो मैं HKLM के लिए बदल रहा RegistryValue/@ रूट की कोशिश की, लेकिन तब WiX शिकायत:
त्रुटि LGHT0204: ICE38: घटक cmpStartMenuShortcut उपयोगकर्ता प्रोफ़ाइल पर स्थापित करता है। यह [एसआईसी] कीपैथ रजिस्ट्री कुंजी एचकेसीयू के तहत आनी चाहिए।
त्रुटि LGHT0204: ICE43: घटक cmpStartMenuShortcut में गैर-विज्ञापित शॉर्टकट हैं। यह [एसआईसी] कीपैथ रजिस्ट्री कुंजी एचकेसीयू के तहत आनी चाहिए।
त्रुटि LGHT0204: ICE57: घटक 'cmpStartMenuShortcut' में प्रति-मशीन कीपैथ के साथ प्रति उपयोगकर्ता और प्रति-मशीन डेटा दोनों हैं।
मुझे समझ में नहीं आता कि कुंजी HKCU के तहत क्यों होनी चाहिए।
धन्यवाद। यह समाधान मेरे लिए काम कर रहा प्रतीत होता है। मुझे नहीं पता था कि जब मैंने वाईएक्स रोड शुरू किया था तो मुझे एक्सएसएलटी के बारे में जानना होगा। –
आपने वास्तव में उत्तर नहीं दिया है कि एक गैर-विज्ञापित शॉर्टकट एचकेएलएम को 'कीपैथ' क्यों नहीं लिख सकता है, या क्यों गैर-विज्ञापित शॉर्टकट को ** रजिस्ट्री ** 'कीपैथ' की आवश्यकता होती है लेकिन विज्ञापित कोई नहीं करता है। –