У вас когда нибуть возникала задача сделать из shell скрипта программу с разрешением .app? Меня заинтересовал этот вопрос. Порывшись в инете нашел программу под названием DropScript 0.5. Задача программы только в одном, создать из shell скрипта программу c разрешением .app.
В чем трюк? Спросите вы. трюка нету. Дело все в том, что .app это не совсем программа. Это скорей папка с набором файлов и самой программой (образно пакет). Папка с разрешением .app в маке определяется как программа. Конечно это не единственное разширение которое определяет папку как программу. Есть например Extension.kext. (так определяются дрова для системы. это тоже папка). В папке-программе c расширением .app присутствует папка Content, а в ней уже несколько папок нужных для работы программы . включая саму программу. Например, самые используемые это Resources и MacOS. В папке Resources находятся ресурсы программы. Иконки программы, иконки файлов соответствующих этой программе, а в папке MacOS сообственно и лежит сама программа. Конечно состав папки .app может быть разным, но эти папки должны присутствовать всегда. Например без папки MacOS, как вы запустите программу, если ее нету? К чему я виду? А к тому, что программа под названием DropScript 0.5 при работе и создает всю эту иерархию папок внутри папки-программы. Что имено она делает? Программа создает папку с разрешением .app, а также внутири создается папка Contents и уже в ней создается папка MacOS с программой. В нашем варианте скрипт. Сообственно программа его не конвертирует, а просто убирает разширение скрипта и ставить аттрибут chmod +x. Вот и все.
PS!Посмотреть содержимое программы можно кликнув по программу правой кнопкой мыши и выбрать Show Package Content.
скачать программу http://mac.softpedia.com/get/Utilities/DropScript.shtml
Например, тоже самое можно сделать и через терминам.
Пример.
1. открываем терминал и вводим команду: sudo nano /usr/local/bin/shell2app (имя shell2app имя скрипта который будет превращать shell в программу)
2.копируем bash код в терминал.
#!/bin/bash
APPNAME=${2:-$(basename "$1" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"
if [ -a "$APPNAME.app" ]; then
echo "$PWD/$APPNAME.app already exists :("
exit 1
fi
mkdir -p "$DIR"
cp "$1" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"
echo "$PWD/$APPNAME.app"
3. проверяем (запустить программу можно просто набрав команду shell2app т.е. имя файла). в директории со скриптом вводим команду shell2app script_name.sh (*.bash, *.sh *.command) [сдесь имя вашей программы]
PS! скрипу взят из инета, точно не моего производства!
В чем трюк? Спросите вы. трюка нету. Дело все в том, что .app это не совсем программа. Это скорей папка с набором файлов и самой программой (образно пакет). Папка с разрешением .app в маке определяется как программа. Конечно это не единственное разширение которое определяет папку как программу. Есть например Extension.kext. (так определяются дрова для системы. это тоже папка). В папке-программе c расширением .app присутствует папка Content, а в ней уже несколько папок нужных для работы программы . включая саму программу. Например, самые используемые это Resources и MacOS. В папке Resources находятся ресурсы программы. Иконки программы, иконки файлов соответствующих этой программе, а в папке MacOS сообственно и лежит сама программа. Конечно состав папки .app может быть разным, но эти папки должны присутствовать всегда. Например без папки MacOS, как вы запустите программу, если ее нету? К чему я виду? А к тому, что программа под названием DropScript 0.5 при работе и создает всю эту иерархию папок внутри папки-программы. Что имено она делает? Программа создает папку с разрешением .app, а также внутири создается папка Contents и уже в ней создается папка MacOS с программой. В нашем варианте скрипт. Сообственно программа его не конвертирует, а просто убирает разширение скрипта и ставить аттрибут chmod +x. Вот и все.
PS!Посмотреть содержимое программы можно кликнув по программу правой кнопкой мыши и выбрать Show Package Content.
скачать программу http://mac.softpedia.com/get/Utilities/DropScript.shtml
Например, тоже самое можно сделать и через терминам.
Пример.
1. открываем терминал и вводим команду: sudo nano /usr/local/bin/shell2app (имя shell2app имя скрипта который будет превращать shell в программу)
2.копируем bash код в терминал.
#!/bin/bash
APPNAME=${2:-$(basename "$1" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"
if [ -a "$APPNAME.app" ]; then
echo "$PWD/$APPNAME.app already exists :("
exit 1
fi
mkdir -p "$DIR"
cp "$1" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"
echo "$PWD/$APPNAME.app"
3. проверяем (запустить программу можно просто набрав команду shell2app т.е. имя файла). в директории со скриптом вводим команду shell2app script_name.sh (*.bash, *.sh *.command) [сдесь имя вашей программы]
PS! скрипу взят из инета, точно не моего производства!
Комментариев нет:
Отправить комментарий