Làm cách nào để tạo Mac OS X .app với tập lệnh shell?


12

Tôi đã thử làm theo một vài hướng dẫn, nhưng tôi nhận được điều này: Lỗi PowerPC

Làm thế nào tôi có thể sửa lỗi này? Tôi đã thêm vào một info.plist (Tôi vừa sao chép và dán tệp của ứng dụng khác và thay đổi một vài thứ.)

Ngoài ra, tôi đã sử dụng chmod +x myAppđể làm cho kịch bản thực thi.

Tái bút: Tôi đang sử dụng El Capitan


Chúng tôi không thể đoán những gì bạn đã làm trước khi nhận được thông báo lỗi. Những hướng dẫn nào bạn đã làm theo, sau bước nào bạn đã bị mắc kẹt?
nohillside

1
Tôi đã tạo một thư mục có tên myApp.app, sau đó là thư mục con có tên Nội dung, sau đó là MacOS, sau đó là tập lệnh shell myApp có chứa #!/bin/bash ; say "Hi" ; exit 0(Với mỗi lệnh trên các dòng khác nhau và không có dấu chấm phẩy).
Flare Cat

1
Một tập lệnh bash có tập lệnh thực thi bit không nhất thiết phải được đặt trong một gói để được thực thi, nhấp đúp vào nó nếu chỉ trong Finder hoặc chạy nó từ Terminal. Nếu bạn thực sự muốn có một gói ứng dụng thì hãy tạo nó bằng AppleScript hoặc Automator, việc này rất dễ dàng. Thêm một hành động Run Shell Script và đặt mã của bạn vào đó.
dùng3439894

@ user3439894 Tôi đã thử automater theo phương pháp bạn mô tả trước khi đăng bài này, nhưng ứng dụng sẽ không chạy trên máy tính mục tiêu.
Flare Cat

@ user3439894 Chà, vì một số lý do tôi không thể chỉnh sửa nhận xét trước đó của mình. Lỗi là một cái gì đó như 'Loại ứng dụng này không được hỗ trợ trên máy tính này.'
Flare Cat

Câu trả lời:


21

Chà, đã nhiều năm tôi sử dụng thủ thuật đơn giản này để có các tập lệnh bash trong ứng dụng (và thực sự không hiểu tại sao tất cả mọi người thử các giải pháp phức tạp như tạo thư mục "Nội dung", thông tin.plist hoặc sử dụng Automator hoặc Platypus hoặc như vậy .. . ????): Tạo thư mục có tên "YourApplication.app". Đặt tệp bash script của bạn trực tiếp vào thư mục này theo cách giúp bạn tập hợp tốt nhất (Finder, terminal, v.v.). Tất nhiên, tập lệnh bash phải được thực thi (sử dụng chmod + x nếu bạn cần). Không cần các thư mục hoặc tệp khác (cho đến khi bạn cần gọi các tập lệnh khác hoặc có thể thực thi được trong tập lệnh của mình) Thủ thuật là đặt tên tập lệnh của bạn với cùng tên với thư mục ứng dụng nhưng không có phần mở rộng. Trong trường hợp được mô tả ở đây, tệp script phải được đặt tên là "YourApplication". Đó là tất cả ! Nó hoạt động trên Mac os x kể từ Snow Leopard đến Mavericks. Nếu ai đó có thể thử trên các phiên bản HĐH mới hơn và cho tôi biết.

Lưu ý: Tập lệnh phải có kích thước tối thiểu 28 byte, nếu không nó sẽ không thực thi. Nó có thể được đệm bằng các dòng trống để đạt được kích thước tối thiểu. Ngoài ra, dòng đầu tiên của kịch bản phải là một shebang; ví dụ #!/bin/bashhay #!/bin/perl.


Hãy thử thêm một số dòng, nó cung cấp cho bạn thông điệp bạn đã có nếu không có đủ dòng trong tập lệnh của bạn.
Pierre Lagarde

Tôi đã chỉnh sửa câu trả lời của bạn để bao gồm phần thông tin còn thiếu quan trọng và đã bình chọn nó.
dùng3439894

OK, cảm ơn vì đã sửa chữa và nâng cấp ... Tôi đã sử dụng điều này từ quá lâu và quên mất nhu cầu về 28 byte ... Tôi không có bất kỳ tập lệnh nào nhỏ như vậy: D
Pierre Lagarde

1
Tôi mới thử nghiệm điều này dưới macOS Sierra và nó cũng hoạt động ở đó.
dùng3439894

1
@FlareCat Trên thực tế, tôi chỉ kiểm tra và tôi đoán bất kỳ shebang nào với một trình thông dịch hiện có sẽ làm (đã thử với perl). Nếu bạn đã thử các ngôn ngữ khác, chỉ cần nói;).
Pierre Lagarde

7

Nếu nó là một tập lệnh shell đơn giản, thì bạn không cần phải gói nó trong một gói ứng dụng; bạn có thể bấm đúp vào chính kịch bản. Tuy nhiên, bạn sẽ không có khả năng có một biểu tượng tùy chỉnh hoặc những thứ khác như thế.

Tôi nghĩ rằng có một vài người trợ giúp có thể gói các tập lệnh đơn giản, nhưng người duy nhất tôi có kinh nghiệm là Platypus cho phép bạn tạo các tập lệnh shell / python / perl / ruby ​​/ etc chạy như các ứng dụng thông thường với các biểu tượng, I / O chuyển hướng, vv


Thú mỏ vịt có vẻ tốt, nhưng sẽ thật tuyệt khi biết cách làm bằng tay.
Flare Cat

1
Đã thử nghiệm Thú mỏ vịt, hoạt động chính xác như tôi muốn! Cám ơn vì sự gợi ý.
Flare Cat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.