सवाल शेल स्क्रिप्ट से मूल एप्लिकेशन कैसे बनाएं?


मैंने बैश और जेनिटी का उपयोग करके एक छोटा सा एप्लीकेशन बनाया है, जिसे मैं अपने सिस्टम पर देशी एप्लिकेशन के साथ-साथ एक पैकेज के रूप में स्थापित करना चाहता हूं जिसे मैं वितरित कर सकता हूं। मेरे पास मेरे एप्लिकेशन, एक .png आइकन, और .sh फ़ाइल के लिए .desktop फ़ाइल है। ये फ़ाइलें कहां "मूल" एप्लिकेशन बनाने के लिए जाती हैं, और मुझे एक पैकेज बनाने के लिए किस प्रक्रिया के लिए जाना होगा जिसे इस एप्लिकेशन को किसी अन्य सिस्टम पर स्थापित करने के लिए संकलित किया जा सकता है?


4
2018-02-23 05:59


मूल


एप्लिकेशन को चलाने के लिए आवश्यक सभी फाइलों के साथ एक ज़िप फ़ाइल का एक लिंक यहां दिया गया है - यह एक साधारण छोटा चाय टाइमर है। :) इसे चलाने के लिए, बस स्क्रिप्ट चलाएं। .Desktop फ़ाइल शायद काम नहीं करेगा। dropbox.com/s/ya9futuiz33lian/GTeaKup.zip - Ryan McClure
आपने जाँच कर ली है क्या packaging.ubuntu.com/html/packaging-new-software.html ? - Radu Rădeanu


जवाब:


पहले भाग के बारे में: आरंभ करने के लिए, मैं स्क्रिप्ट निष्पादन योग्य और हटा दूंगा .sh स्क्रिप्ट और दोनों से विस्तार .desktop फ़ाइल। यदि आप इसे व्यापक रूप से सिस्टम का उपयोग करना चाहते हैं, तो छोड़कर, संपूर्ण निर्देशिका की प्रतिलिपि बनाएँ .desktop फ़ाइल, करने के लिए /opt.desktop फ़ाइल तब होगी:

[Desktop Entry]
Version=1.0
Type=Application
Name=GTeaKup
Comment=The perfect GTK tea timer!
Exec=/bin/bash gteakup
Icon=gteacup.png
Path=/opt/GTeaKup/
Terminal=false
StartupNotify=false

... और उस पर प्रतिलिपि बनाएँ /usr/share/applications

आपके प्रश्न के दूसरे भाग के बारे में: एक नज़र डालें यहाँ, ख़ास तौर पर यह वाला अगर आपने कभी डेबियन पैकेज पहले कभी नहीं बनाया है तो शुरू करना अच्छा है। फिर आप एक इंस्टॉलर प्राप्त करेंगे इस। जब आप इसे सॉफ़्टवेयर सेंटर के माध्यम से इंस्टॉल करते हैं, तो यह शिकायत करेगा, क्योंकि चेंजलॉग, कॉपीराइट इत्यादि जैसी सामान्य फ़ाइलें शामिल नहीं हैं, लेकिन यह ठीक काम करती है।

बीटीडब्ल्यू आप जानते हैं कि आपकी स्क्रिप्ट डबल-क्लिक पर अलग-अलग काम करती है और जब ठीक बटन चुना जाता है? ;)


3
2018-02-23 07:46



यह काम! मैंने प्रक्रिया को थोड़ा सा संपादित किया, और यह काम करता है! :) मैं (अब के लिए) एक डिस्ट्रो-तटस्थ पैकेज बनाने की कोशिश कर रहा हूं जिसे पैकेज प्रबंधक के बिना संकलित और स्थापित किया जा सकता है। आखिरकार, मैं इसके लिए एक डेबियन पैकेज तैयार करूंगा। मैं वर्तमान में स्क्रिप्ट को ठीक करने का तरीका जानने के लिए लड़ रहा हूं ताकि जब ओके बटन चुना जाता है, तब तक मेनू दोहराया जाता है जब तक कोई विकल्प नहीं चुना जाता है। कोई विचार? - Ryan McClure
... मुझे डर है कि मैं एक बैश विशेषज्ञ नहीं हूं, लेकिन अजगर में, मैं थोड़ी देर लूप का उपयोग करता हूं (जबकि उत्तर [सूची] में नहीं है, या उत्तर! = (इसके बराबर नहीं है) या फिर, सवाल दोहराएं, अन्यथा: निम्नलिखित करें)। क्या यह मदद करेगा: cyberciti.biz/faq/bash-while-loop ? - Jacob Vlijm


आप एक शेल स्क्रिप्ट का उपयोग कर सकते हैं install.sh जैसा कि नीचे स्थापित करने के लिए नीचे दिया गया है tea timer दूसरी मशीन पर लिपि।

#!/bin/bash
install_dir="$HOME/teaKup"
current_dir="$(pwd)"
dpkg -s sox > /dev/null 2>&1
if [ $? = 0 ]; then
    mkdir $install_dir #create directory to place files.
    cp $current_dir/gteakup.sh $install_dir/ # copies the file.
    cp $current_dir/gteakup.png $install_dir/
    cp $current_dir/sound.ogg $install_dir/
    cat > $HOME/Desktop/GTeaKup.desktop << EOF # create desktop file at desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=GTeaKup
Comment=The perfect GTK tea timer!
Exec=bash $install_dir/gteakup.sh
Icon=$install_dir/gteakup.png
Terminal=false
StartupNotify=false
EOF
    chmod u+x $HOME/Desktop/GTeaKup.desktop  # give execution permission to desktop file.
else
    # ask user to install sox which is needed to use play command
    echo -e "The program 'play' is currently not installed.  You can install it by typing:\nsudo apt-get install sox"
fi

अनुदेश

  • इसे डालें install.sh एक में अन्य फाइलों के साथ zip फ़ाइल। प्रदान करने की कोई ज़रूरत नहीं है .desktop फ़ाइल, स्क्रिप्ट एक बना देगा।
  • ज़िप फ़ाइल को अन्य सिस्टम में कॉपी करें और उन्हें अनजिप करें।
  • बस दौडो bash install.sh, यह फ़ाइलों को उचित स्थानों पर कॉपी करने सहित बाकी की देखभाल करेगा और इसे चलाने के लिए डेस्कटॉप फ़ाइल बना देगा।

ध्यान दें

की स्थिति से सावधान रहें EOF में install.sh। यह उस लाइन की शुरुआत में होना चाहिए।


1
2018-02-23 09:22