Mac OS X 10.8 (Mountain Lion)からは、Appleから認証されたDeveloper IDのCode Sign のないアプリケーションをダウンロードするとデフォルトの状態では起動できない。
通常、Developer IDのCode Signは、Xcode のbuild 時に付加される。
ところで、AppleScript のアプリケーションや Automatorのワークフローも Developer IDのCode Sign がついていないと同じように起動できない。
通常、Developer IDのCode Signは、Xcode のbuild 時に付加される。
ところで、AppleScript のアプリケーションや Automatorのワークフローも Developer IDのCode Sign がついていないと同じように起動できない。
ところが、これらのアプリケーションの作成には Xcode は使わない。AppleScript のアプリケーションは AppleScript Editor で、Automatorのワークフローは Automator.app で作成する。
では、どうやってAppleScript や Automator に CodeSigin を付加するのか。以下のようにすると Xcodeを使わず codesign コマンドを使って直接アプリケーションに CodeSign を付加することができる。
AppleScript アプリケーション
1) CodeSignのためには、アプリケーションパッケージ内の info.plist のなかに Bundle Identifier が定義されていなければならない。AppleScriptアプリケーションには一般にBundle Identifierが定義されていないので、以下のようなBundle Identifierを追加する。
<key>CFBundleIdentifier</key>
<string>jp.co.yourCompany.applescript.foo</string>
Bundle Identifierの追加はテキストエディタとかplistエディタを使う。なお、Mountain LionのAppleScriptエディタには新たにBundle Identifierの編集機能が追加されているので、この機能を使っても行える。
2) アプリケーションパッケージ内のmain.scpt を chmod コマンドで書き込み禁止にする。
$ chmod a-w foo.app/Contents/Resources/Scripts/main.scpt
3 ) codesign コマンドで CodeSign を書き込む。
$ codesign --sign 'Developer ID Application: YourCompany.'
-i jp.co.yourCompany.applescript.foo -f foo.app
-i jp.co.yourCompany.applescript.foo -f foo.app
4 )うまく CodeSign が付加されたかどうかは以下のコマンドで確認できる。
$ codesign --display -vvv foo.app
Automator ワークフロー
1) Bundle Identifier の修正。Automator のワークフローのパッケージ内の info.plist には、すでに Bundle Identifier が備わっているので、それを希望の文字列、たとえば
jp.co.yourCompany.automator.foo
に書き換える。
2) codesign コマンドで CodeSign を書き込む。
$ codesign --sign 'Developer ID Application: YourCompany.'
-i jp.co.yourCompany. automator.foo -f foo.app
-i jp.co.yourCompany. automator.foo -f foo.app
3)うまく CodeSign が付加されたかどうかは以下のコマンドで確認できる。
$ codesign --display -vvv foo.app