QtWebBrowser macOS Проблема с подписанием - PullRequest
2 голосов
/ 29 апреля 2019

Недавно я столкнулся со странной проблемой, связанной с QtWebBrowser в macOS. Элемент управления QtWebEngine, похоже, не загружается за пределы моей машины для разработки. Я отследил это до подписания. Если я создаю приложение и не подписываю его, я могу запустить его на другом компьютере. Как только я подпишу приложение, элемент управления QtWebEngine перестанет загружаться на другие машины. Это стало еще более странным, когда я вернулся, чтобы проверить более старую версию, и он сделал то же самое. Это версия, которую я собрал и протестировал ранее и определенно работал. Я уверен, что компьютер, с которым я тестирую, с тех пор не обновлялся.

То, что кажется подсказкой, - это предупреждение, которое появляется сейчас. Я не помню, чтобы видел это раньше.

2019-04-28 22:11:30.247507-0700 QtWebEngineProcess[30607:140529] [User Defaults] Couldn't read values in CFPrefsPlistSource<0x106f08560> (Domain: com.apple.universalaccess, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: Yes): accessing preferences outside an application's container requires user-preference-read or file-read-data sandbox access

Вот команда, которую я использую для подписи приложения.

sudo codesign --deep --force --verify --verbose --sign "Developer ID Application: ***" --options runtime Output/MyApp.app

1 Ответ

1 голос
/ 08 мая 2019

Я нашел решение этой проблемы после долгих проб и ошибок. Я совершенно уверен, что это нужно сделать всем, кто пытается нотариально заверить приложение macOS с помощью QtWebEngine. Надеюсь, это сэкономит кому-то время в будущем.

Решение для меня заключалось в том, чтобы подписать QtWebEngineProcess с исключением com.apple.security.cs.disable-executeable-page-protection. Вот процесс.

Подпишите основное приложение следующей командой

sudo codesign --deep --force --verify --verbose --sign "Developer ID Application: ***" --options runtime MyApp.app

Создать файл разрешений для QtWebEngineProcess

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.cs.disable-executable-page-protection</key>
    <true/>
</dict>
</plist>

Подпишите QtWebEngineProcess с помощью следующей команды

sudo codesign --force --verify --verbose --sign "Developer ID Application: ***" --entitlements QtWebEngineProcess.entitlements --options runtime MyApp.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/MacOS/QtWebEngineProcess

Подпишите основной исполняемый файл следующей командой

sudo codesign --force --verify --verbose --sign "Developer ID Application: ***" --options runtime Output/MyApp.app/Contents/MacOS/MyApp

После выполнения этих шагов я могу успешно заверять ходатайство приложения.

...