CPack: любой способ создать установщик, который должен устанавливаться в системную папку, без вызова cpack с разрешениями root - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь создать установщик MacOS на основе CPack для проекта аудиоплагина. Местоположение по умолчанию аудиоплагина MacOS находится в папке /Library/Audio/PlugIns/, в которую требуется root прав для записи.

AFAIK CPack берет целевой путь для установленных артефактов из пути, указанного в команде CMake INSTALL , поэтому мой файл CMakeLists.txt выглядит так:

# CPack takes these paths as the locations where the plugins should be installed in the end
install (TARGETS MYPLUGIN_VST3 LIBRARY DESTINATION /Library/Audio/Plug-Ins/VST3       COMPONENT VST3)
install (TARGETS MYPLUGIN_AU   LIBRARY DESTINATION /Library/Audio/Plug-Ins/Components COMPONENT AU)

# This makes sure that only the two components and nothing else is part of our installer
SET (CPACK_COMPONENTS_ALL VST3 AU)

# We want to use the native Apple GUI installer
SET (CPACK_GENERATOR productbuild)

Теперь, когда я вызываю cpack для создания установщика, он терпит неудачу из-за проблемы с разрешением, поскольку он устанавливает плагины в качестве первого шага перед сборкой установщик. Единственное решение, которое я нашел, - это запуск cpack с правами root, чтобы он мог писать в эти места во время этапа установки, что мне кажется плохой практикой и может быть еще хуже при попытке запустить это на сервере сборки в будущем. Поскольку мне не нужен этап установки, а нужен только получившийся установщик, мне интересно, есть ли способ избежать этапа установки и позволить CPack захватить файлы для переноса в установщик непосредственно из двоичного каталога, в который они были помещены после сборки . Не нашел ничего по этому поводу в документации, но я только начинаю с CMake и CPack, поэтому могу пропустить здесь кое-что очевидное

...