如何在沙盒 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
,了解可编写脚本的图像处理套件)
带有NSImage
和NSBitmapImageRep
的可可(参见
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?的主要内容,如果未能解决你的问题,请参考以下文章