如何为Applescript应用程序提供权利

问题描述 投票:0回答:1

我在Omnis工作室创建了一个应用程序,我希望用户能够按下按钮打开Microsoft Excel,然后粘贴剪贴板中的内容。要做到这一点,我的应用程序调用AppleScript应用程序在这里看到:

tell application "Microsoft Excel"
  activate
  make new workbook
  paste special on worksheet active sheet
end tell

但是,每当我的应用程序调用该脚本时,它都会遇到Apple的沙盒问题,说它无法向Microsoft Excel发送事件。

我在网上看到,为了能够访问Mac OS中的发送事件,您需要拥有与您的应用程序相关联的entitlements.plist文件。如何将entitlements.plist文件添加到我的Applescript应用程序中,以便在运行时能够将事件发送到Microsoft Excel?

macos applescript sandbox applescript-excel
1个回答
0
投票

如果您不销售应用程序并仅将其用于自己的应用程序,最好是停用沙盒。您的应用仍然可以通过右键单击>打开来运行。

如果您已经启用了沙盒,那么您的应用程序结构中必须存在YOURAPPNAME.entitlements文件(不是在已编译的应用程序中,而是在源代码中),因为必须在该文件中启用沙盒。

我不知道Omnis工作室,你可以尝试使用XCode而不是从头开始支持权利文件 - 即使你必须使用applescript objective-c而不是普通的AppleScript。

如果您设法找到该文件,则需要向其添加新的键/值,以便解决Excel:

key: "com.apple.security.temporary-exception.apple-events"
value (type array): 
    Item 0 > "com.microsoft.excel"

但请注意 - 如果你想留在沙盒中,从OSX 10.14开始有一个新的安全策略,称为Apple的“安全完整性保护”(SIP),用户还需要允许你的应用程序自动化其他应用程序,请查看此主题:"because it is not SIP-protected" - Apple event error in OSX Mojave

要从10.14开始绕过此开头,您还必须在info.plist文件中添加一个新行

key: NSAppleEventsUsageDescription
value: [Some description why you need to use AppleEvents]

我不知道第三方编辑是否会遵循Apple提供的变化速度。

© www.soinside.com 2019 - 2024. All rights reserved.