Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run an AppleScript from a sandboxed application on a Mac (OS X)

We are developing an application for the Mac App Store using Qt 5.2.0.Framework on MacOSX 10.9.

Here is a simple AppleScript that creates a Microsoft Excel workbook and saves to any location.

tell application "Microsoft Excel"
    set myworkbook to make new workbook
    set fname to POSIX file "/Private/var/root/Download/ExcelFile" as text
    save workbook as myworkbook filename fname
end tell

The above script is saved as Untitled.scpt in /Library/ApplicationScript/.

Inside the application, we use the Cocoa framework to execute the AppleScript.

This AppleScript works in a non-sandboxed application. It fails in a sandboxed application.

My question is: How do you use an AppleScript in a sandboxed application? Or is there an alternative to this?

Kindly tell me the solution, because my project is being delayed by this.

Thanks

enter image description here

enter image description here

like image 430
A_kumar Avatar asked Feb 21 '14 03:02

A_kumar


People also ask

How do I use sandbox app on Mac?

To ensure the App Sandbox is in an enabled state, launch your macOS app using Xcode. Then, open /Applications/Utilities/Activity Monitor. app and choose View > Columns > Sandbox to display the Sandbox column. Find your app in the list of running processes and confirm the value in that column is Yes.

Can you use sandbox on Mac?

Overview. App Sandbox provides protection to system resources and user data by limiting your app's access to resources requested through entitlements. To distribute a macOS app through the Mac App Store, you must enable the App Sandbox capability.

How do I run AppleScript Editor?

1. Open the "Applications" folder and double-click on the "AppleScript" folder. Double-click on the "Script Editor" or "AppleScript Editor" icon to launch the program.


1 Answers

There two issues with your code:

  • Excel probably doesn't yet support com.apple.security.scripting-targets, so you would need com.apple.security.temporary-exception.apple-events (see here how to find out if it supports it and here how to work with the temporary exception by adding an array of bundle-identifiers you want to target. You had that in the old screenshot of this question.)

  • The entitlement of scripting-targets as well as for com.apple.security.temporary-exception.apple-events is an array of bundle-identifiers. You would see it in Xcode like this: com.apple.security.temporary-exception.apple-events

  • A Mac App Store app must not install anything in shared locations like /Library/ApplicationScript (see App Store Review Guidelines Section 2.15). You need to store the Script inside your Container and run it from there.

like image 83
mahal tertin Avatar answered Oct 07 '22 02:10

mahal tertin