Jak zrobić .app w systemie Mac OS X za pomocą skryptu powłoki?

12

Próbowałem wykonać kilka samouczków, ale dostaję to: Błąd PowerPC

Jak mogę to naprawić? Dodałem do info.plist (właśnie skopiowałem i wkleiłem plik innej aplikacji i zmieniłem kilka rzeczy).

Poza chmod +x myApptym sprawiłem, że skrypt był wykonywalny.

PS Używam El Capitan

Flare Cat
źródło
Nie możemy zgadnąć, co zrobiłeś przed wyświetleniem komunikatu o błędzie. Których samouczków wykonałeś, po jakim etapie utknąłeś?
nohillside
1
Utworzyłem folder o nazwie myApp.app, następnie podfolder o nazwie Contents, następnie MacOS, a następnie skrypt powłoki myApp, który zawiera #!/bin/bash ; say "Hi" ; exit 0(z każdym poleceniem w innym wierszu i bez średnika).
Flare Cat
1
Skrypt bash, w którym jest wykonywany zestaw bitów, niekoniecznie musi być umieszczony w pakiecie do wykonania, wystarczy kliknąć go dwukrotnie, jeśli tylko w Finderze lub uruchomić go z terminalu. Jeśli naprawdę potrzebujesz pakietu aplikacji, utwórz go za pomocą AppleScript lub Automatora, z których ten drugi jest łatwy. Dodaj akcję Uruchom skrypt powłoki i umieść w niej swój kod.
user3439894
@ user3439894 Próbowałem automater w sposób opisany przed opublikowaniem tego, ale aplikacja nie działałaby na komputerze docelowym.
Flare Cat
@ user3439894 Cóż, z jakiegoś powodu nie mogę edytować mojego poprzedniego komentarza. Wystąpił błąd: „Ten typ aplikacji nie jest obsługiwany na tym komputerze”.
Flare Cat,

Odpowiedzi:

21

Cóż, minęły lata, że ​​używam tej prostej sztuczki, aby mieć skrypty bash w aplikacji (i naprawdę nie rozumiem, dlaczego wszyscy ludzie próbują tak skomplikowanych rozwiązań, jak tworzenie folderów „Contents”, info.plist lub używanie Automatora lub Dziobaka itp. . ????): Utwórz folder o nazwie „YourApplication.app”. Umieść plik skryptu bash bezpośrednio w tym folderze w sposób, który najbardziej Ci odpowiada (Finder, terminal itp.). Skrypt bash musi oczywiście być wykonywalny (w razie potrzeby użyj chmod + x). Nie ma potrzeby używania innych folderów lub plików (dopóki oczywiście nie będziesz musiał wywoływać innych skryptów lub plików wykonywalnych z poziomu skryptu). Sztuką jest nazywanie skryptu dokładnie taką samą nazwą jak folder aplikacji, ale bez rozszerzenia. W opisanym tutaj przypadku plik skryptu musi mieć nazwę „Twoja aplikacja”. To wszystko ! Działa na Mac OS X od Snow Leopard do Mavericks. Jeśli ktoś może wypróbować nowsze wersje systemu operacyjnego i powiedz mi.

Uwaga: skrypt musi wynosić co najmniej 28 bajtów, w przeciwnym razie nie będzie wykonywał. Może być wypełniony pustymi liniami, aby osiągnąć minimalny rozmiar. Ponadto pierwszy wiersz skryptu musi być shebang; np . #!/bin/bashlub #!/bin/perl.

Pierre Lagarde
źródło
Spróbuj dodać więcej wierszy, wyświetli się komunikat, jeśli w skrypcie nie ma wystarczającej liczby wierszy.
Pierre Lagarde,
Zredagowałem twoją odpowiedź, aby uwzględnić krytyczną brakującą informację, i podniosłem głos.
user3439894,
OK, dziękuję za poprawkę i aktualizację ... Używam tego od zbyt dawna i zapomniałem o potrzebie 28 bajtów ... Nie mam oczywiście tak małego skryptu: D
Pierre Lagarde
1
Właśnie przetestowałem to pod macOS Sierra i to też tam działa.
user3439894
1
@FlareCat W rzeczywistości właśnie sprawdziłem i myślę, że zrobi to dowolny shebang z istniejącym tłumaczem (wypróbowany z perlem). Jeśli próbowałeś innych języków, po prostu powiedz;).
Pierre Lagarde
7

Jeśli jest to prosty skrypt powłoki, nie trzeba go pakować w pakiet aplikacji; możesz dwukrotnie kliknąć sam skrypt. Jednak nie będziesz mieć możliwości posiadania niestandardowej ikony lub innych podobnych rzeczy.

Myślę, że jest kilku pomocników, którzy potrafią owijać proste skrypty, ale jedyny, z jakim mam doświadczenie, to Platypus, który pozwala na uruchamianie skryptów powłoki / python / perl / ruby ​​/ itp. Jak zwykłych aplikacji z ikonami, I / O przekierowania itp.

bjb
źródło
Dziobak wygląda dobrze, ale dobrze byłoby wiedzieć, jak to zrobić ręcznie.
Flare Cat
1
Przetestowany Dziobak, działa dokładnie tak, jak chciałem! Dzieki za sugestie.
Flare Cat
0

Nie mam reputacji, aby komentować odpowiedź bjb, ale możesz dodawać własne ikony do skryptów .sh. Po prostu przeciągnij obraz na ikonę w informacji o pliku. Myślę, że to musi być png i można uzyskać działanie krycia.

Jacob Smith
źródło
Witamy w Zapytaj inaczej. Dobrze jest dołączyć część innej odpowiedzi z uznaniem, aby Twoja odpowiedź była samodzielna. Lub edytowanie postu.
bmike