私は現在、Mavericks 10.9の自動インストールに取り組んでいます。NetBootをセットアップしました。Applescriptを実行するまで、すべてが正常に機能します。新しいバージョンのリリース以来、これらのスクリプトを手動で有効にする必要があります。アプリを支援デバイスリストに追加するためにシェルスクリプトで使用できるコマンドはありますか?それともそれが機能するために編集する必要があるいくつかのplistがありますか?
私は現在、Mavericks 10.9の自動インストールに取り組んでいます。NetBootをセットアップしました。Applescriptを実行するまで、すべてが正常に機能します。新しいバージョンのリリース以来、これらのスクリプトを手動で有効にする必要があります。アプリを支援デバイスリストに追加するためにシェルスクリプトで使用できるコマンドはありますか?それともそれが機能するために編集する必要があるいくつかのplistがありますか?
回答:
設定は次の場所に保存され/Library/Application Support/com.apple.TCC/TCC.db
ます:
$ sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'select * from access'
kTCCServiceAccessibility|com.apple.ScriptEditor2|0|1|0|��
kTCCServiceAccessibility|com.red-sweater.FastScripts|0|1|0|��
kTCCServiceAccessibility|com.apple.AccessibilityInspector|0|1|0|��
kTCCServiceAccessibility|com.slate.Slate|0|1|0|��
kTCCServiceAccessibility|com.apple.Automator|0|1|1|
kTCCServiceAccessibility|com.googlecode.iterm2|0|1|1|
によって指定されるスキーマsudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db '.schema access'
は次のとおりです。
CREATE TABLE access (service TEXT NOT NULL, client TEXT NOT NULL, client_type INTEGER NOT NULL, allowed INTEGER NOT NULL, prompt_count INTEGER NOT NULL, csreq BLOB, CONSTRAINT key PRIMARY KEY (service, client, client_type));
私のインストールの最後の4つの列(client_type
、allowed
、prompt_count
、及びcsreq
)ある0|1|0|\xfa\xde\x0c
後に追加されたアプリケーションのため"example.app" would like to control this computer using accessibility features
のダイアログが表示され、0|1|1|
私はシステム環境設定のリストにそれらをドロップすることで追加したことをアプリケーションに。
~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
警告ダイアログが表示されたアプリケーションのリストが含まれています。
$ defaults read com.apple.universalaccessAuthWarning
{
"/Applications/Automator.app" = 1;
"/Applications/Automator.app/Contents/MacOS/Automator" = 1;
"/Applications/FastScripts.app" = 1;
"/Applications/FastScripts.app/Contents/MacOS/FastScripts" = 1;
"/Applications/Slate.app" = 1;
"/Applications/Slate.app/Contents/MacOS/Slate" = 1;
"/Applications/Utilities/AppleScript Editor.app" = 1;
"/Applications/Utilities/AppleScript Editor.app/Contents/MacOS/AppleScript Editor" = 1;
"/Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app" = 1;
"/Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app/Contents/MacOS/Accessibility Inspector" = 1;
"/Applications/iTerm.app" = 1;
"/Applications/iTerm.app/Contents/MacOS/iTerm" = 1;
"/Users/lauri/Desktop/aa.app" = 1;
"/Users/lauri/Desktop/aa.app/Contents/MacOS/applet" = 1;
"com.apple.AccessibilityInspector" = 1;
"com.apple.Automator" = 1;
"com.apple.ScriptEditor.id.aa" = 1;
"com.apple.ScriptEditor2" = 1;
"com.red-sweater.FastScripts" = 1;
"com.slate.Slate" = 1;
}
しかし、アプリケーションの支援デバイスへのアクセスを実際に許可する方法を理解できませんでした。たとえば、次のコマンドを実行してみました。
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db 'insert into access values ("kTCCServiceAccessibility","com.apple.ScriptEditor.id.qq",0,1,0,"'$'\xfa\xde\x0c''");'
defaults write com.apple.universalaccessAuthWarning com.apple.ScriptEditor.id.qq -bool true
defaults write com.apple.universalaccessAuthWarning /Users/lauri/Desktop/qq.app -bool true
defaults write com.apple.universalaccessAuthWarning /Users/lauri/Desktop/qq.app/Contents/MacOS/applet -bool true
sudo killall tccd
また、変更を適用するために再起動し、最後の4つの列をに設定してみました0,1,1,""
。
sudo sqlite3 ...
。パーミッションの付与に~/Library/Preferences/com.apple.universalaccessAuthWarning.plist
は関与せず、警告が繰り返されてユーザーを煩わせることがないように警告が表示されているかどうかを記録するだけです。
??
(\xfa\xde\x0c
)値が由来するcsreq
指定されたアプリの種類の指紋を含む列、。OSXは自動的にそれを舞台裏で管理します-それを指定する必要はありません。実際の値ははるかに長くなります。3バイトに切り捨てが出力するバイナリ値(データ型にしようとしてから来てBLOB
、それが文字列であるかのように)最初のNULバイト(時停止への出力を引き起こして?
からステム\xfa
と\xde
、UTF8エンコーディングで有効な文字をされていない\x0c
垂直です改行を効果的に作成するタブ)。
csreq
列には、アプリのコンパイル済みの指定要件が含まれている参照goo.gl/z10vlとAppleのTN2206 深さのコード署名ガイドを。指定された要件は、本質的に、バンドルIDと証明書をチェックすることでアプリのIDを検証するスクリプトです。
以下のコマンドに従ってファイルを追加することもできます。
このコマンドは、支援デバイスに追加しようとしているアプリケーションのバンドルIDを見つけます。
/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/enterapplicaitonnamehere.app/Contents/Info.plist
追加しようとしたアプリケーションがSKYPEだったとしましょう。次に、以下を入力します。
/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' /Applications/Skype.app/Contents/Info.plist
そしてあなたのバンドル識別子は:
com.skype.skype
次に、この出力を以下のコマンドで使用します。
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','',0,1,1,NULL);"
Skypeの場合、次のようになります。
sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "REPLACE INTO access VALUES('kTCCServiceAccessibility','com.skype.skype',0,1,1,NULL);"
アプリケーションを削除するには、 sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "delete from access where client='com.skype.skype';"
REPLACE INTO
代わりに、使用INSERT INTO
することをお勧めします。
REPLACE INTO
より説明的なものの別名ですINSERT OR REPLACE INTO
)。