Как сделать Mac OS X .app с помощью скрипта оболочки?

12

Я попытался следовать нескольким учебникам, но я получил это: Ошибка PowerPC

Как я могу это исправить? Я добавил в info.plist (я просто скопировал и вставил файл другого приложения и изменил несколько вещей.)

Кроме того, я chmod +x myAppделал скрипт исполняемым.

PS Я использую El Capitan

Flare Cat
источник
Мы не можем угадать, что вы сделали, прежде чем получить сообщение об ошибке. Какими уроками вы следовали, после какого шага застряли?
Nohillside
1
Я создал папку с именем myApp.app, затем подпапку с именем Contents, затем MacOS, а затем скрипт оболочки myApp, содержащий #!/bin/bash ; say "Hi" ; exit 0(с каждой из команд в разных строках и без точки с запятой).
Flare Cat
1
Сценарий bash с установленным битом выполнения не обязательно должен быть помещен в пакет для выполнения, просто дважды щелкните его, если он находится только в Finder, или запустите его из терминала. Если вам действительно нужен пакет приложений, создайте его с помощью AppleScript или Automator, последнее из которых легко. Добавьте действие Run Shell Script и поместите в него свой код.
user3439894
@ user3439894 Я пытался автоматизировать в методе, который вы описали, прежде чем опубликовать это, но приложение не будет работать на целевом компьютере.
Flare Cat
@ user3439894 Ну почему-то я не могу отредактировать свой предыдущий комментарий. Ошибка была что-то вроде «Этот тип приложения не поддерживается на этом компьютере».
Flare Cat

Ответы:

21

Ну вот уже много лет я использую этот простой трюк, чтобы использовать bash-скрипты в приложении (и действительно не понимаю, почему все люди пытаются использовать такие сложные решения, как создание папок "Contents", info.plist или использование Automator, Platypus или около того ... . ????): создайте папку с именем «YourApplication.app». Поместите файл bash-скрипта прямо в эту папку так, как вам удобно (Finder, терминал и т. Д.). Конечно, bash-скрипт должен быть исполняемым (используйте chmod + x, если вам нужно). Нет необходимости в других папках или файлах (пока, конечно, вам не понадобится вызывать другие скрипты или исполняемый файл из вашего скрипта). Хитрость заключается в том, чтобы назвать ваш скрипт точно таким же именем, что и папка приложения, но без расширения. В случае, описанном здесь, файл сценария должен называться «YourApplication». Это все ! Он работает на Mac OS X, начиная со Snow Leopard и заканчивая Mavericks. Если кто-нибудь может примерить более новые версии ОС и скажите мне.

Примечание . Сценарий должен иметь размер не менее 28 байт, иначе он не будет выполнен. Это может быть дополнено пустыми строками для достижения минимального размера. Кроме того, первая строка сценария должна быть шебангом; например #!/bin/bashили #!/bin/perl.

Пьер Лагард
источник
Попробуйте добавить еще несколько строк, это даст вам сообщение, если в вашем скрипте недостаточно строк.
Пьер Лагард
Я отредактировал ваш ответ, включив в него критически недостающую часть информации, и проголосовал за нее.
user3439894
Хорошо, спасибо за исправление и голосование ... Я использовал это слишком долгое время и забыл о необходимости в 28 байтах ... У меня нет такого маленького сценария, конечно: D
Pierre Lagarde
1
Я только что проверил это под macOS Sierra, и там тоже работает.
user3439894
1
@FlareCat На самом деле, я только что проверил и думаю, что подойдет любой шебанг с существующим интерпретатором (пробовал с perl). Если вы пробовали другие языки, просто скажите;).
Пьер Лагард
7

Если это простой сценарий оболочки, вам не нужно заключать его в пакет приложений; Вы можете дважды щелкнуть сам скрипт. Однако у вас не будет возможности иметь собственный значок или другие подобные вещи.

Я думаю, что есть несколько помощников, которые могут обернуть простые сценарии, но единственный, с которым у меня есть опыт, это Platypus, который позволяет вам запускать сценарии shell / python / perl / ruby ​​/ etc как обычные приложения с иконками, I / О перенаправления и т. Д.

BJB
источник
Утконос выглядит хорошо, но было бы здорово узнать, как это сделать вручную.
Flare Cat
1
Протестировал Утконос, работает именно так, как я хотел! Спасибо за предложение.
Flare Cat