如何在可可应用程序中捆绑AsciiDoctor宝石

时间:2019-02-11 22:35:30

标签: cocoa rubygems nstask asciidoctor

我的应用

我有一个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)

当我使用启动路径gemgem install时,调用Process方法run引发了异常。这是异常引发的错误消息。

  

Error Domain = NSCocoaErrorDomain代码= 4“文件“ gem”不存在。” UserInfo = {NSFilePath = gem}

     

Error Domain = NSCocoaErrorDomain代码= 4“文件“ gem安装”不存在。” UserInfo = {NSFilePath = gem install}

问题

如何在我的应用程序中包含AsciiDoctor宝石,这样人们就不必手动安装宝石了?我需要为该应用程序创建安装程序吗?

0 个答案:

没有答案