Thanks. I watched the one on "Seccure Automation Techniques in OS X." Near the end it said exactly what I wanted to hear which is that application-run scripts that target only themselves have no restrictions. So far it is half true in my app. I can run an AppleScript now without troubles. But many of my scripts are in python and use ScriptingBridge. I run these python scripts by launching an NSTask as follows
1. set working directory to path for the script (which is in my sandbox) 2. set PYTHONPATH to some app-specific folders (all in my sandbox) 3. Launch task with command line like /usr/bin/python (path_to_script) The task actually starts fine and python launches. The first step in every script is to connect to my app using ScriptingBridge with a python line like _gedit = SBApplication.applicationWithBundleIdentifier_(appID) but this fails with error message 2013-01-15 19:26:38.954 Python[44491:1407] warning: failed to get scripting definition from /Users/nairnj/Library/Developer/Xcode/DerivedData/GEDitCOM_Pro-bimxoxdrzkwdkqgvskiwmvgvydje/Build/Products/Develop/GEDitCOM SD.app; it may not be scriptable. Of course that is not true because the app is scriptable and works fine with AppleScript and with python when not sandboxed. I was thinking my app is just receiving AppleEvents (as generated by python and ScriptingBridge), which is supposed to be allowed. But it does not work. The video mentions a new 10.8 class called NSUserUnixTask, which sounded promising, but its documentation specificlally says "The class is not intended to execute scripts built into an application; for that, use one of the NSTask... " Well I want to execute built in scripts so I am using NSTask, but so far without success. Has anyone be able to use NSTask to execute a python script to interact only with your own sandboxed app using ScriptingBridge? John Nairn On Jan 14, 2013, at 9:59 AM, Mike Abdullah wrote: > > On 14 Jan 2013, at 17:50, John Nairn <j...@geditcom.com> wrote: > >> I have sandboxed an app that allows users to run scripts as a major feeature >> (i.e., dealbreaker on sandboxing only answer is to delete this feature). I >> was pleased that I can run AppleScripts fine through the sandboxed app from >> Apple's Script Editor, but the user experience is much (much, much) better >> if they can select a script from a menu in my app and run it, but that >> method fails. Here is more info: >> >> 1. Script running code is sound and works fine if app is not sandboxed. >> 2. Script is compiled, error free, and does not try to send events to any >> app except my own >> 3. Script is stored in application support of my container and therefore I >> should have read and write permission on that file >> 4. The first step in running the script (which is when is fails) is simply: >> >> script = [[NSAppleScript alloc] initWithContentsOfURL:[NSURL >> fileURLWithPath:scriptPath] error:&errorInfo]; >> >> The errorInfo dictionary has only NSAppleScriptErrorNumber = -43 and no >> other details. I could not find this error number in a google search. >> >> 5. I have more problems running python scripts using Scripting bridge when >> sandboxed, but I am working on one problem for now > > Go watch the sandboxing videos from WWDC this year. They cover automation > quite a bit, and all will be made much clearer. > ------------ John Nairn http://www.geditcom.com Genealogy Software for the Mac _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com