Not seeing a Scroll to Top Button? Go to our FAQ page for more info. Personal Notebook: [софт] Превращаем bash в .app программу.

пятница, 27 июля 2012 г.

[софт] Превращаем bash в .app программу.

У вас когда нибуть возникала задача сделать из 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! скрипу взят из инета, точно не моего производства!

Комментариев нет: