Мое приложение
У меня есть приложение Mac, которое использует AsciiDoctor для создания файлов PDF и ePUB.Я использую класс Process
(ранее NSTask
) для запуска команд AsciiDoctor.
Что я хочу
Я хочу, чтобы люди могли использовать мое приложениебез необходимости вручную устанавливать драгоценные камни AsciiDoctor Ruby из Терминала.
Копирование драгоценных камней в комплект приложения
Моей первой попыткой было установить драгоценные камни AsciiDoctor в пользовательскомпапку на моем Mac и добавьте фазу сборки Copy Files в мой проект Xcode, чтобы скопировать папку с драгоценными камнями в комплект приложения.Добавление гемов в комплект приложений работало на моей машине, но не работало на других машинах.Я не мог создавать файлы PDF или EPUB в системах с другой версией Ruby, чем версия на моем Mac, которую я использовал для установки гемов.На виртуальной машине macOS 10.13 мне удалось создать файл PDF, но не файл EPUB.
Установка гемов в папке поддержки приложений
Моя вторая попыткабыло установить драгоценные камни в папку поддержки приложений моего приложения при первом запуске приложения.Но это даже не сработало на моей машине.Когда я использовал путь запуска usr/bin/ruby
для процесса командной строки и следующий список аргументов:
let argumentList = ["gem", "install", "-i", gemFolder.path, gem, "--pre"]
Где переменная gemFolder.path
- это путь к папке поддержки приложений и переменная gem
либо "asciidoctor-pdf"
, либо "asciidoctor-epub3"
.
Я получил следующее сообщение об ошибке из-за стандартной ошибки при запуске процесса командной строки:
/ usr / bin / ruby: Неттакой файл или каталог - gem (LoadError)
Когда я использовал путь запуска gem
или gem install
, вызов метода Process
run
вызвал исключение.Вот сообщения об ошибках, которые выдало исключение.
Error Domain = NSCocoaErrorDomain Code = 4 "Файл" gem "не существует."UserInfo = {NSFilePath = gem}
Ошибка домена = NSCocoaErrorDomain Code = 4 "Файл" gem install "не существует."UserInfo = {NSFilePath = gem install}
Вопрос
Как включить гем AsciiDoctor в мое приложение, чтобы людям не приходилось устанавливать вручнуюдрагоценные камни?Нужно ли создавать установщик для приложения?