如何在沙盒 macOS 应用程序中为 ImageEvent 类运行 AppleScript?

Posted

技术标签:

【中文标题】如何在沙盒 macOS 应用程序中为 ImageEvent 类运行 AppleScript?【英文标题】:How to run AppleScript for ImageEvent class in sandboxed macOS application? 【发布时间】:2014-04-28 04:49:25 【问题描述】:

我们正在使用 Mac OS X 10.9 上的 Qt 5.2.0.Framework 为 Mac App Store 开发应用程序。

这是一个简单的 AppleScript,它将 .PNG 图像转换为 .jpeg 图像。

tell application "Image Events"
    lanuch
    set theImageRef to POSIX file ":private:var:root:Desktop:1.png"
        tell theImageRef
              save in ":private:var:root:Desktop:save.jpeg"
              close
        end tell
end tell

此 AppleScript 在非沙盒应用程序中工作。它在沙盒应用程序中失败。

我的问题是:如何在沙盒应用程序中使用 AppleScript?或者有什么替代方法吗?

【问题讨论】:

【参考方案1】:

有几种替代方法:

命令行sips(参见man sips,了解可编写脚本的图像处理套件) 带有NSImageNSBitmapImageRep 的可可(参见 How to save a NSImage as a new file) 带有CGImageRef 等的核心基础(参见Saving CGImageRef to a png file?) QT 在QPixmap 类中也有类似的东西(参见How to save a QPixmap Object to a file?)

要在沙盒应用程序中使用 AppleScript,您需要使用 Target Access Groups as described here。但是除非您自己编写,否则您将很难找到支持目标访问组的应用程序。但是为什么要使用 AppleScript 进行图像处理呢?

在权利中使用的包标识符是“com.apple.imageevents”。

【讨论】:

我有一个用于图像的多个苹果脚本,它可以将一种格式转换为另一种格式(.png、.pnb、.sd、.tiff、.pdf 等),这仅适用于使用苹果脚本。我没有确定运行我的苹果脚本的权利密钥。如果是 MSExcel 文件,您的上述链接可以成功运行。但我没有获得权利密钥。使用运行我的苹果脚本的值定义权利密钥。 @anuj 您需要将 com.apple.imageevents 添加到权利中。对于临时异常或脚本目标中的另一个项目。 此键 (com.apple.imageevents) 不适用于将图像从一种格式转换为另一种格式。以上,请参阅权利文件的屏幕截图。 您在 Console.app 的沙盒违规中看到的错误是什么? 据我所知,我的苹果脚本没有加载到 NSApplescript 对象中。

以上是关于如何在沙盒 macOS 应用程序中为 ImageEvent 类运行 AppleScript?的主要内容,如果未能解决你的问题,请参考以下文章

在沙盒模式下禁用小部件回退 (Fortumo)

在沙盒应用中访问桌面

在沙盒 mac 中执行拖放

卡在沙盒帐户中

如何在沙盒中创建 Synapse 工作区?

如何在沙盒中手动触发 Paypal 错误 10486?