Как заставить macdeployqt изменять имена библиотек внутри QtWebEngineProcess.app при копировании через каркас QtWebEngineCore

Редактировать: используя Qt 5.9.1, установленную с Homebrew

После комментария в этом другой вопрос, мы пытаемся использовать macdeployqt подготовить распространение пакета OSX приложения на основе Qt.

Этот инструмент корректно копирует все зависимости Qt (и даже некоторые не-библиотеки Qt) внутри пакета. Он также изменяет имена зависимых библиотек как внутри самого приложения, так и в скопированных библиотеках.

Он также успешно копирует QtWebEngineProcess.app содержится в Помощники папка из QtWebEngineCore.framework.

 проблема

Проблема в том, что он не меняет имена зависимых библиотек внутри QtWebEngineProcess, поэтому комплект не перемещаем (как QtWebEngineProcess ссылается на свою зависимую библиотеку по абсолютным путям, которые действительны только на компьютере разработчика).
Пытаясь запустить приложение на «клиентском» компьютере, можно получить ошибку:

dyld: библиотека не загружена:
/usr/local/Cellar/qt/5.9.1/lib/QtWebEngineCore.framework/Versions/5/QtWebEngineCore
Ссылка от: Business.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/MacOS/QtWebEngineProcess

Мы попытались вручную исправить это приложение, отредактировав QtWebEngineProcess, чтобы заменить абсолютную часть пути к библиотекам Qt на @loader_path/../../../../../../../../Frameworks/,

Это только продвигает проблему вперед: сейчас QtWebEngineProcess кажется, правильно загружает свои зависимые библиотеки, но сами зависимые библиотеки больше не могут загружать свои зависимые библиотеки, так как их имя установки начинается с @executable_path, а также QtWebEngineProcess исполняемый файл живет в другой папке Бизнес исполняемый файл. Отсюда и ошибка:

dyld: библиотека не загружена:
@executable_path /../ Каркасы / QtQuick.framework / Версии / 5 / QtQuick
Ссылка от: Business.app/Contents/Frameworks/QtWebEngineCore.framework/Versions/5/QtWebEngineCore


Является macdeployqt не работает, когда дело доходит до приложения, использующего веб-движок Qt?

Есть ли способ заставить его работать, не изменяя вручную все имена установки Qt в комплекте?

0

Решение

До сих пор macdeployqt у меня отлично работает на локальной машине.
На CI вы можете столкнуться с проблемой, что артефакты разбиты таким образом.

Это происходит, если вы копируете свою заявку с cp -r или же zip это без -y После этого все символические ссылки будут разрешены внутри приложения, и это не будет работать, потому что будет много копий QtWebEngineProcess, Также он сломает вашу подпись, если вы подпишете приложение.

Решение заключается в использовании cp -a а также zip -r -y вместо этого — последний работал для меня вместо использования плагина для артефактов.

0

Другие решения

После одного из комментариев Дмитрия к исходному вопросу я наконец-то нашел время для тестирования с официальным дистрибутивом Qt 5.9.1 для OS X, и оказалось, что он был прав. macdeployqtраспространяется с официальными двоичными файлами Qt, обрабатывает QtWebEngineProcess.app просто отлично.

Версия этой утилиты распространяется с homebrew установка Qt является фиктивной, по крайней мере, в 5.9.1

0

По вопросам рекламы [email protected]