पृष्ठभूमि की कहानी:
में चाहता हूं:
- एक एप्लिकेशन को एक साधारण TAR के रूप में वितरित करें जिसे उपयोगकर्ता निकालते हैं और चलाते हैं
- उस ऐप के लिए एक उचित ऐप आइकन होना चाहिए।
कोई पैकेज चरनी, कोई sudo, कोई इंस्टॉलर स्क्रिप्ट।
मैं मानक और विभिन्न लेखों से देखता हूं कि ऐप आइकन को एक .desktopफ़ाइल की आवश्यकता होती है, जिसे निष्पादन योग्य (यूजी) और ऐप आइकन के लिए पूर्ण पथ की आवश्यकता होती है । मैं यह भी देखता हूं कि उबंटू एकता (शायद अन्य) .desktopफाइलों में समर्थन करती है~/.local/share/applications
विंडोज़ इसे आइकनों को एग्जीक्यूटिव्स में एम्बेड करके सपोर्ट करता है। मैक ओएस एक्स में उन अनुप्रयोगों के लिए एक रिश्तेदार निर्देशिका संरचना है जिसमें आइकन शामिल हैं।
"हैकिश" समाधान:
मेरा "हैकिश" समाधान ऐप स्टार्टअप पर है, यह पता लगाएं कि क्या myApp.desktopफ़ाइल मौजूद है ~/.local/share/applications/, और यदि नहीं, तो इसे लिखें (पूर्ण निष्पादन योग्य और आइकन के लिए पूर्ण पथ सहित), एक नई myApp प्रक्रिया लॉन्च करें और बाहर निकलें।
उम्मीद है, नई myApp प्रक्रिया ऐप आइकन को उठाएगी। और कभी-कभी ऐसा करता है।
समस्या:
यह समस्या है, मुझे sleep 2नई प्रक्रिया शुरू करने से पहले कुछ सेकंड चाहिए। यदि मैं करता हूं, तो आइकन उठाया जाता है। अगर मैं नहीं करता हूं, तो मेरे ऐप के लिए कोई आइकन नहीं है।
मैंने सोने (साथ gtk-update-icon-cache /usr/share/icons/hicolor) के बजाय GTK आइकन कैश को फिर से लोड करने की कोशिश की है, लेकिन यह चाल नहीं करता है।
किसी को भी पता है कि मैं इस देरी से कैसे बच सकता हूं और यह सुनिश्चित कर सकता हूं कि नई लिखी गई .desktopफाइल को उठाया जाए? (मैं फ्लश कर रहा हूं और फ़ाइल बंद कर रहा हूं।) या मेरे हैकिश समाधान की तुलना में बेहतर विचार है?
अद्यतन: दिलचस्प है, एक सादे स्क्रिप्ट का परीक्षण करना जो .desktopफ़ाइल लिखता है (या तो मैन्युअल या xdg- डेस्कटॉप-मेनू के साथ ) और एप्लिकेशन लॉन्च करता है, इसमें 2 सेकंड की देरी भी होती है या आइकन दिखाई नहीं देगा। चित्त आकर्षण करनेवाला।
.bundleप्रारूप स्वयं-निकालने वाले इंस्टॉलर की तरह है, तो मैं एक इंस्टॉलर स्क्रिप्ट पर विचार करूंगा, इसलिए मैं इससे बचना पसंद करूंगा। आपके सुझाव के लिए धन्यवाद!
.bundleकई बार VMware स्थापित किया है और इस बात से प्रभावित हुआ कि यह सब कितनी आसानी से हो गया। यह सब विभिन्न लिनक्स के बजाय जायके, संभाल करने के लिए लगता है .deb, .rpmआदि विशेष रूप से वितरण समूहों से जुड़े होते हैं जो,,। यह मूल रूप से एम्बेडेड बायनेरिज़ के साथ एक विशाल स्क्रिप्ट फ़ाइल है, और इसे बनाने के लिए उपकरण होने चाहिए। तो यह है एक इंस्टॉलर स्क्रिप्ट है, लेकिन एक बहुत लचीला एक - और यह मूल डेस्क टॉप और आवेदन मेनू शॉर्ट-कट जोड़ने था। एक tarसंग्रह को एक ज्ञात स्थान पर निकालने की आवश्यकता होगी: मुझे पूरा यकीन है कि आप $HOME/इसके भीतर पथों का उपयोग नहीं कर सकते ।
/usrनिर्देशिका में फ़ाइलों की प्रतिलिपि बनाने के लिए रूट विशेषाधिकारों की आवश्यकता होगी जब तक कि आप साझा सॉफ़्टवेयर के लिए गैर-मानक पथ का उपयोग न करें या केवल उन क्षेत्रों तक पहुंच की अनुमति न दें, जो आमतौर पर पढ़े / निष्पादित होते हैं। आप.bundleVMware और अन्य द्वारा उपयोग किए गए प्रारूप की जांच करना पसंद कर सकते हैं, हालांकि मैं याद नहीं कर सकता कि यह पासवर्ड के लिए संकेत देता है या नहीं।