AppleScript の新機能 (5) - コード署名

AppleScript で作るアプリケーションにコード署名がないと起動できないんですね...。

このサイトでは AppleScript のアプレットや Automator のアプリケーション、インストーラーなどを配布していたりするのですが、軒並み起動できない。困ったことに自分で作ったものをインターネット経由でダウンロードしても起動できない。俺が作ったんだけどね、それ...。

もし、アプリケーションを配布するのなら、Mac のデベロッパープログラムに参加する必要があります。年間 8,400 円(2013 年 11 月 27 日調べ)。

まぁ、システム環境設定でちょこっと設定をいじると起動できますが。

システム環境設定の『セキュリティとプライバシー』にある『ダウンロードしたアプリケーションの実行許可』を『全てのアプリケーションを許可』に変更することで、コード署名がないアプリケーションでも実行することができます。

システム環境設定 - セキュリティとプライバシー

お勧めではないですが...。通常は『Mac App Store と確認済みの開発元からのアプリケーションを許可』にしておくのがいいでしょう(デフォルトの設定です)。

では、自分で作ったアプレットやドロップレットにコード署名をつけるにはどうするか?

最初に Mac のデベロッパープログラムに参加してください(回し者?ちゃうちゃう!)。これは、絶対条件です。が、Mac App Store で配布したりするような開発者でもなく、私のようにブログなんかで細々とスクリプトやアプレットをダウンロードしているような人間には年間 8,400 円は悩んでしまう金額です。

ちなみに『セキュリティとプライバシー』の設定を変えずにコード署名がないアプリケーションを起動させるには、Finder でアプリケーションを選択し、コンテキストメニューから「開く」を選択するとできます。

Open_Application_with_Finder.png

ダイアログが表示されます。

Confirm_Application.png

これで「開く」を選択するとアプリケーションが起動します。以降、通常のアプリケーションの起動方法で利用できます。しかし、毎回ユーザーにこの方法を強いるのも...。非常時の回避手段ということで。

OS X Mavericks の AppleScript Editor 2.6 では、コード署名を自分が作ったアプレットやドロップレットに付加することができます。

AppleScript Editor の「ファイル」メニューにある「書き出し」を選択します。ファイル保存のシートが表示されるのでここで「コード署名」から適切な ID を選択します。

Applet_Export_Sheet.png

図では iPhone デベロッパーのものが表示されていますが...。ちなみに iPhone デベロッパーの ID でも試してみましたが、やはりアプリケーションは起動できませんでした(署名は追加されますが)。

ID を選択し、保存すると以下のようなダイアログが何回か表示されます。ここでは「許可」を選択します。

Permission_Dialog.png

保存が完了したらコード署名が付加されたアプレットが出来上がります。適切にコード署名が付加されているかどうかは Terminal で確認できます。

$ codesign --display -vvv MyApp.app

これでどのようなコード署名が付加されているか分かります。もちろん codesign を使って Terminal 上でコード署名を付加することもできます。

最初にアプリケーション(アプレット、ドロップレット)のバンドル ID を設定します。

Setting_BundleID_Drawer.png

ここでは com.ashplannings.MyApp としました。

次にアプリケーションパッケージ内の Resources 以下にある全てのスクリプトファイル(拡張子 scpt、scptd)を書き込み禁止にします。

$ chmod a-w MyApp.app/Contents/Resoucrces/Scripts/main.scpt

そして、codesign で以下のようにします。

$ codesign --force --sign 'Developer ID Application: YourDevName' -i com.ashplannings.MyApp MyApp.app

このとき、デベロッパとしての証明書を持っていないとエラーになります。これはデベロッパとして登録していると Apple Developer Member Center から入手できます。

アプレットやドロップレット(Automator で作ったものも)は、上記のように『書き出し』メニューを利用するか、Terminal などでコード署名を付けることができます。ですが、個人的に最も困っているのが Safari。

このサイトでは AppleScript のコードをそのまま AppleScript Editor で新規スクリプトとして作成できるリンクを掲載しているのですが、このリンクをクリックすると Safari で以下のように表示されます。

Safari_Caution_Dialog.png

これ、どうやったら開発元を追加できるんだろう...。

0 件のコメント :

コメントを投稿