我的应用
我有一个Mac应用程序,该应用程序在后台使用AsciiDoctor生成PDF和ePUB文件。我使用Process
类(以前称为NSTask
)来运行AsciiDoctor命令。
我想要的
我希望人们能够使用我的应用程序,而不必从终端手动安装AsciiDoctor Ruby gem。
将宝石复制到应用程序包中
我的第一个尝试是将AsciiDoctor gems安装在Mac上的自定义文件夹中,并将“复制文件”构建阶段添加到我的Xcode项目中,以将包含gems的文件夹复制到应用程序包中。将宝石添加到应用程序捆绑包在我的机器上可以正常运行,但在其他机器上效果不佳。我无法在使用与以前用于安装gem的Mac版本不同的Ruby系统上创建PDF或EPUB文件。在macOS 10.13虚拟机上,我能够创建PDF文件,但不能创建EPUB文件。
在“应用程序支持”文件夹中安装宝石
我的第二次尝试是在首次有人启动应用程序时,将宝石安装到应用程序的“应用程序支持”文件夹中。但这甚至在我的机器上也不起作用。当我将启动路径usr/bin/ruby
用于命令行过程和以下参数列表时:
let argumentList = ["gem", "install", "-i", gemFolder.path, gem, "--pre"]
其中变量gemFolder.path
是Application Support文件夹的路径,变量gem
是"asciidoctor-pdf"
或"asciidoctor-epub3"
。
在运行命令行过程时,我从标准错误中收到以下错误消息:
/ usr / bin / ruby:没有这样的文件或目录-gem(LoadError)
当我使用启动路径gem
或gem install
时,调用Process
方法run
引发了异常。这是异常引发的错误消息。
Error Domain = NSCocoaErrorDomain代码= 4“文件“ gem”不存在。” UserInfo = {NSFilePath = gem}
Error Domain = NSCocoaErrorDomain代码= 4“文件“ gem安装”不存在。” UserInfo = {NSFilePath = gem install}
问题
如何在我的应用程序中包含AsciiDoctor宝石,这样人们就不必手动安装宝石了?我需要为该应用程序创建安装程序吗?