我们正在使用Mac OSX 10.9上的Qt 5.2.0.Framework为Mac App Store开发应用程序。
这是一个简单的AppleScript,可以创建Microsoft Excel工作簿并保存到任何位置。
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
以上脚本在Untitled.scpt
中保存为/Library/ApplicationScript/
。
在应用程序内部,我们使用Cocoa框架来执行AppleScript。
此AppleScript适用于非沙盒应用程序。它在沙盒应用程序中失败。
我的问题是:如何在沙盒应用程序中使用AppleScript?或者有替代方案吗?
请告诉我解决方案,因为我的项目因此而被推迟。
由于
答案 0 :(得分:9)
您的代码有两个问题:
Excel可能还不支持com.apple.security.scripting-targets
,因此您需要com.apple.security.temporary-exception.apple-events
(请参阅here如何确定是否支持com.apple.security.temporary-exception.apple-events
how to work with the temporary exception通过添加一个你想要定位的bundle-identifier数组。你可以在这个问题的旧屏幕截图中找到它。)
脚本目标和/Library/ApplicationScript
的权利是一个包标识符数组。你会在Xcode中看到它:
Mac App Store应用不得在{{1}}等共享位置安装任何内容(请参阅App Store Review Guidelines第2.15节)。您需要将Script存储在Container中并从那里运行它。
答案 1 :(得分:2)
您需要add the com.apple.security.scripting-targets
sandboxing entitlement从沙箱中编写其他应用的脚本。
答案 2 :(得分:0)
要在应用程序中使用Apple Script,必须在权利文件中添加要发送或接收事件的应用程序的捆绑标识符。
语法如下:
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>{bundle identifier of app 1}</string>
<string>{bundle identifier of app 2}</string>
</array>
该阵列中可以有一个或多个应用程序捆绑包标识符。现在,这些应用程序可以接收您的apple events命令。
示例:
<key>com.apple.security.temporary-exception.apple-events</key>
<array>
<string>com.apple.finder</string>
<string>com.apple.systemevents</string>
<string>com.microsoft.excel</string>
</array>