Bagaimana cara membuat Mac OS X .app dengan skrip shell?

12

Saya mencoba mengikuti beberapa tutorial, tetapi saya mendapatkan ini: Kesalahan PowerPC

Bagaimana saya bisa memperbaikinya? Saya menambahkan di info.plist (saya baru saja menyalin dan menempel file aplikasi lain, dan mengubah beberapa hal.)

Juga, saya biasa chmod +x myAppmembuat skrip dapat dieksekusi.

PS Saya menggunakan El Capitan

Flare Cat
sumber
Kami tidak dapat menebak apa yang Anda lakukan sebelum mendapatkan pesan kesalahan. Tutorial mana yang Anda ikuti, setelah langkah apa Anda buntu?
nohillside
1
Saya membuat folder bernama myApp.app, kemudian sub folder bernama Contents, lalu MacOS, lalu myApp shell script yang berisi #!/bin/bash ; say "Hi" ; exit 0(Dengan setiap perintah pada baris yang berbeda, dan tanpa tanda titik koma).
Flare Cat
1
Script bash yang menjalankan bit set tidak harus ditempatkan dalam bundel untuk dieksekusi, klik dua kali sederhana jika hanya di Finder atau jalankan dari Terminal. Jika Anda benar-benar menginginkan bundel aplikasi maka buatlah menggunakan AppleScript atau Automator, yang terakhir mudah. Tambahkan tindakan Run Shell Script dan tempatkan kode Anda di dalamnya.
user3439894
@ user3439894 Saya mencoba automater dalam metode yang Anda jelaskan sebelum memposting ini, tetapi aplikasi tidak akan berjalan di komputer target.
Flare Cat
@ user3439894 Ya, untuk beberapa alasan saya tidak dapat mengedit komentar saya sebelumnya. Kesalahannya kira-kira seperti 'Aplikasi jenis ini tidak didukung di komputer ini.'
Flare Cat

Jawaban:

21

Yah, sudah bertahun-tahun saya menggunakan trik sederhana ini untuk memiliki skrip bash dalam aplikasi (dan benar-benar tidak mengerti mengapa semua orang mencoba solusi yang sangat rumit seperti membuat folder "Contents", info.plist atau menggunakan Automator atau Platypus atau lebih .. . ????): Buat folder bernama "YourApplication.app". Letakkan file skrip bash Anda langsung di folder ini dengan cara yang paling sesuai untuk Anda (Finder, terminal, dll). Skrip bash harus dapat dieksekusi tentu saja (gunakan chmod + x jika Anda membutuhkan). Tidak perlu folder atau file lain (sampai Anda perlu memanggil skrip lain atau dieksekusi dari dalam skrip Anda tentu saja) Caranya adalah dengan memberi nama skrip Anda dengan nama yang persis sama dengan folder aplikasi tetapi tanpa ekstensi. Dalam kasus yang dijelaskan di sini, file skrip harus dinamai "Aplikasi Anda". Itu saja ! Ini berfungsi pada Mac os x sejak Snow Leopard ke Mavericks. Jika ada yang bisa mencoba versi OS yang lebih baru dan beri tahu saya.

Catatan: Ukuran skrip minimal 28 byte, jika tidak skrip tidak akan dieksekusi. Mungkin diisi dengan garis-garis kosong untuk mencapai ukuran minimum. Juga, baris pertama skrip harus berupa shebang; misalnya #!/bin/bashatau #!/bin/perl.

Pierre Lagarde
sumber
Cobalah untuk menambahkan beberapa baris lagi, itu memberi Anda pesan yang Anda miliki jika tidak ada cukup baris dalam skrip Anda.
Pierre Lagarde
Saya telah mengedit jawaban Anda untuk memasukkan informasi penting yang hilang dan memilihnya.
user3439894
OK terima kasih untuk koreksi dan upvoting ... Saya sudah menggunakan ini sejak terlalu lama dan lupa tentang perlunya 28 byte ... Saya tidak punya skrip yang kecil tentu saja: D
Pierre Lagarde
1
Saya baru saja menguji ini di bawah macOS Sierra dan berfungsi di sana juga.
user3439894
1
@ FlareCat Bahkan, saya baru saja memeriksa dan saya kira setiap shebang dengan penerjemah yang ada akan melakukannya (dicoba dengan perl). Jika Anda mencoba bahasa lain, cukup beri tahu;).
Pierre Lagarde
7

Jika skrip shell sederhana, maka Anda tidak perlu membungkusnya dalam bundel aplikasi; Anda dapat mengklik dua kali skrip itu sendiri. Namun, Anda tidak akan mendapatkan kemampuan untuk memiliki ikon khusus atau hal-hal lain seperti itu.

Saya pikir ada beberapa pembantu di luar sana yang dapat membungkus skrip sederhana, tetapi satu-satunya yang saya punya pengalaman adalah Platypus yang memungkinkan Anda untuk membuat skrip shell / python / perl / ruby ​​/ etc berjalan seperti aplikasi biasa dengan ikon, I / O pengalihan, dll.

bjb
sumber
Platypus terlihat bagus, tetapi alangkah baiknya mengetahui cara melakukannya secara manual.
Flare Cat
1
Diuji Platypus, bekerja persis seperti yang saya inginkan! Terima kasih untuk sarannya.
Flare Cat