загрузка и повторная загрузка исполняемого скрипта

У меня есть исполняемая программа терминала (построенная на MacOS из кода Haskell с GHC), которая запускается, когда я дважды щелкаю по ней в Finder. Я хочу разместить это на своем веб-сайте, с которого люди могут загрузить и запустить его из своего Finder, дважды щелкнув его.

Каким-то образом в этом обмене файл теряет бит «+ x», так что при повторной загрузке он больше не может быть запущен двойным щелчком. Я все еще могу запустить его, но сначала мне нужно выполнить «chmod + x». Что я могу сделать, чтобы загруженный файл по умолчанию был исполняемым? Нужно ли мне упаковать его в файл ".app"? Сейчас это ".command".


person user2744010    schedule 22.11.2013    source источник


Ответы (1)


Независимо от того, является ли он частью пакета приложений, сам исполняемый файл должен быть… исполняемым. Чтобы обеспечить исполняемость, вы должны поместить его в zip- или dmg-файл, который сохранит свой «исполняемый» флаг.


Если вы хотите превратить его в пакет приложений, есть простой способ сделать это. Если исполняемый файл называется PROGRAMNAME, просто поместите его в папку с именем PROGRAMNAME.app. Двойной щелчок должен запустить файл.

Если вы хотите создать более подходящий комплект приложений, используйте это:

APP_NAME='My Awesome App.app'
EXE_NAME='PROGRAMNAME'

mkdir -p "$APP_NAME"/Contents
defaults write "`pwd`"/"$APP_NAME"/Contents/Info CFBundleExecutable "$EXE_NAME"
mkdir "$APP_NAME"/Contents/MacOS
cp "$EXE_NAME" "$APP_NAME"/Contents/MacOS
chmod a+x "$APP_NAME"/Contents/MacOS/"$EXE_NAME"

Пакеты приложений не будут отображать вывод терминала или сообщать об ошибках, поэтому, если вам это нужно, вы должны сохранить его как необработанный исполняемый файл. Кроме того, простые приложения, созданные описанным выше способом, не будут иметь графического интерфейса пользователя, не будут отвечать на запросы и закроются после завершения работы.

Кроме того, если вы получили следующее сообщение, это может быть связано с тем, что исполняемый файл слишком короткий (добавьте к нему больше символов) или из-за ограничений карантина (попробуйте отредактировать исполняемый файл и сохранить его в приложении, таком как TextEdit, чтобы сделать его доверенным).

person interestinglythere    schedule 23.11.2013