はじめに
Macあるあるのネタなんですが、Macではセキュリティーとプライバシー
という設定項目があります。
で、他からDLしてきたアプリやら実行ファイルは、
「開発元が不明だ!セキュリティーとプライバシーで設定を解除しろ!でなければ、実行させてやらん!」
と怒られます。
いちいち、うるさいな〜〜いいから実行させてよ〜〜と、思いながら、このまま開く
ボタンを押しますよね。
実は最近、この新種なダイアログが出てきたんです。
君は何を言ってるのかね・・・?
どういうことなのか詳しく
こちら、もちろんですが、DLしてきたファイル自体は、アプリケーションです。(xx.app)
自分の環境で作った状態からの起動はなんら問題がありません。
ではなぜダメなのか?
他の環境からDLしてくると、拡張属性が変わってしまうからです。
拡張属性ってなんですか?
例えば、Chromeを使って、ConfluenceやSlackなどからファイルをDLすると、お前さんは一体どこからDLしてきたのかなあ?
外からDLしてきたんだね、read onlyにしといてあげようね。と勝手なことしてくれます。
DL日時なんかも入ったりするっぽいですね。
commandで確認するとわかりますが、参照リンクにあるように、
com.apple.quarantine
というのが勝手についちゃうんですね。
余計なことを・・・・・。
まあ、私を思ってしてくれてのことなんですが、こいつが勝手についてしまうことにより、ゴミ箱に入れろダイアログ
が出てきます。
そして、app自体をzipに詰め込んでから、サイトにUPして、さらにDLしたとしても属性com.apple.quarantine
は勝手に付与されてしまうのです。
コマンドで属性を削除すれば、実行できるようにはなる
以下のようにすれば、属性は削除できます。
xattr -cr xxxx.app
問題は、コマンドを打たせるという行為を、デザイナさんや運営さんなど、非エンジニアにさせるべきではない
ということです。
ではどうするか?
automatorで、workflowを作ることにより、GUI的に操作して属性削除することができます
。
automatorでworkflowを作って回避
結構簡単に作れます。
右クリックにメニューを仕込む、みたいな操作を作れます。
つまり、私がやろうとしているのは下記です。
- ファイルをDLしてくると、拡張属性がついちゃう
- 拡張属性を削除するための処理をworkflowで作成
- クイックアクションでユーザーに拡張属性削除させる
automatorはGUI的に作成することができる。
automatorを起動して、ワークフローを選択します。
D&D的な感じで、ぽこぽこ右側の欄に持っていくと、操作を追加できます。
あらまあ、便利。
やりたいことは、ファイル or フォルダを選択し、その名称をコマンドに渡して属性削除したい。
- 選択されたFinderの項目を取得して・・。
- シェルスクリプトを実行して・・・。
入力の引き渡し方法を、stdinへ -> 引数として
に変更すると、勝手に処理が追加されます。
あらまあ・・勝手にfor文まで出してくれるんですか。
少し直します。
for f in "$@"
do
xattr -rc $f
done
ただし、これだけだと終わった後に、スん・・・・ となるので、終了通知を出さないと、親切じゃないですね。
apple scriptを書くと、良い感じに通知やダイアログがだせるようなので、やってみます。
以下の記事が大変参考になりました。
for f in "$@"
do
xattr -rc $f
done
osascript -e 'display dialog "属性削除が終了しました。" with title "処理終了通知" with text buttons {"OK"} with icon 1'
例外処理いれてないけど・・割愛・・。本当は入れるべきですね。
使い方
属性を削除.workflow
をダブルクリックするとインストールするか聞かれます。
そのままインストールすると、クイックアクションの項目に入ります。
よく考えたら、属性を削除じゃなくて、拡張属性を削除だったけど・・・。
さて、右クリックにメニューが入りました。
問題となっているDLしたファイルを選択した状態で、属性を削除を選択します。
無事、問題となっているアプリケーションはこの後実行できるようになります。
補足ですが、workflowはサイトにUPして、DLしても、com.apple.quarantine
はつかないわけです。
最後に
いかがでしたか?
ちょっとしたGUI操作をさせたいときに、automatorで手軽にアクションが作れそうだ!という話をしました。
ワークフローしか作ってないですが、他にも色々有用なものが眠っている気がするので、そのうちやってみたいですね。