MacOSXでシェルスクリプトを.app形式のアプリケーションにするmkapp.app
提供:maruko2 Note.
Mac OS X でシェルスクリプトを実行するには、ターミナルでシェルスクリプトを実行したり、シェルスクリプトのファイル名を.command という拡張子にして実行権限を付けると、ダブルクリックするだけで自動でターミナルが起動しスクリプトを実行する、などのような方法がある。
いずれにしてもターミナルを使う事になるが、Mac OS X の .app 形式にすることでターミナルを使う事なくシェルスクリプトを実行させることができるようになる。
Mac OS X は、次のような構成でディレクトリとファイルを配置すると、アプリケーションパッケージになる。
Application.app/ `-- Contents |-- Info.plist |-- MacOS | `-- script.sh `-- Resources
- script.sh は実行させたいシェルスクリプト。(実行権限を付けておく。)
- Info.plist は次のような内容にする。
- <string>script.sh</string> の部分に、実行させたいシェルスクリプトのファイル名を記述する。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleExecutable</key> <string>script.sh</string> </dict> </plist>
これらディレクトリ作成などをスクリプトにしたものが mkapp.sh。
#!/bin/sh SHELLSCRIPT="script.sh" mkdir -p Application.app/Contents/{MacOS,Resources} cat > Application.app/Contents/Info.plist <<EOF <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleExecutable</key> <string>${SHELLSCRIPT}</string> </dict> </plist> EOF cp ${SHELLSCRIPT} Application.app/Contents/MacOS/ chmod +x Application.app/Contents/MacOS/${SHELLSCRIPT}
この mkapp.sh を元にしてつくったのが、mkapp.app
mkapp.app の使い方
- mkapp.app と同じ階層に、実行させたいシェルスクリプトファイルを script.sh という名前で配置する。
- mkapp.app をダブルクリック!
- 同じ階層に Application.app ができる。
参考ページ
- シェルスクリプトとかの CUI アプリケーションを Mac OS X 方式の .app にする方法 [簡単 5 ステップ]
- http://www.pqrs.org/tekezo/macosx/doc/makeapp/
- Cocoaアプリケーションチュートリアル: Info.plistファイル
- http://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjCTutorial/08Configuring/chapter_8_section_2.html#//apple_ref/doc/uid/TP40000863-CH10-SW2